Skip to content

Commit 977503c

Browse files
committedDec 13, 2023
/no-conflict only defers to global Reflect if it hasn't already been used
1 parent bdab024 commit 977503c

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed
 

‎ReflectNoConflict.ts

+10-8
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ const _WeakMap: typeof WeakMap = typeof WeakMap === "function" ? WeakMap : fail(
3232
// [[Metadata]] internal slot
3333
// https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots
3434
const Metadata = new _WeakMap<any, Map<string | symbol | undefined, Map<any, any>>>();
35+
let hasSetMetadata = false;
3536

3637
/**
3738
* Applies a set of decorators to a target object.
@@ -336,7 +337,7 @@ export function defineMetadata(metadataKey: any, metadataValue: any, target: any
336337
*
337338
*/
338339
export function defineMetadata(metadataKey: any, metadataValue: any, target: any, propertyKey?: string | symbol): void {
339-
if (typeof Reflect !== "undefined" && typeof Reflect.defineMetadata === "function" && Reflect.defineMetadata !== defineMetadata) {
340+
if (!hasSetMetadata && typeof Reflect !== "undefined" && typeof Reflect.defineMetadata === "function" && Reflect.defineMetadata !== defineMetadata) {
340341
return Reflect.defineMetadata(metadataKey, metadataValue, target, propertyKey!);
341342
}
342343
if (!IsObject(target)) throw new TypeError();
@@ -430,7 +431,7 @@ export function hasMetadata(metadataKey: any, target: any, propertyKey: string |
430431
*
431432
*/
432433
export function hasMetadata(metadataKey: any, target: any, propertyKey?: string | symbol): boolean {
433-
if (typeof Reflect !== "undefined" && typeof Reflect.hasMetadata === "function" && Reflect.hasMetadata !== hasMetadata) {
434+
if (!hasSetMetadata && typeof Reflect !== "undefined" && typeof Reflect.hasMetadata === "function" && Reflect.hasMetadata !== hasMetadata) {
434435
return Reflect.hasMetadata(metadataKey, target, propertyKey!);
435436
}
436437
if (!IsObject(target)) throw new TypeError();
@@ -524,7 +525,7 @@ export function hasOwnMetadata(metadataKey: any, target: any, propertyKey: strin
524525
*
525526
*/
526527
export function hasOwnMetadata(metadataKey: any, target: any, propertyKey?: string | symbol): boolean {
527-
if (typeof Reflect !== "undefined" && typeof Reflect.hasOwnMetadata === "function" && Reflect.hasOwnMetadata !== hasOwnMetadata) {
528+
if (!hasSetMetadata && typeof Reflect !== "undefined" && typeof Reflect.hasOwnMetadata === "function" && Reflect.hasOwnMetadata !== hasOwnMetadata) {
528529
return Reflect.hasOwnMetadata(metadataKey, target, propertyKey!);
529530
}
530531
if (!IsObject(target)) throw new TypeError();
@@ -618,7 +619,7 @@ export function getMetadata(metadataKey: any, target: any, propertyKey: string |
618619
*
619620
*/
620621
export function getMetadata(metadataKey: any, target: any, propertyKey?: string | symbol): any {
621-
if (typeof Reflect !== "undefined" && typeof Reflect.getMetadata === "function" && Reflect.getMetadata !== getMetadata) {
622+
if (!hasSetMetadata && typeof Reflect !== "undefined" && typeof Reflect.getMetadata === "function" && Reflect.getMetadata !== getMetadata) {
622623
return Reflect.getMetadata(metadataKey, target, propertyKey!);
623624
}
624625
if (!IsObject(target)) throw new TypeError();
@@ -712,7 +713,7 @@ export function getOwnMetadata(metadataKey: any, target: any, propertyKey: strin
712713
*
713714
*/
714715
export function getOwnMetadata(metadataKey: any, target: any, propertyKey?: string | symbol): any {
715-
if (typeof Reflect !== "undefined" && typeof Reflect.getOwnMetadata === "function" && Reflect.getOwnMetadata !== getOwnMetadata) {
716+
if (!hasSetMetadata && typeof Reflect !== "undefined" && typeof Reflect.getOwnMetadata === "function" && Reflect.getOwnMetadata !== getOwnMetadata) {
716717
return Reflect.getOwnMetadata(metadataKey, target, propertyKey!);
717718
}
718719
if (!IsObject(target)) throw new TypeError();
@@ -803,7 +804,7 @@ export function getMetadataKeys(target: any, propertyKey: string | symbol): any[
803804
*
804805
*/
805806
export function getMetadataKeys(target: any, propertyKey?: string | symbol): any[] {
806-
if (typeof Reflect !== "undefined" && typeof Reflect.getMetadataKeys === "function" && Reflect.getMetadataKeys !== getMetadataKeys) {
807+
if (!hasSetMetadata && typeof Reflect !== "undefined" && typeof Reflect.getMetadataKeys === "function" && Reflect.getMetadataKeys !== getMetadataKeys) {
807808
return Reflect.getMetadataKeys(target, propertyKey!);
808809
}
809810
if (!IsObject(target)) throw new TypeError();
@@ -894,7 +895,7 @@ export function getOwnMetadataKeys(target: any, propertyKey: string | symbol): a
894895
*
895896
*/
896897
export function getOwnMetadataKeys(target: any, propertyKey?: string | symbol): any[] {
897-
if (typeof Reflect !== "undefined" && typeof Reflect.getOwnMetadataKeys === "function" && Reflect.getOwnMetadataKeys !== getOwnMetadataKeys) {
898+
if (!hasSetMetadata && typeof Reflect !== "undefined" && typeof Reflect.getOwnMetadataKeys === "function" && Reflect.getOwnMetadataKeys !== getOwnMetadataKeys) {
898899
return Reflect.getOwnMetadataKeys(target, propertyKey!);
899900
}
900901
if (!IsObject(target)) throw new TypeError();
@@ -988,7 +989,7 @@ export function deleteMetadata(metadataKey: any, target: any, propertyKey: strin
988989
*
989990
*/
990991
export function deleteMetadata(metadataKey: any, target: any, propertyKey?: string | symbol): boolean {
991-
if (typeof Reflect !== "undefined" && typeof Reflect.deleteMetadata === "function" && Reflect.deleteMetadata !== deleteMetadata) {
992+
if (!hasSetMetadata && typeof Reflect !== "undefined" && typeof Reflect.deleteMetadata === "function" && Reflect.deleteMetadata !== deleteMetadata) {
992993
return Reflect.deleteMetadata(metadataKey, target, propertyKey!);
993994
}
994995
if (!IsObject(target)) throw new TypeError();
@@ -1038,6 +1039,7 @@ function GetOrCreateMetadataMap(O: any, P: string | symbol | undefined, Create:
10381039
if (!Create) return undefined;
10391040
targetMetadata = new _Map<string | symbol | undefined, Map<any, any>>();
10401041
Metadata.set(O, targetMetadata);
1042+
hasSetMetadata = true;
10411043
}
10421044
let metadataMap = targetMetadata.get(P);
10431045
if (IsUndefined(metadataMap)) {

0 commit comments

Comments
 (0)
Please sign in to comment.