Skip to content

Commit e0f6266

Browse files
authored
Merge pull request #8 from abraham/fix-define
Fix metadata map getting recreated
2 parents c69d0cd + b32e822 commit e0f6266

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"clean": "rimraf dist",
1111
"prebuild": "npm run clean",
1212
"prepare": "npm run build",
13+
"start": "jest --watch",
1314
"test": "jest"
1415
},
1516
"repository": {

src/define-metadata.test.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
11
import { Reflection as Reflect } from './index';
22

3+
const metadataKey = 'key';
4+
const metadataValue = 'value';
5+
const target = {};
6+
37
test('with invalid target', () => {
4-
const metadataKey = 'key';
5-
const metadataValue = 'value';
68
expect(() => Reflect.defineMetadata(metadataKey, metadataValue)).toThrow(TypeError);
79
});
810

911
test('with target but no property key', () => {
10-
const metadataKey = 'key';
11-
const metadataValue = 'value';
12-
const target = {};
1312
expect(() => Reflect.defineMetadata(metadataKey, metadataValue, target)).not.toThrow();
1413
});
1514

1615
test('with target and property key', () => {
17-
const metadataKey = 'key';
18-
const metadataValue = 'value';
19-
const target = {};
2016
const propertyKey = 'name';
2117
expect(() => Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey)).not.toThrow();
2218
});
19+
20+
test('metadata map is reused', () => {
21+
const metadataKey2 = 'key2';
22+
const metadataValue2 = 'value2';
23+
Reflect.defineMetadata(metadataKey, metadataValue, target);
24+
Reflect.defineMetadata(metadataKey2, metadataValue2, target);
25+
expect(Reflect.getOwnMetadata(metadataKey, target)).toEqual(metadataValue);
26+
expect(Reflect.getOwnMetadata(metadataKey2, target)).toEqual(metadataValue2);
27+
});

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ function decorateProperty(decorators: MemberDecorator[], target: Target, propert
7171
function ordinaryDefineOwnMetadata(metadataKey: MetadataKey, metadataValue: MetadataValue, target: Target, propertyKey?: PropertyKey): void {
7272
if (propertyKey && !['string', 'symbol'].includes(typeof propertyKey)) throw new TypeError();
7373

74-
createMetadataMap(target, propertyKey)
74+
(getMetadataMap(target, propertyKey) || createMetadataMap(target, propertyKey))
7575
.set(metadataKey, metadataValue);
7676
}
7777

0 commit comments

Comments
 (0)