Skip to content

Commit

Permalink
fix: add propertyKey for metadata
Browse files Browse the repository at this point in the history
  • Loading branch information
alex authored and alex-zhang committed Sep 15, 2020
1 parent 5cc7745 commit abc6745
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 14 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@augejs/provider-scanner",
"version": "0.0.24",
"version": "0.0.25",
"description": "`provider-scanner` is a scan framework for nodejs.",
"main": "dist/main.js",
"scripts": {
Expand Down
38 changes: 25 additions & 13 deletions src/metadata/Metadata.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,52 @@ import 'reflect-metadata';
import extend from 'extend';

export class Metadata {
static defineMetadata (metadataKey:any, metadataValue:any, target: object):void {
Reflect.defineMetadata(metadataKey, metadataValue, target);
static defineMetadata (metadataKey:any, metadataValue:any, target: Object, propertyKey?: string | symbol):void {
if (!propertyKey) {
Reflect.defineMetadata(metadataKey, metadataValue, target);
} else {
Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey);
}
}

static getMetadata (metadataKey: any, target: object):any {
return Reflect.getMetadata(metadataKey, target);
static getMetadata (metadataKey: any, target: Object, propertyKey?: string | symbol):any {
if (!propertyKey) {
return Reflect.getMetadata(metadataKey, target);
} else {
return Reflect.getMetadata(metadataKey, target, propertyKey);
}
}

static hasMetadata(metadataKey: any, target: object):boolean {
return Reflect.hasMetadata(metadataKey, target);
static hasMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol):boolean {
if (!propertyKey) {
return Reflect.hasMetadata(metadataKey, target);
} else {
return Reflect.hasMetadata(metadataKey, target, propertyKey);
}
}

static defineInsertEndArrayMetadata(key: any, metadata: any[], target: object):void {
static defineInsertEndArrayMetadata(key: any, metadata: any[], target: Object, propertyKey?: string | symbol):void {
const previousValue:[] = Reflect.getMetadata(key, target) || [];
const value = [...previousValue, ...metadata];
Reflect.defineMetadata(key, value, target);
Metadata.defineMetadata(key, value, target, propertyKey);
}

static defineInsertBeginArrayMetadata(key: any, metadata: any[], target: object):void {
static defineInsertBeginArrayMetadata(key: any, metadata: any[], target: Object, propertyKey?: string | symbol):void {
const previousValue:[] = Reflect.getMetadata(key, target) || [];
const value = [...metadata, ...previousValue];
Reflect.defineMetadata(key, value, target);
Metadata.defineMetadata(key, value, target, propertyKey);
}

static defineMergeObjectMetadata(key: any, metadata: any,target: any):void {
static defineMergeObjectMetadata(key: any, metadata: any,target: any, propertyKey?: string | symbol):void {
const previousValue:any = Reflect.getMetadata(key, target);

if (typeof previousValue === 'object' && typeof metadata === 'object') {
const mergeConfig:any = extend(true, {}, previousValue, metadata);
Reflect.defineMetadata(key, mergeConfig, target);
Metadata.defineMetadata(key, mergeConfig, target, propertyKey);
return;
}

Reflect.defineMetadata(key, metadata, target);
Metadata.defineMetadata(key, metadata, target, propertyKey);
}

static decorate(decorators: ClassDecorator[], target: Function) {
Expand Down

0 comments on commit abc6745

Please sign in to comment.