From 589c533ad08e10f761f6d954faf0e6441375c504 Mon Sep 17 00:00:00 2001 From: vakrilov Date: Tue, 12 Jan 2016 16:22:03 +0200 Subject: [PATCH] Updated __decorate method --- globals/globals.ts | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/globals/globals.ts b/globals/globals.ts index 5ad0dad93..9a1038ce4 100644 --- a/globals/globals.ts +++ b/globals/globals.ts @@ -78,14 +78,20 @@ if (platform.device.os === platform.platformNames.android) { if (typeof global.__decorate !== "function") { global.__decorate = function (decorators, target, key, desc) { + var c = arguments.length + var r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof global.Reflect === "object" && typeof global.Reflect.decorate === "function") { - return global.Reflect.decorate(decorators, target, key, desc); + r = global.Reflect.decorate(decorators, target, key, desc); } - switch (arguments.length) { - case 2: return decorators.reduceRight(function (o, d) { return (d && d(o)) || o; }, target); - case 3: return decorators.reduceRight(function (o, d) { return (d && d(target, key)), void 0; }, void 0); - case 4: return decorators.reduceRight(function (o, d) { return (d && d(target, key, o)) || o; }, desc); + else { + for (var i = decorators.length - 1; i >= 0; i--) { + if (d = decorators[i]) { + r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + } + } } + return c > 3 && r && Object.defineProperty(target, key, r), r; } }