From a549d399b0c7eb88a9f9a37f7a1b6c0f4e3a1356 Mon Sep 17 00:00:00 2001 From: Tomasz Lenarcik Date: Wed, 16 Nov 2022 00:18:25 +0100 Subject: [PATCH 1/5] Fix asyncDelegator reporting done too early (#187) See: https://github.com/microsoft/TypeScript/issues/45400 --- tslib.es6.js | 2 +- tslib.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tslib.es6.js b/tslib.es6.js index 9e05b06..063e8c8 100644 --- a/tslib.es6.js +++ b/tslib.es6.js @@ -195,7 +195,7 @@ export function __asyncGenerator(thisArg, _arguments, generator) { export function __asyncDelegator(o) { var i, p; return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } } export function __asyncValues(o) { diff --git a/tslib.js b/tslib.js index e222adb..fd9a852 100644 --- a/tslib.js +++ b/tslib.js @@ -237,7 +237,7 @@ var __createBinding; __asyncDelegator = function (o) { var i, p; return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; } }; __asyncValues = function (o) { From 63319afdd7c53d68f9acbc2866837ed28a5809c8 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Mon, 28 Nov 2022 13:24:23 -0800 Subject: [PATCH 2/5] add codeql --- .github/codeql/codeql-configuration.yml | 4 +++ .github/workflows/codeql.yml | 33 +++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 .github/codeql/codeql-configuration.yml create mode 100644 .github/workflows/codeql.yml diff --git a/.github/codeql/codeql-configuration.yml b/.github/codeql/codeql-configuration.yml new file mode 100644 index 0000000..402799f --- /dev/null +++ b/.github/codeql/codeql-configuration.yml @@ -0,0 +1,4 @@ +name : CodeQL Configuration + +paths: + - './src' diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..d908534 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,33 @@ +# copied from microsoft/TypeScript and simplified slightly; see that file for boilerplate commentary +# (which was likely copied from github/codeql-action) +name: "Code scanning - action" + +on: + push: + pull_request: + schedule: + - cron: '0 19 * * 0' + +jobs: + CodeQL-Build: + + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + # We must fetch at least the immediate parents so that if this is + # a pull request then we can checkout the head. + fetch-depth: 2 + + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + config-file: ./.github/codeql/codeql-configuration.yml + + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 From 697f4303d14b7c96abefddfb9743f73aab9c8473 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Tue, 29 Nov 2022 09:26:08 -0800 Subject: [PATCH 3/5] try paths: . --- .github/codeql/codeql-configuration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/codeql/codeql-configuration.yml b/.github/codeql/codeql-configuration.yml index 402799f..136ad00 100644 --- a/.github/codeql/codeql-configuration.yml +++ b/.github/codeql/codeql-configuration.yml @@ -1,4 +1,4 @@ name : CodeQL Configuration paths: - - './src' + - '.' From 62c53229fffe1634c4f4709bd8029890f366fe0e Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Fri, 20 Jan 2023 12:36:35 -0500 Subject: [PATCH 4/5] Add support for __esDecorate and related helpers (#193) --- modules/index.js | 8 ++++++++ tslib.d.ts | 32 +++++++++++++++++++++++++++++ tslib.es6.js | 45 ++++++++++++++++++++++++++++++++++++++++ tslib.js | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 138 insertions(+) diff --git a/modules/index.js b/modules/index.js index aaac8bf..3ce70a5 100644 --- a/modules/index.js +++ b/modules/index.js @@ -5,6 +5,10 @@ const { __rest, __decorate, __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, __metadata, __awaiter, __generator, @@ -32,6 +36,10 @@ export { __rest, __decorate, __param, + __esDecorate, + __runInitializers, + __propKey, + __setFunctionName, __metadata, __awaiter, __generator, diff --git a/tslib.d.ts b/tslib.d.ts index b8e49f0..f1c5208 100644 --- a/tslib.d.ts +++ b/tslib.d.ts @@ -58,6 +58,38 @@ export declare function __decorate(decorators: Function[], target: any, key?: st */ export declare function __param(paramIndex: number, decorator: Function): Function; +/** + * Applies decorators to a class or class member, following the native ECMAScript decorator specification. + * @param ctor For non-field class members, the class constructor. Otherwise, `null`. + * @param descriptorIn The `PropertyDescriptor` to use when unable to look up the property from `ctor`. + * @param decorators The decorators to apply + * @param contextIn The `DecoratorContext` to clone for each decorator application. + * @param initializers An array of field initializer mutation functions into which new initializers are written. + * @param extraInitializers An array of extra initializer functions into which new initializers are written. + */ +export declare function __esDecorate(ctor: Function | null, descriptorIn: object | null, decorators: Function[], contextIn: object, initializers: Function[] | null, extraInitializers: Function[]): void; + +/** + * Runs field initializers or extra initializers generated by `__esDecorate`. + * @param thisArg The `this` argument to use. + * @param initializers The array of initializers to evaluate. + * @param value The initial value to pass to the initializers. + */ +export declare function __runInitializers(thisArg: unknown, initializers: Function[], value?: any): any; + +/** + * Converts a computed property name into a `string` or `symbol` value. + */ +export declare function __propKey(x: any): string | symbol; + +/** + * Assigns the name of a function derived from the left-hand side of an assignment. + * @param f The function to rename. + * @param name The new name for the function. + * @param prefix A prefix (such as `"get"` or `"set"`) to insert before the name. + */ +export declare function __setFunctionName(f: Function, name: string | symbol, prefix?: string): Function; + /** * Creates a decorator that sets metadata. * diff --git a/tslib.es6.js b/tslib.es6.js index 063e8c8..1002dfc 100644 --- a/tslib.es6.js +++ b/tslib.es6.js @@ -63,6 +63,51 @@ export function __param(paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } } +export function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.push(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.push(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; +}; + +export function __runInitializers(thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; +}; + +export function __propKey(x) { + return typeof x === "symbol" ? x : "".concat(x); +}; + +export function __setFunctionName(f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); +}; + export function __metadata(metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); } diff --git a/tslib.js b/tslib.js index fd9a852..0f0e892 100644 --- a/tslib.js +++ b/tslib.js @@ -18,6 +18,10 @@ var __assign; var __rest; var __decorate; var __param; +var __esDecorate; +var __runInitializers; +var __propKey; +var __setFunctionName; var __metadata; var __awaiter; var __generator; @@ -105,6 +109,51 @@ var __createBinding; return function (target, key) { decorator(target, key, paramIndex); } }; + __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { + function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } + var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; + var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; + var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); + var _, done = false; + for (var i = decorators.length - 1; i >= 0; i--) { + var context = {}; + for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p]; + for (var p in contextIn.access) context.access[p] = contextIn.access[p]; + context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; + var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context); + if (kind === "accessor") { + if (result === void 0) continue; + if (result === null || typeof result !== "object") throw new TypeError("Object expected"); + if (_ = accept(result.get)) descriptor.get = _; + if (_ = accept(result.set)) descriptor.set = _; + if (_ = accept(result.init)) initializers.push(_); + } + else if (_ = accept(result)) { + if (kind === "field") initializers.push(_); + else descriptor[key] = _; + } + } + if (target) Object.defineProperty(target, contextIn.name, descriptor); + done = true; + }; + + __runInitializers = function (thisArg, initializers, value) { + var useValue = arguments.length > 2; + for (var i = 0; i < initializers.length; i++) { + value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); + } + return useValue ? value : void 0; + }; + + __propKey = function (x) { + return typeof x === "symbol" ? x : "".concat(x); + }; + + __setFunctionName = function (f, name, prefix) { + if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; + return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); + }; + __metadata = function (metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); }; @@ -294,6 +343,10 @@ var __createBinding; exporter("__rest", __rest); exporter("__decorate", __decorate); exporter("__param", __param); + exporter("__esDecorate", __esDecorate); + exporter("__runInitializers", __runInitializers); + exporter("__propKey", __propKey); + exporter("__setFunctionName", __setFunctionName); exporter("__metadata", __metadata); exporter("__awaiter", __awaiter); exporter("__generator", __generator); From b68d57319babcf288dc4e3a9c5a45b2a14d85857 Mon Sep 17 00:00:00 2001 From: Ron Buckton Date: Fri, 20 Jan 2023 12:43:29 -0500 Subject: [PATCH 5/5] Bump package version to 2.5.0 --- bower.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bower.json b/bower.json index b1efe62..fe57cd7 100644 --- a/bower.json +++ b/bower.json @@ -4,7 +4,7 @@ "Microsoft Corp." ], "homepage": "http://typescriptlang.org/", - "version": "2.4.1", + "version": "2.5.0", "license": "0BSD", "description": "Runtime library for TypeScript helper functions", "keywords": [ diff --git a/package.json b/package.json index 29c903b..2386973 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "tslib", "author": "Microsoft Corp.", "homepage": "https://www.typescriptlang.org/", - "version": "2.4.1", + "version": "2.5.0", "license": "0BSD", "description": "Runtime library for TypeScript helper functions", "keywords": [