UNPKG

@dazejs/framework

Version:

Daze.js - A powerful web framework for Node.js

42 lines (36 loc) 1.09 kB
/** * Copyright (c) 2020 Chan Zewail * * This software is released under the MIT License. * https: //opensource.org/licenses/MIT */ import { ProviderType } from '../../symbol'; export interface ProvideMetaData { provideName?: any; isShared?: boolean; onMissingProviderkey?: any; onConfigKey?: string; onProviderKey?: any; } /** * To provide services * * @param name * @param isShared */ export const Provide = function (name?: any, isShared = true): MethodDecorator { return function (target: object, key: string | symbol) { const metaMap: Map<any, ProvideMetaData> = Reflect.getMetadata(ProviderType.PROVIDE, target.constructor) ?? new Map(); const _name = name ?? key.toString(); if (metaMap.has(key)) { const options = (metaMap.get(key) ?? {}) as ProvideMetaData; options.provideName = _name; options.isShared = isShared; metaMap.set(key, options); } else { metaMap.set(key, { provideName: _name, isShared }); } Reflect.defineMetadata(ProviderType.PROVIDE, metaMap, target.constructor); }; };