UNPKG

16.1 kBSource Map (JSON)View Raw
1{"version":3,"file":"resource.service.js","sourceRoot":"","sources":["../../tmp-src-bundle-browser/resource.service.ts"],"names":[],"mappings":"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","sourcesContent":["\n\n//#region imports\nimport { Observable } from 'rxjs/Observable';\nimport { Subject } from 'rxjs/Subject';\nimport 'rxjs/add/operator/map';\nimport 'rxjs/add/operator/takeUntil';\nimport 'rxjs/add/operator/take';\nimport 'rxjs/add/operator/toPromise';\n\nimport { Log, Level } from 'ng2-logger/browser';\nconst log = Log.create('resouce-service', Level.__NOTHING)\n\nimport { Rest } from './rest.class';\nimport { RestRequest } from './rest-request';\nimport { RestHeaders } from './rest-headers';\nimport { Cookie } from './cookie';\nimport { Mapping } from './mapping';\nimport { Models } from './models';\nimport { interpolateParamsToUrl, isValid, containsModels, getModels } from './params';\nimport { Circ } from 'json10/browser';\n//#endregion\n\n\n\nexport class Resource<E, T, TA> {\n\n public static DEFAULT_HEADERS = RestHeaders.from({\n 'Content-Type': 'application/json',\n 'Accept': 'application/json'\n });\n\n private static _listenErrors = new Subject<Models.BackendError>();\n public static get listenErrors() {\n return this._listenErrors.asObservable();\n }\n public static enableWarnings: boolean = true;\n\n //#region private mthods and fields\n private getZone() {\n const isNode = (typeof window === 'undefined')\n if (isNode) return;\n const ng = window['ng'];\n const getAllAngularRootElements = window['getAllAngularRootElements'];\n if (!ng || !getAllAngularRootElements) return;\n const probe = ng.probe;\n const coreTokens = ng.coreTokens;\n if (!coreTokens.NgZone) return;\n const zoneClass = coreTokens.NgZone;\n if (!probe || typeof probe !== 'function' || !getAllAngularRootElements) return;\n const angularElements: any[] = getAllAngularRootElements();\n if (!Array.isArray(angularElements) || angularElements.length === 0) return;\n const rootElement = ng.probe(angularElements[0]);\n if (!rootElement) return;\n const injector = rootElement.injector;\n if (!injector || !injector.get || typeof injector.get !== 'function') return;\n const zone = injector.get(zoneClass)\n return zone;\n }\n\n\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) return undefined;\n const r = Resource.endpoints[endpoint].models[model];\n return Resource.endpoints[endpoint].models[model];\n }\n private static request: RestRequest = new RestRequest();\n //#endregion\n\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 ): 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 = ((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(e, model ? model : '', entityMapping, circular);\n // if (model.charAt(model.length - 1) !== '/') model = `${model}/`;\n return {\n model: (params?: Object) => Resource.instance.api(\n e,\n interpolateParamsToUrl(params, model)\n ),\n replay: (method: Models.HttpMethod) => {\n Resource.getModel(e, model).replay(method);\n },\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 setTimeout(() => {\n const zone = this.getZone();\n if (!RestRequest.zone) RestRequest.zone = zone;\n })\n }\n //#endregion\n\n public static Cookies = Cookie.Instance;\n\n //#region map\n private static map(endpoint: string, url: string): boolean {\n\n log.i('url', url)\n let regex = /(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] !== undefined) {\n if (Resource.enableWarnings) console.warn('Cannot use map function at the same API endpoint again ('\n + Resource.endpoints[e].url + ')');\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) === '/') model = model.slice(0, model.length - 1);\n if (model.charAt(0) === '/') model = model.slice(1, model.length);\n return model;\n }\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(endpoint: E, model: string, entity: Mapping.Mapping, circular?: Circ[]) {\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] === undefined) {\n console.error('Endpoint is not mapped ! Cannot add model ' + model);\n return;\n }\n if (Resource.endpoints[e].models[model] !== undefined) {\n if (Resource.enableWarnings) console.warn(`Model '${model}' is already defined in endpoint: `\n + Resource.endpoints[e].url);\n return;\n }\n Resource.endpoints[e].models[model] =\n new Rest<T, TA>(Resource.endpoints[e].url\n + '/' + model, Resource.request, {\n endpoint: e,\n path: model,\n entity,\n circular\n });\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\n if (model.charAt(0) === '/') model = model.slice(1, model.length);\n let e = <string>(endpoint).toString();\n if (Resource.endpoints[e] === undefined) {\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] === undefined) {\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> = Resource.endpoints[<string>(endpoint).toString()].models[model];\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 res.__rest_endpoint = undefined;\n\n return res;\n }\n //#endregion\n\n}\n\n\n\n// const res = Resource.create('')\n// res.model()\n// .mock({\n// code: 500,\n// data: {},\n// isArray: true\n// })\n// .array.\n"]}
\No newline at end of file