ng2-rest 21.0.4 → 21.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/fesm2022/{ng2-rest.mjs → ng2-rest-browser.mjs} +1 -1
- package/browser/fesm2022/ng2-rest-browser.mjs.map +1 -0
- package/browser/package.json +7 -4
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/package.json +1 -1
- package/websql/fesm2022/{ng2-rest.mjs → ng2-rest-websql.mjs} +1 -1
- package/websql/fesm2022/ng2-rest-websql.mjs.map +1 -0
- package/websql/package.json +7 -4
- package/browser/fesm2022/ng2-rest.mjs.map +0 -1
- package/websql/fesm2022/ng2-rest.mjs.map +0 -1
- /package/browser/types/{ng2-rest.d.ts → ng2-rest-browser.d.ts} +0 -0
- /package/websql/types/{ng2-rest.d.ts → ng2-rest-websql.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ng2-rest.mjs","sources":["../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/cookie.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/mapping.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/helpers.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/params.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/axios-interceptors.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/models.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/rest-headers.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/rest-request.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/content-type.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/rest.class.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/resource-service.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/lib/other/simple-resource.ts","../../../tmp-libs-for-dist-websql/ng2-rest/projects/ng2-rest/src/ng2-rest.ts"],"sourcesContent":["export class Cookie {\n\n public static get Instance(): Cookie {\n if (!Cookie.__instance) {\n Cookie.__instance = new Cookie();\n }\n return Cookie.__instance as any;\n }\n private static __instance;\n\n private constructor() {\n }\n\n read(name: string) {\n var result = new RegExp('(?:^|; )' + encodeURIComponent(name) + '=([^;]*)').exec(document.cookie);\n return result ? result[1] : null;\n }\n\n write(name: string, value: string, days?: number) {\n if (!days) {\n days = 365 * 20;\n }\n\n var date = new Date();\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n\n var expires = \"; expires=\" + date.toUTCString();\n\n document.cookie = name + \"=\" + value + expires + \"; path=/\";\n }\n\n remove(name: string) {\n this.write(name, \"\", -1);\n }\n\n}","/* */ \n\nimport { Circ } from 'json10/websql';\nimport { walk } from 'lodash-walk-object/websql';\nimport { _, UtilsOs } from 'tnp-core/websql';\nimport { CLASS, SYMBOL } from 'typescript-class-helpers/websql';\n\nexport namespace Mapping {\n export function decode(json: Object, autodetect = false): Mapping {\n // console.log('DECODE isBrowser', HelpersLog.isBrowser)\n if (_.isUndefined(json)) {\n return void 0;\n }\n\n let mapping = decodeFromDecorator(\n _.isArray(json) ? _.first(json) : json,\n !autodetect,\n );\n\n if (autodetect) {\n mapping = _.merge(getMappingNaive(json), mapping);\n }\n\n return mapping;\n }\n\n export function encode<T = Function>(\n json: Object,\n mapping: Mapping,\n circular: Circ[] = [],\n ): T {\n if (_.isString(json) || _.isBoolean(json) || _.isNumber(json)) {\n return json as any;\n }\n\n if (mapping['']) {\n const decoratorMapping = getModelsMapping(CLASS.getBy(mapping['']));\n mapping = _.merge(mapping, decoratorMapping);\n }\n\n let res: any;\n if (_.isArray(circular) && circular.length > 0) {\n res = setMappingCirc(json, mapping, circular);\n } else {\n res = setMapping(json, mapping);\n }\n return res;\n }\n\n function decodeFromDecorator(json: Object, production = false): Mapping {\n const entityClass = CLASS.getFromObject(json);\n const mappings = getModelsMapping(entityClass);\n return mappings as any;\n }\n\n export function getModelsMapping(entity: Function) {\n if (!_.isFunction(entity) || entity === Object) {\n return {};\n }\n const className = CLASS.getName(entity);\n // console.log(`getMaping for: '${className}' `)\n let enityOWnMapping: any[] = _.isArray(entity[SYMBOL.MODELS_MAPPING])\n ? entity[SYMBOL.MODELS_MAPPING]\n : [{ '': className }];\n\n let res = {};\n let parents = enityOWnMapping\n .filter(m => !_.isUndefined(m['']) && m[''] !== className)\n .map(m => m['']);\n\n enityOWnMapping.reverse().forEach(m => {\n m = _.cloneDeep(m);\n // console.log(`'${className}' m:`, m)\n Object.keys(m).forEach(key => {\n const v = m[key];\n const isArr = _.isArray(v);\n const model = isArr ? _.first(v) : v;\n if (parents.includes(model)) {\n m[key] = isArr ? [className] : className;\n }\n });\n res = _.merge(res, m);\n });\n res[''] = className;\n // console.log(`mapping for ${className} : ${JSON.stringify(res)}`)\n return res;\n }\n\n export type Mapping<T = {}> = {\n [P in keyof T]?: string | string[];\n };\n\n function add(o: Object, path: string, mapping: Mapping = {}) {\n if (!o || Array.isArray(o) || typeof o !== 'object') return;\n const proptotypeObj = Object.getPrototypeOf(o);\n if (!proptotypeObj) {\n return;\n }\n const objectClassName = CLASS.getName(proptotypeObj.constructor);\n const resolveClass = CLASS.getBy(objectClassName);\n if (!resolveClass) {\n if (objectClassName !== 'Object') {\n if (UtilsOs.isBrowser) {\n console.error(\n `Cannot resolve class \"${objectClassName}\" while mapping.`,\n );\n }\n }\n return;\n }\n if (!mapping[path]) mapping[path] = CLASS.getName(resolveClass) as any;\n }\n\n /**\n * USE ONLY IN DEVELOPMENT\n * @param c\n * @param path\n * @param mapping\n * @param level\n */\n function getMappingNaive(\n c: Object,\n path = '',\n mapping: Mapping = {},\n level = 0,\n ) {\n if (c === null || c === undefined) {\n return;\n }\n/* */\n/* */\n/* */\n/* */\n \n // console.log({c})\n if (Array.isArray(c)) {\n c.forEach(c => getMappingNaive(c, path, mapping, level));\n return mapping;\n }\n if (++level === 16) return;\n add(c, path, mapping);\n for (var p in c) {\n if (_.isFunction(c.hasOwnProperty) && c.hasOwnProperty(p)) {\n const v = c[p];\n if (Array.isArray(v) && v.length > 0) {\n // reducer as impovement\n v.forEach((elem, i) => {\n // const currentPaht = [`path[${i}]`, p].filter(c => c.trim() != '').join('.');\n const currentPaht = [path, p].filter(c => c.trim() != '').join('.');\n getMappingNaive(elem, currentPaht, mapping, level);\n });\n } else if (typeof v === 'object') {\n const currentPaht = [path, p].filter(c => c.trim() != '').join('.');\n add(v, currentPaht, mapping);\n getMappingNaive(v, currentPaht, mapping, level);\n }\n }\n }\n return mapping;\n }\n\n function getMappingPathFrom(pathLodhas: string) {\n if (!_.isString(pathLodhas)) {\n return void 0;\n }\n const regex = /\\[([0-9a-zA-Z]|\\'|\\\")*\\]/g;\n pathLodhas = pathLodhas.replace(regex, '').replace('..', '.');\n if (pathLodhas.startsWith('.')) {\n pathLodhas = pathLodhas.slice(1);\n }\n return pathLodhas;\n }\n\n function setMappingCirc(\n json: Object,\n mapping: Mapping = {},\n circular: Circ[] = [],\n ) {\n const mainClassFn = !_.isArray(json) && CLASS.getBy(mapping['']);\n // console.log(mapping)\n walk.Object(json, (v, lodashPath, changeValue) => {\n if (!_.isUndefined(v) && !_.isNull(v)) {\n const mappingPath = getMappingPathFrom(lodashPath);\n if (!_.isUndefined(mapping[mappingPath])) {\n const isArray = _.isArray(mapping[mappingPath]);\n if (!isArray) {\n const className = isArray\n ? _.first(mapping[mappingPath])\n : mapping[mappingPath];\n const classFN = CLASS.getBy(className);\n if (_.isFunction(classFN)) {\n // console.log(`mapping: '${mappingPath}', lp: '${lodashPath}' class: '${className}' , set `, v.location)\n changeValue(_.merge(new (classFN as any)(), v));\n }\n }\n }\n }\n });\n\n circular.forEach(c => {\n const ref = _.get(json, c.circuralTargetPath);\n _.set(json, c.pathToObj, ref);\n });\n\n if (_.isFunction(mainClassFn)) {\n json = _.merge(new (mainClassFn as any)(), json);\n }\n\n return json;\n }\n\n function setMapping(json: Object, mapping: Mapping = {}) {\n // console.log('mapping', mapping)\n if (Array.isArray(json)) {\n return json.map(j => {\n return setMapping(j, mapping);\n });\n }\n\n const mainClassFn = CLASS.getBy(mapping['']);\n\n for (const key in json) {\n if (json.hasOwnProperty(key)) {\n // if (mainClassFn && mainClassFn.name === 'Project') {\n // // console.log(`OWn property: \"${key}\"`)\n // }\n if (_.isArray(json[key])) {\n json[key] = json[key].map(arrObj => {\n const objMapping = getModelsMapping(CLASS.getBy(mapping[key]));\n return setMapping(arrObj, objMapping);\n });\n } else if (_.isObject(json[key])) {\n const objMapping = getModelsMapping(CLASS.getBy(mapping[key]));\n json[key] = setMapping(json[key], objMapping);\n }\n }\n // else {\n // if (mainClassFn && mainClassFn.name === 'Project') {\n // // console.log(`Not own property: \"${key}\"`)\n // }\n // }\n }\n\n Object.keys(mapping)\n .filter(key => key !== '' && key.split('.').length >= 2)\n .forEach(lodasPath => {\n // console.log(`Loadsh path: ${lodasPath}`)\n const objMapping = getModelsMapping(CLASS.getBy(mapping[lodasPath]));\n const input = _.get(json, lodasPath);\n if (!_.isUndefined(input)) {\n const res = setMapping(input, objMapping);\n _.set(json, lodasPath, res);\n }\n });\n\n if (!mainClassFn) {\n return json;\n }\n return _.merge(new (mainClassFn as any)(), json);\n }\n\n export type ModelValue<T> = {\n /**\n * Inside models types\n */\n [propName in keyof T]?: T[propName];\n };\n\n export function DefaultModelWithMapping<T = Object>(\n defaultModelValues?: ModelValue<T>,\n mapping?: Mapping<T>,\n ) {\n return function (target: Function) {\n if (!_.isArray(target[SYMBOL.MODELS_MAPPING])) {\n target[SYMBOL.MODELS_MAPPING] = [];\n }\n\n (target[SYMBOL.MODELS_MAPPING] as any[]).push({\n '': CLASS.getName(target),\n });\n if (_.isObject(mapping)) {\n target[SYMBOL.MODELS_MAPPING] = (\n target[SYMBOL.MODELS_MAPPING] as any[]\n ).concat(mapping);\n Object.keys(mapping).forEach(key => {\n const v = mapping;\n if (_.isUndefined(v) || _.isFunction(v)) {\n throw `\n\n\n Class: '${target.name}'\n[ng2rest] Bad mapping value for path: ${key} , please use type: <string> or [<string>]\n`;\n }\n });\n }\n\n if (_.isObject(defaultModelValues)) {\n const toMerge = {};\n const describedTarget = CLASS.describeProperites(target).filter(prop =>\n /^([a-zA-Z0-9]|\\_|\\#)+$/.test(prop),\n );\n // console.log(`describedTarget: ${describedTarget} for ${target.name}`)\n describedTarget.forEach(propDefInConstr => {\n if (defaultModelValues[propDefInConstr]) {\n console.warn(`\n\n CONFLICT: default value for property: \"${propDefInConstr}\"\n in class \"${target.name}\" already defined as typescript\n default class proprty value.\n\n `);\n } else {\n toMerge[propDefInConstr] = null; // TODO from toString I can't know that\n }\n });\n\n // console.log(`merge \"${JSON.stringify(target.prototype)}\" with \"${JSON.stringify(defaultModelValues)}\"`)\n\n target[SYMBOL.DEFAULT_MODEL] = _.merge(toMerge, defaultModelValues);\n\n const propsToOmmit = Object.keys(target[SYMBOL.DEFAULT_MODEL]).filter(\n key => {\n const descriptor = Object.getOwnPropertyDescriptor(\n target.prototype,\n key,\n );\n return !!descriptor;\n },\n );\n _.merge(\n target.prototype,\n _.omit(target[SYMBOL.DEFAULT_MODEL], propsToOmmit),\n );\n\n // console.log(`DEFAULT VALUE MERGE for ${target.name}`)\n }\n };\n }\n}","import { _ } from 'tnp-core/websql';\nimport { CoreHelpers } from 'tnp-core/websql';\nimport { Mapping } from './mapping';\nimport { JSON10 } from 'json10/websql';\n\n// @ts-ignore\nexport class Helpers extends CoreHelpers {\n\n static JSON = JSON10;\n\n static get Mapping() {\n return {\n encode<T = Function>(json: Object, mapping: Mapping.Mapping): T {\n return Mapping.encode(json, mapping);\n },\n decode(json: Object, autodetect = false ): Mapping.Mapping {\n return Mapping.decode(json, autodetect)\n }\n }\n }\n\n static checkValidUrl(url: string): boolean {\n let regex = /(http|https):\\/\\/(\\w+:{0,1}\\w*)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%!\\-\\/]))?/;\n return regex.test(url);\n }\n\n\n\n}","import { diffChars } from 'diff';\nimport { _ } from 'tnp-core/websql';\nimport { Log, Level } from 'ng2-logger/websql';\nimport { Models } from './models';\nimport { Helpers } from './helpers';\n\nconst log = Log.create('[ng2-rest] params', Level.__NOTHING)\n\n\n\n/** check if string is a valid pattern */\nexport function isValid(pattern: string) {\n return (new RegExp('\\/:[a-zA-Z]*', 'g')).test(pattern.replace('://', ''));\n}\n\nexport function check(url: string, pattern: string): boolean {\n if (!Helpers.checkValidUrl(url)) {\n log.error(`Incorrect url: ${url}`);\n return false;\n }\n if (url.charAt(url.length - 1) === '/') url = url.slice(0, url.length - 2);\n if (pattern.charAt(pattern.length - 1) === '/') pattern = pattern.slice(0, url.length - 2);\n pattern = pattern.replace(/\\//g, '\\/');\n pattern = pattern.replace(new RegExp('\\/:[a-zA-Z]*', 'g'), '.+');\n let reg = new RegExp(pattern, 'g');\n return reg.test(url);\n}\n\nexport function getModels(pattern: string): string[] {\n let m = pattern.match(new RegExp('[a-z-A-Z]*\\/:', 'g'));\n return m.map(p => p.replace('/:', ''));\n}\n\nexport function getRestPramsNames(pattern: string): string[] {\n if (pattern.charAt(pattern.length - 1) !== '/') pattern = `${pattern}/`;\n let m = pattern.match(new RegExp(':[a-zA-Z]*\\/', 'g'));\n let res = m.map(p => p.replace(':', '').replace('/', ''));\n return res.filter(p => p.trim() !== '');\n}\n\nexport function containsModels(url: string, models: string[]): boolean {\n if (url.charAt(0) !== '/') url = '/' + url;\n // url = url.replace(new RegExp('\\/', 'g'), '');\n let res = models.filter(m => {\n let word = '/' + m;\n // log.d('word', word)\n let iii = url.indexOf(word);\n // log.d('iii', iii)\n if (iii + word.length < url.length && url.charAt(iii + word.length) !== '/') {\n return false;\n }\n if (iii !== -1) {\n url = url.replace(new RegExp('\\/' + m, 'g'), '');\n return true;\n }\n return false;\n }).length;\n // log.d('containsModels', res);\n return res === models.length;\n}\n\nexport function stars(n: number): string {\n let res = '';\n for (let i = 0; i < n; i++) res += '*';\n return res;\n}\n\nexport function getRestParams(url: string, pattern: string): Object {\n let res = {};\n let models = getRestPramsNames(pattern);\n // log.d('models', models);\n models.forEach(m => {\n pattern = pattern.replace(`:${m}`, stars(m.length));\n })\n\n let currentModel: string = void 0;\n diffChars(pattern, url).forEach(d => {\n // log.d('d', d);\n if (d.added) {\n if (!isNaN(Number(d.value))) res[currentModel] = Number(d.value);\n else if (d.value.trim() === 'true') res[currentModel] = true;\n else if (d.value.trim() === 'false') res[currentModel] = false;\n else res[currentModel] = decodeURIComponent(d.value);\n currentModel = void 0;\n }\n let m = d.value.replace(':', \"\");\n // log.d('model m', m)\n if (d.removed) {\n currentModel = models.shift();\n }\n });\n return res;\n}\n\nexport const regexisPath = /[^\\..]+(\\.[^\\..]+)+/g;\n\n/**\n * Models like books/:id\n */\nfunction cutUrlModel(params: Object, models: string[], output: string[]) {\n if (models.length === 0) return output.join('\\/');\n let m = models.pop();\n\n let param = m.match(/:[a-zA-Z0-9\\.]+/)[0].replace(':', '');\n const paramIsPath = regexisPath.test(param)\n // log.i('cut param', param)\n let model = m.match(/[a-zA-Z0-9]+\\//)[0].replace('\\/', '');\n if (params === void 0 ||\n (paramIsPath ? _.get(params, param) === void 0 : params[param] === void 0) ||\n param === 'undefined') {\n output.length = 0;\n output.unshift(model)\n return cutUrlModel(params, models, output);\n } else {\n if (paramIsPath) {\n // log.i('param is path', param)\n let mrep = m.replace(new RegExp(`:${param}`, 'g'), `${_.get(params, param)}`)\n output.unshift(mrep)\n return cutUrlModel(params, models, output);\n } else {\n // log.i('param is normal', param)\n let mrep = m.replace(new RegExp(`:${param}`, 'g'), `${params[param]}`)\n output.unshift(mrep)\n return cutUrlModel(params, models, output);\n }\n\n }\n}\n\n\nexport function interpolateParamsToUrl(params: Object, url: string): string {\n\n const regexInt = /\\[\\[([^\\..]+\\.[^\\..]+)+\\]\\]/g;\n\n url = url.split('/').map(p => {\n // log.d('url parts', p)\n let isParam = p.startsWith(':')\n if (isParam) {\n let part = p.slice(1);\n // log.d('url param part', p)\n if (regexInt.test(part)) {\n // let level = (url.split('.').length - 1)\n part = part.replace('[[', '')\n part = part.replace(']]', '')\n }\n return `:${part}`\n }\n return p;\n }).join('/');\n\n // log.i('URL TO EXPOSE', url)\n\n // log.i('params', params)\n\n let slash = {\n start: url.charAt(0) === '\\/',\n end: url.charAt(url.length - 1) === '\\/'\n }\n\n let morePramsOnEnd = url.match(/(\\/:[a-zA-Z0-9\\.]+){2,10}/g);\n if (morePramsOnEnd && (Array.isArray(morePramsOnEnd) && morePramsOnEnd.length === 1)) {\n // log.i('morePramsOnEnd', morePramsOnEnd)\n let m = morePramsOnEnd[0];\n let match = m.match(/\\/:[a-zA-Z0-9\\.]+/g);\n // log.i('match', match)\n match.forEach(e => {\n let c = e.replace('\\/:', '');\n // log.i('c', c)\n if (regexisPath.test(c)) {\n url = url.replace(e, `/${_.get(params, c)}`)\n } else {\n url = url.replace(e, `/${params[c]}`)\n }\n\n\n // log.i('prog url', url)\n })\n return url;\n }\n\n let nestedParams = url.match(/[a-zA-Z0-9]+\\/:[a-zA-Z0-9\\.]+/g);\n if (!nestedParams || (Array.isArray(nestedParams) && nestedParams.length === 0)) return url;\n\n // check alone params\n if (!slash.end) url = `${url}/`;\n let addUndefinedForAlone = (!/:[a-zA-Z0-9\\.]+\\/$/g.test(url) && /[a-zA-Z0-9]+\\/$/g.test(url));\n\n let replace = (nestedParams.length > 1 ? nestedParams.join('\\/') : nestedParams[0]) +\n (addUndefinedForAlone ? '\\/' + url.match(/[a-zA-Z0-9]+\\/$/g)[0] : '\\/');\n let beginHref = url.replace(replace, '')\n\n if (addUndefinedForAlone) {\n url = url.replace(/\\/$/g, '/:undefined')\n nestedParams = url.match(/[a-zA-Z0-9]+\\/:[a-zA-Z0-9\\.]+/g);\n url = cutUrlModel(params, nestedParams, [])\n } else {\n url = cutUrlModel(params, nestedParams, [])\n }\n url = beginHref + url;\n\n if (url.charAt(url.length - 1) !== '/' && slash.end) url = `${url}/`;\n if (url.charAt(0) !== '\\/' && slash.start) url = `/${url}`;\n\n return url;\n}\n\n/**\n * Get query params from url, like 'ex' in /api/books?ex=value\n*/\nexport function decodeUrl(url: string): Object {\n let regex = /[?&]([^=#]+)=([^&#]*)/g,\n params = {},\n match;\n while (match = regex.exec(url)) {\n params[decodeURIComponent(match[1])] = decodeURIComponent(match[2]);\n }\n let paramsObject = <Object>params;\n for (let p in paramsObject) {\n if (paramsObject[p] === void 0) {\n delete paramsObject[p];\n continue;\n }\n if (paramsObject.hasOwnProperty(p)) {\n // chcek if property is number\n let n = Number(params[p]);\n if (!isNaN(n)) {\n params[p] = n;\n continue;\n }\n if (typeof params[p] === 'string') {\n\n // check if property is object\n let json;\n try {\n json = JSON.parse(params[p]);\n } catch (error) { }\n if (json !== void 0) {\n params[p] = json;\n continue;\n }\n\n // chcek if property value is like regular rexpression\n // let regexExpression;\n // try {\n // regexExpression = new RegExp(params[p]);\n // } catch (e) { }\n // if (regexExpression !== undefined) params[p] = regexExpression;\n }\n }\n }\n return params;\n}\n\n/**\n * Create query params string for url\n *\n * @export\n * @param {UrlParams[]} params\n * @returns {string}\n */\nexport function getParamsUrl(params: Models.UrlParams[], doNotSerialize: boolean = false): string {\n let urlparts: string[] = [];\n if (!params) return '';\n if (!(params instanceof Array)) return '';\n if (params.length === 0) return '';\n\n params.forEach(urlparam => {\n if (JSON.stringify(urlparam) !== '{}') {\n\n let parameters: string[] = [];\n let paramObject = <Object>urlparam;\n\n\n for (let p in paramObject) {\n if (paramObject[p] === void 0) delete paramObject[p];\n if (paramObject.hasOwnProperty(p) && typeof p === 'string' && p !== 'regex' && !(paramObject[p] instanceof RegExp)) {\n if (p.length > 0 && p[0] === '/') {\n let newName = p.slice(1, p.length - 1);\n urlparam[newName] = urlparam[p];\n urlparam[p] = void 0;\n p = newName;\n }\n if (p.length > 0 && p[p.length - 1] === '/') {\n let newName = p.slice(0, p.length - 2);\n urlparam[newName] = urlparam[p];\n urlparam[p] = void 0;\n p = newName;\n }\n let v: any = urlparam[p];\n if (v instanceof Object) {\n urlparam[p] = JSON.stringify(urlparam[p]);\n }\n urlparam[p] = doNotSerialize ? <string>urlparam[p] : encodeURIComponent(<string>urlparam[p]);\n if (urlparam.regex !== void 0 && urlparam.regex instanceof RegExp) {\n\n if (!urlparam.regex.test(<string>urlparam[p])) {\n console.warn(`Data: ${urlparam[p]} incostistent with regex ${urlparam.regex.source}`);\n }\n }\n parameters.push(`${p}=${urlparam[p]}`);\n }\n\n }\n\n urlparts.push(parameters.join('&'));\n\n\n }\n\n\n });\n let join = urlparts.join().trim();\n if (join.trim() === '') return '';\n return `?${urlparts.join('&')}`;\n}\n\n\nfunction transform(o) {\n if (typeof o === 'object') {\n return encodeURIComponent(JSON.stringify(o));\n }\n return o;\n}\n\n\nexport function prepareUrlOldWay(params?: TemplateStringsArray): string {\n if (!params) return this.endpoint;\n if (typeof params === 'object') {\n params = transform(params);\n }\n return this.endpoint + '/' + params;\n}","import axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport type express from 'express';\nimport { firstValueFrom, from, Observable } from 'rxjs';\n\nexport interface AxiosTaonHttpHandler<T = any> {\n handle(req: AxiosRequestConfig): Observable<AxiosResponse<T>>;\n}\n\nexport interface TaonClientMiddlewareInterceptOptions<T = any> {\n req: AxiosRequestConfig; // <- request config only (no AxiosResponse here)\n next: AxiosTaonHttpHandler<T>;\n}\n\nexport interface TaonServerMiddlewareInterceptOptions<T = any> {\n req: express.Request;\n res: express.Response;\n next: express.NextFunction;\n}\n\nexport interface TaonAxiosClientInterceptor<T = any> {\n intercept(\n client: TaonClientMiddlewareInterceptOptions<T>,\n ): Observable<AxiosResponse<T>>;\n}\n\n// Optional helper for passing around context (browser/client)\n\n// === Backend handler (last in chain) ===\nexport class AxiosBackendHandler<T = any> implements AxiosTaonHttpHandler<T> {\n handle(req: AxiosRequestConfig): Observable<AxiosResponse<T>> {\n // axios returns a Promise; wrap as Observable\n return from(axios.request<T>(req));\n }\n}\n\n// === Chain builder (request: forward order, response: reverse order) ===\nexport const buildInterceptorChain = <T = any>(\n interceptors: Array<TaonAxiosClientInterceptor<T>>,\n backend: AxiosTaonHttpHandler<T>,\n): AxiosTaonHttpHandler<T> => {\n return interceptors.reduceRight<AxiosTaonHttpHandler<T>>(\n (next, interceptor) => ({\n handle: req => interceptor.intercept({ req, next }),\n }),\n backend,\n );\n};","/* */ \n\nimport { AxiosRequestConfig, AxiosResponse } from 'axios';\nimport { JSON10, Circ } from 'json10/websql';\nimport { Log, Level } from 'ng2-logger/websql';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { _ } from 'tnp-core/websql';\nimport { CoreModels } from 'tnp-core/websql';\nimport { Helpers } from 'tnp-core/websql';\nimport { Models as HelpersModels } from 'typescript-class-helpers/websql';\n\nimport { Cookie } from './cookie';\nimport { Mapping } from './mapping';\nimport { RestHeaders } from './rest-headers';\nimport { Rest } from './rest.class';\n\nclass RestCommonHttpResponseWrapper {\n declare success?: boolean;\n}\n\nexport class RestResponseWrapper extends RestCommonHttpResponseWrapper {\n declare data?: any;\n}\n\nexport class RestErrorResponseWrapper extends RestCommonHttpResponseWrapper {\n declare message: string;\n /**\n * stack trace / more details about error\n */\n declare details?: string;\n /**\n * http status code\n */\n declare status?: number;\n /**\n * custom error code from backend\n */\n declare code?: string;\n}\n\n// const log = Log.create('rest namespace', Level.__NOTHING)\n\nexport namespace Models {\n export import HttpMethod = CoreModels.HttpMethod;\n export import ParamType = CoreModels.ParamType;\n\n export import MethodConfig = HelpersModels.MethodConfig;\n export import ClassConfig = HelpersModels.ClassConfig;\n export import ParamConfig = HelpersModels.ParamConfig;\n\n export interface HandleResultOptions {\n res: Models.MockResponse;\n method: Models.HttpMethod;\n jobid?: number;\n isArray?: boolean;\n }\n\n export interface HandleResultSourceRequestOptions {\n url: string;\n method: Models.HttpMethod;\n // headers?: RestHeaders,\n body: any;\n isArray: boolean;\n }\n\n export type BackendError = {\n msg?: string;\n stack?: string[];\n data: any;\n };\n\n export type MetaRequest = {\n path: string;\n endpoint: string;\n entity: Mapping.Mapping;\n circular: Circ[];\n };\n export type HttpCode = 200 | 400 | 401 | 404 | 500;\n\n export type PromiseObservableMix<T> = Promise<T> & {\n observable: Observable<T>;\n };\n\n export type Ng2RestAxiosRequestConfig = {\n doNotSerializeParams?: boolean;\n } & AxiosRequestConfig<any>;\n\n export type MethodWithBody<E, T, R = PromiseObservableMix<E>> = (\n item?: T,\n params?: UrlParams[],\n axiosOptions?: Ng2RestAxiosRequestConfig,\n ) => R;\n export type ReplayData = {\n subject: Subject<any>;\n data: { url: string; body: string; headers: RestHeaders; isArray: boolean };\n /**\n * jobid\n */\n id: number;\n };\n export type ReqParams = {\n url: string;\n method: CoreModels.HttpMethod;\n headers?: RestHeaders;\n body?: any;\n jobid: number;\n isArray: boolean;\n };\n\n export interface ResourceModel<A, TA> {\n model: (pathModels?: Object, responseObjectType?: Function) => Rest<A, TA>;\n headers: RestHeaders;\n }\n\n export interface Ng2RestMethods<E, T> {\n get: MethodWithBody<E, T>;\n post: MethodWithBody<E, T>;\n put: MethodWithBody<E, T>;\n patch: MethodWithBody<E, T>;\n head: MethodWithBody<E, T>;\n delete: MethodWithBody<E, T>;\n jsonp: MethodWithBody<E, T>;\n }\n\n export type MockController = (\n url: string,\n method: CoreModels.HttpMethod,\n headers?: RestHeaders,\n body?: any,\n ) => MockResponse;\n\n export type MockHttp = MockResponse | MockController;\n\n export interface FnMethodsHttp<T, TA>\n extends Ng2RestMethods<HttpResponse<T>, T> {\n array: Ng2RestMethods<HttpResponse<TA>, TA>;\n }\n\n export interface FnMethodsHttpWithMock<T, TA>\n extends Ng2RestMethods<HttpResponse<T>, T> {\n array: Ng2RestMethods<HttpResponse<TA>, TA>;\n }\n\n export interface NestedParams {\n [params: string]: string;\n }\n\n export interface UrlParams {\n [urlModelName: string]: string | number | boolean | RegExp | Object;\n regex?: RegExp;\n }\n [];\n\n export abstract class BaseBody {\n protected toJSON(\n data,\n opt: {\n isJSONArray?: boolean;\n parsingError?: boolean;\n },\n ): object | undefined {\n opt = opt || { isJSONArray: false };\n let r = opt.isJSONArray ? [] : {};\n if (typeof data === 'string') {\n try {\n let parsed = JSON.parse(data);\n if (typeof parsed === 'string' && parsed.trim().startsWith('{')) {\n parsed = JSON.parse(parsed);\n }\n if (opt.parsingError && parsed[CoreModels.TaonHttpErrorCustomProp]) {\n return _.merge(new RestErrorResponseWrapper(), parsed);\n }\n return parsed;\n } catch (e) {}\n } else if (typeof data === 'object') {\n return data;\n }\n return r as any;\n }\n }\n\n export class HttpBody<T> extends BaseBody {\n constructor(\n private responseText: string | Blob,\n private isArray = false,\n private entity: Mapping.Mapping,\n private circular: Circ[],\n ) {\n super();\n }\n\n public get blob(): Blob {\n return this.responseText as Blob;\n }\n\n public get booleanValue(): boolean | undefined {\n if (!Helpers.isBlob(this.responseText)) {\n return ['ok', 'true'].includes((this.responseText as string)?.trim());\n }\n }\n\n public get numericValue(): number | undefined {\n if (!Helpers.isBlob(this.responseText)) {\n return Number((this.responseText as string)?.trim());\n }\n }\n\n public get rawJson(): Partial<T> {\n if (!Helpers.isBlob(this.responseText)) {\n let res = this.toJSON(this.responseText, { isJSONArray: this.isArray });\n if (this.circular && Array.isArray(this.circular)) {\n res = JSON10.parse(JSON.stringify(res), this.circular);\n }\n\n return res;\n }\n }\n\n public get json(): T {\n const isBlob = Helpers.isBlob(this.responseText);\n if (isBlob) {\n return void 0;\n }\n if (this.entity && typeof this.entity === 'function') {\n return this.entity(); // @LAST\n }\n if (this.entity && typeof this.entity === 'object') {\n const json = this.toJSON(this.responseText, {\n isJSONArray: this.isArray,\n });\n return Mapping.encode(json, this.entity, this.circular) as any;\n }\n let res = this.toJSON(this.responseText, { isJSONArray: this.isArray });\n if (this.circular && Array.isArray(this.circular)) {\n res = JSON10.parse(JSON.stringify(res), this.circular);\n }\n return res as any;\n }\n\n /**\n * undefined when blob\n */\n public get text(): string | undefined {\n if (!Helpers.isBlob(this.responseText)) {\n return (this.responseText as string)\n .replace(/^\\\"/, '')\n .replace(/\\\"$/, '');\n }\n }\n }\n\n export class ErrorBody<T = RestErrorResponseWrapper> extends BaseBody {\n constructor(private data) {\n super();\n }\n\n public get json(): T {\n return this.toJSON(this.data, { parsingError: true }) as any;\n }\n public get text(): string {\n return this.data;\n }\n }\n\n export abstract class BaseResponse<T> {\n protected static readonly cookies = Cookie.Instance;\n\n public get cookies() {\n return BaseResponse.cookies;\n }\n constructor(\n public responseText?: string | Blob,\n public readonly headers?: RestHeaders,\n public readonly statusCode?: HttpCode | number,\n public isArray = false,\n ) {}\n }\n\n export class HttpResponse<T> extends BaseResponse<T> {\n public body: HttpBody<T>;\n // public readonly TOTAL_COUNT_HEADER = 'X-Total-Count'.toLowerCase();\n // public get totalElements(): number {\n // return Number(this.headers.get(this.TOTAL_COUNT_HEADER));\n // }\n\n constructor(\n public sourceRequest: Models.HandleResultSourceRequestOptions,\n public responseText?: string | Blob,\n public headers?: RestHeaders,\n public statusCode?: HttpCode | number,\n public entity?: Mapping.Mapping | Function,\n public circular?: Circ[],\n public jobid?: number,\n public isArray = false,\n ) {\n // console.log({\n // sourceRequest, responseText, headers, statusCode, entity, circular, jobid, isArray\n // })\n super(responseText, headers, statusCode, isArray);\n\n this.init();\n }\n\n public init() {\n if (typeof this.entity === 'string') {\n // const headerWithMapping = headers.get(entity);\n let entityJSON = this.headers?.getAll(this.entity);\n if (!!entityJSON) {\n this.entity = JSON.parse(entityJSON.join());\n }\n }\n if (typeof this.circular === 'string') {\n // const headerWithMapping = headers.get(circular);\n let circuralJSON = this.headers?.getAll(this.circular);\n if (!!circuralJSON) {\n this.circular = JSON.parse(circuralJSON.join());\n }\n }\n this.body = new HttpBody(\n this.responseText,\n this.isArray,\n this.entity,\n this.circular,\n ) as any;\n }\n }\n\n export interface MockResponse {\n data?: any;\n code?: HttpCode;\n error?: string;\n headers?: RestHeaders;\n jobid?: number;\n isArray: boolean;\n }\n\n export type ResponseTypeAxios =\n | 'blob'\n | 'text'\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n}\n\nexport class HttpResponseError<\n ERROR_BODY = object,\n> extends Models.BaseResponse<any> {\n public readonly body: Models.ErrorBody<ERROR_BODY>;\n // public tryRecconect() {\n\n // }\n constructor(\n public message: string,\n responseText?: string,\n headers?: RestHeaders,\n statusCode?: Models.HttpCode | number,\n public jobid?: number,\n public sourceRequest?: Models.HandleResultSourceRequestOptions,\n ) {\n super(responseText, headers, statusCode);\n this.body = new Models.ErrorBody<ERROR_BODY>(responseText);\n }\n}","/**\n * Based on Headers from https://github.com/angular/angular/blob/master/packages/http/src/headers.ts\n */\nexport type RestHeadersOptions = RestHeaders | { [name: string]: (string | string[]) }\n\nexport class RestHeaders {\n /** @internal header names are lower case */\n _headers: Map<string, string[]> = new Map();\n /** @internal map lower case names to actual names */\n _normalizedNames: Map<string, string> = new Map();\n\n\n public static from(headers?: RestHeadersOptions) {\n if (!headers) {\n return void 0;\n }\n return new RestHeaders(headers);\n }\n\n private constructor(headers?: RestHeaders | { [name: string]: (string | string[]) }) {\n if (headers instanceof RestHeaders) {\n headers.forEach((values: string[], name: string) => {\n values.forEach(value => this.set(name, value));\n });\n } else {\n Object.keys(headers).forEach((name: string) => {\n const values: string[] = (Array.isArray(headers[name]) ? headers[name] : [headers[name]]) as any;\n this.delete(name);\n values.forEach(value => this.set(name, value));\n });\n }\n }\n\n /**\n * Returns a new RestHeaders instance from the given DOMString of Response RestHeaders\n */\n static fromResponseHeaderString(headersString: string): RestHeaders {\n const headers = new RestHeaders();\n // console.log({\n // headersString\n // })\n headersString.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const value = line.slice(index + 1).trim();\n headers.set(name, value);\n }\n });\n\n return headers;\n }\n\n /**\n * Appends a header to existing list of header values for a given header name.\n */\n append(name: string, value: string): void {\n const values = this.getAll(name);\n\n if (values === null) {\n this.set(name, value);\n } else {\n values.push(value);\n }\n }\n\n /**\n * Deletes all header values for the given name.\n */\n delete(name: string): void {\n const lcName = name.toLowerCase();\n this._normalizedNames.delete(lcName);\n this._headers.delete(lcName);\n }\n\n forEach(fn: (values: string[], name: string, headers: Map<string, string[]>) => void): void {\n this._headers.forEach(\n (values, lcName) => fn(values, this._normalizedNames.get(lcName), this._headers));\n }\n\n /**\n * Returns first header that matches given name.\n */\n get(name: string): string {\n const values = this.getAll(name);\n\n if (values === null) {\n return null;\n }\n\n return values.length > 0 ? values[0] : null;\n }\n\n /**\n * Checks for existence of header by given name.\n */\n has(name: string): boolean { return this._headers.has(name.toLowerCase()); }\n\n /**\n * Returns the names of the headers\n */\n keys(): string[] { return Array.from(this._normalizedNames.values()); }\n\n /**\n * Sets or overrides header value for given name.\n */\n set(name: string, value: string | string[]): void {\n if (Array.isArray(value)) {\n if (value.length) {\n this._headers.set(name.toLowerCase(), [value.join(',')]);\n }\n } else {\n this._headers.set(name.toLowerCase(), [value]);\n }\n this.mayBeSetNormalizedName(name);\n }\n\n /**\n * Returns values of all headers.\n */\n values(): string[][] { return Array.from(this._headers.values()); }\n\n /**\n * Returns string of all headers.\n */\n // TODO(vicb): returns {[name: string]: string[]}\n toJSON(): { [name: string]: any } {\n const serialized: { [name: string]: string[] } = {};\n if (!this._headers) {\n // debugger\n\n }\n // console.log('serializing headers',this._headers)\n this._headers.forEach((values: string[], name: string) => {\n const split: string[] = [];\n values.forEach(v => split.push(...v.split(',')));\n // console.log({\n // values\n // })\n // values.forEach(v => split.push(...(v ? v : '').split(',')));\n serialized[this._normalizedNames.get(name)] = split;\n });\n\n return serialized;\n }\n\n /**\n * Returns list of header values for a given name.\n */\n getAll(name: string): string[] {\n return this.has(name) ? this._headers.get(name.toLowerCase()) : null;\n }\n\n private mayBeSetNormalizedName(name: string): void {\n const lcName = name.toLowerCase();\n\n if (!this._normalizedNames.has(lcName)) {\n this._normalizedNames.set(lcName, name);\n }\n }\n}","//#region imports\nimport axios, { AxiosRequestConfig, AxiosResponse } from 'axios';\n/* */ \nimport { Level } from 'ng2-logger/websql';\nimport { Log, Logger } from 'ng2-logger/websql';\nimport { firstValueFrom, from, Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { _, UtilsOs } from 'tnp-core/websql';\nimport { Helpers } from 'tnp-core/websql';\nimport { CLASS } from 'typescript-class-helpers/websql';\n\nimport {\n AxiosBackendHandler,\n buildInterceptorChain,\n TaonAxiosClientInterceptor,\n} from './axios-interceptors';\nimport { HttpResponseError, Models } from './models';\nimport { Resource } from './resource-service';\nimport { RestHeaders } from './rest-headers';\n//#endregion\n\n// const log = Log.create('[ng2-rest] rest-request', Level.__NOTHING);\n\n/**\n * TODO refactor this (remove jobid)\n */\nconst jobIDkey = 'jobID';\nconst customObs = 'customObs';\nconst cancelFn = 'cancelFn';\nconst isCanceled = 'isCanceled';\n\n//#region mock request\n//#endregion\n\nexport class RestRequest {\n //#region fields\n public static zone;\n private static jobId = 0;\n private subjectInuUse: { [id: number]: Subject<any> } = {};\n private meta: { [id: number]: Models.MetaRequest } = {};\n //#endregion\n\n /**\n * key is interceptorName (just to identify who is intercepting)\n */\n interceptors = new Map<string, TaonAxiosClientInterceptor>();\n\n /**\n * key is a joined string METHOD-expressPath.\n * Example `GET-/api/users`\n */\n methodsInterceptors = new Map<string, TaonAxiosClientInterceptor>();\n\n private handlerResult(\n options: Models.HandleResultOptions,\n sourceRequest: Models.HandleResultSourceRequestOptions,\n ) {\n if (_.isUndefined(options)) {\n options = {} as any;\n }\n // log.d(`HANDLE RESULT (jobid:${options.jobid}) ${sourceRequest.url}`);\n const { res, jobid, isArray, method } = options;\n\n if (typeof res !== 'object') {\n throw new Error('No resposnse for request. ');\n }\n\n if (Helpers.isBrowser) {\n res.headers = RestHeaders.from(res.headers);\n }\n\n // error no internet\n if (res.error) {\n this.subjectInuUse[jobid].error(\n new HttpResponseError(\n res.error,\n res.data,\n res.headers,\n res.code,\n jobid,\n sourceRequest,\n ),\n );\n return;\n }\n const entity = this.meta[jobid].entity;\n const circular = this.meta[jobid].circular;\n\n const success = Resource['_listenSuccess'] as Subject<\n Models.HttpResponse<any>\n >;\n\n const reqResp = new Models.HttpResponse(\n sourceRequest,\n res.data,\n res.headers,\n res.code,\n entity,\n circular,\n jobid,\n isArray,\n );\n success.next(reqResp);\n\n this.subjectInuUse[jobid].next(reqResp);\n this.meta[jobid] = void 0;\n this.subjectInuUse[jobid].complete();\n }\n\n private async req(\n url: string,\n method: Models.HttpMethod,\n headers?: RestHeaders,\n body?: any,\n jobid?: number,\n isArray = false,\n mockHttp?: Models.MockHttp,\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ) {\n const CancelToken = axios.CancelToken;\n const source = CancelToken.source();\n this.subjectInuUse[jobid][cancelFn] = source.cancel;\n\n var response: AxiosResponse<any>;\n if (mockHttp) {\n if (typeof mockHttp === 'object') {\n response = {\n data: mockHttp.data,\n status: mockHttp.code,\n headers: mockHttp.headers as any,\n statusText: mockHttp.error,\n config: {} as any,\n };\n } else if (typeof mockHttp === 'function') {\n const r = mockHttp(url, method, headers, body);\n response = {\n data: r.data,\n status: r.code,\n headers: r.headers as any,\n statusText: r.error,\n config: {} as any,\n };\n }\n }\n\n const isFormData = CLASS.getNameFromObject(body) === 'FormData';\n const formData: FormData = isFormData ? (body as any) : void 0;\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n/* */\n \n\n const headersJson = headers.toJSON();\n const responseType = headersJson.responsetypeaxios\n ? headersJson.responsetypeaxios\n : 'text';\n\n try {\n if (!response) {\n/* */\n/* */\n/* */\n/* */\n \n\n // console.log('headers axios:', headers.toJSON())\n // console.log({ responseType, headersJson, body, method, url })\n let axiosConfig: AxiosRequestConfig<any> = {\n url,\n method,\n data: body,\n responseType,\n headers: headersJson,\n cancelToken: source.token,\n ...(axiosOptions || {}), // merge with axiosOptions\n // withCredentials: true, // this can be done manually\n };\n\n if (isFormData) {\n axiosConfig.maxBodyLength = Infinity;\n }\n\n // console.log('AXIOS CONFIG', axiosConfig);\n const uri = new URL(url);\n const backend = new AxiosBackendHandler<any>();\n\n const globalInterceptors = Array.from(this.interceptors.entries()).map(\n ([_, interceptor]) => interceptor,\n );\n\n const methodInterceptors = Array.from(\n this.methodsInterceptors.entries(),\n )\n .filter(([key]) => {\n const ending = `-${method?.toUpperCase()}-${uri.pathname}`;\n return key.endsWith(ending);\n })\n .map(([_, interceptor]) => interceptor);\n\n // console.log(\n // `for ${uri.pathname} global ${globalInterceptors.length} method: ${methodInterceptors.length}`,\n // );\n\n const allInterceptors = [...globalInterceptors, ...methodInterceptors];\n\n const handler = buildInterceptorChain(allInterceptors, backend);\n response = await firstValueFrom(handler.handle(axiosConfig));\n // log.d(`after response of jobid: ${jobid}`);\n }\n\n // console.log('AXIOS RESPONES', response)\n\n if (this.subjectInuUse[jobid][isCanceled]) {\n return;\n }\n\n // handle normal request\n this.handlerResult(\n {\n res: {\n code: response.status as any,\n data: response.data,\n isArray,\n jobid,\n headers: RestHeaders.from(response.headers as any),\n },\n method,\n jobid,\n isArray,\n },\n {\n url,\n body,\n method,\n isArray,\n },\n );\n } catch (catchedError) {\n if (this.subjectInuUse[jobid][isCanceled]) {\n return;\n }\n // console.log('ERROR RESPONESE catchedError typeof ', typeof catchedError)\n // console.log('ERROR RESPONESE catchedError', catchedError)\n if (\n typeof catchedError === 'object' &&\n catchedError.response &&\n catchedError.response.data\n ) {\n const err = catchedError.response.data;\n const msg: string = catchedError.response.data.message || '';\n // console.log({\n // 'err.stack': err?.stack\n // })\n let stack: string[] = (err.stack || '').split('\\n');\n\n const errObs = Resource[\n '_listenErrors'\n ] as Subject<Models.BackendError>;\n errObs.next({\n msg,\n stack,\n data: catchedError.response.data,\n });\n }\n const error =\n catchedError && catchedError.response\n ? `[${catchedError.response.statusText}]: `\n : '';\n\n // handle error request\n this.handlerResult(\n {\n res: {\n code:\n catchedError && catchedError.response\n ? (catchedError.response.status as any)\n : void 0,\n error: `${error}${catchedError.message}`,\n data:\n catchedError && catchedError.response\n ? JSON.stringify(catchedError.response.data)\n : void 0,\n isArray,\n jobid,\n headers: RestHeaders.from(\n catchedError &&\n catchedError.response &&\n catchedError.response.headers,\n ),\n },\n method,\n jobid,\n isArray,\n },\n {\n url,\n body,\n isArray,\n method,\n },\n );\n }\n }\n\n private getReplay(\n method: Models.HttpMethod,\n meta: Models.MetaRequest,\n onlyGetLastReplayForMethod: boolean,\n ): Models.ReplayData {\n let replay: Models.ReplayData;\n\n //#region prevent empty tree\n if (_.isUndefined(this.replaySubjects[meta.endpoint])) {\n // log.i(`(${meta.endpoint}) `);\n this.replaySubjects[meta.endpoint] = {};\n }\n if (_.isUndefined(this.replaySubjects[meta.endpoint][meta.path])) {\n // log.i(`(${meta.endpoint})(${meta.path}) `);\n this.replaySubjects[meta.endpoint][meta.path] = {};\n }\n if (_.isUndefined(this.replaySubjects[meta.endpoint][meta.path][method])) {\n // log.i(`(${meta.endpoint})(${meta.path}) `);\n this.replaySubjects[meta.endpoint][meta.path][method] = {};\n }\n //#endregion\n\n const objectIDToCreateOrLast =\n Object.keys(\n this.replaySubjects[meta.endpoint][meta.path][method] as Object,\n ).length + (onlyGetLastReplayForMethod ? 0 : 1);\n if (onlyGetLastReplayForMethod && objectIDToCreateOrLast === 0) {\n return replay;\n }\n\n if (\n _.isUndefined(\n this.replaySubjects[meta.endpoint][meta.path][method][\n objectIDToCreateOrLast\n ],\n )\n ) {\n // log.i(`(${meta.endpoint})(${meta.path})(${method}) `);\n this.replaySubjects[meta.endpoint][meta.path][method][\n objectIDToCreateOrLast\n ] = <Models.ReplayData>{\n subject: new Subject(),\n data: void 0,\n };\n }\n\n replay =\n this.replaySubjects[meta.endpoint][meta.path][method][\n objectIDToCreateOrLast\n ];\n\n if (!_.isNumber(replay.id)) {\n if (RestRequest.jobId === Number.MAX_SAFE_INTEGER) {\n RestRequest.jobId = 0;\n }\n\n const jobid: number = RestRequest.jobId++;\n replay.id = jobid;\n const subject: Subject<any> = replay.subject;\n subject[jobIDkey] = jobid; // modify internal rxjs subject obj\n\n this.meta[jobid] = meta;\n this.subjectInuUse[jobid] = subject;\n\n this.subjectInuUse[jobid][customObs] = new Observable(observer => {\n // observer.remove(() => {\n\n // });\n observer.add(() => {\n // console.log(`cancel observable job${jobid}`)\n if (!this.subjectInuUse[jobid][isCanceled]) {\n this.subjectInuUse[jobid][isCanceled] = true;\n if (typeof this.subjectInuUse[jobid][cancelFn] === 'function') {\n this.subjectInuUse[jobid][cancelFn](\n '[ng2-rest] on purpose canceled http request',\n );\n }\n } else {\n // console.log(`somehow second time cancel ${jobid}`)\n }\n });\n const sub = subject.subscribe({\n next: a => observer.next(a),\n error: a => observer.error(a),\n complete: () => {\n sub.unsubscribe();\n observer.complete();\n },\n });\n });\n\n //#region DISPOSE @UNCOMMENT AFTER TESTS\n // if (objectIDToCreateOrLast > 2) {\n // const oldReq: Models.ReplayData = this.replaySubjects[meta.endpoint][meta.path][method][(objectIDToCreateOrLast - 2)];\n // if (_.isUndefined(this.meta[oldReq.id])) {\n // // cant delete this - for counter purpose\n // this.replaySubjects[meta.endpoint][meta.path][method][(objectIDToCreateOrLast - 2)] = {};\n // delete this.subjectInuUse[oldReq.id];\n // delete this.meta[oldReq.id];\n // }\n // }\n //#endregion\n }\n\n return replay;\n }\n\n //#region http methods\n\n private generalReq(\n method: Models.HttpMethod,\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp,\n axiosOptions: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<any> {\n const replay: Models.ReplayData = this.getReplay(method, meta, false);\n replay.data = { url, body, headers, isArray };\n\n ((\n pthis,\n purl,\n pmethod,\n pheaders,\n pbody,\n pid,\n pisArray,\n pmockHttp,\n axiosOpt,\n ) => {\n // log.d(`for ${purl} jobid ${pid}`);\n setTimeout(() =>\n pthis.req(\n purl,\n pmethod,\n pheaders,\n pbody,\n pid,\n pisArray,\n pmockHttp,\n axiosOpt,\n ),\n );\n })(\n this,\n url,\n method,\n headers,\n body,\n replay.id,\n isArray,\n mockHttp,\n axiosOptions,\n );\n\n const resp: Models.PromiseObservableMix<any> = firstValueFrom(\n replay.subject[customObs],\n ) as any;\n resp.observable = replay.subject[customObs];\n return resp;\n }\n\n get(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp,\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<any> {\n return this.generalReq(\n 'get',\n url,\n body,\n headers,\n meta,\n isArray,\n mockHttp,\n axiosOptions,\n );\n }\n\n head(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp,\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<any> {\n return this.generalReq(\n 'head',\n url,\n body,\n headers,\n meta,\n isArray,\n mockHttp,\n axiosOptions,\n );\n }\n\n delete(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp,\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<any> {\n return this.generalReq(\n 'delete',\n url,\n body,\n headers,\n meta,\n isArray,\n mockHttp,\n axiosOptions,\n );\n }\n\n post(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp,\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<any> {\n return this.generalReq(\n 'post',\n url,\n body,\n headers,\n meta,\n isArray,\n mockHttp,\n axiosOptions,\n );\n }\n\n put(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp,\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<any> {\n return this.generalReq(\n 'put',\n url,\n body,\n headers,\n meta,\n isArray,\n mockHttp,\n axiosOptions,\n );\n }\n\n patch(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp,\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<any> {\n return this.generalReq(\n 'patch',\n url,\n body,\n headers,\n meta,\n isArray,\n mockHttp,\n axiosOptions,\n );\n }\n\n jsonp(\n url: string,\n body: string,\n headers: RestHeaders,\n meta: Models.MetaRequest,\n isArray: boolean,\n mockHttp: Models.MockHttp,\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<any> {\n const method = 'jsonp';\n\n if (UtilsOs.isSSRMode) {\n const emptyStuff = Promise.resolve() as Models.PromiseObservableMix<any>;\n emptyStuff.observable = new Observable<any>();\n console.warn(`Cannot perform jsonp request in SSR mode`);\n return emptyStuff;\n }\n\n const replay: Models.ReplayData = this.getReplay('jsonp', meta, false);\n const jobid = replay.id;\n\n setTimeout(() => {\n if (url.endsWith('/')) url = url.slice(0, url.length - 1);\n let num = Math.round(10000 * Math.random());\n let callbackMethodName = 'cb_' + num;\n let win: any = globalThis; // TODO not a good idea! @LAST\n win[callbackMethodName] = data => {\n // handle jsonp result data\n this.handlerResult(\n {\n res: {\n data,\n isArray,\n },\n method,\n jobid,\n isArray,\n },\n {\n url,\n body,\n isArray,\n method,\n },\n );\n };\n let sc = document.createElement('script');\n sc.src = `${url}?callback=${callbackMethodName}`;\n document.body.appendChild(sc);\n document.body.removeChild(sc);\n });\n\n const resp: Models.PromiseObservableMix<any> = firstValueFrom(\n replay.subject[customObs],\n ) as any;\n resp.observable = replay.subject[customObs];\n return resp;\n }\n //#endregion\n private replaySubjects = {};\n}","import { RestHeaders } from \"./rest-headers\";\n\n\nexport const CONTENT_TYPE = {\n APPLICATION_JSON: RestHeaders.from({\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n }),\n APPLICATINO_VND_API_JSON: RestHeaders.from({\n 'Content-Type': 'application/vnd.api+json',\n 'Accept': 'application/vnd.api+json'\n }),\n}","//#region import\n// import { Log, Level } from 'ng2-logger/src';\n\n// const log = Log.create('rest.class', Level.__NOTHING)\n\nimport { CLASS } from 'typescript-class-helpers/websql';\n\nimport { CONTENT_TYPE } from './content-type';\nimport { Models } from './models';\nimport { getRestParams, getParamsUrl } from './params';\nimport { RestHeaders } from './rest-headers';\nimport { RestRequest } from './rest-request';\n//#endregion\n\nexport class Rest<T, TA = T[]> implements Models.FnMethodsHttpWithMock<T, TA> {\n private mockHttp: Models.MockHttp;\n mock(mock: Models.MockHttp): Models.FnMethodsHttp<T, TA> {\n if (typeof mock === 'function' || typeof mock === 'object') {\n this.mockHttp = mock;\n } else {\n throw `[ng2-rest]\n .model(...)\n .mock( < BAD MOCK DATA > )\n ...\n `;\n }\n return this;\n }\n\n //#region private fields\n private __meta_endpoint: string;\n private _endpointRest: string;\n private get endpoint() {\n let e = this.__meta_endpoint;\n if (\n this.restQueryParams !== void 0 &&\n this._endpointRest !== void 0 &&\n typeof this._endpointRest === 'string' &&\n this._endpointRest.trim() !== ''\n )\n e = this._endpointRest;\n return e;\n }\n private restQueryParams: Object;\n public set __rest_endpoint(endpoint) {\n this._endpointRest = endpoint;\n if (endpoint === void 0) {\n this.restQueryParams = void 0;\n } else {\n this.restQueryParams = getRestParams(endpoint, this.__meta_endpoint);\n }\n }\n\n private creatUrl(params: any, doNotSerializeParams: boolean = false) {\n return `${this.endpoint}${getParamsUrl(params, doNotSerializeParams)}`;\n }\n\n //#endregion\n\n //#region constructor\n private _headers = RestHeaders.from(CONTENT_TYPE.APPLICATION_JSON);\n get headers() {\n return this._headers;\n }\n constructor(\n endpoint: string,\n private request: RestRequest,\n private meta: Models.MetaRequest,\n private customContentType: RestHeaders,\n ) {\n this.__meta_endpoint = endpoint;\n }\n //#endregion\n\n //#region req\n\n private req(\n method: Models.HttpMethod,\n requestBody: T,\n params?: Models.UrlParams[],\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n isArray: boolean = false,\n ) {\n axiosOptions = axiosOptions || {};\n const modelUrl = this.creatUrl(params, !!axiosOptions.doNotSerializeParams);\n\n const isFormData = CLASS.getNameFromObject(requestBody) === 'FormData';\n\n const body = isFormData\n ? requestBody\n : requestBody\n ? JSON.stringify(requestBody)\n : void 0;\n\n // console.log('this.customContentType', this.customContentType)\n if (this.customContentType) {\n const customHeaderKeys = this.customContentType.keys();\n const currentHeaderKeys = this._headers.keys();\n currentHeaderKeys\n .filter(key => !customHeaderKeys.includes(key))\n .forEach(key => {\n this.customContentType.set(key, this._headers.get(key));\n });\n this._headers = this.customContentType;\n } else {\n this._headers = RestHeaders.from(CONTENT_TYPE.APPLICATION_JSON);\n }\n\n // console.log(\"_headers\", this.headers)\n\n const result = this.request[method.toLowerCase()](\n modelUrl,\n body,\n this.headers,\n this.meta,\n isArray,\n this.mockHttp,\n axiosOptions,\n );\n\n this.mockHttp = void 0;\n return result;\n }\n //#endregion\n\n //#region http methods\n\n array = {\n get: (\n item: TA,\n params: Models.UrlParams[] = void 0,\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('get', item as any, params, axiosOptions, true) as any;\n },\n head: (\n item: TA,\n params: Models.UrlParams[] = void 0,\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('head', item as any, params, axiosOptions, true) as any;\n },\n post: (\n item: TA,\n params?: Models.UrlParams[],\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('post', item as any, params, axiosOptions, true) as any;\n },\n put: (\n item: TA,\n params?: Models.UrlParams[],\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('put', item as any, params, axiosOptions, true) as any;\n },\n patch: (\n item: TA,\n params?: Models.UrlParams[],\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('patch', item as any, params, axiosOptions, true) as any;\n },\n delete: (\n item: TA,\n params?: Models.UrlParams[],\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('delete', item as any, params, axiosOptions, true) as any;\n },\n jsonp: (\n item: TA,\n params?: Models.UrlParams[],\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<TA>> => {\n return this.req('jsonp', item as any, params, axiosOptions, true) as any;\n },\n };\n\n get(\n item: T,\n params?: Models.UrlParams[],\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('get', item as any, params, axiosOptions) as any;\n }\n\n head(\n item: T,\n params?: Models.UrlParams[],\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('head', item as any, params, axiosOptions) as any;\n }\n\n post(\n item: T,\n params?: Models.UrlParams[],\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('post', item, params, axiosOptions);\n }\n\n put(\n item: T,\n params?: Models.UrlParams[],\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('put', item, params, axiosOptions);\n }\n\n patch(\n item: T,\n params?: Models.UrlParams[],\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('patch', item, params, axiosOptions);\n }\n\n delete(\n item: T,\n params?: Models.UrlParams[],\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('delete', item, params, axiosOptions);\n }\n\n jsonp(\n item: T,\n params?: Models.UrlParams[],\n axiosOptions?: Models.Ng2RestAxiosRequestConfig,\n ): Models.PromiseObservableMix<Models.HttpResponse<T>> {\n return this.req('jsonp', item, params, axiosOptions);\n }\n //#endregion\n}","//#region imports\nimport { Circ } from 'json10/websql';\nimport { Log, Level } from 'ng2-logger/websql';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { Helpers } from 'tnp-core/websql';\n\nimport { Cookie } from './cookie';\nimport { Mapping } from './mapping';\nimport { Models } from './models';\nimport {\n interpolateParamsToUrl,\n isValid,\n containsModels,\n getModels,\n} from './params';\nimport { RestHeaders } from './rest-headers';\nimport { RestRequest } from './rest-request';\nimport { Rest } from './rest.class';\n//#endregion\n\n// const log = Log.create('resouce-service', Level.__NOTHING);\n\nexport class Resource<E, T, TA> {\n protected static _listenErrors = new Subject<Models.BackendError>();\n protected static _listenSuccess = new Subject<Models.HttpResponse<any>>();\n public static get listenErrors() {\n return this._listenErrors.asObservable();\n }\n\n public static get listenSuccessOperations() {\n return this._listenSuccess.asObservable();\n }\n public static enableWarnings: boolean = true;\n\n //#region private mthods and fields\n public static initAngularNgZone(zone) {\n RestRequest.zone = zone;\n }\n\n private checkNestedModels(model: string, allModels: Object) {\n // if (model.indexOf('/') !== -1) { //TODO make this better, becouse now I unecesary checking shit\n for (let p in allModels) {\n if (allModels.hasOwnProperty(p)) {\n let m = allModels[p];\n if (isValid(p)) {\n let urlModels = getModels(p);\n if (containsModels(model, urlModels)) {\n model = p;\n break;\n }\n }\n }\n }\n // }\n return model;\n }\n\n private static instance = new Resource<string, any, any>();\n private static endpoints = {};\n public static getModel(endpoint: string, model: string): Rest<any> {\n model = Resource.prepareModel(model);\n const e = Resource.endpoints[endpoint];\n if (!e) {\n return void 0;\n }\n const r = Resource.endpoints[endpoint].models[model];\n return Resource.endpoints[endpoint].models[model];\n }\n public static request: RestRequest = new RestRequest();\n //#endregion\n\n //#region create\n public static create<A, TA = A[]>(\n e: string,\n model?: string,\n entityMapping?: Mapping.Mapping,\n circular?: Circ[],\n customContentType?: RestHeaders,\n ): Models.ResourceModel<A, TA> {\n const badRestRegEX = new RegExp('((\\/:)[a-z]+)+', 'g');\n const matchArr = model.match(badRestRegEX) || [];\n const badModelsNextToEachOther = matchArr.join();\n const atleas2DoubleDots =\n (badModelsNextToEachOther.match(new RegExp(':', 'g')) || []).length >= 2;\n if (atleas2DoubleDots && model.search(badModelsNextToEachOther) !== -1) {\n throw new Error(`\n\nBad rest model: ${model}\n\nDo not create rest models like this: /book/author/:bookid/:authorid\nInstead use nested approach: /book/:bookid/author/:authorid\n `);\n }\n Resource.map(e, e);\n Resource.instance.add(\n e,\n model ? model : '',\n entityMapping,\n circular,\n customContentType,\n );\n // if (model.charAt(model.length - 1) !== '/') model = `${model}/`;\n return {\n model: (params?: Object) =>\n Resource.instance.api(e, interpolateParamsToUrl(params, model)),\n get headers() {\n return Resource.getModel(e, model).headers;\n },\n };\n }\n //#endregion\n\n //#region reset\n public static reset() {\n Resource.endpoints = {};\n }\n //#endregion\n\n //#region constructor\n private constructor() {}\n //#endregion\n\n public static Cookies = Cookie.Instance;\n\n //#region map\n private static map(endpoint: string, url: string): boolean {\n // log.i('url', url);\n let regex =\n /(http|https):\\/\\/(\\w+:{0,1}\\w*)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%!\\-\\/]))?/;\n let e = endpoint;\n if (!regex.test(url)) {\n throw `Url address is not correct: ${url}`;\n }\n if (url.charAt(url.length - 1) === '/') url = url.slice(0, url.length - 1);\n // log.i('url after', url);\n if (Resource.endpoints[e] !== void 0) {\n Helpers.log(\n 'Cannot use map function at the same API endpoint again (' +\n Resource.endpoints[e].url +\n ')',\n );\n return false;\n }\n Resource.endpoints[e] = {\n url: url,\n models: {},\n entity: null,\n };\n // log.i('enpoints', Resource.endpoints);\n return true;\n }\n //#endregion\n\n private static prepareModel(model) {\n if (model.charAt(model.length - 1) === '/') {\n model = model.slice(0, model.length - 1);\n }\n if (model.charAt(0) === '/') {\n model = model.slice(1, model.length);\n }\n return model;\n }\n\n //#region add\n /**\n * And enipoint to application\n *\n * @param {E} endpoint\n * @param {string} model\n * @returns {boolean}\n */\n private add(\n endpoint: E,\n model: string,\n entity: Mapping.Mapping,\n circular?: Circ[],\n customContentType?: RestHeaders,\n ) {\n // log.i(`I am maping ${model} on ${<any>endpoint}`);\n model = Resource.prepareModel(model);\n\n let e: string;\n e = <string>endpoint.toString();\n\n if (Resource.endpoints[e] === void 0) {\n console.error('Endpoint is not mapped ! Cannot add model ' + model);\n return;\n }\n if (Resource.endpoints[e].models[model] !== void 0) {\n if (Resource.enableWarnings)\n console.warn(\n `Model '${model}' is already defined in endpoint: ` +\n Resource.endpoints[e].url,\n );\n return;\n }\n Resource.endpoints[e].models[model] = new Rest<T, TA>(\n Resource.endpoints[e].url + '/' + model,\n Resource.request,\n {\n endpoint: e,\n path: model,\n entity,\n circular,\n },\n customContentType,\n ); // TODO put custom content type in meta ?\n return;\n }\n //#endregion\n\n //#region api\n /**\n * Access api throught endpoint\n *\n * @param {E} endpoint\n * @param {string} model\n * @returns {Rest<T, TA>}\n */\n private api(endpoint: E, model: string): Rest<T, TA> {\n // log.i(`[api]\n\n // creating for endpoint: \"${endpoint}\"\n // model: \"${model}\"\n\n // `)\n if (model.charAt(0) === '/') model = model.slice(1, model.length);\n let e = <string>endpoint.toString();\n if (Resource.endpoints[e] === void 0) {\n throw `Endpoint: ${<any>endpoint} is not mapped ! Cannot add model: ${model}`;\n }\n let allModels: Object = Resource.endpoints[e].models;\n let orgModel = model;\n model = this.checkNestedModels(model, allModels);\n\n if (Resource.endpoints[e].models[model] === void 0) {\n // log.d('Resource.endpoints', Resource.endpoints);\n throw `Model '${model}' is undefined in endpoint: ${Resource.endpoints[e].url} `;\n }\n\n let res: Rest<T, TA> =\n Resource.endpoints[<string>endpoint.toString()].models[model];\n\n // log.d(`\n // orgModel: ${orgModel}\n // model: ${model}\n\n // `)\n if (orgModel !== model) {\n let baseUrl = Resource.endpoints[<string>endpoint.toString()].url;\n // log.d('base', Resource.endpoints[<string>(endpoint).toString()])\n // log.d('baseUrl', baseUrl)\n // log.d('orgModel', orgModel)\n res.__rest_endpoint = `${baseUrl}/${orgModel}`;\n } else {\n res.__rest_endpoint = void 0;\n }\n\n // log.i(`Resource.endpoints`, Resource.endpoints)\n return res;\n }\n //#endregion\n}\n\n// const res = Resource.create('')\n// res.model()\n// .mock({\n// code: 500,\n// data: {},\n// isArray: true\n// })\n// .array.","import { Observable } from 'rxjs';\nimport { Subscription } from 'rxjs';\nimport { Observer } from 'rxjs';\n\nimport { Models } from '../models';\nimport { Resource } from '../resource-service';\n\nexport interface RestPromises<A, TA, QP extends Models.UrlParams> {\n get: (tem?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n head: (tem?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n query: (tem?: A, queryParams?: QP) => Observable<Models.HttpResponse<TA>>;\n put: (item?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n patch: (item?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n post: (item?: A, queryParams?: QP) => Observable<Models.HttpResponse<A>>;\n delete: (\n item?: A,\n queryParams?: QP,\n ) => Observable<Models.HttpResponse<A> | any>;\n}\n\nexport interface Model<A, TA, RP extends Object, QP extends Models.UrlParams> {\n (restParams?: RP): RestPromises<A, TA, QP>;\n}\n\n/**\n *\n * @export\n * @abstract\n * @class SimpleResource\n * @extends {Resource<T, A, TA>}\n * @template E Endpoint type\n * @template A Single modle type\n * @template TA Array Model Type\n * @template RP rest url parameters type\n * @template QP query parameter type\n */\nclass ExtendedResource<\n E,\n A,\n TA,\n RP extends Object,\n QP extends Models.UrlParams,\n> {\n public static doNotSerializeQueryParams = false;\n public static handlers: Subscription[] = [];\n\n rest: Models.ResourceModel<A, TA>;\n\n /**\n * Get model by rest params\n */\n model: Model<A, TA, RP, QP> = (restParams?: RP) => {\n return {\n get: (item: A, queryPrams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(\n this.rest\n .model(restParams)\n .get(item, [queryPrams], {\n doNotSerializeParams:\n ExtendedResource.doNotSerializeQueryParams,\n })\n .observable.subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete(),\n ),\n );\n });\n },\n\n patch: (item: A, queryParams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(\n this.rest\n .model(restParams)\n .put(item, [queryParams], {\n doNotSerializeParams:\n ExtendedResource.doNotSerializeQueryParams,\n })\n .observable.subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete(),\n ),\n );\n });\n },\n\n head: (item: A, queryPrams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(\n this.rest\n .model(restParams)\n .head(item, [queryPrams], {\n doNotSerializeParams:\n ExtendedResource.doNotSerializeQueryParams,\n })\n .observable.subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete(),\n ),\n );\n });\n },\n\n query: (item: A, queryPrams?: QP) => {\n return Observable.create((observer: Observer<TA>) => {\n ExtendedResource.handlers.push(\n this.rest\n .model(restParams)\n .array.get(item as any, [queryPrams], {\n doNotSerializeParams:\n ExtendedResource.doNotSerializeQueryParams,\n })\n .observable.subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete(),\n ),\n );\n });\n },\n\n post: (item: A, queryParams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(\n this.rest\n .model(restParams)\n .post(item, [queryParams], {\n doNotSerializeParams:\n ExtendedResource.doNotSerializeQueryParams,\n })\n .observable.subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete(),\n ),\n );\n });\n },\n\n put: (item: A, queryParams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(\n this.rest\n .model(restParams)\n .put(item, [queryParams], {\n doNotSerializeParams:\n ExtendedResource.doNotSerializeQueryParams,\n })\n .observable.subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete(),\n ),\n );\n });\n },\n\n delete: (item: A, queryPrams?: QP) => {\n return Observable.create((observer: Observer<A>) => {\n ExtendedResource.handlers.push(\n this.rest\n .model(restParams)\n .delete(item, [queryPrams], {\n doNotSerializeParams:\n ExtendedResource.doNotSerializeQueryParams,\n })\n .observable.subscribe(\n data => observer.next(data.body.json),\n err => observer.error(err),\n () => observer.complete(),\n ),\n );\n });\n },\n };\n };\n\n // add(endpoint: E, model: string, group?: string, name?: string, description?: string) { }\n\n public constructor(\n private endpoint: E | string,\n private path_model: string,\n ) {\n this.rest = <any>Resource.create<A, TA>(<any>endpoint, path_model);\n }\n}\n\n/**\n *\n * @export\n * @class SimpleResource\n * @template A single model type\n * @template TA array model type\n * @template RP rest parameters type\n * @template QP query parameters type\n */\nexport class SimpleResource<A, TA> {\n model: Model<A, TA, Object, Models.UrlParams>;\n\n private static _isSetQueryParamsSerialization = false;\n public static set doNotSerializeQueryParams(value) {\n if (!SimpleResource._isSetQueryParamsSerialization) {\n SimpleResource._isSetQueryParamsSerialization = true;\n ExtendedResource.doNotSerializeQueryParams = value;\n return;\n }\n console.warn(`Query params serialization already set as\n ${ExtendedResource.doNotSerializeQueryParams},`);\n }\n\n public static __destroy() {\n ExtendedResource.handlers.forEach(h => h.unsubscribe());\n }\n\n constructor(endpoint: string, model: string) {\n let rest = new ExtendedResource<string, A, TA, Object, Models.UrlParams>(\n endpoint,\n model,\n );\n this.model = rest.model;\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["HelpersModels","Helpers"],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|