From 63e536246eafa5ad453f17184eee6b1853a70f5e Mon Sep 17 00:00:00 2001 From: Romain Lenzotti Date: Wed, 6 Apr 2022 07:54:26 +0200 Subject: [PATCH] fix(cli-core): add .at() polyfill for nodejs v14 --- packages/cli-core/src/utils/patchCommander.ts | 18 ++++++++++++++++++ .../generate/data/TestDatasource.ts.txt | 2 +- .../generate.controller.integration.spec.ts | 2 +- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/cli-core/src/utils/patchCommander.ts b/packages/cli-core/src/utils/patchCommander.ts index ab695c3cd..cc8d075a7 100644 --- a/packages/cli-core/src/utils/patchCommander.ts +++ b/packages/cli-core/src/utils/patchCommander.ts @@ -1,6 +1,24 @@ import chalk from "chalk"; import {Command} from "commander"; +function at(n: number) { + // ToInteger() abstract op + n = Math.trunc(n) || 0; + // Allow negative indexing from the end + if (n < 0) n += this.length; + // OOB access is guaranteed to return undefined + if (n < 0 || n >= this.length) return undefined; + // Otherwise, this is just normal property access + return this[n]; +} + +const TypedArray = Reflect.getPrototypeOf(Int8Array); +for (const C of [Array, String, TypedArray]) { + if (C) { + Object.defineProperty((C as any).prototype, "at", {value: at, writable: true, enumerable: false, configurable: true}); + } +} + const helpInformation = Command.prototype.helpInformation; function colorizeSection(str: any, section: string) { diff --git a/packages/cli-plugin-typeorm/test/integrations/generate/data/TestDatasource.ts.txt b/packages/cli-plugin-typeorm/test/integrations/generate/data/TestDatasource.ts.txt index 5fe448bc7..7097202c0 100644 --- a/packages/cli-plugin-typeorm/test/integrations/generate/data/TestDatasource.ts.txt +++ b/packages/cli-plugin-typeorm/test/integrations/generate/data/TestDatasource.ts.txt @@ -19,7 +19,7 @@ registerProvider({ async useAsyncFactory(logger: Logger) { await TestDataSource.initialize(); - logger.info('Connected with typeorm to database: Test'); + logger.info("Connected with typeorm to database: Test"); return TestDataSource; }, diff --git a/packages/cli-plugin-typeorm/test/integrations/generate/generate.controller.integration.spec.ts b/packages/cli-plugin-typeorm/test/integrations/generate/generate.controller.integration.spec.ts index 91cc270fe..771bb67de 100644 --- a/packages/cli-plugin-typeorm/test/integrations/generate/generate.controller.integration.spec.ts +++ b/packages/cli-plugin-typeorm/test/integrations/generate/generate.controller.integration.spec.ts @@ -55,7 +55,7 @@ describe("Generate DataSource", () => { const datasource = FakeCliFs.entries.get("project-name/src/datasources/TestDatasource.ts"); - expect(datasource).toEqual(readFile("data/TestDatasource.ts.txt", datasource!)); + expect(datasource).toEqual(readFile("data/TestDatasource.ts.txt", datasource!, false)); const dockerCompose = FakeCliFs.entries.get("project-name/docker-compose.yml"); expect(dockerCompose).toEqual(readFile("data/docker-compose.yml.txt", dockerCompose!, false));