From 9823e8ffa5b75fb9a3062d08d774632f8fbb9b13 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 10 Nov 2020 13:02:41 -0500 Subject: [PATCH] fix(schematics): remove experimental workspace API type usage This change removes usage of the experimental workspace API. Only two types were used within the schematics. The experimental workspace API is no longer present as of Angular v11. --- src/schematics/interfaces.ts | 10 ++++++++++ src/schematics/ng-add-ssr.ts | 9 ++++----- src/schematics/ng-add-static.ts | 7 +++---- src/schematics/ng-add.ts | 10 +++++----- src/schematics/utils.ts | 5 ++--- 5 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/schematics/interfaces.ts b/src/schematics/interfaces.ts index f3d2eda83..d4c64874e 100644 --- a/src/schematics/interfaces.ts +++ b/src/schematics/interfaces.ts @@ -74,3 +74,13 @@ export interface FSHost { writeFileSync(src: string, data: string): void; renameSync(src: string, dest: string): void; } + +export interface WorkspaceProject { + projectType?: string; + architect?: Record }>; +} + +export interface Workspace { + defaultProject?: string; + projects: Record; +} diff --git a/src/schematics/ng-add-ssr.ts b/src/schematics/ng-add-ssr.ts index 5f2d8d8ad..b975aa169 100644 --- a/src/schematics/ng-add-ssr.ts +++ b/src/schematics/ng-add-ssr.ts @@ -1,5 +1,4 @@ import { SchematicsException, Tree, SchematicContext } from '@angular-devkit/schematics'; -import { experimental } from '@angular-devkit/core'; import { addDependencies, generateFirebaseRc, @@ -8,7 +7,7 @@ import { safeReadJSON, stringifyFormatted } from './ng-add-common'; -import { FirebaseJSON } from './interfaces'; +import { FirebaseJSON, Workspace, WorkspaceProject } from './interfaces'; import { default as defaultDependencies, firebaseFunctions as firebaseFunctionsDependencies } from './versions.json'; import { dirname, join } from 'path'; @@ -16,7 +15,7 @@ import { dirname, join } from 'path'; // We consider a project to be a universal project if it has a `server` architect // target. If it does, it knows how to build the application's server. export const isUniversalApp = ( - project: experimental.workspace.WorkspaceProject + project: WorkspaceProject ) => project.architect && project.architect.server; function emptyFirebaseJson(source: string) { @@ -106,10 +105,10 @@ export const addFirebaseFunctionsDependencies = (tree: Tree, context: SchematicC }; export const setupUniversalDeployment = (config: { - project: experimental.workspace.WorkspaceProject; + project: WorkspaceProject; options: NgAddNormalizedOptions; workspacePath: string; - workspace: experimental.workspace.WorkspaceSchema; + workspace: Workspace; tree: Tree; }) => { const { tree, workspacePath, workspace, options } = config; diff --git a/src/schematics/ng-add-static.ts b/src/schematics/ng-add-static.ts index 3c6ff645a..476a71116 100644 --- a/src/schematics/ng-add-static.ts +++ b/src/schematics/ng-add-static.ts @@ -1,5 +1,4 @@ import { SchematicsException, Tree, SchematicContext } from '@angular-devkit/schematics'; -import { experimental } from '@angular-devkit/core'; import { addDependencies, generateFirebaseRc, @@ -8,7 +7,7 @@ import { safeReadJSON, stringifyFormatted } from './ng-add-common'; -import { FirebaseJSON } from './interfaces'; +import { FirebaseJSON, Workspace, WorkspaceProject } from './interfaces'; import { default as defaultDependencies } from './versions.json'; @@ -82,10 +81,10 @@ export const addFirebaseHostingDependencies = (tree: Tree, context: SchematicCon }; export const setupStaticDeployment = (config: { - project: experimental.workspace.WorkspaceProject; + project: WorkspaceProject; options: NgAddNormalizedOptions; workspacePath: string; - workspace: experimental.workspace.WorkspaceSchema; + workspace: Workspace; tree: Tree; }) => { const { tree, workspacePath, workspace, options } = config; diff --git a/src/schematics/ng-add.ts b/src/schematics/ng-add.ts index c06b8e673..665d07358 100644 --- a/src/schematics/ng-add.ts +++ b/src/schematics/ng-add.ts @@ -1,15 +1,15 @@ import { SchematicContext, SchematicsException, Tree } from '@angular-devkit/schematics'; import { NodePackageInstallTask, RunSchematicTask } from '@angular-devkit/schematics/tasks'; -import { experimental, JsonParseMode, parseJson } from '@angular-devkit/core'; +import { JsonParseMode, parseJson } from '@angular-devkit/core'; import { listProjects, projectPrompt, projectTypePrompt } from './utils'; - +import { Workspace } from './interfaces'; import { DeployOptions, NgAddNormalizedOptions } from './ng-add-common'; import { addFirebaseFunctionsDependencies, setupUniversalDeployment } from './ng-add-ssr'; import { addFirebaseHostingDependencies, setupStaticDeployment } from './ng-add-static'; function getWorkspace( host: Tree -): { path: string; workspace: experimental.workspace.WorkspaceSchema } { +): { path: string; workspace: Workspace } { const possibleFiles = ['/angular.json', '/.angular.json']; const path = possibleFiles.filter(p => host.exists(p))[0]; @@ -19,12 +19,12 @@ function getWorkspace( } const content = configBuffer.toString(); - let workspace: experimental.workspace.WorkspaceSchema; + let workspace: Workspace; try { workspace = (parseJson( content, JsonParseMode.Loose - ) as {}) as experimental.workspace.WorkspaceSchema; + ) as {}) as Workspace; } catch (e) { throw new SchematicsException(`Could not parse angular.json: ` + e.message); } diff --git a/src/schematics/utils.ts b/src/schematics/utils.ts index 5ca1a61ea..0442df359 100644 --- a/src/schematics/utils.ts +++ b/src/schematics/utils.ts @@ -1,6 +1,5 @@ -import { experimental } from '@angular-devkit/core'; import { readFileSync } from 'fs'; -import { FirebaseRc, Project } from './interfaces'; +import { FirebaseRc, Project, WorkspaceProject } from './interfaces'; import { join } from 'path'; import { isUniversalApp } from './ng-add-ssr'; @@ -56,7 +55,7 @@ export const projectPrompt = (projects: Project[]) => { }); }; -export const projectTypePrompt = (project: experimental.workspace.WorkspaceProject) => { +export const projectTypePrompt = (project: WorkspaceProject) => { if (isUniversalApp(project)) { return require('inquirer').prompt({ type: 'confirm',