From 3b49f16f5d619044826d39705b944011f4047fa1 Mon Sep 17 00:00:00 2001 From: Guy Bedford Date: Sun, 24 Dec 2017 18:28:28 +0200 Subject: [PATCH] add __generator helper --- src/index.js | 2 +- src/typescript-helpers.js | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 425b3c2..24dec04 100644 --- a/src/index.js +++ b/src/index.js @@ -143,7 +143,7 @@ export default function typescript ( options ) { return { // Always append an import for the helpers. code: transformed.outputText + - `\nimport { __assign, __awaiter, __extends, __decorate, __metadata, __param } from '${helpersId}';`, + `\nimport { __assign, __awaiter, __extends, __decorate, __generator, __metadata, __param } from '${helpersId}';`, // Rollup expects `map` to be an object so we must parse the string map: transformed.sourceMapText ? JSON.parse(transformed.sourceMapText) : null diff --git a/src/typescript-helpers.js b/src/typescript-helpers.js index 092b99e..3362fc7 100644 --- a/src/typescript-helpers.js +++ b/src/typescript-helpers.js @@ -39,3 +39,31 @@ export function __awaiter(thisArg, _arguments, P, generator) { step((generator = generator.apply(thisArg, _arguments)).next()); }); } + +export function __generator(thisArg, body) { + var _ = { label: 0, sent: function () { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t; + return { next: verb(0), "throw": verb(1), "return": verb(2) }; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [0, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} \ No newline at end of file