From aaf2d802a89432f81edaff382d11fda09133d904 Mon Sep 17 00:00:00 2001 From: Filipe Silva Date: Thu, 5 Mar 2020 15:24:09 +0000 Subject: [PATCH] fix(@angular-devkit/architect): temporary workaround for TS bug with UMDs The TS bug is https://github.com/microsoft/TypeScript/issues/36780. The workaround is needed because `ts_library` emits UMDs currently. This will change with https://github.com/bazelbuild/rules_typescript/pull/492 and https://github.com/bazelbuild/rules_nodejs/pull/1687. --- .../architect/node/node-modules-architect-host.ts | 6 +++++- .../architect/testing/testing-architect-host.ts | 15 ++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/angular_devkit/architect/node/node-modules-architect-host.ts b/packages/angular_devkit/architect/node/node-modules-architect-host.ts index 9e78000ea783..f723611891de 100644 --- a/packages/angular_devkit/architect/node/node-modules-architect-host.ts +++ b/packages/angular_devkit/architect/node/node-modules-architect-host.ts @@ -143,7 +143,11 @@ export class WorkspaceNodeModulesArchitectHost implements ArchitectHost { - const builder = (await import(info.import)).default; + // f1 const is a temporary workaround for a TS bug with UMDs. + // See microsoft/TypeScript#36780. Should be removed when + // https://github.com/bazelbuild/rules_typescript/pull/492 goes in. + const f1 = info.import; + const builder = (await import(f1)).default; if (builder[BuilderSymbol]) { return builder; } diff --git a/packages/angular_devkit/architect/testing/testing-architect-host.ts b/packages/angular_devkit/architect/testing/testing-architect-host.ts index c7d901f3906b..d5fd05479a37 100644 --- a/packages/angular_devkit/architect/testing/testing-architect-host.ts +++ b/packages/angular_devkit/architect/testing/testing-architect-host.ts @@ -36,7 +36,11 @@ export class TestingArchitectHost implements ArchitectHost { this._builderMap.set(builderName, { builderName, description, optionSchema }); } async addBuilderFromPackage(packageName: string) { - const packageJson = await import(packageName + '/package.json'); + // f1 const is a temporary workaround for a TS bug with UMDs. + // See microsoft/TypeScript#36780. Should be removed when + // https://github.com/bazelbuild/rules_typescript/pull/492 goes in. + const f1 = packageName + '/package.json'; + const packageJson = await import(f1); if (!('builders' in packageJson)) { throw new Error('Invalid package.json, builders key not found.'); } @@ -56,8 +60,13 @@ export class TestingArchitectHost implements ArchitectHost { const b = builders[builderName]; // TODO: remove this check as v1 is not supported anymore. if (!b.implementation) { continue; } - const handler = (await import(builderJsonPath + '/../' + b.implementation)).default; - const optionsSchema = await import(builderJsonPath + '/../' + b.schema); + // f2 and f3 consts are a temporary workaround for a TS bug with UMDs. + // See microsoft/TypeScript#36780. Should be removed when + // https://github.com/bazelbuild/rules_typescript/pull/492 goes in. + const f2 = builderJsonPath + '/../' + b.implementation; + const handler = (await import(f2)).default; + const f3 = builderJsonPath + '/../' + b.schema; + const optionsSchema = await import(f3); this.addBuilder(`${packageJson.name}:${builderName}`, handler, b.description, optionsSchema); } }