From 9de12b4d90c0acc779c38b4b622449b72837dead Mon Sep 17 00:00:00 2001 From: Tine Kondo Date: Wed, 6 Nov 2024 20:46:23 +0000 Subject: [PATCH 1/3] feat: update Nx workspace to `v20.1.2` BREAKING CHANGE: Nx `v20` is now the minimal version to use the plugins --- nx.json | 3 +- package.json | 26 +- packages/common-cli/package.json | 4 +- .../common/src/lib/workspace/project-graph.ts | 166 ++--- packages/common/testing/utils.ts | 28 +- packages/create-nx-flutter/README.md | 14 +- packages/create-nx-ktor/README.md | 14 +- packages/create-nx-micronaut/README.md | 14 +- packages/create-nx-quarkus/README.md | 14 +- packages/create-nx-spring-boot/README.md | 14 +- packages/nx-flutter/README.md | 11 +- .../src/generators/preset/generator.spec.ts | 13 +- .../src/generators/preset/schema.d.ts | 7 +- .../src/generators/preset/schema.json | 26 +- .../src/generators/project/generator.spec.ts | 1 + .../project/lib/normalize-options.ts | 11 +- .../src/generators/project/schema.d.ts | 19 +- .../src/generators/project/schema.json | 29 +- packages/nx-flutter/src/graph/create-nodes.ts | 10 +- .../src/graph/process-project-graph.ts | 22 - packages/nx-flutter/src/index.ts | 4 +- packages/nx-ktor/README.md | 11 +- .../src/generators/preset/generator.spec.ts | 1 + .../nx-ktor/src/generators/preset/schema.d.ts | 7 +- .../nx-ktor/src/generators/preset/schema.json | 10 +- .../src/generators/project/generator.spec.ts | 1 + .../project/lib/normalize-options.ts | 22 +- .../src/generators/project/schema.d.ts | 11 +- .../src/generators/project/schema.json | 19 +- packages/nx-ktor/src/graph/create-nodes.ts | 14 +- .../src/graph/process-project-graph.ts | 20 - packages/nx-ktor/src/index.ts | 4 +- packages/nx-micronaut/README.md | 11 +- .../src/generators/preset/generator.spec.ts | 1 + .../src/generators/preset/schema.d.ts | 7 +- .../src/generators/preset/schema.json | 10 +- .../src/generators/project/generator.spec.ts | 1 + .../project/lib/normalize-options.ts | 22 +- .../src/generators/project/schema.d.ts | 11 +- .../src/generators/project/schema.json | 19 +- .../nx-micronaut/src/graph/create-nodes.ts | 14 +- .../src/graph/process-project-graph.ts | 20 - packages/nx-micronaut/src/index.ts | 4 +- packages/nx-quarkus/README.md | 11 +- .../src/generators/preset/generator.spec.ts | 1 + .../src/generators/preset/schema.d.ts | 7 +- .../src/generators/preset/schema.json | 19 +- .../src/generators/project/generator.spec.ts | 1 + .../project/lib/normalize-options.ts | 22 +- .../src/generators/project/schema.d.ts | 7 +- .../src/generators/project/schema.json | 19 +- packages/nx-quarkus/src/graph/create-nodes.ts | 14 +- .../src/graph/process-project-graph.ts | 20 - packages/nx-quarkus/src/index.ts | 4 +- packages/nx-spring-boot/README.md | 53 +- .../src/generators/preset/generator.spec.ts | 1 + .../src/generators/preset/generator.ts | 7 +- .../src/generators/preset/schema.d.ts | 7 +- .../src/generators/preset/schema.json | 23 +- .../src/generators/project/generator.spec.ts | 1 + .../project/lib/normalize-options.ts | 22 +- .../src/generators/project/schema.d.ts | 7 +- .../src/generators/project/schema.json | 19 +- .../nx-spring-boot/src/graph/create-nodes.ts | 14 +- .../src/graph/process-project-graph.ts | 20 - packages/nx-spring-boot/src/index.ts | 4 +- pnpm-lock.yaml | 637 ++++++------------ tools/scripts/sync-preset-schemas.ts | 5 +- 68 files changed, 705 insertions(+), 930 deletions(-) delete mode 100644 packages/nx-flutter/src/graph/process-project-graph.ts delete mode 100644 packages/nx-ktor/src/graph/process-project-graph.ts delete mode 100644 packages/nx-micronaut/src/graph/process-project-graph.ts delete mode 100644 packages/nx-quarkus/src/graph/process-project-graph.ts delete mode 100644 packages/nx-spring-boot/src/graph/process-project-graph.ts diff --git a/nx.json b/nx.json index 66411811..ad22e95f 100644 --- a/nx.json +++ b/nx.json @@ -161,5 +161,6 @@ ], "sharedGlobals": ["{workspaceRoot}/.nx/workflows/**/**"] }, - "defaultBase": "develop" + "defaultBase": "develop", + "useLegacyCache": true } diff --git a/package.json b/package.json index d3f259a0..a098987e 100644 --- a/package.json +++ b/package.json @@ -4,11 +4,11 @@ "license": "MIT", "scripts": { "nx": "nx", - "build": "nx run-many --target build --parallel 4 --exclude smoke", + "build": "nx run-many --target build --parallel 4", "test": "nx run-many --target test --parallel 4", "e2e": "ts-node -P ./tools/tsconfig.tools.json ./tools/scripts/run-all-e2e-tests.ts", - "lint": "nx run-many --target lint --fix --parallel 4 --exclude smoke", - "affected:build": "nx affected --target build --exclude=smoke", + "lint": "nx run-many --target lint --fix --parallel 4", + "affected:build": "nx affected --target build", "affected:e2e": "nx affected --target e2e --exclude=smoke", "affected:test": "nx affected --target test", "affected:lint": "nx affected --target lint --fix", @@ -27,9 +27,9 @@ }, "private": true, "dependencies": { - "@clack/prompts": "^0.7.0", + "@clack/prompts": "^0.8.1", "@swc/helpers": "0.5.11", - "create-nx-workspace": "~18.1.3", + "create-nx-workspace": "20.1.2", "enquirer": "^2.4.1", "hpagent": "^1.2.0", "js-yaml": "^4.1.0", @@ -47,13 +47,13 @@ "@commitlint/cli": "^19.3.0", "@commitlint/config-angular": "^19.3.0", "@jest/globals": "29.7.0", - "@nx/devkit": "19.6.4", - "@nx/eslint-plugin": "19.6.4", - "@nx/jest": "19.6.4", - "@nx/js": "19.6.4", - "@nx/node": "19.6.4", - "@nx/plugin": "19.6.4", - "@nx/workspace": "19.6.4", + "@nx/devkit": "20.1.2", + "@nx/eslint-plugin": "20.1.2", + "@nx/jest": "20.1.2", + "@nx/js": "20.1.2", + "@nx/node": "20.1.2", + "@nx/plugin": "20.1.2", + "@nx/workspace": "20.1.2", "@swc-node/register": "1.9.1", "@swc/cli": "0.3.12", "@swc/core": "1.5.7", @@ -78,7 +78,7 @@ "jest-environment-node": "^29.4.1", "jest-mock": "28.1.3", "lint-staged": "^15.2.7", - "nx": "19.6.4", + "nx": "20.1.2", "prettier": "2.6.2", "ts-jest": "29.1.0", "ts-node": "10.9.1", diff --git a/packages/common-cli/package.json b/packages/common-cli/package.json index 6eac195a..2f69c620 100644 --- a/packages/common-cli/package.json +++ b/packages/common-cli/package.json @@ -25,11 +25,11 @@ "create-nx-ktor" ], "dependencies": { - "create-nx-workspace": ">=18.0.0", + "create-nx-workspace": ">=20.0.0", "@clack/prompts": "^0.7.0", "yargs": "^17.7.2", "tslib": "^2.6.1", - "@nx/devkit": ">=18.0.0", + "@nx/devkit": ">=20.0.0", "fs-extra": "^10.1.0", "terminal-link": "^2.1.1" }, diff --git a/packages/common/src/lib/workspace/project-graph.ts b/packages/common/src/lib/workspace/project-graph.ts index 61380082..829c8332 100644 --- a/packages/common/src/lib/workspace/project-graph.ts +++ b/packages/common/src/lib/workspace/project-graph.ts @@ -1,14 +1,16 @@ import { CreateDependenciesContext, + CreateNodes, CreateNodesContext, + CreateNodesContextV2, + createNodesFromFiles, CreateNodesResult, + CreateNodesResultV2, + CreateNodesV2, DependencyType, joinPathFragments, logger, ProjectConfiguration, - ProjectGraph, - ProjectGraphBuilder, - ProjectGraphProcessorContext, ProjectType, RawProjectGraphDependency, TargetConfiguration, @@ -116,56 +118,13 @@ function getProjectFilesGlob(projectFiles: string[]): string { : `**/${projectFiles[0]}`; } -// Project Graph V1 - -export function getProjectGraph( - pluginName: string, - projectFilter: (project: { root: string }) => boolean, - getPackageInfo: (project: { root: string }) => PackageInfo, - graph: ProjectGraph, - ctx: ProjectGraphProcessorContext -): ProjectGraph { - const builder = new ProjectGraphBuilder(graph); - if (process.env['NX_VERBOSE_LOGGING'] === 'true') { - logger.debug( - `[${pluginName}]: Looking related projects inside the workspace...` - ); - } - let workspace = undefined; - let dependencies: RawProjectGraphDependency[] = []; - - for (const source in ctx.filesToProcess) { - const changed = ctx.filesToProcess[source]; - for (const file of changed) { - // we only create the workspace map once and only if changed file is of interest - workspace ??= getPackageInfosForNxProjects( - pluginName, - projectFilter, - getPackageInfo, - ctx.projectsConfigurations - ); - - dependencies = dependencies.concat( - getDependenciesForProject(pluginName, file.file, source, workspace) - ); - } - } - - for (const dep of dependencies) { - builder.addDependency(dep.source, dep.target, dep.type, dep.source); - } - - return builder.getUpdatedProjectGraph(); -} - -// Project Graph V2 - +// Project Graph using CreateNode (V1) export const createNodesFor = ( projectFiles: string[], projectFilter: (project: { root: string }) => boolean, getProjectTypeAndTargets: ( projectFile: string, - options?: T + options?: T | undefined ) => { projectType: ProjectType; targets: { @@ -173,38 +132,44 @@ export const createNodesFor = ( }; }, pluginName: string -) => - [ - getProjectFilesGlob(projectFiles), - ( - file: string, - options: T, - context: CreateNodesContext - ): CreateNodesResult => { - if (!projectFilter({ root: getProjectRootFromFile(file) })) { - return {}; // back off if the file/project does not match the criteria - } +): CreateNodes => [ + getProjectFilesGlob(projectFiles), + createNodesInternal(projectFilter, getProjectTypeAndTargets, pluginName), +]; - const root = dirname(file); - - // eslint-disable-next-line no-useless-escape -- eslint's wrong - const parts = root.split(/[\/\\]/g); - const name = parts[parts.length - 1].toLowerCase(); - - return { - projects: { - [name]: { - name, - root, - ...(isNxCrystalEnabled() - ? getProjectTypeAndTargets(file, options) - : {}), - tags: [`type:${pluginName.replace('@nxrocks/', '')}`], - }, - }, - }; - }, - ] as const; +// Project Graph using CreateNode (V2) +export const createNodesForV2 = ( + projectFiles: string[], + projectFilter: (project: { root: string }) => boolean, + getProjectTypeAndTargets: ( + projectFile: string, + options: T | undefined + ) => { + projectType: ProjectType; + targets: { + [targetName: string]: TargetConfiguration; + }; + }, + pluginName: string +): CreateNodesV2 => [ + getProjectFilesGlob(projectFiles), + ( + files: readonly string[], + options: T | undefined, + context: CreateNodesContextV2 + ) => { + return createNodesFromFiles( + createNodesInternal( + projectFilter, + getProjectTypeAndTargets, + pluginName + ), + files, + options as T, + context + ); + }, +]; export const createDependenciesIf = ( pluginName: string, @@ -246,3 +211,46 @@ export const createDependenciesIf = ( return dependencies; }; + +function createNodesInternal( + projectFilter: (project: { root: string }) => boolean, + getProjectTypeAndTargets: ( + projectFile: string, + options: T | undefined + ) => { + projectType: ProjectType; + targets: { + [targetName: string]: TargetConfiguration; + }; + }, + pluginName: string +) { + return ( + file: string, + options: T | undefined, + context: CreateNodesContext + ): CreateNodesResult => { + if (!projectFilter({ root: getProjectRootFromFile(file) })) { + return {}; // back off if the file/project does not match the criteria + } + + const root = dirname(file); + + // eslint-disable-next-line no-useless-escape -- eslint's wrong + const parts = root.split(/[\/\\]/g); + const name = parts[parts.length - 1].toLowerCase(); + + return { + projects: { + [name]: { + name, + root, + ...(isNxCrystalEnabled() + ? getProjectTypeAndTargets(file, options) + : {}), + tags: [`type:${pluginName.replace('@nxrocks/', '')}`], + }, + }, + }; + }; +} diff --git a/packages/common/testing/utils.ts b/packages/common/testing/utils.ts index 1e5090c5..c76c46df 100644 --- a/packages/common/testing/utils.ts +++ b/packages/common/testing/utils.ts @@ -15,26 +15,20 @@ function toEntry(e: string | { filePath: string; fileContent?: string }) { export function mockExecutorContext( pluginName: string, - executorName: string, - workspaceVersion = 2 + executorName: string ): ExecutorContext { return { - root: '/root', - cwd: 'root', - projectName: 'proj', - workspace: { - version: workspaceVersion, - projects: { - proj: { - root: 'proj', - targets: { - test: { - executor: `${pluginName}:${executorName}`, - }, - }, - }, - }, + root: '', + cwd: '', + projectGraph: { + nodes: {}, + dependencies: {}, }, + projectsConfigurations: { + projects: {}, + version: 2, + }, + nxJsonConfiguration: {}, target: { executor: `${pluginName}:${executorName}`, }, diff --git a/packages/create-nx-flutter/README.md b/packages/create-nx-flutter/README.md index 8492cd9a..24c165c8 100644 --- a/packages/create-nx-flutter/README.md +++ b/packages/create-nx-flutter/README.md @@ -1,4 +1,4 @@ -# create-nx-flutter +# create-nx-flutter [![npm version](https://img.shields.io/npm/v/create-nx-flutter?style=flat-square)](https://www.npmjs.com/package/create-nx-flutter) [![github action - release](https://img.shields.io/github/actions/workflow/status/tinesoft/nxrocks/release.yml?label=release&style=flat-square)](https://github.com/tinesoft/nxrocks/actions?query=workflow%3ARelease) @@ -10,7 +10,7 @@ The goal of this CLI is to ease the process of creating a Nx workspace that can host and manage Flutter projects, thanks to our [@nxrocks/nx-flutter](https://github.com/tinesoft/nxrocks/blob/develop/packages/nx-flutter) plugin, that is automatically installed within it. -## Prerequisites +## Prerequisites To run this CLI, all you need is to have [NodeJS](https://nodejs.org/en/download) installed (preferably the current LTS version). Then to later create and run your Flutter projets, you'll need [Flutter CLI](https://docs.flutter.dev/get-started/install) as well. @@ -32,12 +32,12 @@ Run `npx create-nx-flutter --help` to print some helpful info on available optio Every Nx package relies on the underlying Nx Workspace/DevKit it runs on. This table provides the compatibility matrix between major versions of Nx workspace and this package. -| Package Version | Nx Workspace version -| --------------- | -------------------- -| `>=v3.0.0` | `>=v17.3.0` -| `=v4.0.0` | `>=v20.0.0` | +| `>=v3.0.0` | `>=v17.3.0` | +| `=v3.0.0` | `>=v17.3.0` -| `=v4.0.0` | `>=v20.0.0` | +| `>=v3.0.0` | `>=v17.3.0` | +| `=v3.0.0` | `>=v17.3.0` -| `=v4.0.0` | `>=v20.0.0` | +| `>=v3.0.0` | `>=v17.3.0` | +| `=v3.0.0` | `>=v17.3.0` -| `=v4.0.0` | `>=v20.0.0` | +| `>=v3.0.0` | `>=v17.3.0` | +| `=v3.0.0` | `>=v17.3.0` -| `=v4.0.0` | `>=v20.0.0` | +| `>=v3.0.0` | `>=v17.3.0` | +| ` +nx g @nxrocks/nx-flutter:project path/to/app-name ``` > you can also use the following aliases to call the generator: `prj`, `new`, or `create` @@ -102,16 +102,16 @@ You will be prompted for entering the most commonly customized generation option To skip the interactive prompt, or if you want to customize all non-prompted options, you can pass them along directly when running the command, as such: ``` -nx g @nxrocks/nx-flutter:project --optionName1 optionValue1 ... --optionNameN optionValueN +nx g @nxrocks/nx-flutter:project path/to/app-name --optionName1 optionValue1 ... --optionNameN optionValueN ``` #### Generation Options Here the list of available generation options : -| Arguments | Description | -| ----------------- | ------------------------------------- | -| `` | The folder that will contain your app | +| Arguments | Description | +| ------------- | --------------------------------- | +| `` | The directory of the new project. | | Option | Value | Description | | ----------------- | -------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | @@ -197,6 +197,7 @@ Every Nx plugin relies on the underlying Nx Workspace/DevKit it runs on. This ta | Plugin Version | Nx Workspace version | | -------------- | -------------------- | +| `>=v10.x.x` | `>=v20.x.x` | | `>=v9.x.x` | `>=v18.x.x` | | `>=v8.x.x` | `>=v17.x.x` | | `>=v7.x.x` | `>=v16.x.x` | diff --git a/packages/nx-flutter/src/generators/preset/generator.spec.ts b/packages/nx-flutter/src/generators/preset/generator.spec.ts index 00a16ffc..1dd4bfe5 100644 --- a/packages/nx-flutter/src/generators/preset/generator.spec.ts +++ b/packages/nx-flutter/src/generators/preset/generator.spec.ts @@ -14,19 +14,18 @@ process.env['NX_INTERACTIVE'] = 'true'; // simulate normal cli interactive mode describe('preset generator', () => { let tree: Tree; const options: PresetGeneratorSchema = { + directory: 'testapp', prjName: 'testapp', template: 'app', }; beforeEach(() => { tree = createTreeWithEmptyWorkspace(); - jest.spyOn(enquirer,'prompt').mockResolvedValue( - { - androidLanguage: 'kotlin', - iosLanguage: 'swift', - platforms: ['android', 'ios', 'web', 'linux', 'windows', 'macos'], - } - ); + jest.spyOn(enquirer, 'prompt').mockResolvedValue({ + androidLanguage: 'kotlin', + iosLanguage: 'swift', + platforms: ['android', 'ios', 'web', 'linux', 'windows', 'macos'], + }); }); afterEach(() => { diff --git a/packages/nx-flutter/src/generators/preset/schema.d.ts b/packages/nx-flutter/src/generators/preset/schema.d.ts index 73df7797..7b815285 100644 --- a/packages/nx-flutter/src/generators/preset/schema.d.ts +++ b/packages/nx-flutter/src/generators/preset/schema.d.ts @@ -1,5 +1,6 @@ -import { ProjectGeneratorOptions } from "../project/schema"; +import { ProjectGeneratorOptions } from '../project/schema'; -export interface PresetGeneratorSchema extends Omit{ - prjName: string; // we cannot use "projectName" nor "name" because they have special meanings in Nx +export interface PresetGeneratorSchema + extends Omit { + prjName?: string; // we cannot use "projectName" nor "name" because they have special meanings in Nx } diff --git a/packages/nx-flutter/src/generators/preset/schema.json b/packages/nx-flutter/src/generators/preset/schema.json index f8c4f6fa..a0f99bfa 100644 --- a/packages/nx-flutter/src/generators/preset/schema.json +++ b/packages/nx-flutter/src/generators/preset/schema.json @@ -15,9 +15,13 @@ }, "directory": { "type": "string", - "description": "A directory where the project is placed.", + "description": "The directory of the new project.", "alias": "d", - "x-priority": "important" + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "Which directory do you want to create the project in?" }, "org": { "description": "name of the ", @@ -39,12 +43,7 @@ "x-prompt": { "message": "Which type of Flutter project would you like to create?", "type": "list", - "enum": [ - "app", - "module", - "package", - "plugin" - ], + "enum": ["app", "module", "package", "plugin"], "items": [ { "value": "app", @@ -109,10 +108,7 @@ "projectNameAndRootFormat": { "description": "Whether to generate the project name and root directory as provided (`as-provided`) or generate them composing their values and taking the configured layout into account (`derived`).", "type": "string", - "enum": [ - "as-provided", - "derived" - ] + "enum": ["as-provided", "derived"] }, "pub": { "type": "boolean", @@ -127,7 +123,5 @@ "description": "Whether or not to overwrite existing files when performing operations." } }, - "required": [ - "prjName" - ] -} \ No newline at end of file + "required": ["prjName", "directory"] +} diff --git a/packages/nx-flutter/src/generators/project/generator.spec.ts b/packages/nx-flutter/src/generators/project/generator.spec.ts index f8783abd..9ab6b80b 100644 --- a/packages/nx-flutter/src/generators/project/generator.spec.ts +++ b/packages/nx-flutter/src/generators/project/generator.spec.ts @@ -45,6 +45,7 @@ describe('application generator', () => { let tree: Tree; let options: NormalizedSchema; const _options: ProjectGeneratorOptions = { + directory: 'testapp', name: 'testapp', template: 'app', }; diff --git a/packages/nx-flutter/src/generators/project/lib/normalize-options.ts b/packages/nx-flutter/src/generators/project/lib/normalize-options.ts index df646980..8e62b5b9 100644 --- a/packages/nx-flutter/src/generators/project/lib/normalize-options.ts +++ b/packages/nx-flutter/src/generators/project/lib/normalize-options.ts @@ -6,16 +6,15 @@ export async function normalizeOptions( tree: Tree, options: ProjectGeneratorOptions ): Promise { - const { projectName, projectRoot, projectNameAndRootFormat } = - await determineProjectNameAndRootOptions(tree, { + const { projectName, projectRoot } = await determineProjectNameAndRootOptions( + tree, + { name: options.name, projectType: options.template === 'app' ? 'application' : 'library', directory: options.directory, - projectNameAndRootFormat: options.projectNameAndRootFormat, //rootProject: options.rootProject, - callingGenerator: '@nxrocks/nx-flutter:project', - }); - options.projectNameAndRootFormat = projectNameAndRootFormat; + } + ); const parsedTags = options.tags ? options.tags.split(',').map((s) => s.trim()) : []; diff --git a/packages/nx-flutter/src/generators/project/schema.d.ts b/packages/nx-flutter/src/generators/project/schema.d.ts index 6e1f548d..30b2c448 100644 --- a/packages/nx-flutter/src/generators/project/schema.d.ts +++ b/packages/nx-flutter/src/generators/project/schema.d.ts @@ -1,28 +1,31 @@ -import type { ProjectNameAndRootFormat } from '@nx/devkit/src/generators/project-name-and-root-utils'; - export type AndroidLanguageType = 'java' | 'kotlin'; export type IosLanguageType = 'objc' | 'swift'; export type TemplateType = 'app' | 'module' | 'package' | 'plugin'; -export type PlatformType = 'android' | 'ios' | 'linux' | 'macos' | 'windows' | 'web'; +export type PlatformType = + | 'android' + | 'ios' + | 'linux' + | 'macos' + | 'windows' + | 'web'; export interface ProjectGeneratorOptions { - name: string; + directory: string; + name?: string; org?: string; description?: string; androidLanguage?: AndroidLanguageType; iosLanguage?: IosLanguageType; template?: TemplateType; - sample?:string; + sample?: string; platforms?: PlatformType[]; useFvm?: boolean; pub?: boolean; - offline?:boolean; + offline?: boolean; tags?: string; - directory?: string; - projectNameAndRootFormat?: ProjectNameAndRootFormat; } export interface NormalizedSchema extends ProjectGeneratorOptions { diff --git a/packages/nx-flutter/src/generators/project/schema.json b/packages/nx-flutter/src/generators/project/schema.json index ec987504..206eeac5 100644 --- a/packages/nx-flutter/src/generators/project/schema.json +++ b/packages/nx-flutter/src/generators/project/schema.json @@ -6,22 +6,22 @@ "outputCapture": "pipe", "type": "object", "properties": { - "name": { + "directory": { "type": "string", - "description": "Name of the project to generate.", - "alias": "projectName", + "description": "The directory of the new project.", + "alias": "d", "$default": { "$source": "argv", "index": 0 }, - "x-prompt": "What name would you like to use?", - "pattern": "^[a-zA-Z][^:]*$", - "x-priority": "important" + "x-prompt": "Which directory do you want to create the project in?" }, - "directory": { + "name": { "type": "string", - "description": "A directory where the project is placed.", - "alias": "d", + "description": "Name of the project to generate.", + "alias": "projectName", + "x-prompt": "What name would you like to use?", + "pattern": "^[a-zA-Z][^:]*$", "x-priority": "important" }, "org": { @@ -44,12 +44,7 @@ "x-prompt": { "message": "Which type of Flutter project would you like to create?", "type": "list", - "enum": [ - "app", - "module", - "package", - "plugin" - ], + "enum": ["app", "module", "package", "plugin"], "items": [ { "value": "app", @@ -129,7 +124,5 @@ "description": "Whether or not to overwrite existing files when performing operations." } }, - "required": [ - "name" - ] + "required": ["directory"] } diff --git a/packages/nx-flutter/src/graph/create-nodes.ts b/packages/nx-flutter/src/graph/create-nodes.ts index 6cd233fd..d0dd9b8d 100644 --- a/packages/nx-flutter/src/graph/create-nodes.ts +++ b/packages/nx-flutter/src/graph/create-nodes.ts @@ -1,4 +1,4 @@ -import { createNodesFor } from '@nxrocks/common'; +import { createNodesFor, createNodesForV2 } from '@nxrocks/common'; import { NX_FLUTTER_PKG } from '../index'; import { isFlutterProject } from '../utils/flutter-utils'; import { getProjectTypeAndTargetsFromFile } from '../utils/plugin-utils'; @@ -11,3 +11,11 @@ export const createNodesFn = () => getProjectTypeAndTargetsFromFile, NX_FLUTTER_PKG ); + +export const createNodesFnV2 = () => + createNodesForV2( + ['pubspec.yaml'], + isFlutterProject, + getProjectTypeAndTargetsFromFile, + NX_FLUTTER_PKG + ); diff --git a/packages/nx-flutter/src/graph/process-project-graph.ts b/packages/nx-flutter/src/graph/process-project-graph.ts deleted file mode 100644 index 4a4646fa..00000000 --- a/packages/nx-flutter/src/graph/process-project-graph.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { ProjectGraph, ProjectGraphProcessorContext } from '@nx/devkit'; - -import { NX_FLUTTER_PKG } from '..'; -import { - getProjectGraph -} from '@nxrocks/common'; -import { isFlutterProject } from '../utils/flutter-utils'; -import { getPackageInfo } from '../utils/deps-utils'; - - -export function processProjectGraph( - graph: ProjectGraph, - context: ProjectGraphProcessorContext -): ProjectGraph { - return getProjectGraph( - NX_FLUTTER_PKG, - isFlutterProject, - getPackageInfo, - graph, - context - ); -} diff --git a/packages/nx-flutter/src/index.ts b/packages/nx-flutter/src/index.ts index ce3e9469..faeebc62 100644 --- a/packages/nx-flutter/src/index.ts +++ b/packages/nx-flutter/src/index.ts @@ -1,9 +1,9 @@ -import { createNodesFn } from './graph/create-nodes'; +import { createNodesFn, createNodesFnV2 } from './graph/create-nodes'; export { projectGenerator } from './generators/project/generator'; -export { processProjectGraph } from './graph/process-project-graph'; export { createDependencies } from './graph/create-dependencies'; export const NX_FLUTTER_PKG = '@nxrocks/nx-flutter'; export const createNodes = createNodesFn(); +export const createNodesV2 = createNodesFnV2(); diff --git a/packages/nx-ktor/README.md b/packages/nx-ktor/README.md index 7cc7699d..86656f20 100644 --- a/packages/nx-ktor/README.md +++ b/packages/nx-ktor/README.md @@ -89,7 +89,7 @@ This plugin is composed of 2 main **generators**: Simply run the `project` generator with the following command: ``` -nx g @nxrocks/nx-ktor:project +nx g @nxrocks/nx-ktor:project path/to/your/app-name ``` > you can also use the following aliases to call the generator: `proj`, `new`, or `create` @@ -99,16 +99,16 @@ You will be prompted for entering the most commonly customized generation option To skip the interactive prompt, or if you want to customize all non-prompted options, you can pass them along directly when running the command, as such: ``` -nx g @nxrocks/nx-ktor:project --optionName1 optionValue1 ... --optionNameN optionValueN +nx g @nxrocks/nx-ktor:project path/to/your/app-name --optionName1 optionValue1 ... --optionNameN optionValueN ``` #### Generation Options Here the list of available generation options : -| Arguments | Description | -| --------- | ------------------------- | -| `` | The name of your project. | +| Arguments | Description | +| ------------- | --------------------------------- | +| `` | The directory of the new project. | | Option | Value | Description | | --------------------------- | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -311,6 +311,7 @@ Every Nx plugin relies on the underlying Nx Workspace/DevKit it runs on. This ta | Plugin Version | Nx Workspace version | | -------------- | -------------------- | +| `>=v5.x.x` | `>=v20.x.x` | | `>=v4.x.x` | `>=v18.x.x` | | `>=v3.x.x` | `>=v17.x.x` | | `>=v2.x.x` | `>=v16.x.x` | diff --git a/packages/nx-ktor/src/generators/preset/generator.spec.ts b/packages/nx-ktor/src/generators/preset/generator.spec.ts index 436f6359..92ee3711 100644 --- a/packages/nx-ktor/src/generators/preset/generator.spec.ts +++ b/packages/nx-ktor/src/generators/preset/generator.spec.ts @@ -18,6 +18,7 @@ import { POM_XML } from '../project/generator.spec'; describe('preset generator', () => { let tree: Tree; const options: PresetGeneratorSchema = { + directory: 'ktapp', prjName: 'ktapp', groupId: 'com.tinesoft', artifactId: 'ktapp', diff --git a/packages/nx-ktor/src/generators/preset/schema.d.ts b/packages/nx-ktor/src/generators/preset/schema.d.ts index 73df7797..7b815285 100644 --- a/packages/nx-ktor/src/generators/preset/schema.d.ts +++ b/packages/nx-ktor/src/generators/preset/schema.d.ts @@ -1,5 +1,6 @@ -import { ProjectGeneratorOptions } from "../project/schema"; +import { ProjectGeneratorOptions } from '../project/schema'; -export interface PresetGeneratorSchema extends Omit{ - prjName: string; // we cannot use "projectName" nor "name" because they have special meanings in Nx +export interface PresetGeneratorSchema + extends Omit { + prjName?: string; // we cannot use "projectName" nor "name" because they have special meanings in Nx } diff --git a/packages/nx-ktor/src/generators/preset/schema.json b/packages/nx-ktor/src/generators/preset/schema.json index 4b246d02..e460a95c 100644 --- a/packages/nx-ktor/src/generators/preset/schema.json +++ b/packages/nx-ktor/src/generators/preset/schema.json @@ -15,9 +15,13 @@ }, "directory": { "type": "string", - "description": "A directory where the project is placed.", + "description": "The directory of the new project.", "alias": "d", - "x-priority": "important" + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "Which directory do you want to create the project in?" }, "ktorVersion": { "description": "Ktor version.", @@ -179,5 +183,5 @@ "enum": ["as-provided", "derived"] } }, - "required": ["prjName"] + "required": ["prjName", "directory"] } diff --git a/packages/nx-ktor/src/generators/project/generator.spec.ts b/packages/nx-ktor/src/generators/project/generator.spec.ts index 6608a682..a08e90d2 100644 --- a/packages/nx-ktor/src/generators/project/generator.spec.ts +++ b/packages/nx-ktor/src/generators/project/generator.spec.ts @@ -205,6 +205,7 @@ describe('project generator', () => { let tree: Tree; let options: NormalizedSchema; const _options: ProjectGeneratorOptions = { + directory: 'ktapp', name: 'ktapp', groupId: 'com.tinesoft', artifactId: 'ktapp', diff --git a/packages/nx-ktor/src/generators/project/lib/normalize-options.ts b/packages/nx-ktor/src/generators/project/lib/normalize-options.ts index 6a51398d..fe4550b2 100644 --- a/packages/nx-ktor/src/generators/project/lib/normalize-options.ts +++ b/packages/nx-ktor/src/generators/project/lib/normalize-options.ts @@ -6,19 +6,15 @@ export async function normalizeOptions( tree: Tree, options: ProjectGeneratorOptions ): Promise { - const { - projectName, - projectRoot, - projectNameAndRootFormat, - } = await determineProjectNameAndRootOptions(tree, { - name: options.name, - projectType: 'application', - directory: options.directory, - projectNameAndRootFormat: options.projectNameAndRootFormat, - //rootProject: options.rootProject, - callingGenerator: '@nxrocks/nx-ktor:project', - }); - options.projectNameAndRootFormat = projectNameAndRootFormat; + const { projectName, projectRoot } = await determineProjectNameAndRootOptions( + tree, + { + name: options.name, + projectType: 'application', + directory: options.directory, + //rootProject: options.rootProject, + } + ); const parsedTags = options.tags ? options.tags.split(',').map((s) => s.trim()) : []; diff --git a/packages/nx-ktor/src/generators/project/schema.d.ts b/packages/nx-ktor/src/generators/project/schema.d.ts index c2854409..d0b10044 100644 --- a/packages/nx-ktor/src/generators/project/schema.d.ts +++ b/packages/nx-ktor/src/generators/project/schema.d.ts @@ -1,10 +1,7 @@ -import type { ProjectNameAndRootFormat } from '@nx/devkit/src/generators/project-name-and-root-utils'; - export interface ProjectGeneratorOptions { - name: string; + directory: string; + name?: string; tags?: string; - directory?: string; - projectNameAndRootFormat?: ProjectNameAndRootFormat; ktorInitializrUrl?: string; proxyUrl?: string; @@ -23,13 +20,13 @@ export interface ProjectGeneratorOptions { transformIntoMultiModule?: boolean; addToExistingParentModule?: boolean; parentModuleName?: string; - keepProjectLevelWrapper?: boolean + keepProjectLevelWrapper?: boolean; } export interface NormalizedSchema extends ProjectGeneratorOptions { projectName: string; projectRoot: string; projectFeatures: string[]; - parsedTags: string[]; + parsedTags: string[]; moduleRoot?: string; } diff --git a/packages/nx-ktor/src/generators/project/schema.json b/packages/nx-ktor/src/generators/project/schema.json index c503772d..9505ab92 100644 --- a/packages/nx-ktor/src/generators/project/schema.json +++ b/packages/nx-ktor/src/generators/project/schema.json @@ -6,21 +6,22 @@ "outputCapture": "pipe", "type": "object", "properties": { - "name": { + "directory": { "type": "string", - "description": "Name of the project to generate.", + "description": "The directory of the new project.", + "alias": "d", "$default": { "$source": "argv", "index": 0 }, - "x-prompt": "What name would you like to use?", - "pattern": "^[a-zA-Z][^:]*$", - "x-priority": "important" + "x-prompt": "Which directory do you want to create the project in?" }, - "directory": { + "name": { "type": "string", - "description": "A directory where the project is placed.", - "alias": "d", + "description": "Name of the project to generate.", + "alias": "projectName", + "x-prompt": "What name would you like to use?", + "pattern": "^[a-zA-Z][^:]*$", "x-priority": "important" }, "ktorVersion": { @@ -183,5 +184,5 @@ "enum": ["as-provided", "derived"] } }, - "required": ["name"] + "required": ["directory"] } diff --git a/packages/nx-ktor/src/graph/create-nodes.ts b/packages/nx-ktor/src/graph/create-nodes.ts index eb494362..1bb467e7 100644 --- a/packages/nx-ktor/src/graph/create-nodes.ts +++ b/packages/nx-ktor/src/graph/create-nodes.ts @@ -1,4 +1,8 @@ -import { JVM_PROJECT_FILES, createNodesFor } from '@nxrocks/common-jvm'; +import { + JVM_PROJECT_FILES, + createNodesFor, + createNodesForV2, +} from '@nxrocks/common-jvm'; import { NX_KTOR_PKG } from '../index'; import { isKtorProject } from '../utils/ktor-utils'; import { getProjectTypeAndTargetsFromFile } from '../utils/plugin-utils'; @@ -11,3 +15,11 @@ export const createNodesFn = () => getProjectTypeAndTargetsFromFile, NX_KTOR_PKG ); + +export const createNodesFnV2 = () => + createNodesForV2( + JVM_PROJECT_FILES, + isKtorProject, + getProjectTypeAndTargetsFromFile, + NX_KTOR_PKG + ); diff --git a/packages/nx-ktor/src/graph/process-project-graph.ts b/packages/nx-ktor/src/graph/process-project-graph.ts deleted file mode 100644 index bc22d5ac..00000000 --- a/packages/nx-ktor/src/graph/process-project-graph.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ProjectGraph, ProjectGraphProcessorContext } from '@nx/devkit'; - -import { NX_KTOR_PKG } from '..'; -import { - getProjectGraph, - getJvmPackageInfo } from '@nxrocks/common-jvm'; -import { isKtorProject } from '../utils/ktor-utils'; - -export function processProjectGraph( - graph: ProjectGraph, - context: ProjectGraphProcessorContext -): ProjectGraph { - return getProjectGraph( - NX_KTOR_PKG, - isKtorProject, - getJvmPackageInfo, - graph, - context - ); -} diff --git a/packages/nx-ktor/src/index.ts b/packages/nx-ktor/src/index.ts index 3bf5bfda..24f16005 100644 --- a/packages/nx-ktor/src/index.ts +++ b/packages/nx-ktor/src/index.ts @@ -1,9 +1,9 @@ -import { createNodesFn } from './graph/create-nodes'; +import { createNodesFn, createNodesFnV2 } from './graph/create-nodes'; export { projectGenerator } from './generators/project/generator'; -export { processProjectGraph } from './graph/process-project-graph'; export { createDependencies } from './graph/create-dependencies'; export const NX_KTOR_PKG = '@nxrocks/nx-ktor'; export const createNodes = createNodesFn(); +export const createNodesV2 = createNodesFnV2(); diff --git a/packages/nx-micronaut/README.md b/packages/nx-micronaut/README.md index dca9b584..d2ccd9b8 100644 --- a/packages/nx-micronaut/README.md +++ b/packages/nx-micronaut/README.md @@ -89,7 +89,7 @@ This plugin is composed of 2 main **generators**: Simply run the `project` generator with the following command: ``` -nx g @nxrocks/nx-micronaut:project +nx g @nxrocks/nx-micronaut:project path/to/your/app-name ``` > you can also use the following aliases to call the generator: `proj`, `new`, or `create` @@ -99,16 +99,16 @@ You will be prompted for entering the most commonly customized generation option To skip the interactive prompt, or if you want to customize all non-prompted options, you can pass them along directly when running the command, as such: ``` -nx g @nxrocks/nx-micronaut:project --optionName1 optionValue1 ... --optionNameN optionValueN +nx g @nxrocks/nx-micronaut:project path/to/your/app-name --optionName1 optionValue1 ... --optionNameN optionValueN ``` #### Generation Options Here the list of available generation options : -| Arguments | Description | -| --------- | ------------------------- | -| `` | The name of your project. | +| Arguments | Description | +| ------------- | --------------------------------- | +| `` | The directory of the new project. | | Option | Value | Description | | --------------------------- | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -288,6 +288,7 @@ Every Nx plugin relies on the underlying Nx Workspace/DevKit it runs on. This ta | Plugin Version | Nx Workspace version | | -------------- | -------------------- | +| `>=v7.x.x` | `>=v20.x.x` | | `>=v6.x.x` | `>=v18.x.x` | | `>=v5.x.x` | `>=v17.x.x` | | `>=v4.x.x` | `>=v16.x.x` | diff --git a/packages/nx-micronaut/src/generators/preset/generator.spec.ts b/packages/nx-micronaut/src/generators/preset/generator.spec.ts index a946e8dc..4f7eae9b 100644 --- a/packages/nx-micronaut/src/generators/preset/generator.spec.ts +++ b/packages/nx-micronaut/src/generators/preset/generator.spec.ts @@ -18,6 +18,7 @@ import { POM_XML } from '../project/generator.spec'; describe('preset generator', () => { let tree: Tree; const options: PresetGeneratorSchema = { + directory: 'mnapp', prjName: 'mnapp', projectType: 'default', basePackage: 'com.tinesoft', diff --git a/packages/nx-micronaut/src/generators/preset/schema.d.ts b/packages/nx-micronaut/src/generators/preset/schema.d.ts index 73df7797..7b815285 100644 --- a/packages/nx-micronaut/src/generators/preset/schema.d.ts +++ b/packages/nx-micronaut/src/generators/preset/schema.d.ts @@ -1,5 +1,6 @@ -import { ProjectGeneratorOptions } from "../project/schema"; +import { ProjectGeneratorOptions } from '../project/schema'; -export interface PresetGeneratorSchema extends Omit{ - prjName: string; // we cannot use "projectName" nor "name" because they have special meanings in Nx +export interface PresetGeneratorSchema + extends Omit { + prjName?: string; // we cannot use "projectName" nor "name" because they have special meanings in Nx } diff --git a/packages/nx-micronaut/src/generators/preset/schema.json b/packages/nx-micronaut/src/generators/preset/schema.json index 95c8953c..a4c633c4 100644 --- a/packages/nx-micronaut/src/generators/preset/schema.json +++ b/packages/nx-micronaut/src/generators/preset/schema.json @@ -15,9 +15,13 @@ }, "directory": { "type": "string", - "description": "A directory where the project is placed.", + "description": "The directory of the new project.", "alias": "d", - "x-priority": "important" + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "Which directory do you want to create the project in?" }, "projectType": { "description": "Type of application.", @@ -236,5 +240,5 @@ "enum": ["as-provided", "derived"] } }, - "required": ["prjName", "projectType"] + "required": ["prjName", "projectType", "directory"] } diff --git a/packages/nx-micronaut/src/generators/project/generator.spec.ts b/packages/nx-micronaut/src/generators/project/generator.spec.ts index d0616120..c21565f3 100644 --- a/packages/nx-micronaut/src/generators/project/generator.spec.ts +++ b/packages/nx-micronaut/src/generators/project/generator.spec.ts @@ -196,6 +196,7 @@ describe('project generator', () => { let tree: Tree; let options: NormalizedSchema; const _options: ProjectGeneratorOptions = { + directory: 'mnapp', name: 'mnapp', projectType: 'default', basePackage: 'com.tinesoft', diff --git a/packages/nx-micronaut/src/generators/project/lib/normalize-options.ts b/packages/nx-micronaut/src/generators/project/lib/normalize-options.ts index 241b0ae6..14943c13 100644 --- a/packages/nx-micronaut/src/generators/project/lib/normalize-options.ts +++ b/packages/nx-micronaut/src/generators/project/lib/normalize-options.ts @@ -6,19 +6,15 @@ export async function normalizeOptions( tree: Tree, options: ProjectGeneratorOptions ): Promise { - const { - projectName, - projectRoot, - projectNameAndRootFormat, - } = await determineProjectNameAndRootOptions(tree, { - name: options.name, - projectType: 'application', - directory: options.directory, - projectNameAndRootFormat: options.projectNameAndRootFormat, - //rootProject: options.rootProject, - callingGenerator: '@nxrocks/nx-micronaut:project', - }); - options.projectNameAndRootFormat = projectNameAndRootFormat; + const { projectName, projectRoot } = await determineProjectNameAndRootOptions( + tree, + { + name: options.name, + projectType: 'application', + directory: options.directory, + //rootProject: options.rootProject, + } + ); const parsedTags = options.tags ? options.tags.split(',').map((s) => s.trim()) : []; diff --git a/packages/nx-micronaut/src/generators/project/schema.d.ts b/packages/nx-micronaut/src/generators/project/schema.d.ts index 684eb99e..c8b747fe 100644 --- a/packages/nx-micronaut/src/generators/project/schema.d.ts +++ b/packages/nx-micronaut/src/generators/project/schema.d.ts @@ -1,18 +1,15 @@ -import type { ProjectNameAndRootFormat } from '@nx/devkit/src/generators/project-name-and-root-utils'; - export interface ProjectGeneratorOptions { - name: string; + directory: string; projectType: 'default' | 'cli' | 'function' | 'grpc' | 'messaging'; + name?: string; tags?: string; - directory?: string; - projectNameAndRootFormat?: ProjectNameAndRootFormat; micronautLaunchUrl: string; proxyUrl?: string; buildSystem?: 'MAVEN' | 'GRADLE' | 'GRADLE_KOTLIN'; basePackage?: string; - micronautVersion?: 'current' | 'snapshot' | 'previous'; + micronautVersion?: 'current' | 'snapshot' | 'previous'; javaVersion?: 'string'; language?: 'JAVA' | 'KOTLIN' | 'GROOVY'; testFramework?: 'JUNIT' | 'SPOCK' | 'KOTEST'; @@ -22,7 +19,7 @@ export interface ProjectGeneratorOptions { transformIntoMultiModule?: boolean; addToExistingParentModule?: boolean; parentModuleName?: string; - keepProjectLevelWrapper?: boolean + keepProjectLevelWrapper?: boolean; } export interface NormalizedSchema extends ProjectGeneratorOptions { diff --git a/packages/nx-micronaut/src/generators/project/schema.json b/packages/nx-micronaut/src/generators/project/schema.json index 8ae66779..b1073a91 100644 --- a/packages/nx-micronaut/src/generators/project/schema.json +++ b/packages/nx-micronaut/src/generators/project/schema.json @@ -6,21 +6,22 @@ "outputCapture": "pipe", "type": "object", "properties": { - "name": { + "directory": { "type": "string", - "description": "Name of the project to generate.", + "description": "The directory of the new project.", + "alias": "d", "$default": { "$source": "argv", "index": 0 }, - "x-prompt": "What name would you like to use?", - "pattern": "^[a-zA-Z][^:]*$", - "x-priority": "important" + "x-prompt": "Which directory do you want to create the project in?" }, - "directory": { + "name": { "type": "string", - "description": "A directory where the project is placed.", - "alias": "d", + "description": "Name of the project to generate.", + "alias": "projectName", + "x-prompt": "What name would you like to use?", + "pattern": "^[a-zA-Z][^:]*$", "x-priority": "important" }, "projectType": { @@ -240,5 +241,5 @@ "enum": ["as-provided", "derived"] } }, - "required": ["projectType", "name"] + "required": ["projectType", "directory"] } diff --git a/packages/nx-micronaut/src/graph/create-nodes.ts b/packages/nx-micronaut/src/graph/create-nodes.ts index 7195850a..be8402f2 100644 --- a/packages/nx-micronaut/src/graph/create-nodes.ts +++ b/packages/nx-micronaut/src/graph/create-nodes.ts @@ -1,4 +1,8 @@ -import { JVM_PROJECT_FILES, createNodesFor } from '@nxrocks/common-jvm'; +import { + JVM_PROJECT_FILES, + createNodesFor, + createNodesForV2, +} from '@nxrocks/common-jvm'; import { NX_MICRONAUT_PKG } from '../index'; import { isMicronautProject } from '../utils/micronaut-utils'; import { getProjectTypeAndTargetsFromFile } from '../utils/plugin-utils'; @@ -11,3 +15,11 @@ export const createNodesFn = () => getProjectTypeAndTargetsFromFile, NX_MICRONAUT_PKG ); + +export const createNodesFnV2 = () => + createNodesForV2( + JVM_PROJECT_FILES, + isMicronautProject, + getProjectTypeAndTargetsFromFile, + NX_MICRONAUT_PKG + ); diff --git a/packages/nx-micronaut/src/graph/process-project-graph.ts b/packages/nx-micronaut/src/graph/process-project-graph.ts deleted file mode 100644 index 606570f7..00000000 --- a/packages/nx-micronaut/src/graph/process-project-graph.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ProjectGraph, ProjectGraphProcessorContext } from '@nx/devkit'; - -import { NX_MICRONAUT_PKG } from '..'; -import { - getProjectGraph, - getJvmPackageInfo } from '@nxrocks/common-jvm'; -import { isMicronautProject } from '../utils/micronaut-utils'; - -export function processProjectGraph( - graph: ProjectGraph, - context: ProjectGraphProcessorContext -): ProjectGraph { - return getProjectGraph( - NX_MICRONAUT_PKG, - isMicronautProject, - getJvmPackageInfo, - graph, - context - ); -} diff --git a/packages/nx-micronaut/src/index.ts b/packages/nx-micronaut/src/index.ts index 8d336802..30ba7b27 100644 --- a/packages/nx-micronaut/src/index.ts +++ b/packages/nx-micronaut/src/index.ts @@ -1,9 +1,9 @@ -import { createNodesFn } from './graph/create-nodes'; +import { createNodesFn, createNodesFnV2 } from './graph/create-nodes'; export { projectGenerator } from './generators/project/generator'; -export { processProjectGraph } from './graph/process-project-graph'; export { createDependencies } from './graph/create-dependencies'; export const NX_MICRONAUT_PKG = '@nxrocks/nx-micronaut'; export const createNodes = createNodesFn(); +export const createNodesV2 = createNodesFnV2(); diff --git a/packages/nx-quarkus/README.md b/packages/nx-quarkus/README.md index bd687a8f..a8b3736c 100644 --- a/packages/nx-quarkus/README.md +++ b/packages/nx-quarkus/README.md @@ -92,7 +92,7 @@ This plugin is composed of 2 main **generators**: Simply run the `project` generator with the following command: ``` -nx g @nxrocks/nx-quarkus:project +nx g @nxrocks/nx-quarkus:project path/to/your/app-name ``` > you can also use the following aliases to call the generator: `proj`, `new`, or `create` @@ -102,16 +102,16 @@ You will be prompted for entering the most commonly customized generation option To skip the interactive prompt, or if you want to customize all non-prompted options, you can pass them along directly when running the command, as such: ``` -nx g @nxrocks/nx-quarkus:project --optionName1 optionValue1 ... --optionNameN optionValueN +nx g @nxrocks/nx-quarkus:project path/to/your/app-name --optionName1 optionValue1 ... --optionNameN optionValueN ``` #### Generation Options Here the list of available generation options : -| Arguments | Description | -| --------- | ------------------------- | -| `` | The name of your project. | +| Arguments | Description | +| ------------- | --------------------------------- | +| `` | The directory of the new project. | | Option | Value | Description | | --------------------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -314,6 +314,7 @@ Every Nx plugin relies on the underlying Nx Workspace/DevKit it runs on. This ta | Plugin Version | Nx Workspace version | | -------------- | -------------------- | +| `>=v9.x.x` | `>=v20.x.x` | | `>=v8.x.x` | `>=v18.x.x` | | `>=v7.x.x` | `>=v17.x.x` | | `>=v6.x.x` | `>=v16.x.x` | diff --git a/packages/nx-quarkus/src/generators/preset/generator.spec.ts b/packages/nx-quarkus/src/generators/preset/generator.spec.ts index 5dd561c1..135f6b04 100644 --- a/packages/nx-quarkus/src/generators/preset/generator.spec.ts +++ b/packages/nx-quarkus/src/generators/preset/generator.spec.ts @@ -18,6 +18,7 @@ import { POM_XML } from '../project/generator.spec'; describe('preset generator', () => { let tree: Tree; const options: PresetGeneratorSchema = { + directory: 'quarkusapp', prjName: 'quarkusapp', projectType: 'application', groupId: 'com.tinesoft', diff --git a/packages/nx-quarkus/src/generators/preset/schema.d.ts b/packages/nx-quarkus/src/generators/preset/schema.d.ts index 73df7797..7b815285 100644 --- a/packages/nx-quarkus/src/generators/preset/schema.d.ts +++ b/packages/nx-quarkus/src/generators/preset/schema.d.ts @@ -1,5 +1,6 @@ -import { ProjectGeneratorOptions } from "../project/schema"; +import { ProjectGeneratorOptions } from '../project/schema'; -export interface PresetGeneratorSchema extends Omit{ - prjName: string; // we cannot use "projectName" nor "name" because they have special meanings in Nx +export interface PresetGeneratorSchema + extends Omit { + prjName?: string; // we cannot use "projectName" nor "name" because they have special meanings in Nx } diff --git a/packages/nx-quarkus/src/generators/preset/schema.json b/packages/nx-quarkus/src/generators/preset/schema.json index d25f7056..ad9ba2a8 100644 --- a/packages/nx-quarkus/src/generators/preset/schema.json +++ b/packages/nx-quarkus/src/generators/preset/schema.json @@ -15,9 +15,13 @@ }, "directory": { "type": "string", - "description": "A directory where the project is placed.", + "description": "The directory of the new project.", "alias": "d", - "x-priority": "important" + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "Which directory do you want to create the project in?" }, "projectType": { "description": "Type of project.", @@ -66,7 +70,14 @@ }, "javaVersion": { "description": "Java version.", - "type": "string", + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + } + ], "default": "17", "enum": ["17", "21"], "x-prompt": { @@ -162,5 +173,5 @@ "enum": ["as-provided", "derived"] } }, - "required": ["prjName", "projectType"] + "required": ["prjName", "projectType", "directory"] } diff --git a/packages/nx-quarkus/src/generators/project/generator.spec.ts b/packages/nx-quarkus/src/generators/project/generator.spec.ts index b3766ddc..65567416 100644 --- a/packages/nx-quarkus/src/generators/project/generator.spec.ts +++ b/packages/nx-quarkus/src/generators/project/generator.spec.ts @@ -93,6 +93,7 @@ describe('project generator', () => { let tree: Tree; let options: NormalizedSchema; const _options: ProjectGeneratorOptions = { + directory: 'quarkusapp', name: 'quarkusapp', projectType: 'application', groupId: 'com.tinesoft', diff --git a/packages/nx-quarkus/src/generators/project/lib/normalize-options.ts b/packages/nx-quarkus/src/generators/project/lib/normalize-options.ts index b3bada58..e2e873cc 100644 --- a/packages/nx-quarkus/src/generators/project/lib/normalize-options.ts +++ b/packages/nx-quarkus/src/generators/project/lib/normalize-options.ts @@ -6,19 +6,15 @@ export async function normalizeOptions( tree: Tree, options: ProjectGeneratorOptions ): Promise { - const { - projectName, - projectRoot, - projectNameAndRootFormat, - } = await determineProjectNameAndRootOptions(tree, { - name: options.name, - projectType: options.projectType, - directory: options.directory, - projectNameAndRootFormat: options.projectNameAndRootFormat, - //rootProject: options.rootProject, - callingGenerator: '@nxrocks/nx-quarkus:project', - }); - options.projectNameAndRootFormat = projectNameAndRootFormat; + const { projectName, projectRoot } = await determineProjectNameAndRootOptions( + tree, + { + name: options.name, + projectType: options.projectType, + directory: options.directory, + //rootProject: options.rootProject, + } + ); const parsedTags = options.tags ? options.tags.split(',').map((s) => s.trim()) : []; diff --git a/packages/nx-quarkus/src/generators/project/schema.d.ts b/packages/nx-quarkus/src/generators/project/schema.d.ts index d0453c78..01b3ed35 100644 --- a/packages/nx-quarkus/src/generators/project/schema.d.ts +++ b/packages/nx-quarkus/src/generators/project/schema.d.ts @@ -1,11 +1,8 @@ -import type { ProjectNameAndRootFormat } from '@nx/devkit/src/generators/project-name-and-root-utils'; - export interface ProjectGeneratorOptions { - name: string; + directory: string; projectType: ProjectType; + name?: string; tags?: string; - directory?: string; - projectNameAndRootFormat?: ProjectNameAndRootFormat; quarkusInitializerUrl: string; proxyUrl?: string; diff --git a/packages/nx-quarkus/src/generators/project/schema.json b/packages/nx-quarkus/src/generators/project/schema.json index c5a37c9a..97059195 100644 --- a/packages/nx-quarkus/src/generators/project/schema.json +++ b/packages/nx-quarkus/src/generators/project/schema.json @@ -6,21 +6,22 @@ "outputCapture": "pipe", "type": "object", "properties": { - "name": { + "directory": { "type": "string", - "description": "Name of the project to generate.", + "description": "The directory of the new project.", + "alias": "d", "$default": { "$source": "argv", "index": 0 }, - "x-prompt": "What name would you like to use?", - "pattern": "^[a-zA-Z][^:]*$", - "x-priority": "important" + "x-prompt": "Which directory do you want to create the project in?" }, - "directory": { + "name": { "type": "string", - "description": "A directory where the project is placed.", - "alias": "d", + "description": "Name of the project to generate.", + "alias": "projectName", + "x-prompt": "What name would you like to use?", + "pattern": "^[a-zA-Z][^:]*$", "x-priority": "important" }, "projectType": { @@ -173,5 +174,5 @@ "enum": ["as-provided", "derived"] } }, - "required": ["projectType", "name"] + "required": ["projectType", "directory"] } diff --git a/packages/nx-quarkus/src/graph/create-nodes.ts b/packages/nx-quarkus/src/graph/create-nodes.ts index ce5af13b..1deeb234 100644 --- a/packages/nx-quarkus/src/graph/create-nodes.ts +++ b/packages/nx-quarkus/src/graph/create-nodes.ts @@ -1,4 +1,8 @@ -import { JVM_PROJECT_FILES, createNodesFor } from '@nxrocks/common-jvm'; +import { + JVM_PROJECT_FILES, + createNodesFor, + createNodesForV2, +} from '@nxrocks/common-jvm'; import { NX_QUARKUS_PKG } from '../index'; import { isQuarkusProject } from '../utils/quarkus-utils'; import { getProjectTypeAndTargetsFromFile } from '../utils/plugin-utils'; @@ -11,3 +15,11 @@ export const createNodesFn = () => getProjectTypeAndTargetsFromFile, NX_QUARKUS_PKG ); + +export const createNodesFnV2 = () => + createNodesForV2( + JVM_PROJECT_FILES, + isQuarkusProject, + getProjectTypeAndTargetsFromFile, + NX_QUARKUS_PKG + ); diff --git a/packages/nx-quarkus/src/graph/process-project-graph.ts b/packages/nx-quarkus/src/graph/process-project-graph.ts deleted file mode 100644 index 59f3e53d..00000000 --- a/packages/nx-quarkus/src/graph/process-project-graph.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ProjectGraph, ProjectGraphProcessorContext } from '@nx/devkit'; - -import { NX_QUARKUS_PKG } from '..'; -import { - getProjectGraph, - getJvmPackageInfo } from '@nxrocks/common-jvm'; -import { isQuarkusProject } from '../utils/quarkus-utils'; - -export function processProjectGraph( - graph: ProjectGraph, - context: ProjectGraphProcessorContext -): ProjectGraph { - return getProjectGraph( - NX_QUARKUS_PKG, - isQuarkusProject, - getJvmPackageInfo, - graph, - context - ); -} diff --git a/packages/nx-quarkus/src/index.ts b/packages/nx-quarkus/src/index.ts index ea3463cc..f2f4ae95 100644 --- a/packages/nx-quarkus/src/index.ts +++ b/packages/nx-quarkus/src/index.ts @@ -1,9 +1,9 @@ -import { createNodesFn } from './graph/create-nodes'; +import { createNodesFn, createNodesFnV2 } from './graph/create-nodes'; export { projectGenerator } from './generators/project/generator'; -export { processProjectGraph } from './graph/process-project-graph'; export { createDependencies } from './graph/create-dependencies'; export const NX_QUARKUS_PKG = '@nxrocks/nx-quarkus'; export const createNodes = createNodesFn(); +export const createNodesV2 = createNodesFnV2(); diff --git a/packages/nx-spring-boot/README.md b/packages/nx-spring-boot/README.md index 4ce32f67..6fac0e50 100644 --- a/packages/nx-spring-boot/README.md +++ b/packages/nx-spring-boot/README.md @@ -92,7 +92,7 @@ This plugin is composed of 2 main **generators**: Simply run the `project` generator with the following command: ``` -nx g @nxrocks/nx-spring-boot:project +nx g @nxrocks/nx-spring-boot:project 1 ``` > you can also use the following aliases to call the generator: `proj`, `new`, or `create` @@ -102,16 +102,16 @@ You will be prompted for entering the most commonly customized generation option To skip the interactive prompt, or if you want to customize all non-prompted options, you can pass them along directly when running the command, as such: ``` -nx g @nxrocks/nx-spring-boot:project --optionName1 optionValue1 ... --optionNameN optionValueN +nx g @nxrocks/nx-spring-boot:project path/to/your/app-name --optionName1 optionValue1 ... --optionNameN optionValueN ``` #### Generation Options Here the list of available generation options : -| Arguments | Description | -| --------- | ------------------------- | -| `` | The name of your project. | +| Arguments | Description | +| ------------- | --------------------------------- | +| `` | The directory of the new project. | | Option | Value | Description | | --------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -157,13 +157,13 @@ You will be prompted for entering the most commonly customized generation option To skip the interactive prompt, you can pass options along directly when running the command, as such: ``` -nx g @nxrocks/nx-spring-boot:link --sourceProjectName --targetProjectName +nx g @nxrocks/nx-spring-boot:link --sourceProjectName --targetProjectName ``` or even simpler: ``` -nx g @nxrocks/nx-spring-boot:link +nx g @nxrocks/nx-spring-boot:link ``` #### Generation Options @@ -200,11 +200,11 @@ This can be useful in a CI environment for example, or in a restricted environme ### Running the project - (`run` or `serve` Executors) ``` -nx run your-boot-app:run +nx run bootapp:run // or its shorter alias -nx serve your-boot-app +nx serve bootapp ``` You can pass in additional arguments by editing the related section in the `workspace.json` file, as such: @@ -213,15 +213,15 @@ You can pass in additional arguments by editing the related section in the `work { "version": 1, "projects": { - "you-boot-app": { + "bootapp": { "projectType": "application", - "root": "apps/you-boot-app", - "sourceRoot": "apps/you-boot-app/src", + "root": "path/to/bootapp", + "sourceRoot": "path/to/bootapp/src", "targets": { "run": { // or "serve", according to your preference "executor": "@nxrocks/nx-spring-boot:run",// or "@nxrocks/nx-spring-boot:serve", according to your preference "options": { - "root": "apps/you-boot-app", + "root": "path/to/bootapp", "args": ["arg1", "arg2"] } } @@ -236,7 +236,7 @@ You can pass in additional arguments by editing the related section in the `work ### Building the Jar or War - (`build` Executor) ``` -nx build your-boot-app +nx build bootapp ``` > **Note:** a task dependency to `install` executor of dependent (library) projects [is added by the plugin](https://github.com/tinesoft/nxrocks/commit/68e1a5ef5ed266c65ee348c6ced022f87edb1fb7), so that Nx will automatically `install` dependent artifacts to your local Maven repository, prior to running this command. This is particulaly useful, when for example, you have a Spring Boot **application** that depends on another Spring boot **library** in the workspace. No more need to install the library yourself first! @@ -244,13 +244,13 @@ nx build your-boot-app ### Install the project's artifacts to local Maven repository (in `~/.m2/repository`) - (`install` Executor) ``` -nx install your-boot-app +nx install bootapp ``` ### Building the OCI Image - (`build-image` Executor) ``` -nx build-image your-boot-app +nx build-image bootapp ``` You can pass in additional arguments by editing the related section in the `workspace.json` file, as such: @@ -259,15 +259,15 @@ You can pass in additional arguments by editing the related section in the `work { "version": 1, "projects": { - "you-boot-app": { + "bootapp": { "projectType": "application", - "root": "apps/you-boot-app", - "sourceRoot": "apps/you-boot-app/src", + "root": "path/to/bootapp", + "sourceRoot": "path/to/bootapp/src", "targets": { "build-image": { "executor": "@nxrocks/nx-spring-boot:build-image", "options": { - "root": "apps/you-boot-app", + "root": "path/to/bootapp", "args": [ "--executor=gcr.io/paketo-buildpacks/executor:base-platform-api-0.3", "--runImage=my-image" @@ -286,33 +286,33 @@ You can pass in additional arguments by editing the related section in the `work ### Testing the project - (`test` Executor) ``` -nx test your-boot-app +nx test bootapp ``` ### Cleaning the project - (`clean` Executor) ``` -nx clean your-boot-app +nx clean bootapp ``` ### Formatting the project - (`format` Executor) ``` -nx run your-boot-app:format +nx run bootapp:format // or simply -nx apply-format your-boot-app +nx apply-format bootapp ``` -> Note: You \*cannot\*\* use the shorter `nx format your-boot-app` syntax here, because that would conflict with the native `format` command from Nx CLI. +> Note: You \*cannot\*\* use the shorter `nx format bootapp` syntax here, because that would conflict with the native `format` command from Nx CLI. ### Checking the format the project - (`check-format` Executor) ``` -nx check-format your-boot-app +nx check-format bootapp ``` ## Compatibility with Nx @@ -321,6 +321,7 @@ Every Nx plugin relies on the underlying Nx Workspace/DevKit it runs on. This ta | Plugin Version | Nx Workspace version | | -------------- | -------------------- | +| `>=v11.x.x` | `>=v20.x.x` | | `>=v10.x.x` | `>=v18.x.x` | | `>=v9.x.x` | `>=v17.x.x` | | `>=v8.x.x` | `>=v16.x.x` | diff --git a/packages/nx-spring-boot/src/generators/preset/generator.spec.ts b/packages/nx-spring-boot/src/generators/preset/generator.spec.ts index 476cdaa5..db7713b2 100644 --- a/packages/nx-spring-boot/src/generators/preset/generator.spec.ts +++ b/packages/nx-spring-boot/src/generators/preset/generator.spec.ts @@ -18,6 +18,7 @@ import { POM_XML } from '../project/generator.spec'; describe('preset generator', () => { let tree: Tree; const options: PresetGeneratorSchema = { + directory: 'bootapp', prjName: 'bootapp', projectType: 'application', springInitializerUrl: DEFAULT_SPRING_INITIALIZR_URL, diff --git a/packages/nx-spring-boot/src/generators/preset/generator.ts b/packages/nx-spring-boot/src/generators/preset/generator.ts index 81d861f6..e503a1d5 100644 --- a/packages/nx-spring-boot/src/generators/preset/generator.ts +++ b/packages/nx-spring-boot/src/generators/preset/generator.ts @@ -1,6 +1,4 @@ -import { - Tree, -} from '@nx/devkit'; +import { Tree } from '@nx/devkit'; import { PresetGeneratorSchema } from './schema'; import projectGenerator from '../project/generator'; @@ -12,7 +10,8 @@ export async function presetGenerator( await projectGenerator(tree, { ...options, - name: prjName + name: prjName, + directory: options.directory ?? prjName, }); } diff --git a/packages/nx-spring-boot/src/generators/preset/schema.d.ts b/packages/nx-spring-boot/src/generators/preset/schema.d.ts index 73df7797..7b815285 100644 --- a/packages/nx-spring-boot/src/generators/preset/schema.d.ts +++ b/packages/nx-spring-boot/src/generators/preset/schema.d.ts @@ -1,5 +1,6 @@ -import { ProjectGeneratorOptions } from "../project/schema"; +import { ProjectGeneratorOptions } from '../project/schema'; -export interface PresetGeneratorSchema extends Omit{ - prjName: string; // we cannot use "projectName" nor "name" because they have special meanings in Nx +export interface PresetGeneratorSchema + extends Omit { + prjName?: string; // we cannot use "projectName" nor "name" because they have special meanings in Nx } diff --git a/packages/nx-spring-boot/src/generators/preset/schema.json b/packages/nx-spring-boot/src/generators/preset/schema.json index d8274280..aa9fb1d5 100644 --- a/packages/nx-spring-boot/src/generators/preset/schema.json +++ b/packages/nx-spring-boot/src/generators/preset/schema.json @@ -2,9 +2,18 @@ "$schema": "http://json-schema.org/schema", "$id": "@nxrocks/nx-spring-boot:preset", "title": "Creates Spring Boot project in a new workspace", + "description": "Initializes a workspace with an nx-spring-boot inside of it. Use as: `create-nx-spring-boot` or `create-nx-workspace --preset @nxrocks/nx-spring-boot`.", + "examples": [ + { + "command": "npx create-nx-spring-boot", + "description": "Creates a new Nx workspace with built-in support for Spring boot." + }, + { + "command": "npx create-nx-workspace --preset @nxrocks/nx-spring-boot", + "description": "Creates a new Nx workspace with built-in support for Spring boot." + } + ], "type": "object", - "cli": "nx", - "outputCapture": "pipe", "properties": { "prjName": { "type": "string", @@ -15,9 +24,13 @@ }, "directory": { "type": "string", - "description": "A directory where the project is placed.", + "description": "The directory of the new project.", "alias": "d", - "x-priority": "important" + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "Which directory do you want to create the project in?" }, "projectType": { "description": "Type of project.", @@ -235,5 +248,5 @@ } }, "additionalProperties": true, - "required": ["prjName", "projectType"] + "required": ["prjName", "projectType", "required"] } diff --git a/packages/nx-spring-boot/src/generators/project/generator.spec.ts b/packages/nx-spring-boot/src/generators/project/generator.spec.ts index 336f6bbf..fb268bf2 100644 --- a/packages/nx-spring-boot/src/generators/project/generator.spec.ts +++ b/packages/nx-spring-boot/src/generators/project/generator.spec.ts @@ -127,6 +127,7 @@ describe('project generator', () => { let tree: Tree; let options: NormalizedSchema; const _options: ProjectGeneratorOptions = { + directory: 'bootapp', name: 'bootapp', projectType: 'application', springInitializerUrl: DEFAULT_SPRING_INITIALIZR_URL, diff --git a/packages/nx-spring-boot/src/generators/project/lib/normalize-options.ts b/packages/nx-spring-boot/src/generators/project/lib/normalize-options.ts index 74717aa7..b5e875e3 100644 --- a/packages/nx-spring-boot/src/generators/project/lib/normalize-options.ts +++ b/packages/nx-spring-boot/src/generators/project/lib/normalize-options.ts @@ -6,19 +6,15 @@ export async function normalizeOptions( tree: Tree, options: ProjectGeneratorOptions ): Promise { - const { - projectName, - projectRoot, - projectNameAndRootFormat, - } = await determineProjectNameAndRootOptions(tree, { - name: options.name, - projectType: options.projectType, - directory: options.directory, - projectNameAndRootFormat: options.projectNameAndRootFormat, - //rootProject: options.rootProject, - callingGenerator: '@nxrocks/nx-spring-boot:project', - }); - options.projectNameAndRootFormat = projectNameAndRootFormat; + const { projectName, projectRoot } = await determineProjectNameAndRootOptions( + tree, + { + name: options.name, + projectType: options.projectType, + directory: options.directory, + //rootProject: options.rootProject, + } + ); const parsedTags = options.tags ? options.tags.split(',').map((s) => s.trim()) diff --git a/packages/nx-spring-boot/src/generators/project/schema.d.ts b/packages/nx-spring-boot/src/generators/project/schema.d.ts index 63f5fd47..b0482b06 100644 --- a/packages/nx-spring-boot/src/generators/project/schema.d.ts +++ b/packages/nx-spring-boot/src/generators/project/schema.d.ts @@ -1,11 +1,8 @@ -import type { ProjectNameAndRootFormat } from '@nx/devkit/src/generators/project-name-and-root-utils'; - export interface ProjectGeneratorOptions { - name: string; + directory: string; projectType: ProjectType; + name?: string; tags?: string; - directory?: string; - projectNameAndRootFormat?: ProjectNameAndRootFormat; springInitializerUrl?: string; proxyUrl?: string; diff --git a/packages/nx-spring-boot/src/generators/project/schema.json b/packages/nx-spring-boot/src/generators/project/schema.json index de87a018..3da45563 100644 --- a/packages/nx-spring-boot/src/generators/project/schema.json +++ b/packages/nx-spring-boot/src/generators/project/schema.json @@ -6,21 +6,22 @@ "outputCapture": "pipe", "type": "object", "properties": { - "name": { + "directory": { "type": "string", - "description": "Name of the project to generate.", + "description": "The directory of the new project.", + "alias": "d", "$default": { "$source": "argv", "index": 0 }, - "x-prompt": "What name would you like to use?", - "pattern": "^[a-zA-Z][^:]*$", - "x-priority": "important" + "x-prompt": "Which directory do you want to create the project in?" }, - "directory": { + "name": { "type": "string", - "description": "A directory where the project is placed.", - "alias": "d", + "description": "Name of the project to generate.", + "alias": "projectName", + "x-prompt": "What name would you like to use?", + "pattern": "^[a-zA-Z][^:]*$", "x-priority": "important" }, "projectType": { @@ -238,5 +239,5 @@ "enum": ["as-provided", "derived"] } }, - "required": ["projectType", "name"] + "required": ["projectType", "required"] } diff --git a/packages/nx-spring-boot/src/graph/create-nodes.ts b/packages/nx-spring-boot/src/graph/create-nodes.ts index 934756ba..f290e315 100644 --- a/packages/nx-spring-boot/src/graph/create-nodes.ts +++ b/packages/nx-spring-boot/src/graph/create-nodes.ts @@ -1,4 +1,8 @@ -import { JVM_PROJECT_FILES, createNodesFor } from '@nxrocks/common-jvm'; +import { + JVM_PROJECT_FILES, + createNodesFor, + createNodesForV2, +} from '@nxrocks/common-jvm'; import { NX_SPRING_BOOT_PKG } from '../index'; import { isBootProject } from '../utils/boot-utils'; import { getProjectTypeAndTargetsFromFile } from '../utils/plugin-utils'; @@ -11,3 +15,11 @@ export const createNodesFn = () => getProjectTypeAndTargetsFromFile, NX_SPRING_BOOT_PKG ); + +export const createNodesFnV2 = () => + createNodesForV2( + JVM_PROJECT_FILES, + isBootProject, + getProjectTypeAndTargetsFromFile, + NX_SPRING_BOOT_PKG + ); diff --git a/packages/nx-spring-boot/src/graph/process-project-graph.ts b/packages/nx-spring-boot/src/graph/process-project-graph.ts deleted file mode 100644 index 8b83e8ea..00000000 --- a/packages/nx-spring-boot/src/graph/process-project-graph.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { ProjectGraph, ProjectGraphProcessorContext } from '@nx/devkit'; - -import { NX_SPRING_BOOT_PKG } from '..'; -import { - getProjectGraph, - getJvmPackageInfo } from '@nxrocks/common-jvm'; -import { isBootProject } from '../utils/boot-utils'; - -export function processProjectGraph( - graph: ProjectGraph, - context: ProjectGraphProcessorContext -): ProjectGraph { - return getProjectGraph( - NX_SPRING_BOOT_PKG, - isBootProject, - getJvmPackageInfo, - graph, - context - ); -} diff --git a/packages/nx-spring-boot/src/index.ts b/packages/nx-spring-boot/src/index.ts index 68217e42..ce5745cc 100644 --- a/packages/nx-spring-boot/src/index.ts +++ b/packages/nx-spring-boot/src/index.ts @@ -1,9 +1,9 @@ -import { createNodesFn } from './graph/create-nodes'; +import { createNodesFn, createNodesFnV2 } from './graph/create-nodes'; export { projectGenerator } from './generators/project/generator'; -export { processProjectGraph } from './graph/process-project-graph'; export { createDependencies } from './graph/create-dependencies'; export const NX_SPRING_BOOT_PKG = '@nxrocks/nx-spring-boot'; export const createNodes = createNodesFn(); +export const createNodesV2 = createNodesFnV2(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 82435add..a6de2388 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,14 +9,14 @@ importers: .: dependencies: '@clack/prompts': - specifier: ^0.7.0 - version: 0.7.0 + specifier: ^0.8.1 + version: 0.8.1 '@swc/helpers': specifier: 0.5.11 version: 0.5.11 create-nx-workspace: - specifier: ~18.1.3 - version: 18.1.3 + specifier: 20.1.2 + version: 20.1.2 enquirer: specifier: ^2.4.1 version: 2.4.1 @@ -64,26 +64,26 @@ importers: specifier: 29.7.0 version: 29.7.0 '@nx/devkit': - specifier: 19.6.4 - version: 19.6.4(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) + specifier: 20.1.2 + version: 20.1.2(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) '@nx/eslint-plugin': - specifier: 19.6.4 - version: 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) + specifier: 20.1.2 + version: 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) '@nx/jest': - specifier: 19.6.4 - version: 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) + specifier: 20.1.2 + version: 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) '@nx/js': - specifier: 19.6.4 - version: 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) + specifier: 20.1.2 + version: 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) '@nx/node': - specifier: 19.6.4 - version: 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) + specifier: 20.1.2 + version: 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) '@nx/plugin': - specifier: 19.6.4 - version: 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) + specifier: 20.1.2 + version: 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) '@nx/workspace': - specifier: 19.6.4 - version: 19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) + specifier: 20.1.2 + version: 20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) '@swc-node/register': specifier: 1.9.1 version: 1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4) @@ -157,8 +157,8 @@ importers: specifier: ^15.2.7 version: 15.2.7 nx: - specifier: 19.6.4 - version: 19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) + specifier: 20.1.2 + version: 20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) prettier: specifier: 2.6.2 version: 2.6.2 @@ -805,11 +805,11 @@ packages: '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@clack/core@0.3.3': - resolution: {integrity: sha512-5ZGyb75BUBjlll6eOa1m/IZBxwk91dooBWhPSL67sWcLS0zt9SnswRL0l26TVdBhb0wnWORRxUn//uH6n4z7+A==} + '@clack/core@0.3.4': + resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} - '@clack/prompts@0.7.0': - resolution: {integrity: sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA==} + '@clack/prompts@0.8.1': + resolution: {integrity: sha512-I263nEUNbX4lPTX93trl1fkIvGrGlz6nUYkqOddF0ZmjqcxUgUlXmpUIUqfapirRKJrFddvwF+qdZgg8cSqF7g==} bundledDependencies: - is-unicode-supported @@ -1081,47 +1081,22 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nrwl/devkit@19.6.4': - resolution: {integrity: sha512-jpr+T5/+21W/fwAMB6zDLZKO+ReYAfOOMIeM8CpeBi/r9nWmjGXaXN9YKwEOYS1fath62Y5ldGK4yZUttv1tkw==} - - '@nrwl/eslint-plugin-nx@19.6.4': - resolution: {integrity: sha512-xFzHv6EoMs5+waa75j5B2q+d35onzIo23KeDGoFZVhI0+xnMuIFA0vpDpO3ciRNpF4G8XeSXsf+hUQ70nFRcNw==} - - '@nrwl/jest@19.6.4': - resolution: {integrity: sha512-S4OnPESjz79hRpqMqDx/5wQUH31HABcBz8ztxs/gbwvnjQZsSkmg0mAlX9o/7xih+xAluys8srCvFPPiND9sQQ==} - - '@nrwl/js@19.6.4': - resolution: {integrity: sha512-yjxxSRST/lWylw4SO1qILg9oiKlBbcVst1nVFZzneTFo2oNuFVSEhluVh5tZ0bz3GZ1RPtHxjiBuWDwQ/QmmAA==} - - '@nrwl/node@19.6.4': - resolution: {integrity: sha512-+W6HOwdgHLHmmG9NsLA6/WXI1+AEWDl5gd2QGRM5H/mcyX5rwAPaFYDmyys1TsJbOiUEqemye4E4sogtsPBLiQ==} - - '@nrwl/nx-plugin@19.6.4': - resolution: {integrity: sha512-HhYsmv5dwJGETrMRbAMSutuh4jNgRYYzBnyLdJvYUDz1egBPUOpioE+TGAhaqD3PccemGX4Fa3FCK+VK2sGFPw==} - - '@nrwl/tao@19.6.4': - resolution: {integrity: sha512-1J8cD+MFzsmboiGe03VlQZ8gt64k/TaYYPZivnnhOJolPPs75nz1JyJX55uWcKKRy/b7FZNKWIu/6Wp9JDhJrQ==} - hasBin: true - - '@nrwl/workspace@19.6.4': - resolution: {integrity: sha512-jjqtRjm5AP39s8oPUEehA6O0Zew6BeTi+Uhjb+ggqbFKH9R9hoSITnbJY670WlO4W8yWYxT8isPf1TNdSHkmBw==} - - '@nx/devkit@19.6.4': - resolution: {integrity: sha512-mBitFwb/gcz8MR7STt7KQG0vf+QcsasDXiSYcf3OWpc6lGE5wn1q5jg6Iabp49Bd/mdHXVLQnP1aV5A+QqFIOQ==} + '@nx/devkit@20.1.2': + resolution: {integrity: sha512-MTEWiEST7DhzZ2QmrixLnHfYVDZk7QN9omLL8m+5Etcn/3ZKa1aAo9Amd2MkUM+0MPoTKnxoGdw0fQUpAy21Mg==} peerDependencies: - nx: '>= 17 <= 20' + nx: '>= 19 <= 21' - '@nx/eslint-plugin@19.6.4': - resolution: {integrity: sha512-H31iaVpZF8T1NPgIlrS0HyyHKzv5NMjsknuxSxt6/ao10dTEe0Xx7N9MoSryWkHjWv6JHn7da5Okp09ELOaaeg==} + '@nx/eslint-plugin@20.1.2': + resolution: {integrity: sha512-eLOVzaBPwS71Bb07jhJFZYtkvD33fZb3ObwLDXG5DmfpNpYBGOD4XX0qj6eq/5cfsIck6n8n7RKVm+7ZyqYowg==} peerDependencies: - '@typescript-eslint/parser': ^6.13.2 || ^7.0.0 + '@typescript-eslint/parser': ^6.13.2 || ^7.0.0 || ^8.0.0 eslint-config-prettier: ^9.0.0 peerDependenciesMeta: eslint-config-prettier: optional: true - '@nx/eslint@19.6.4': - resolution: {integrity: sha512-FuuvZ4AHQrD6+TxmB4uy79rUKLBaUyn4XZrFKqJQeBWmchPbpYXbuNXRbVJKtbzVf+WfD4bukcXOD8044oY4rA==} + '@nx/eslint@20.1.2': + resolution: {integrity: sha512-VMJ65E0jUEjup8hxz6LtqYbYnk2TUoLCM7ZV4rZdPqm0rLvlHDmb7BfdY2u2sZa3dwRDtupeDMlbyPX/Eb8Rcw==} peerDependencies: '@zkochan/js-yaml': 0.0.7 eslint: ^8.0.0 || ^9.0.0 @@ -1129,88 +1104,85 @@ packages: '@zkochan/js-yaml': optional: true - '@nx/jest@19.6.4': - resolution: {integrity: sha512-IJm8O9H4a6tyCtV6Rg9tuoiXZTYwBZ50eiKCe9enuBj+Pe6K1wEfsAhJQBNYQXc4Vt5vdjyEgn4YZWhmBrNxVQ==} + '@nx/jest@20.1.2': + resolution: {integrity: sha512-KUHm+NcH4Iq/Pk6GpaRhACEHd8Gt28dbXUAErxo/T9b+a3ir/6uUb4Sr+aXf63uYSePDhUmYbrYxGf/KzS2I8w==} - '@nx/js@19.6.4': - resolution: {integrity: sha512-Z09whMis90on3/5V0RIG1On5bRlNI4q2SGZQmj530+BqRTNdKNqxuYdpGf3oNbw5cgLVGiHcWtHzZROaAzpc4g==} + '@nx/js@20.1.2': + resolution: {integrity: sha512-+ULLy0vuAUyRicQqjMsG3JmgEylZdciJJOuOanwrmmG/+jv64nUJYycZbwPmGsioViHk/0WB1d5SWWfH7cZ+Ww==} peerDependencies: verdaccio: ^5.0.4 peerDependenciesMeta: verdaccio: optional: true - '@nx/linter@19.6.4': - resolution: {integrity: sha512-u0FLxF6fjh2hPZS269I5oz3gTbGfWJG8zZfm3gn0HxUpqUtvX1ccf4jaF62yHGPg8POeQuKggPY2iiMlaktlng==} - - '@nx/node@19.6.4': - resolution: {integrity: sha512-RFzoiuPRHzLEMFrb57gQZYBdsLz5Fbt9ZYh7c398xatEuqoj3BDXUg4wbSF24SkDQKrqZCAwOXVbCOxmUwrzVw==} + '@nx/node@20.1.2': + resolution: {integrity: sha512-PGPSXkzTJc97GnsRNSBcekH5L5BM/SCSWA8lH/bBV/N8HBFUWppsv0Nj+UUcGGH3O3kjEMrhtbG9iJijX7+9kw==} - '@nx/nx-darwin-arm64@19.6.4': - resolution: {integrity: sha512-kRn2FLvhwJA/TJrNlsCSqqQTrguNZLmiRsiXhvjkfUMbUKwyQfVMgJlvkZ+KoqraUSG+Qyb0FmrGur1I/Mld0Q==} + '@nx/nx-darwin-arm64@20.1.2': + resolution: {integrity: sha512-PJ91TQhd28kitDBubKUOXMYvrtSDrG+rr8MsIe9cHo1CvU9smcGVBwuHBxniq0DXsyOX/5GL6ngq7hjN2nQ3XQ==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@19.6.4': - resolution: {integrity: sha512-3uABBUhxVk+SdRwpUu30iuBlgRWm3tA/G9seG+wt7oN2R+fOu8zzRCYa+Blvoh1Ef+D9743Ir4rDc9Mhzl2B2g==} + '@nx/nx-darwin-x64@20.1.2': + resolution: {integrity: sha512-1fopau7nxIhTF26vDTIzMxl15AtW4FvUSdy+r1mNRKrKyjjpqnlu00SQBW7JzGV0agDD1B/61yYei5Q2aMOt7Q==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@19.6.4': - resolution: {integrity: sha512-OG83MiEk5L54/vAldmwZJBKEvZaM+DEIDqn2yZLTToBRj5Z9jwKJX3jKP60xbHiaT/hzsb1xPlwhOHJnYd80EQ==} + '@nx/nx-freebsd-x64@20.1.2': + resolution: {integrity: sha512-55YgIp3v4zz7xMzJO93dtglbOTER2XdS6jrCt8GbKaWGFl5drRrBoNGONtiGNU7C3hLx1VsorbynCkJT18PjKQ==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@19.6.4': - resolution: {integrity: sha512-hQ9x4qSKUh9mIVDuD270ULrBnmYfDTjXq7LnIwECw1AuP4LkKzKxULhsbqVnFQ/k3xxyFkwyGTIu2mfDcw16Gw==} + '@nx/nx-linux-arm-gnueabihf@20.1.2': + resolution: {integrity: sha512-sMhNA8uAV43UYVEXEa8TZ8Fjpom4CGq1umTptEGOF4TTtdNn2AUBreg+0bVODM8MMSzRWGI1VbkZzHESnAPwqw==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@19.6.4': - resolution: {integrity: sha512-OFKpAHiaVg3YGFIMBmi/JshciP9buwtOPiHDXcQdzQgE22jyYzKEiFxfcpG0nCT8PlMYAbHPAda15WfWkfVGVQ==} + '@nx/nx-linux-arm64-gnu@20.1.2': + resolution: {integrity: sha512-bsevarNHglaYLmIvPNQOdHrBnBgaW3EOUM0flwaXdWuZbL1bWx8GoVwHp9yJpZOAOfIF/Nhq5iTpaZB2nYFrAA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@nx/nx-linux-arm64-musl@19.6.4': - resolution: {integrity: sha512-ZIR9u+mN0A7SmNd6vDxmPV1QVTgYPTdfBSM5TEnKl3q2fHw2Nkui81QBxA4d7VopJoJUz/pRHiUV+dlgEEZ6nA==} + '@nx/nx-linux-arm64-musl@20.1.2': + resolution: {integrity: sha512-GFZTptkhZPL/iZ3tYDmspIcPEaXyy/L/o59gyp33GoFAAyDhiXIF7J1Lz81Xn8VKrX6TvEY8/9qSh86pb7qzDQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@nx/nx-linux-x64-gnu@19.6.4': - resolution: {integrity: sha512-AUMPvLs9KeCUuWD5DdlpbP3VfVsiD0IlptS2b3ul336rsQ7LwwdvE7jTVO5CixFOsiRZxP72fKJhaEargMn5Aw==} + '@nx/nx-linux-x64-gnu@20.1.2': + resolution: {integrity: sha512-yqEW/iglKT4d9lgfnwSNhmDzPxCkRhtdmZqOYpGDM0eZFwYwJF+WRGjW8xIqMj8PA1yrGItzXZOmyFjJqHAF2w==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@nx/nx-linux-x64-musl@19.6.4': - resolution: {integrity: sha512-PU7AaBlrgnJnDxTiV/PNCu0pHUCzaogm6uNcbzCyFJLGn7DoQK9rkqUMPJjb3CnJkAj9XrrhuZwmOdbrhvHAvA==} + '@nx/nx-linux-x64-musl@20.1.2': + resolution: {integrity: sha512-SP6PpWT4cQVrC4WJQdpfADrYJQzkbhgmcGleWbpr7II1HJgOsAcvoDwQGpPQX+3Wo+VBiNecvUAOzacMQkXPGw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@nx/nx-win32-arm64-msvc@19.6.4': - resolution: {integrity: sha512-6CCmGWwH/J2k+Uxeci48w4QVhtcQ3hRZ5Z2jh26HI8YzH4wqZyA7QPgLBE6sNCPVLoGW5cBgTsfnyEdr+xarQA==} + '@nx/nx-win32-arm64-msvc@20.1.2': + resolution: {integrity: sha512-JZQx9gr39LY3D7uleiXlpxUsavuOrOQNBocwKHkAMnykaT/e1VCxTnm/hk+2b4foWwfURTqoRiFEba70iiCdYg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@19.6.4': - resolution: {integrity: sha512-jTNrlaFaKtbL2mYOcfPAiljtpF5CI7vbHIqYqBFYLUQXOwW9lOHlO+SeQnft6JYZs0FIr1IdHaCfdOw/hpnCiQ==} + '@nx/nx-win32-x64-msvc@20.1.2': + resolution: {integrity: sha512-6GmT8iswDiCvJaCtW9DpWeAQmLS/kfAuRLYBisfzlONuLPaDdjhgVIxZBqqUSFfclwcVz+NhIOGvdr0aGFZCtQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@nx/plugin@19.6.4': - resolution: {integrity: sha512-lY1fU7eFIPRwWIZIuwUodCguXo7hmz4lmx39hRL//HSGZylj4T6rq9voXf+MeGGUz12YmEfSHxdazTLlriATZQ==} + '@nx/plugin@20.1.2': + resolution: {integrity: sha512-AxUytVIYZTekEqeQfc/jnSpgVlujRsnQC+k37BiUMvxw10wChWoJVBW7O03QsJHVJJ4nI7L5f63LFmhwfsNJjA==} - '@nx/workspace@19.6.4': - resolution: {integrity: sha512-SMrI03OmjYm93XpDTlIWgAyIaEhToN4LNu4cxOXW9ygpzPe8HJlqR18aTaCqu1T+BY8XeaZ8BQ7qYS1kEjM9YA==} + '@nx/workspace@20.1.2': + resolution: {integrity: sha512-YZiBwHU+NsJvJ7e7AZnyk5cP523AIHmHFf28nEpBY3zhxLghx/s9C99Swbw+uUyWlUf7JtTO9jB6OsEfMc38Uw==} '@oozcitak/dom@1.15.10': resolution: {integrity: sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==} @@ -1488,16 +1460,16 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@7.18.0': - resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@7.7.1': resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/type-utils@7.18.0': - resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + '@typescript-eslint/scope-manager@8.12.2': + resolution: {integrity: sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@7.7.1': + resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1506,26 +1478,25 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@7.7.1': - resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/type-utils@8.12.2': + resolution: {integrity: sha512-bwuU4TAogPI+1q/IJSKuD4shBLc/d2vGcRT588q+jzayQyjVK2X6v/fbR4InY2U2sgf8MEvVCqEWUzYzgBNcGQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@7.18.0': - resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} - engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@7.7.1': resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@7.18.0': - resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + '@typescript-eslint/types@8.12.2': + resolution: {integrity: sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@7.7.1': + resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -1533,35 +1504,35 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@7.7.1': - resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/typescript-estree@8.12.2': + resolution: {integrity: sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/utils@7.18.0': - resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - '@typescript-eslint/utils@7.7.1': resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@7.18.0': - resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} - engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/utils@8.12.2': + resolution: {integrity: sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 '@typescript-eslint/visitor-keys@7.7.1': resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==} engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/visitor-keys@8.12.2': + resolution: {integrity: sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -1590,9 +1561,9 @@ packages: '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} - '@yarnpkg/parsers@3.0.0-rc.46': - resolution: {integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==} - engines: {node: '>=14.15.0'} + '@yarnpkg/parsers@3.0.2': + resolution: {integrity: sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==} + engines: {node: '>=18.12.0'} '@zkochan/js-yaml@0.0.7': resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} @@ -1757,9 +1728,6 @@ packages: aws4@1.12.0: resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} - axios@1.6.7: - resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} - axios@1.7.7: resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} @@ -2135,8 +2103,8 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true - create-nx-workspace@18.1.3: - resolution: {integrity: sha512-STub3r+fM0uTm4pSfQEwzUjQa/brLaagV3OuPFEh6i4pyARuxORZi/3SI6ug73vNrL+DtK6d5QZ0QuNS8uoygA==} + create-nx-workspace@20.1.2: + resolution: {integrity: sha512-sAwXvmEUEtjxzccDbUzqcfCwI5a3zqUzGjSL+a9NEU2mV3K58tZ/+riK1AoykvkPkcIUPrRPh4E+EhiqMtLEHA==} hasBin: true create-require@1.1.1: @@ -2315,9 +2283,6 @@ packages: duplexer2@0.1.4: resolution: {integrity: sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==} - duplexer@0.1.2: - resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} - ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} @@ -2541,6 +2506,10 @@ packages: resolution: {integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==} engines: {node: '>=8'} + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} @@ -2625,15 +2594,6 @@ packages: flatted@3.2.7: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - follow-redirects@1.15.5: - resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - follow-redirects@1.15.6: resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} @@ -2672,10 +2632,6 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} - fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -2759,6 +2715,10 @@ packages: resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} engines: {node: '>=8'} + globals@15.11.0: + resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} + engines: {node: '>=18'} + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -3682,8 +3642,8 @@ packages: nwsapi@2.2.4: resolution: {integrity: sha512-NHj4rzRo0tQdijE9ZqAx6kYDcoRwYwSYzCA8MY3JzfxlrvEU0jhnhJT9BhqhJs7I/dKcrDm6TyulaRqZPIhN5g==} - nx@19.6.4: - resolution: {integrity: sha512-yudYlBd3cMchRd8c0ZNan1SfT19AYK2zYOp77XVqVVwgqb6rJVxz6StFGFluUQ7Q7uSpkeT/8PsjwPVLt85EoQ==} + nx@20.1.2: + resolution: {integrity: sha512-CvjmuQmI0RWLYZxRSIgQZmzsQv6dPp9oI0YZE3L1dagBPfTf5Cun65I0GLt7bdkDnVx2PGYkDbIoJSv2/V+83Q==} hasBin: true peerDependencies: '@swc-node/register': ^1.8.0 @@ -4321,11 +4281,6 @@ packages: resolution: {integrity: sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - strong-log-transformer@2.1.0: - resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==} - engines: {node: '>=4'} - hasBin: true - strtok3@7.0.0: resolution: {integrity: sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==} engines: {node: '>=14.16'} @@ -5578,14 +5533,14 @@ snapshots: '@bcoe/v8-coverage@0.2.3': {} - '@clack/core@0.3.3': + '@clack/core@0.3.4': dependencies: picocolors: 1.0.0 sisteransi: 1.0.5 - '@clack/prompts@0.7.0': + '@clack/prompts@0.8.1': dependencies: - '@clack/core': 0.3.3 + '@clack/core': 0.3.4 picocolors: 1.0.0 sisteransi: 1.0.5 @@ -5733,7 +5688,7 @@ snapshots: debug: 4.3.4 espree: 9.6.1 globals: 13.20.0 - ignore: 5.2.4 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -5845,7 +5800,7 @@ snapshots: '@types/node': 18.16.9 jest-message-util: 29.5.0 jest-mock: 29.5.0 - jest-util: 29.5.0 + jest-util: 29.7.0 '@jest/fake-timers@29.7.0': dependencies: @@ -6028,143 +5983,28 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - '@nrwl/devkit@19.6.4(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))': - dependencies: - '@nx/devkit': 19.6.4(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) - transitivePeerDependencies: - - nx - - '@nrwl/eslint-plugin-nx@19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': - dependencies: - '@nx/eslint-plugin': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - '@typescript-eslint/parser' - - debug - - eslint - - eslint-config-prettier - - nx - - supports-color - - typescript - - verdaccio - - '@nrwl/jest@19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': - dependencies: - '@nx/jest': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - babel-plugin-macros - - debug - - node-notifier - - nx - - supports-color - - ts-node - - typescript - - verdaccio - - '@nrwl/js@19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': - dependencies: - '@nx/js': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - debug - - nx - - supports-color - - typescript - - verdaccio - - '@nrwl/node@19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': - dependencies: - '@nx/node': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - '@zkochan/js-yaml' - - babel-plugin-macros - - debug - - eslint - - node-notifier - - nx - - supports-color - - ts-node - - typescript - - verdaccio - - '@nrwl/nx-plugin@19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': - dependencies: - '@nx/plugin': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - '@zkochan/js-yaml' - - babel-plugin-macros - - debug - - eslint - - node-notifier - - nx - - supports-color - - ts-node - - typescript - - verdaccio - - '@nrwl/tao@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))': - dependencies: - nx: 19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) - tslib: 2.6.2 - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - debug - - '@nrwl/workspace@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))': - dependencies: - '@nx/workspace': 19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) - transitivePeerDependencies: - - '@swc-node/register' - - '@swc/core' - - debug - - '@nx/devkit@19.6.4(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))': + '@nx/devkit@20.1.2(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))': dependencies: - '@nrwl/devkit': 19.6.4(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) ejs: 3.1.9 enquirer: 2.3.6 ignore: 5.3.1 minimatch: 9.0.3 - nx: 19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) + nx: 20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) semver: 7.6.0 tmp: 0.2.1 tslib: 2.6.2 yargs-parser: 21.1.1 - '@nx/eslint-plugin@19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': + '@nx/eslint-plugin@20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': dependencies: - '@nrwl/eslint-plugin-nx': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.5.4))(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - '@nx/devkit': 19.6.4(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) - '@nx/js': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) + '@nx/devkit': 20.1.2(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) + '@nx/js': 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/type-utils': 8.12.2(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 8.12.2(eslint@8.57.0)(typescript@5.5.4) chalk: 4.1.2 confusing-browser-globals: 1.0.11 + globals: 15.11.0 jsonc-eslint-parser: 2.2.0 semver: 7.6.0 tslib: 2.6.2 @@ -6183,11 +6023,10 @@ snapshots: - typescript - verdaccio - '@nx/eslint@19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(verdaccio@5.0.4(typanion@3.12.1))': + '@nx/eslint@20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(verdaccio@5.0.4(typanion@3.12.1))': dependencies: - '@nx/devkit': 19.6.4(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) - '@nx/js': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.4.5)(verdaccio@5.0.4(typanion@3.12.1)) - '@nx/linter': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(verdaccio@5.0.4(typanion@3.12.1)) + '@nx/devkit': 20.1.2(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) + '@nx/js': 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.4.5)(verdaccio@5.0.4(typanion@3.12.1)) eslint: 8.57.0 semver: 7.6.0 tslib: 2.6.2 @@ -6205,13 +6044,12 @@ snapshots: - supports-color - verdaccio - '@nx/jest@19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': + '@nx/jest@20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': dependencies: '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 - '@nrwl/jest': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - '@nx/devkit': 19.6.4(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) - '@nx/js': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) + '@nx/devkit': 20.1.2(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) + '@nx/js': 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) '@phenomnomnominal/tsquery': 5.0.1(typescript@5.5.4) chalk: 4.1.2 identity-obj-proxy: 3.0.0 @@ -6238,7 +6076,7 @@ snapshots: - typescript - verdaccio - '@nx/js@19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.4.5)(verdaccio@5.0.4(typanion@3.12.1))': + '@nx/js@20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.4.5)(verdaccio@5.0.4(typanion@3.12.1))': dependencies: '@babel/core': 7.23.9 '@babel/plugin-proposal-decorators': 7.22.7(@babel/core@7.23.9) @@ -6247,17 +6085,17 @@ snapshots: '@babel/preset-env': 7.23.9(@babel/core@7.23.9) '@babel/preset-typescript': 7.22.5(@babel/core@7.23.9) '@babel/runtime': 7.22.6 - '@nrwl/js': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - '@nx/devkit': 19.6.4(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) - '@nx/workspace': 19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) + '@nx/devkit': 20.1.2(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) + '@nx/workspace': 20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) + '@zkochan/js-yaml': 0.0.7 babel-plugin-const-enum: 1.2.0(@babel/core@7.23.9) babel-plugin-macros: 2.8.0 babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.23.9)(@babel/traverse@7.23.9) chalk: 4.1.2 columnify: 1.6.0 detect-port: 1.5.1 + enquirer: 2.3.6 fast-glob: 3.2.7 - fs-extra: 11.1.1 ignore: 5.3.1 js-tokens: 4.0.0 jsonc-parser: 3.2.0 @@ -6283,7 +6121,7 @@ snapshots: - supports-color - typescript - '@nx/js@19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': + '@nx/js@20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': dependencies: '@babel/core': 7.23.9 '@babel/plugin-proposal-decorators': 7.22.7(@babel/core@7.23.9) @@ -6292,17 +6130,17 @@ snapshots: '@babel/preset-env': 7.23.9(@babel/core@7.23.9) '@babel/preset-typescript': 7.22.5(@babel/core@7.23.9) '@babel/runtime': 7.22.6 - '@nrwl/js': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - '@nx/devkit': 19.6.4(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) - '@nx/workspace': 19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) + '@nx/devkit': 20.1.2(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) + '@nx/workspace': 20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) + '@zkochan/js-yaml': 0.0.7 babel-plugin-const-enum: 1.2.0(@babel/core@7.23.9) babel-plugin-macros: 2.8.0 babel-plugin-transform-typescript-metadata: 0.3.2(@babel/core@7.23.9)(@babel/traverse@7.23.9) chalk: 4.1.2 columnify: 1.6.0 detect-port: 1.5.1 + enquirer: 2.3.6 fast-glob: 3.2.7 - fs-extra: 11.1.1 ignore: 5.3.1 js-tokens: 4.0.0 jsonc-parser: 3.2.0 @@ -6328,29 +6166,12 @@ snapshots: - supports-color - typescript - '@nx/linter@19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(verdaccio@5.0.4(typanion@3.12.1))': - dependencies: - '@nx/eslint': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(verdaccio@5.0.4(typanion@3.12.1)) - transitivePeerDependencies: - - '@babel/traverse' - - '@swc-node/register' - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - '@zkochan/js-yaml' - - debug - - eslint - - nx - - supports-color - - verdaccio - - '@nx/node@19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': + '@nx/node@20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': dependencies: - '@nrwl/node': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - '@nx/devkit': 19.6.4(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) - '@nx/eslint': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(verdaccio@5.0.4(typanion@3.12.1)) - '@nx/jest': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - '@nx/js': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) + '@nx/devkit': 20.1.2(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) + '@nx/eslint': 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(verdaccio@5.0.4(typanion@3.12.1)) + '@nx/jest': 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) + '@nx/js': 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) tslib: 2.6.2 transitivePeerDependencies: - '@babel/traverse' @@ -6369,44 +6190,42 @@ snapshots: - typescript - verdaccio - '@nx/nx-darwin-arm64@19.6.4': + '@nx/nx-darwin-arm64@20.1.2': optional: true - '@nx/nx-darwin-x64@19.6.4': + '@nx/nx-darwin-x64@20.1.2': optional: true - '@nx/nx-freebsd-x64@19.6.4': + '@nx/nx-freebsd-x64@20.1.2': optional: true - '@nx/nx-linux-arm-gnueabihf@19.6.4': + '@nx/nx-linux-arm-gnueabihf@20.1.2': optional: true - '@nx/nx-linux-arm64-gnu@19.6.4': + '@nx/nx-linux-arm64-gnu@20.1.2': optional: true - '@nx/nx-linux-arm64-musl@19.6.4': + '@nx/nx-linux-arm64-musl@20.1.2': optional: true - '@nx/nx-linux-x64-gnu@19.6.4': + '@nx/nx-linux-x64-gnu@20.1.2': optional: true - '@nx/nx-linux-x64-musl@19.6.4': + '@nx/nx-linux-x64-musl@20.1.2': optional: true - '@nx/nx-win32-arm64-msvc@19.6.4': + '@nx/nx-win32-arm64-msvc@20.1.2': optional: true - '@nx/nx-win32-x64-msvc@19.6.4': + '@nx/nx-win32-x64-msvc@20.1.2': optional: true - '@nx/plugin@19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': + '@nx/plugin@20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1))': dependencies: - '@nrwl/nx-plugin': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - '@nx/devkit': 19.6.4(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) - '@nx/eslint': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(verdaccio@5.0.4(typanion@3.12.1)) - '@nx/jest': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - '@nx/js': 19.6.4(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) - fs-extra: 11.1.1 + '@nx/devkit': 20.1.2(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) + '@nx/eslint': 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(@zkochan/js-yaml@0.0.7)(eslint@8.57.0)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(verdaccio@5.0.4(typanion@3.12.1)) + '@nx/jest': 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(ts-node@10.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(typescript@5.5.4))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) + '@nx/js': 20.1.2(@babel/traverse@7.23.9)(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))(@types/node@18.16.9)(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)))(typescript@5.5.4)(verdaccio@5.0.4(typanion@3.12.1)) tslib: 2.6.2 transitivePeerDependencies: - '@babel/traverse' @@ -6425,13 +6244,12 @@ snapshots: - typescript - verdaccio - '@nx/workspace@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))': + '@nx/workspace@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))': dependencies: - '@nrwl/workspace': 19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) - '@nx/devkit': 19.6.4(nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) + '@nx/devkit': 20.1.2(nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11))) chalk: 4.1.2 enquirer: 2.3.6 - nx: 19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) + nx: 20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) tslib: 2.6.2 yargs-parser: 21.1.1 transitivePeerDependencies: @@ -6726,20 +6544,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@7.7.1': dependencies: '@typescript-eslint/types': 7.7.1 '@typescript-eslint/visitor-keys': 7.7.1 - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/scope-manager@8.12.2': dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/visitor-keys': 8.12.2 + + '@typescript-eslint/type-utils@7.7.1(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.5.4) + '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.5.4) debug: 4.3.4 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.4) @@ -6748,26 +6566,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@7.7.1(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.12.2(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.5.4) - '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.5.4) + '@typescript-eslint/utils': 8.12.2(eslint@8.57.0)(typescript@5.5.4) debug: 4.3.4 - eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: + - eslint - supports-color - '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@7.7.1': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': + '@typescript-eslint/types@8.12.2': {} + + '@typescript-eslint/typescript-estree@7.7.1(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -6779,12 +6597,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@7.7.1(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.12.2(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 7.7.1 - '@typescript-eslint/visitor-keys': 7.7.1 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/visitor-keys': 8.12.2 debug: 4.3.4 - globby: 11.1.0 + fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.4 semver: 7.6.0 @@ -6794,17 +6612,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript - '@typescript-eslint/utils@7.7.1(eslint@8.57.0)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) @@ -6819,16 +6626,27 @@ snapshots: - supports-color - typescript - '@typescript-eslint/visitor-keys@7.18.0': + '@typescript-eslint/utils@8.12.2(eslint@8.57.0)(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 7.18.0 - eslint-visitor-keys: 3.4.3 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/scope-manager': 8.12.2 + '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.5.4) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript '@typescript-eslint/visitor-keys@7.7.1': dependencies: '@typescript-eslint/types': 7.7.1 eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@8.12.2': + dependencies: + '@typescript-eslint/types': 8.12.2 + eslint-visitor-keys: 3.4.3 + '@ungap/structured-clone@1.2.0': {} '@verdaccio/commons-api@10.0.0': @@ -6869,7 +6687,7 @@ snapshots: '@yarnpkg/lockfile@1.1.0': {} - '@yarnpkg/parsers@3.0.0-rc.46': + '@yarnpkg/parsers@3.0.2': dependencies: js-yaml: 3.14.1 tslib: 2.6.2 @@ -7005,14 +6823,6 @@ snapshots: aws4@1.12.0: {} - axios@1.6.7: - dependencies: - follow-redirects: 1.15.5 - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - axios@1.7.7: dependencies: follow-redirects: 1.15.6 @@ -7448,9 +7258,9 @@ snapshots: - supports-color - ts-node - create-nx-workspace@18.1.3: + create-nx-workspace@20.1.2: dependencies: - axios: 1.6.7 + axios: 1.7.7 chalk: 4.1.2 enquirer: 2.3.6 flat: 5.0.2 @@ -7599,8 +7409,6 @@ snapshots: dependencies: readable-stream: 2.3.8 - duplexer@0.1.2: {} - ecc-jsbn@0.1.2: dependencies: jsbn: 0.1.1 @@ -7904,7 +7712,7 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.7 fast-glob@3.2.7: dependencies: @@ -7914,6 +7722,14 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.7 + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.7 + fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} @@ -8007,8 +7823,6 @@ snapshots: flatted@3.2.7: {} - follow-redirects@1.15.5: {} - follow-redirects@1.15.6: {} forever-agent@0.6.1: {} @@ -8041,12 +7855,6 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.0 - fs-extra@11.1.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 - fs.realpath@1.0.0: {} fsevents@2.3.2: @@ -8124,11 +7932,13 @@ snapshots: dependencies: type-fest: 0.20.2 + globals@15.11.0: {} + globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.12 + fast-glob: 3.3.2 ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 @@ -8615,7 +8425,7 @@ snapshots: dependencies: '@jest/types': 29.5.0 '@types/node': 18.16.9 - jest-util: 29.5.0 + jest-util: 29.7.0 jest-mock@29.7.0: dependencies: @@ -9253,12 +9063,11 @@ snapshots: nwsapi@2.2.4: {} - nx@19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)): + nx@20.1.2(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)): dependencies: '@napi-rs/wasm-runtime': 0.2.4 - '@nrwl/tao': 19.6.4(@swc-node/register@1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4))(@swc/core@1.5.7(@swc/helpers@0.5.11)) '@yarnpkg/lockfile': 1.1.0 - '@yarnpkg/parsers': 3.0.0-rc.46 + '@yarnpkg/parsers': 3.0.2 '@zkochan/js-yaml': 0.0.7 axios: 1.7.7 chalk: 4.1.2 @@ -9271,7 +9080,6 @@ snapshots: figures: 3.2.0 flat: 5.0.2 front-matter: 4.0.2 - fs-extra: 11.1.1 ignore: 5.3.1 jest-diff: 29.7.0 jsonc-parser: 3.2.0 @@ -9283,7 +9091,6 @@ snapshots: ora: 5.3.0 semver: 7.6.0 string-width: 4.2.3 - strong-log-transformer: 2.1.0 tar-stream: 2.2.0 tmp: 0.2.1 tsconfig-paths: 4.2.0 @@ -9291,16 +9098,16 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 19.6.4 - '@nx/nx-darwin-x64': 19.6.4 - '@nx/nx-freebsd-x64': 19.6.4 - '@nx/nx-linux-arm-gnueabihf': 19.6.4 - '@nx/nx-linux-arm64-gnu': 19.6.4 - '@nx/nx-linux-arm64-musl': 19.6.4 - '@nx/nx-linux-x64-gnu': 19.6.4 - '@nx/nx-linux-x64-musl': 19.6.4 - '@nx/nx-win32-arm64-msvc': 19.6.4 - '@nx/nx-win32-x64-msvc': 19.6.4 + '@nx/nx-darwin-arm64': 20.1.2 + '@nx/nx-darwin-x64': 20.1.2 + '@nx/nx-freebsd-x64': 20.1.2 + '@nx/nx-linux-arm-gnueabihf': 20.1.2 + '@nx/nx-linux-arm64-gnu': 20.1.2 + '@nx/nx-linux-arm64-musl': 20.1.2 + '@nx/nx-linux-x64-gnu': 20.1.2 + '@nx/nx-linux-x64-musl': 20.1.2 + '@nx/nx-win32-arm64-msvc': 20.1.2 + '@nx/nx-win32-x64-msvc': 20.1.2 '@swc-node/register': 1.9.1(@swc/core@1.5.7(@swc/helpers@0.5.11))(@swc/types@0.1.7)(typescript@5.5.4) '@swc/core': 1.5.7(@swc/helpers@0.5.11) transitivePeerDependencies: @@ -9920,12 +9727,6 @@ snapshots: strip-outer@2.0.0: {} - strong-log-transformer@2.1.0: - dependencies: - duplexer: 0.1.2 - minimist: 1.2.8 - through: 2.3.8 - strtok3@7.0.0: dependencies: '@tokenizer/token': 0.3.0 diff --git a/tools/scripts/sync-preset-schemas.ts b/tools/scripts/sync-preset-schemas.ts index 33e88a60..d21379d4 100644 --- a/tools/scripts/sync-preset-schemas.ts +++ b/tools/scripts/sync-preset-schemas.ts @@ -18,7 +18,7 @@ const presetSchemaFiles = readdirSync(packagesRoot) join(packagesRoot, folder, '/src/generators/preset/schema.json') ); -const changedFiles = execSync('git diff --cached --name-only') +const changedFiles = execSync('git diff --name-only') .toString() .trim() .split(/\r?\n/); @@ -28,6 +28,9 @@ const changedPresetSchemaFiles = changedFiles // Sync the the schema.json file of 'preset' generators with the related 'project' generator's changedPresetSchemaFiles.forEach((presetSchemaFile) => { + + + const presetSchemaJson = readJsonFile(presetSchemaFile); const projetSchemaJson = readJsonFile( join(presetSchemaFile, '../../project/schema.json') From c255b0ac048b9ec1a81cc28cc3f39f22e0cea405 Mon Sep 17 00:00:00 2001 From: Tine Kondo Date: Wed, 20 Nov 2024 16:05:40 +0000 Subject: [PATCH 2/3] feat: add support for the `useGithub` option in all the `create-nx-*` CLIs --- packages/common-cli/src/lib/main.ts | 206 ++++++++++++++++++--------- packages/common-cli/src/lib/utils.ts | 90 +++++++----- 2 files changed, 190 insertions(+), 106 deletions(-) diff --git a/packages/common-cli/src/lib/main.ts b/packages/common-cli/src/lib/main.ts index d4921b96..016548fe 100644 --- a/packages/common-cli/src/lib/main.ts +++ b/packages/common-cli/src/lib/main.ts @@ -1,114 +1,178 @@ -import { intro, text, confirm, spinner, note, outro, select } from '@clack/prompts'; +import { + intro, + text, + confirm, + spinner, + note, + outro, + select, +} from '@clack/prompts'; import { createWorkspace } from 'create-nx-workspace'; import * as yargs from 'yargs'; import * as terminalLink from 'terminal-link'; import { CLIArguments } from './models'; -import { createNxWorkspaceVersion, createWorkspaceWithNxWrapper, getNxCommand } from './utils'; +import { + createNxWorkspaceVersion, + createWorkspaceWithNxWrapper, + getNxCommand, +} from './utils'; -export async function mainCLI(pkgName: string, stackName: string) { +// change type to ('yes' | 'github' | 'gitlab' | 'azure' | 'bitbucket-pipelines' | 'circleci' | 'skip'); +// and uncomment below prompt options, once https://github.com/nrwl/nx/pull/29008 is merged +export type NxCloud = 'yes' | 'github' | 'circleci' | 'skip'; - const pkgFolderName = pkgName.replace('@nxrocks/', '') +export async function mainCLI(pkgName: string, stackName: string) { + const pkgFolderName = pkgName.replace('@nxrocks/', ''); const createPkgName = `create-${pkgFolderName}`; intro(createPkgName); - const options = (yargs - .parserConfiguration({ - 'strip-dashed': true, - }) - .command( - '$0 [name]', - `Create a new Nx workspace with ${stackName} support`, - (yargs) => yargs.option('name', - { - describe: 'Workspace name (e.g. org name)', - type: 'string', - }). - option('useNxWrapper', - { - describe: 'Let Nx manages its own installation and updates', - type: 'boolean', - }). - option('nxCloud', - { - describe: "Do you want Nx Cloud to make your CI fast?", - choices: ['yes', 'github', 'circleci', 'skip'] as const - }). - option('verbose', - { - describe: "Enable more logging information", - type: 'boolean', - default: process.env['NX_VERBOSE_LOGGING'] === 'true', - }) - ) - .help('help', 'Show help') as yargs.Argv).parseSync(); - - let { name, useNxWrapper, nxCloud } = options; + const options = ( + yargs + .parserConfiguration({ + 'strip-dashed': true, + }) + .command( + '$0 [name]', + `Create a new Nx workspace with ${stackName} support`, + (yargs) => + yargs + .option('name', { + describe: 'Workspace Location (e.g. org name)', + type: 'string', + }) + .option('useNxWrapper', { + describe: 'Let Nx manages its own installation and updates', + type: 'boolean', + }) + .option('nxCloud', { + describe: 'Do you want Nx Cloud to make your CI fast?', + choices: ['yes', 'github', 'circleci', 'skip'] as const, + }) + .option('useGitHub', { + describe: + 'Will you be using GitHub as your git hosting provider?', + boolean: true, + }) + .option('verbose', { + describe: 'Enable more logging information', + type: 'boolean', + default: process.env['NX_VERBOSE_LOGGING'] === 'true', + }) + ) + .help('help', 'Show help') as yargs.Argv + ).parseSync(); + + let { name, useNxWrapper, nxCloud, useGitHub } = options; const { _, $0, name: ignoredName, verbose, ...restArgs } = options; - name ||= await text({ - message: 'What is the name of your workspace (e.g. org name)?', + name ||= (await text({ + message: 'Where would you like to create your workspace?', initialValue: 'myorg', - validate: (value) => (value?.length === 0) ? 'You need to provide one' : void 0, - }) as string; - - useNxWrapper ??= await confirm({ - message: `Would you like to use Nx Wrapper? [ ${linkify('Nx Wrapper', 'https://nx.dev/concepts/more-concepts/nx-and-the-wrapper#and-the-nx-wrapper')} ]`, - initialValue: true - }) as boolean; - - nxCloud ??= await select({ - message: `Would you like Nx Cloud to make your CI faster? [ ${linkify('Nx Cloud', 'https://nx.app/?utm_source=' + createPkgName)} ]`, + validate: (value) => + value?.length === 0 ? 'You need to provide one' : void 0, + })) as string; + + useNxWrapper ??= (await confirm({ + message: `Would you like to use Nx Wrapper? [ ${linkify( + 'Nx Wrapper', + 'https://nx.dev/concepts/more-concepts/nx-and-the-wrapper#and-the-nx-wrapper' + )} ]`, + initialValue: true, + })) as boolean; + + nxCloud ??= (await select({ + message: `Would you like Nx Cloud to make your CI faster? [ ${linkify( + 'Nx Cloud', + 'https://nx.app/?utm_source=' + createPkgName + )} ]`, options: [ - { value: 'yes', label: 'Yes' }, - { value: 'github', label: 'Github' }, + { value: 'github', label: 'GitHub Actions' }, + //{ value: 'gitlab', label: 'Gitlab' }, + //{ value: 'azure', label: 'Azure DevOps' }, + //{ value: 'bitbucket-pipelines', label: 'BitBucket Pipelines' }, { value: 'circleci', label: 'Circle CI' }, - { value: 'skip', label: 'Skip for now' }, + { value: 'skip', label: '\nDo it later' }, ], - initialValue: 'skip' as 'yes' | 'github' | 'circleci' | 'skip' - }) as 'yes' | 'github' | 'circleci' | 'skip'; + initialValue: 'skip' as NxCloud, + })) as NxCloud; + + useGitHub ??= + nxCloud === 'yes' || + nxCloud === 'github' || + ((await confirm({ + message: `Will you be using GitHub as your git hosting provider?`, + initialValue: false, + })) as boolean); const presetVersion = 'latest'; - + let directory: string; const notes = [ - `- Go to [ ${linkify(pkgName, 'https://github.com/tinesoft/nxrocks/tree/develop/packages/' + pkgFolderName)} ] to get started with Nx and ${stackName} plugin.`, - `- Run [ ${getNxCommand(useNxWrapper)} g ${pkgName}:project ] to add more projects.` + `- Go to [ ${linkify( + pkgName, + 'https://github.com/tinesoft/nxrocks/tree/develop/packages/' + + pkgFolderName + )} ] to get started with Nx and ${stackName} plugin.`, + `- Run [ ${getNxCommand( + useNxWrapper + )} g ${pkgName}:project ] to add more projects.`, ]; if (useNxWrapper) { - notes.push(`- Go to [ ${linkify('Nx Wrapper', 'https://nx.dev/concepts/more-concepts/nx-and-the-wrapper#and-the-nx-wrapper')} ] to get started with Nx Wrapper.`); + notes.push( + `- Go to [ ${linkify( + 'Nx Wrapper', + 'https://nx.dev/concepts/more-concepts/nx-and-the-wrapper#and-the-nx-wrapper' + )} ] to get started with Nx Wrapper.` + ); - const allArgs = Object.entries(restArgs).map(([key, value]) => `--${key}=${value}`).join(' '); + const allArgs = Object.entries(restArgs) + .map(([key, value]) => `--${key}=${value}`) + .join(' '); const s = spinner(); s.start('Initializing your workspace'); - directory = createWorkspaceWithNxWrapper(name, pkgName, allArgs, nxCloud, presetVersion, createNxWorkspaceVersion, !verbose); + directory = createWorkspaceWithNxWrapper( + name, + pkgName, + allArgs, + nxCloud, + useGitHub, + presetVersion, + createNxWorkspaceVersion, + !verbose + ); s.stop(`Successfully created the workspace: ${name}`); - } - else { - directory = (await createWorkspace( - `${pkgName}@${presetVersion}`, - { + } else { + directory = ( + await createWorkspace(`${pkgName}@${presetVersion}`, { ...restArgs, name, nxCloud, - packageManager: 'npm' - } - ))?.directory; + useGitHub, + packageManager: 'npm', + }) + )?.directory; } - notes.push(`- Go to [ ${linkify('Nx.dev', 'https://nx.dev')} ] to get started with Nx.`); + notes.push( + `- Go to [ ${linkify('Nx.dev', 'https://nx.dev')} ] to get started with Nx.` + ); - note(notes.join('\n'), "Next steps"); + note(notes.join('\n'), 'Next steps'); outro(`Your workspace in ${directory} is all set 🎉. Let's goooooo! 🚀`); } -function linkify(text: string, url: string, fallback = (text: string, url: string) => url) { +function linkify( + text: string, + url: string, + fallback = (text: string, url: string) => url +) { return terminalLink(text, url, { fallback }); -} \ No newline at end of file +} diff --git a/packages/common-cli/src/lib/utils.ts b/packages/common-cli/src/lib/utils.ts index ebbd5907..b8b74b43 100644 --- a/packages/common-cli/src/lib/utils.ts +++ b/packages/common-cli/src/lib/utils.ts @@ -1,29 +1,53 @@ -import type { NxJsonConfiguration, PackageManager } from '@nx/devkit'; +import type { NxJsonConfiguration, PackageManager } from '@nx/devkit'; import { execSync, ExecSyncOptions } from 'child_process'; -import { ensureDirSync, existsSync, readJSONSync, rmSync, writeJsonSync } from 'fs-extra'; +import { + ensureDirSync, + existsSync, + readJSONSync, + rmSync, + writeJsonSync, +} from 'fs-extra'; import { dirname, join, relative, resolve } from 'path'; // eslint-disable-next-line @typescript-eslint/no-var-requires -export const createNxWorkspaceVersion = require('../../package.json')?.devDependencies['create-nx-workspace'] || 'latest'; - -export function createWorkspaceWithNxWrapper(name: string, pkgName: string, extraArgs = '', nxCloud = 'skip', presetVersion = 'latest', nxVersion= createNxWorkspaceVersion, silent = true) { - +export const createNxWorkspaceVersion = + require('../../package.json')?.devDependencies['create-nx-workspace'] || + 'latest'; + +export function createWorkspaceWithNxWrapper( + name: string, + pkgName: string, + extraArgs = '', + nxCloud = 'skip', + useGitHub = false, + presetVersion = 'latest', + nxVersion = createNxWorkspaceVersion, + silent = true +) { const directory = resolve(process.cwd(), name); rmSync(directory, { recursive: true, force: true, }); - ensureDirSync(directory) + ensureDirSync(directory); - execSync(`npx --yes nx@${nxVersion} init --nxCloud=${nxCloud !== 'skip'} --useDotNxInstallation --no-interactive`, { - cwd: directory, - ...(silent ? { stdio: ['ignore', 'ignore', 'ignore'] } : {}), - }); + execSync( + `npx --yes nx@${nxVersion} init --nxCloud=${ + nxCloud !== 'skip' + } --useGitHub=${useGitHub} --useDotNxInstallation --no-interactive`, + { + cwd: directory, + ...(silent ? { stdio: ['ignore', 'ignore', 'ignore'] } : {}), + } + ); const nxJsonPath = resolve(directory, 'nx.json'); const nxJson: NxJsonConfiguration = readJSONSync(nxJsonPath); - nxJson.installation = nxJson.installation ?? { version: 'latest', plugins: {} }; + nxJson.installation = nxJson.installation ?? { + version: 'latest', + plugins: {}, + }; nxJson.installation.plugins = nxJson.installation.plugins ?? {}; nxJson.installation.plugins[pkgName] = presetVersion; writeJsonSync(nxJsonPath, nxJson, { spaces: 2 }); @@ -31,7 +55,7 @@ export function createWorkspaceWithNxWrapper(name: string, pkgName: string, extr runNxWrapperSync(`g ${pkgName}:preset ${extraArgs}`, { cwd: directory, stdio: 'inherit', - env: process.env + env: process.env, }); return directory; @@ -42,14 +66,13 @@ export function runNxWrapperSync( cmd: string, options?: ExecSyncOptions & { cwd?: string } ) { - let baseCmd: string; options ??= {}; options.cwd ??= process.cwd(); const offsetFromRoot = relative( options.cwd, - workspaceRootInner(options.cwd, null)??'' + workspaceRootInner(options.cwd, null) ?? '' ); if (process.platform === 'win32') { baseCmd = '.\\' + join(`${offsetFromRoot}`, 'nx.bat'); @@ -61,20 +84,20 @@ export function runNxWrapperSync( } export function hasNxWrapper(cwd: string) { - return [ - 'nx', - 'nx.bat', - 'nx.json', - '.nx/nxw.js', - ].every(file => existsSync(join(cwd, file))); + return ['nx', 'nx.bat', 'nx.json', '.nx/nxw.js'].every((file) => + existsSync(join(cwd, file)) + ); } -export function getNxCommand(useNxWrapper = true, pkgManager:PackageManager = 'npm') { - if (!useNxWrapper){ +export function getNxCommand( + useNxWrapper = true, + pkgManager: PackageManager = 'npm' +) { + if (!useNxWrapper) { switch (pkgManager) { case 'yarn': case 'pnpm': - return `$(pkgManager} nx`; + return `$(pkgManager} nx`; default: return 'npx nx'; } @@ -83,10 +106,12 @@ export function getNxCommand(useNxWrapper = true, pkgManager:PackageManager = 'n } export function isNxWrapperInstalled(cwd: string) { - return hasNxWrapper(cwd) && [ - '.nx/installation/package.json', - '.nx/installation/node_modules', - ].every(file => existsSync(join(cwd, file))); + return ( + hasNxWrapper(cwd) && + ['.nx/installation/package.json', '.nx/installation/node_modules'].every( + (file) => existsSync(join(cwd, file)) + ) + ); } // Copied from https://github.com/nrwl/nx/blob/master/packages/nx/src/utils/workspace-root.ts @@ -94,16 +119,12 @@ export function isNxWrapperInstalled(cwd: string) { function workspaceRootInner( dir: string, candidateRoot: string | null -): string|null { +): string | null { if (process.env['NX_WORKSPACE_ROOT_PATH']) return process.env['NX_WORKSPACE_ROOT_PATH']; if (dirname(dir) === dir) return candidateRoot; - const matches = [ - join(dir, 'nx.json'), - join(dir, 'nx'), - join(dir, 'nx.bat'), - ]; + const matches = [join(dir, 'nx.json'), join(dir, 'nx'), join(dir, 'nx.bat')]; if (matches.some((x) => existsSync(x))) { return dir; @@ -118,4 +139,3 @@ function workspaceRootInner( return workspaceRootInner(dirname(dir), candidateRoot); } } - From d2b92fbbe04cc5931ef091d5c1d64073d37df194 Mon Sep 17 00:00:00 2001 From: Tine Kondo Date: Sat, 23 Nov 2024 11:18:23 +0000 Subject: [PATCH 3/3] chore: update e2e tasks, to only populate local registry once for all tests --- .github/workflows/ci.yml | 4 +- .verdaccio/config.yml | 1 - e2e/smoke/project.json | 5 +-- nx.json | 4 +- project.json | 8 ++++ tools/scripts/populate-local-registry.ts | 53 ++++++++++++++++++++++++ tools/scripts/run-all-e2e-tests.ts | 7 +--- tools/scripts/start-local-registry.ts | 52 ++++++++++++----------- tools/scripts/stop-local-registry.ts | 6 +-- 9 files changed, 98 insertions(+), 42 deletions(-) create mode 100644 tools/scripts/populate-local-registry.ts diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 234a4948..937cf474 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -35,7 +35,7 @@ jobs: # Connect your workspace on nx.app and uncomment this to enable task distribution. # The "--stop-agents-after" is optional, but allows idle agents to shut down once the "e2e" targets have been requested - - run: pnpm exec nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yaml" --stop-agents-after="e2e" --with-env-vars="ANDROID_SDK_VERSION,FLUTTER_VERSION,JDK_VERSION" + - run: pnpm exec nx-cloud start-ci-run --distribute-on=".nx/workflows/dynamic-changesets.yaml" --stop-agents-after="e2e-ci" --with-env-vars="ANDROID_SDK_VERSION,FLUTTER_VERSION,JDK_VERSION" # This line is needed for nx affected to work when CI is running on a PR - run: git branch --track develop origin/develop || exit 0 @@ -46,4 +46,4 @@ jobs: main-branch-name: 'develop' - run: pnpm exec nx-cloud record -- nx format:check - - run: pnpm exec nx affected -t lint test-ci build e2e --parallel=5 --exclude=smoke + - run: pnpm exec nx affected -t lint test-ci build e2e-ci --parallel=5 --exclude=smoke diff --git a/.verdaccio/config.yml b/.verdaccio/config.yml index e9cdce7d..c1018fa2 100644 --- a/.verdaccio/config.yml +++ b/.verdaccio/config.yml @@ -31,4 +31,3 @@ logs: publish: allow_offline: true # set offline to true to allow publish offline -listen: 0.0.0.0:4873 # listen on all addresses (INADDR_ANY) diff --git a/e2e/smoke/project.json b/e2e/smoke/project.json index 731047ab..0c9e12c9 100644 --- a/e2e/smoke/project.json +++ b/e2e/smoke/project.json @@ -3,14 +3,13 @@ "$schema": "../../node_modules/nx/schemas/project-schema.json", "sourceRoot": "e2e/smoke/src", "projectType": "application", - "tags": [], + "tags": ["e2e"], "implicitDependencies": [ "nx-spring-boot", "nx-quarkus", "nx-micronaut", "nx-flutter", - "nx-ktor", - "nx-melos" + "nx-ktor" ], "targets": {} } diff --git a/nx.json b/nx.json index ad22e95f..71f820e5 100644 --- a/nx.json +++ b/nx.json @@ -56,7 +56,7 @@ "passWithNoTests": true, "runInBand": true }, - "dependsOn": ["^build"], + "dependsOn": ["nxrocks:populate-local-registry"], "configurations": { "ci": { "ci": true, @@ -69,7 +69,7 @@ "passWithNoTests": true, "runInBand": true }, - "dependsOn": ["^build"], + "dependsOn": ["nxrocks:populate-local-registry"], "configurations": { "ci": { "ci": true, diff --git a/project.json b/project.json index 1888954a..d604cd22 100644 --- a/project.json +++ b/project.json @@ -5,9 +5,17 @@ "local-registry": { "executor": "@nx/js:verdaccio", "options": { + "port": 4873, + "listenAddress": "0.0.0.0", "config": ".verdaccio/config.yml", "storage": "tmp/local-registry/storage" } + }, + "populate-local-registry": { + "cache": true, + "inputs": ["production"], + "command": "ts-node -P ./tools/tsconfig.tools.json ./tools/scripts/populate-local-registry.ts", + "outputs": ["{workspaceRoot}/tmp/local-registry/storage"] } } } diff --git a/tools/scripts/populate-local-registry.ts b/tools/scripts/populate-local-registry.ts new file mode 100644 index 00000000..204c7fa1 --- /dev/null +++ b/tools/scripts/populate-local-registry.ts @@ -0,0 +1,53 @@ +/** + * This script starts a local registry, populates it by installing packages,then stop the registry. + * It is meant to allows reusing that storage when running e2e tasks later on. + */ +import { startLocalRegistry } from '@nx/js/plugins/jest/local-registry'; +import { releasePublish, releaseVersion } from 'nx/release'; + +(async () => { + + // local registry target to run + const localRegistryTarget = 'nxrocks:local-registry'; + // storage folder for the local registry + const storage = './tmp/local-registry/storage'; + + const isVerbose = process.env.NX_VERBOSE_LOGGING === 'true'; + + let stopLocalRegistry; + + try { + stopLocalRegistry = await startLocalRegistry({ + localRegistryTarget, + storage, + verbose: isVerbose, + }); + + console.log('Publishing packages to local registry to populate storage...'); + await releaseVersion({ + specifier: '0.0.0-e2e', + stageChanges: false, + gitCommit: false, + gitTag: false, + firstRelease: true, + generatorOptionsOverrides: { + skipLockFileUpdate: true, + }, + }); + await releasePublish({ + tag: 'e2e', + firstRelease: true, + }); + + stopLocalRegistry(); + console.log('Killed local registry process'); + } catch (err) { + // Clean up registry if possible after setup related errors + if (typeof stopLocalRegistry === 'function') { + stopLocalRegistry(); + console.log('Killed local registry process due to an error during setup'); + } + console.error('Error:', err); + process.exit(1); + } +})(); diff --git a/tools/scripts/run-all-e2e-tests.ts b/tools/scripts/run-all-e2e-tests.ts index 2bd6fa33..950abfe5 100644 --- a/tools/scripts/run-all-e2e-tests.ts +++ b/tools/scripts/run-all-e2e-tests.ts @@ -4,17 +4,14 @@ import stopRegistry from './stop-local-registry'; (async () => { - + await startLocalRegistry(); const nx = require.resolve('nx'); execFileSync( nx, ['affected', '-t', 'e2e', '--runInBand', '--exclude', 'smoke'], { - env: { - ...process.env, - 'SKIP_LOCAL_REGISTRY_GLOBAL_SETUP': 'true', - }, stdio: 'inherit' + stdio: 'inherit' } ); diff --git a/tools/scripts/start-local-registry.ts b/tools/scripts/start-local-registry.ts index 7a5a3b75..ef953d41 100644 --- a/tools/scripts/start-local-registry.ts +++ b/tools/scripts/start-local-registry.ts @@ -3,42 +3,46 @@ * It is meant to be called in jest's globalSetup. */ import { startLocalRegistry } from '@nx/js/plugins/jest/local-registry'; +import { directoryExists } from '@nx/workspace/src/utilities/fileutils'; import { releasePublish, releaseVersion } from 'nx/release'; export default async () => { - if ( - process.env.SKIP_LOCAL_REGISTRY_GLOBAL_SETUP && - process.env.SKIP_LOCAL_REGISTRY_GLOBAL_SETUP !== 'false' - ) { - console.log( - "Environment variable 'SKIP_LOCAL_REGISTRY_GLOBAL_SETUP' is set. Skipping global setup of Verdaccio's Local Registry..." - ); - return; - } // local registry target to run const localRegistryTarget = 'nxrocks:local-registry'; // storage folder for the local registry const storage = './tmp/local-registry/storage'; + const isVerbose = process.env.NX_VERBOSE_LOGGING === 'true'; + + /** + * For e2e-ci we populate the verdaccio storage up front, but for other workflows we need + * to run the full local release process before running tests. + */ + const requiresLocalRelease = + !process.env.NX_TASK_TARGET_TARGET?.startsWith('e2e-ci') && !directoryExists(storage); + global.stopLocalRegistry = await startLocalRegistry({ localRegistryTarget, storage, - verbose: false, + verbose: isVerbose, + clearStorage: requiresLocalRelease }); - await releaseVersion({ - specifier: '0.0.0-e2e', - stageChanges: false, - gitCommit: false, - gitTag: false, - firstRelease: true, - generatorOptionsOverrides: { - skipLockFileUpdate: true, - }, - }); - await releasePublish({ - tag: 'e2e', - firstRelease: true, - }); + if (requiresLocalRelease) { + await releaseVersion({ + specifier: '0.0.0-e2e', + stageChanges: false, + gitCommit: false, + gitTag: false, + firstRelease: true, + generatorOptionsOverrides: { + skipLockFileUpdate: true, + }, + }); + await releasePublish({ + tag: 'e2e', + firstRelease: true, + }); + } }; diff --git a/tools/scripts/stop-local-registry.ts b/tools/scripts/stop-local-registry.ts index 7df2ae80..a2fa0da1 100644 --- a/tools/scripts/stop-local-registry.ts +++ b/tools/scripts/stop-local-registry.ts @@ -4,11 +4,7 @@ */ export default () => { - if(process.env.SKIP_LOCAL_REGISTRY_GLOBAL_SETUP && process.env.SKIP_LOCAL_REGISTRY_GLOBAL_SETUP !== 'false') { - console.log("\nEnvironment variable 'SKIP_LOCAL_REGISTRY_GLOBAL_SETUP' is set. Skipping global teardown of Verdaccio's Local Registry..."); - return; - } - + if (global.stopLocalRegistry) { global.stopLocalRegistry(); }