ngx-http-annotations
Version:
This is a library to angular to use http request via decorator/annotations
1 lines • 32.1 kB
Source Map (JSON)
{"version":3,"file":"ngx-http-annotations.mjs","sources":["../../../../libs/ngx-http-annotations/src/lib/ngx-http-annotations.const.ts","../../../../libs/ngx-http-annotations/src/lib/ngx-http-annotations.utils.ts","../../../../libs/ngx-http-annotations/src/lib/ngx-http-annotations.module.ts","../../../../libs/ngx-http-annotations/src/public_api.ts","../../../../libs/ngx-http-annotations/src/ngx-http-annotations.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const HTTP_ANNOTATIONS_USE_MOCKS: InjectionToken<boolean> = new InjectionToken('HTTP_ANNOTATIONS_USE_MOCKS');\nexport const HTTP_ANNOTATIONS_USE_DELAY: InjectionToken<number> = new InjectionToken('HTTP_ANNOTATIONS_USE_DELAY');\nexport const RESOURCE_METADATA_ROOT = 'resources_metadata';\n// @dynamic\nexport const NO_DELAY = 0;\nexport const MOCK_DEFAULT_DELAY = 500;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpClient } from '@angular/common/http';\nimport { Injector } from '@angular/core';\nimport { MonoTypeOperatorFunction } from 'rxjs';\nimport { delay } from 'rxjs/operators';\n// noinspection ES6PreferShortImport\nimport {\n HTTP_ANNOTATIONS_USE_DELAY,\n HTTP_ANNOTATIONS_USE_MOCKS,\n MOCK_DEFAULT_DELAY,\n NO_DELAY,\n RESOURCE_METADATA_ROOT\n} from './ngx-http-annotations.const';\n\n\ninterface CallConfig {url: string; requestMethodName: string; params: any; args: any[]; }\ntype MockFunction = (url: string, requestMethodName: string, params: any, args: any[]) => any;\ntype DelayFunction = (url: string, requestMethodName: string, params: any, args: any[]) => any;\n\n\nexport function observe(annotations: any) {\n return (...args: any[]) => HttpRestUtils.decorate('observe', annotations, ...args);\n}\nexport function path(annotations: any) {\n return (...args: any[]) => {\n return HttpRestUtils.decorate('path', annotations, ...args);\n };\n}\nexport function body(annotations: any) {\n return (...args: any[]) => HttpRestUtils.decorate('body', annotations, ...args);\n}\n\nexport function response(annotations: any) {\n return (...args: any[]) => HttpRestUtils.decorate('response', annotations, ...args);\n}\n\nexport function query(annotations: any) {\n return (...args: any[]) => HttpRestUtils.decorate('query', annotations, ...args);\n}\nexport function headers(annotations: any) {\n return (...args: any[]) => HttpRestUtils.decorate('headers', annotations, ...args);\n}\nexport function produces(annotations: 'arraybuffer' | 'blob' | 'json' | 'text') {\n return (...args: any[]) => HttpRestUtils.decorate('produces', annotations, ...args);\n}\n\ntype ResourceMetadataType = 'class'|'methods'|'params'|'props';\ninterface ExtraEntityData {\n keyName: string;\n index?: number;\n}\n\nexport enum RequestMethodParams {\n get = 'Get',\n post = 'Post',\n put = 'Put',\n delete = 'Delete',\n options = 'Options',\n head = 'Head',\n patch = 'Patch'\n}\n\nexport class HttpRestUtils {\n\n public static http: HttpClient;\n public static appInjector: Injector;\n\n public static decorate(decoratorName: string, annotations: any, ...args: any[]) {\n switch (args.length) {\n case 1: {\n const [target] = args;\n HttpRestUtils.constructMetadata( decoratorName, 'class', annotations, target.prototype );\n break;\n }\n case 2: {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [target, __key] = args;\n HttpRestUtils.constructMetadata( decoratorName, 'props', annotations, target );\n break;\n }\n case 3:\n if (typeof args[2] === 'number') {\n const [target, keyName, index] = args;\n HttpRestUtils.constructMetadata( decoratorName, 'params', annotations, target, { keyName, index } );\n break;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [target, keyName, __descriptor] = args;\n HttpRestUtils.constructMetadata( decoratorName, 'methods', annotations, target, { keyName } );\n break;\n }\n default:\n throw new Error('Decorators are not valid here!');\n }\n }\n\n /**\n * Set up metadata\n * @param entityType\n * @param value Value of metadata\n * @param target Prototype of current object\n * @param metaName Decorator name\n * @param entityData Entity extra data\n */\n private static constructMetadata(\n metaName: string,\n entityType: ResourceMetadataType,\n value: any,\n target: any,\n entityData?: ExtraEntityData) {\n\n target[RESOURCE_METADATA_ROOT] = target[RESOURCE_METADATA_ROOT] || {};\n target[RESOURCE_METADATA_ROOT][entityType] = target[RESOURCE_METADATA_ROOT][entityType] || {};\n\n const metadataObj = target[RESOURCE_METADATA_ROOT][entityType];\n if (entityData && entityData.keyName) {\n metadataObj[entityData.keyName] = metadataObj[entityData.keyName] || {};\n }\n if (entityData && entityData.index != null) {\n metadataObj[entityData.keyName][metaName] = metadataObj[entityData.keyName][metaName] || {};\n }\n switch (entityType) {\n case 'class': metadataObj[metaName] = value; break;\n case 'props': metadataObj[metaName] = value; break;\n case 'methods':\n (entityData)? metadataObj[entityData.keyName][metaName] = value : undefined;\n break;\n case 'params':\n (entityData)? metadataObj[entityData.keyName][metaName][value || 'default'] = entityData.index: undefined;\n break;\n }\n\n target[RESOURCE_METADATA_ROOT][entityType] = metadataObj;\n }\n\n public static requestMethod(requestMethodName: RequestMethodParams): any {\n // @dynamic\n return (target: any, key: string, descriptor: any) => {\n const originalFunction = descriptor.value;\n\n descriptor.value = function (...args: any[]) {\n const url = HttpRestUtils.collectUrl(target, key, args);\n // tslint:disable-next-line:no-shadowed-variable\n const body = HttpRestUtils.collectBodyContent(target, key, args);\n const search = HttpRestUtils.collectQueryParams(target, key, args);\n // tslint:disable-next-line:no-shadowed-variable\n const headers = HttpRestUtils.collectHttpHeaders(target, key, args);\n const producesType = HttpRestUtils.produce(target, key, args);\n // tslint:disable-next-line:no-shadowed-variable\n const observe = HttpRestUtils.getHttpClientObserve(target, key, args);\n const params: any = {\n body,\n params: search,\n headers,\n responseType: producesType,\n observe\n };\n const newArgs = args;\n const responseIndex = HttpRestUtils.collectResponseIndex(target, key, args);\n const callConfig: CallConfig = {\n url,\n requestMethodName,\n params,\n args: newArgs,\n };\n\n if (HttpRestUtils.ifUseMock(callConfig)) { // If \"use mock\" is true, call original function, to get mock directly from function\n return HttpRestUtils.processIfUseMock(responseIndex, args, newArgs, originalFunction);\n }\n const request = HttpRestUtils.getRequest(callConfig);\n\n\n\n if (responseIndex >= 0) {\n if (args.length > responseIndex) {\n newArgs[responseIndex] = request;\n } else {\n newArgs.splice(responseIndex, 0, request);\n }\n\n return originalFunction(...newArgs).pipe(HttpRestUtils.getDelay(callConfig));\n }\n\n return request.pipe(HttpRestUtils.getDelay(callConfig));\n };\n\n };\n }\n\n private static getRequest(callConfig: CallConfig) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const {body: any, ...params} = callConfig.params;\n const requestBody = callConfig.params?.body ?? undefined;\n switch (callConfig.requestMethodName) {\n case RequestMethodParams.get:\n return HttpRestUtils.http.get(callConfig.url, callConfig.params);\n case RequestMethodParams.post:\n return HttpRestUtils.http.post(callConfig.url, requestBody, params);\n case RequestMethodParams.put:\n return HttpRestUtils.http.put(callConfig.url, requestBody, params);\n case RequestMethodParams.delete:\n return HttpRestUtils.http.delete(callConfig.url, callConfig.params);\n case RequestMethodParams.options:\n return HttpRestUtils.http.options(callConfig.url, callConfig.params);\n case RequestMethodParams.head:\n return HttpRestUtils.http.head(callConfig.url, callConfig.params);\n case RequestMethodParams.patch:\n return HttpRestUtils.http.patch(callConfig.url, requestBody, params);\n default:\n return HttpRestUtils.http.request(callConfig.requestMethodName, callConfig.url, callConfig.params);\n }\n }\n\n private static ifUseMock(callConfig: CallConfig): boolean | MockFunction {\n let useMock: boolean | MockFunction = HttpRestUtils.appInjector?.get(HTTP_ANNOTATIONS_USE_MOCKS, false);\n if (typeof useMock === 'function') {\n const useMockFunction = useMock as MockFunction;\n useMock = useMockFunction(callConfig.url, callConfig.requestMethodName, callConfig.params, callConfig.args);\n }\n return useMock;\n }\n\n private static processIfUseMock(responseIndex: number, args: any[], newArgs: any[], originalFunction: any): any {\n if (responseIndex >= 0) {\n if (args.length > responseIndex) {\n newArgs[responseIndex] = undefined;\n } else {\n newArgs.splice(responseIndex, 0, undefined);\n }\n }\n return originalFunction(...newArgs).pipe(this.getDelay(null, MOCK_DEFAULT_DELAY));\n }\n\n private static getDelay(callConfig: CallConfig | null, defaultDelay: number = NO_DELAY): MonoTypeOperatorFunction<unknown> {\n let useDelay: number | DelayFunction = HttpRestUtils.appInjector.get(HTTP_ANNOTATIONS_USE_DELAY, defaultDelay);\n if (typeof useDelay === 'function' && callConfig) {\n const useGetDelayFunction = useDelay as DelayFunction;\n useDelay = useGetDelayFunction(callConfig.url, callConfig.requestMethodName, callConfig.params, callConfig.args);\n }\n return delay(useDelay as number);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private static getHttpClientObserve(target: any, methodName: string, __args: any[]) {\n if (target[RESOURCE_METADATA_ROOT].methods\n && target[RESOURCE_METADATA_ROOT].methods[methodName]) {\n return target[RESOURCE_METADATA_ROOT].methods[methodName].observe;\n }\n return undefined;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private static produce(target: any, methodName: string, __args: any[]) {\n if (target[RESOURCE_METADATA_ROOT].methods\n && target[RESOURCE_METADATA_ROOT].methods[methodName]) {\n return target[RESOURCE_METADATA_ROOT].methods[methodName].produces;\n }\n return 'json';\n }\n\n private static collectUrl(target: any, methodName: string, args: any[]) {\n const baseUrl = target[RESOURCE_METADATA_ROOT] && target[RESOURCE_METADATA_ROOT].class\n ? target[RESOURCE_METADATA_ROOT].class.path\n : '';\n const methodUrl = target[RESOURCE_METADATA_ROOT].methods && target[RESOURCE_METADATA_ROOT].methods[methodName]\n ? target[RESOURCE_METADATA_ROOT].methods[methodName].path\n : '';\n const isRelativePath = `${baseUrl}${methodUrl}`[0] === '/';\n const methodUrlWithParams\n = [baseUrl, methodUrl]\n .filter(pathToFilter => pathToFilter)\n .join('/')\n .split('/')\n .map(pathParams => {\n if ( pathParams[0] === ':') {\n const paramName = pathParams.substring(1);\n const index = target[RESOURCE_METADATA_ROOT].params\n && target[RESOURCE_METADATA_ROOT].params[methodName]\n && target[RESOURCE_METADATA_ROOT].params[methodName].path\n ? target[RESOURCE_METADATA_ROOT].params[methodName].path[paramName]\n : '';\n return args[index];\n }\n return pathParams;\n })\n .filter(pathToFilter => pathToFilter)\n .join('/');\n\n if (!isRelativePath) {\n const [absolutePrefix, ...paths] = methodUrlWithParams.split('/');\n return `${ absolutePrefix }//${ paths.join('/') }`;\n }\n return `/${ methodUrlWithParams }`;\n }\n\n private static collectBodyContent(target: any, methodName: string, args: any[]) {\n if (!target[RESOURCE_METADATA_ROOT].params\n || !target[RESOURCE_METADATA_ROOT].params[methodName]\n || !target[RESOURCE_METADATA_ROOT].params[methodName].body) { return undefined; }\n\n const index = target[RESOURCE_METADATA_ROOT].params[methodName].body.default;\n return args[index];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private static collectResponseIndex(target: any, methodName: string, __args: any[]) {\n if (!target[RESOURCE_METADATA_ROOT].params\n || !target[RESOURCE_METADATA_ROOT].params[methodName]\n || !target[RESOURCE_METADATA_ROOT].params[methodName].response) { return undefined; }\n\n return target[RESOURCE_METADATA_ROOT].params[methodName].response.default;\n }\n\n private static collectQueryParams(target: any, methodName: string, args: any[]) {\n if (!target[RESOURCE_METADATA_ROOT].params\n || !target[RESOURCE_METADATA_ROOT].params[methodName]\n || !target[RESOURCE_METADATA_ROOT].params[methodName].query) { return undefined; }\n\n const queryParams: {[key: string]: any} = {};\n const queryParamsObjectIndex = target[RESOURCE_METADATA_ROOT].params[methodName].query.default;\n const queryMetadata = target[RESOURCE_METADATA_ROOT].params[methodName].query;\n const queryParamsCollection = queryParamsObjectIndex !== undefined\n ? args[queryParamsObjectIndex]\n : Object.keys(queryMetadata).reduce((mergedObj, paramName) =>\n Object.assign(mergedObj, { [paramName]: args[queryMetadata[paramName]] }), {}\n );\n\n Object.keys(queryParamsCollection)\n .forEach((paramName: string) => {\n let value = queryParamsCollection[paramName];\n if (!Array.isArray(value)) { value = [ value ]; }\n value.forEach((curParam: any) => {\n return queryParams [paramName] = curParam;\n });\n });\n return queryParams;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n private static collectHttpHeaders(target: any, methodName: string, __args: any[]) {\n const classHeaders = target[RESOURCE_METADATA_ROOT].class ? target[RESOURCE_METADATA_ROOT].class.headers : {};\n const methodHeaders = target[RESOURCE_METADATA_ROOT].methods && target[RESOURCE_METADATA_ROOT].methods[methodName]\n ? target[RESOURCE_METADATA_ROOT].methods[methodName].headers\n : {};\n return Object.assign({}, classHeaders, methodHeaders);\n }\n}\n","import {NgModule, APP_INITIALIZER, Inject, Injector} from '@angular/core';\nimport {HttpRestUtils} from \"./ngx-http-annotations.utils\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport {CommonModule} from \"@angular/common\";\nimport { HTTP_ANNOTATIONS_USE_MOCKS } from './ngx-http-annotations.const';\n\n\n\n// @dynamic\n@NgModule({\n imports: [CommonModule, HttpClientModule],\n providers: [\n { provide: APP_INITIALIZER, useFactory: onAppInit, multi: true, deps: [HttpClient] },\n { provide: HTTP_ANNOTATIONS_USE_MOCKS, useValue: false }\n ]\n})\nexport class NgxHttpAnnotationsModule {\n\n constructor(private injector: Injector) {\n HttpRestUtils.appInjector = this.injector;\n }\n}\n\nexport function onAppInit(http: HttpClient) {\n return function () {\n HttpRestUtils.http = http;\n }\n}\n","/* eslint-disable prefer-const */\n// noinspection JSUnusedGlobalSymbols\n\nimport { NgxHttpAnnotationsModule } from \"./lib/ngx-http-annotations.module\";\n\nexport * from './lib/ngx-http-annotations.module';\nexport * from './lib/ngx-http-annotations.const';\nimport {\n body,\n headers,\n HttpRestUtils,\n observe,\n path,\n produces,\n query,\n RequestMethodParams,\n response\n} from './lib/ngx-http-annotations.utils';\n\n/**\n * @deprecated replace HttpRestModule by NgxHttpAnnotationsModule\n */\nexport let HttpRestModule = NgxHttpAnnotationsModule;\nexport let Path = path;\nexport let PathParam = path;\nexport let Body = body(null);\nexport let ResponseObservable = response(null);\nexport let Query = query(null);\nexport let QueryParam = query;\nexport let QueryParams = query;\nexport let Observe = observe;\n\n// Headers\nexport let Headers = headers;\n\n// Produces\nexport let Produces = produces;\n\n// Request methods\nexport let GET = HttpRestUtils.requestMethod(RequestMethodParams.get);\nexport let POST = HttpRestUtils.requestMethod(RequestMethodParams.post);\nexport let PUT = HttpRestUtils.requestMethod(RequestMethodParams.put);\nexport let DELETE = HttpRestUtils.requestMethod(RequestMethodParams.delete);\nexport let OPTIONS = HttpRestUtils.requestMethod(RequestMethodParams.options);\nexport let HEAD = HttpRestUtils.requestMethod(RequestMethodParams.head);\nexport let PATCH = HttpRestUtils.requestMethod(RequestMethodParams.patch);\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}