From 3b05bc38a1d21dc8212ab2055ce2e0532e71c01f Mon Sep 17 00:00:00 2001 From: tschaffter Date: Sat, 17 Sep 2022 04:20:54 +0000 Subject: [PATCH 1/7] Add google-java-format --- package.json | 1 + yarn.lock | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 9f0675f146..afd554e67d 100644 --- a/package.json +++ b/package.json @@ -93,6 +93,7 @@ "eslint-plugin-prettier": "^4.0.0", "eslint-plugin-promise": "^6.0.0", "glob": "^7.2.0", + "google-java-format": "^1.1.0", "hint": "^7.1.1", "husky": "^7.0.4", "ibm-openapi-validator": "^0.55.0", diff --git a/yarn.lock b/yarn.lock index 4122d243e5..eb4604bf86 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7062,7 +7062,7 @@ __metadata: languageName: node linkType: hard -"async@npm:^3.2.0, async@npm:^3.2.3": +"async@npm:^3.2.0, async@npm:^3.2.3, async@npm:^3.2.4": version: 3.2.4 resolution: "async@npm:3.2.4" checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 @@ -8254,6 +8254,7 @@ __metadata: eslint-plugin-prettier: ^4.0.0 eslint-plugin-promise: ^6.0.0 glob: ^7.2.0 + google-java-format: ^1.1.0 hint: ^7.1.1 husky: ^7.0.4 ibm-openapi-validator: ^0.55.0 @@ -12463,7 +12464,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:8.0.3, glob@npm:^8.0.0, glob@npm:^8.0.1": +"glob@npm:8.0.3, glob@npm:^8.0.0, glob@npm:^8.0.1, glob@npm:^8.0.3": version: 8.0.3 resolution: "glob@npm:8.0.3" dependencies: @@ -12601,6 +12602,19 @@ __metadata: languageName: node linkType: hard +"google-java-format@npm:^1.1.0": + version: 1.1.0 + resolution: "google-java-format@npm:1.1.0" + dependencies: + async: ^3.2.4 + glob: ^8.0.3 + resolve: ^1.22.1 + bin: + google-java-format: index.js + checksum: 442077f4f8596d59ba52096e22c2f09063368c05fbfe55eb192ed9030afdb515e0f590557a4944900a0a62da2ea7b916f69f1df5b4a418dc36fcf27188278ed3 + languageName: node + linkType: hard + "got@npm:^11.8.5": version: 11.8.5 resolution: "got@npm:11.8.5" @@ -19570,7 +19584,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:1.22.1, resolve@npm:^1.1.6, resolve@npm:^1.1.7, resolve@npm:^1.10.1, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.0": +"resolve@npm:1.22.1, resolve@npm:^1.1.6, resolve@npm:^1.1.7, resolve@npm:^1.10.1, resolve@npm:^1.12.0, resolve@npm:^1.14.2, resolve@npm:^1.17.0, resolve@npm:^1.19.0, resolve@npm:^1.20.0, resolve@npm:^1.22.0, resolve@npm:^1.22.1": version: 1.22.1 resolution: "resolve@npm:1.22.1" dependencies: @@ -19583,7 +19597,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@1.22.1#~builtin, resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.1#~builtin, resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin": +"resolve@patch:resolve@1.22.1#~builtin, resolve@patch:resolve@^1.1.6#~builtin, resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.10.1#~builtin, resolve@patch:resolve@^1.12.0#~builtin, resolve@patch:resolve@^1.14.2#~builtin, resolve@patch:resolve@^1.17.0#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.20.0#~builtin, resolve@patch:resolve@^1.22.0#~builtin, resolve@patch:resolve@^1.22.1#~builtin": version: 1.22.1 resolution: "resolve@patch:resolve@npm%3A1.22.1#~builtin::version=1.22.1&hash=07638b" dependencies: From f98e9146db7da30ceff1969c0218dcc7ed3338f1 Mon Sep 17 00:00:00 2001 From: tschaffter Date: Sat, 17 Sep 2022 04:24:34 +0000 Subject: [PATCH 2/7] Remove eclipse-java-google-style.xml --- .vscode/settings.json | 1 - eclipse-java-google-style.xml | 337 ---------------------------------- 2 files changed, 338 deletions(-) delete mode 100644 eclipse-java-google-style.xml diff --git a/.vscode/settings.json b/.vscode/settings.json index e95c899a07..cce8b0cab4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,5 @@ { "java.format.enabled": true, - "java.format.settings.url": "eclipse-java-google-style.xml", "java.checkstyle.configuration": "checkstyle.xml", "java.checkstyle.version": "10.3", "java.jdt.ls.java.home": "/usr/lib/jvm/java-17-openjdk-amd64", diff --git a/eclipse-java-google-style.xml b/eclipse-java-google-style.xml deleted file mode 100644 index 7bb6804eb3..0000000000 --- a/eclipse-java-google-style.xml +++ /dev/null @@ -1,337 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 6cccfa3d572886d0e4500e36de515cbf3c47c9bc Mon Sep 17 00:00:00 2001 From: tschaffter Date: Sat, 17 Sep 2022 22:21:08 +0000 Subject: [PATCH 3/7] Use `emeraldwalk.runonsave` --- .devcontainer/devcontainer.json | 1 + .vscode/extensions.json | 1 + .vscode/settings.json | 13 ++++++++++--- .../challenge/ChallengeUserServiceApplication.java | 9 ++++----- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 289e3105c7..3ed72f765b 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -12,6 +12,7 @@ "1000ch.svgo", "Angular.ng-template", "dbaeumer.vscode-eslint", + "emeraldwalk.RunOnSave", "esbenp.prettier-vscode", "firsttris.vscode-jest-runner", "GitHub.vscode-pull-request-github", diff --git a/.vscode/extensions.json b/.vscode/extensions.json index e6b4317e4e..250fa390a2 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,6 +3,7 @@ "1000ch.svgo", "Angular.ng-template", "dbaeumer.vscode-eslint", + "emeraldwalk.RunOnSave", "esbenp.prettier-vscode", "firsttris.vscode-jest-runner", "GitHub.vscode-pull-request-github", diff --git a/.vscode/settings.json b/.vscode/settings.json index cce8b0cab4..587adbfdd5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,4 @@ { - "java.format.enabled": true, "java.checkstyle.configuration": "checkstyle.xml", "java.checkstyle.version": "10.3", "java.jdt.ls.java.home": "/usr/lib/jvm/java-17-openjdk-amd64", @@ -27,8 +26,8 @@ "editor.formatOnSave": true }, "[java]": { - "editor.defaultFormatter": "redhat.java", - "editor.formatOnSave": true + // using google-java-format instead of the default formatter (see emeraldwalk.runonsave) + "editor.formatOnSave": false }, "[html]": { "editor.defaultFormatter": "esbenp.prettier-vscode", @@ -42,6 +41,14 @@ "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true }, + "emeraldwalk.runonsave": { + "commands": [ + { + "match": "\\.java$", + "cmd": "${workspaceRoot}/node_modules/.bin/google-java-format --replace ${file}" + }, + ], + }, "eslint.workingDirectories": [ "./apps/challenge-db-cli", "." diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/ChallengeUserServiceApplication.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/ChallengeUserServiceApplication.java index 882f2f2c73..928b2b16b7 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/ChallengeUserServiceApplication.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/ChallengeUserServiceApplication.java @@ -1,7 +1,5 @@ package org.sagebionetworks.challenge; -import org.springdoc.core.GroupedOpenApi; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.client.RestTemplateBuilder; @@ -9,7 +7,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; -import io.swagger.v3.oas.models.info.Info; @EnableFeignClients @EnableEurekaClient @@ -26,10 +23,12 @@ public RestTemplate restTemplate(RestTemplateBuilder builder) { } // @Bean - // public GroupedOpenApi usersGroup(@Value("${springdoc.version}") String appVersion) { + // public GroupedOpenApi usersGroup(@Value("${springdoc.version}") String + // appVersion) { // return GroupedOpenApi.builder().group("users") // // .addOperationCustomizer((operation, handlerMethod) -> { - // // operation.addSecurityItem(new SecurityRequirement().addList("basicScheme")); + // // operation.addSecurityItem(new + // SecurityRequirement().addList("basicScheme")); // // return operation; // // }) // .addOpenApiCustomiser( From 8aef9d039944757da8bf31ca6a87e689b07a5a73 Mon Sep 17 00:00:00 2001 From: tschaffter Date: Sun, 18 Sep 2022 00:12:47 +0000 Subject: [PATCH 4/7] Document `google-java-format` --- docs/linters-and-formatters.md | 37 +++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/docs/linters-and-formatters.md b/docs/linters-and-formatters.md index cb4ae7e0e4..b96e64a176 100644 --- a/docs/linters-and-formatters.md +++ b/docs/linters-and-formatters.md @@ -2,17 +2,17 @@ ## Overview -| Language | File extension | Linter | Formatter | -|------------|----------------|------------------|----------------------------------------| -| Dockerfile | `Dockerfile` | [hadolint] | - | -| HTML | `*.html` | [Webhint] | [Prettier] | -| Java | `*.java` | [Checkstyle] | [Language Support for Java by Red Hat] | -| SCSS | `*.scss` | [VS Code (SCSS)] | [VS Code (SCSS)] | -| TypeScript | `*.ts` | [ESLint] | [ESLint] | -| XML | `*.xml` | - | [Prettier] | - ## Linters +| File type | File extension | Linter | +|------------|-----------------|------------------| +| Dockerfile | `Dockerfile` | [hadolint] | +| HTML | `*.html` | [Webhint] | +| Java | `*.java` | [Checkstyle] | +| SCSS | `*.scss` | [VS Code (SCSS)] | +| TypeScript | `*.ts` | [ESLint] | +| XML | `*.xml` | - | + ### Webhint Linter: @@ -25,6 +25,15 @@ Linter configuration: ## Formatters +| File type | File extension | Formatter | Package type | +|------------|----------------|----------------------|--------------| +| Dockerfile | `Dockerfile` | - | | +| HTML | `*.html` | [Prettier] | | +| Java | `*.java` | [google-java-format] | npm | +| SCSS | `*.scss` | [VS Code (SCSS)] | | +| TypeScript | `*.ts` | [ESLint] | | +| XML | `*.xml` | [Prettier] | | + Formatter: - Prettier - VS Code extension @@ -35,6 +44,15 @@ Formatter configuration: - `.prettierrc` - `.prettierignore` +### google-java-format + +- Package type: `npm` +- Provided by: `package.json` +- Binary location: `${workspaceRoot}/node_modules/.bin/google-java-format` +- Configuration file: None +- Used by: + - `.vscode/settings.json` + [Webhint]: https://marketplace.visualstudio.com/items?itemName=webhint.vscode-webhint @@ -44,3 +62,4 @@ Formatter configuration: [Language Support for Java by Red Hat]: https://marketplace.visualstudio.com/items?itemName=redhat.java [hadolint]: https://github.com/hadolint/hadolint [VS Code (SCSS)]: https://code.visualstudio.com/docs/languages/css +[google-java-format]: https://github.com/google/google-java-format \ No newline at end of file From 2dec187321c23226ed68b0f0f4dcd7fbee872e24 Mon Sep 17 00:00:00 2001 From: tschaffter Date: Sun, 18 Sep 2022 01:10:32 +0000 Subject: [PATCH 5/7] Create lib nx-google-java-format --- .eslintrc.json | 16 +- .vscode/settings.json | 15 +- apps/challenge-user-service/project.json | 4 +- apps/nx-google-java-format-e2e/jest.config.ts | 15 + apps/nx-google-java-format-e2e/project.json | 16 + .../tests/nx-google-java-format.spec.ts | 56 ++++ apps/nx-google-java-format-e2e/tsconfig.json | 10 + .../tsconfig.spec.json | 9 + libs/nx-google-java-format/.babelrc | 10 + libs/nx-google-java-format/.eslintrc.json | 25 ++ libs/nx-google-java-format/.gitignore | 1 + libs/nx-google-java-format/README.md | 11 + libs/nx-google-java-format/executors.json | 15 + libs/nx-google-java-format/generators.json | 12 + libs/nx-google-java-format/jest.config.ts | 15 + libs/nx-google-java-format/package.json | 7 + libs/nx-google-java-format/project.json | 60 ++++ .../src/executors/build/executor.spec.ts.off | 11 + .../src/executors/build/executor.ts | 8 + .../src/executors/build/schema.d.ts | 1 + .../src/executors/build/schema.json | 9 + .../check-format/executor.spec.ts.off | 11 + .../src/executors/check-format/executor.ts | 8 + .../src/executors/check-format/schema.d.ts | 1 + .../src/executors/check-format/schema.json | 20 ++ .../files/src/index.ts__template__ | 1 + .../generator.spec.ts.off | 20 ++ .../nx-google-java-format/generator.ts | 77 +++++ .../nx-google-java-format/schema.d.ts | 5 + .../nx-google-java-format/schema.json | 29 ++ libs/nx-google-java-format/src/index.ts | 0 libs/nx-google-java-format/tsconfig.json | 16 + libs/nx-google-java-format/tsconfig.lib.json | 10 + libs/nx-google-java-format/tsconfig.spec.json | 9 + package.json | 7 + tsconfig.base.json | 1 + workspace.json | 2 + yarn.lock | 292 +++++++++++++++++- 38 files changed, 809 insertions(+), 26 deletions(-) create mode 100644 apps/nx-google-java-format-e2e/jest.config.ts create mode 100644 apps/nx-google-java-format-e2e/project.json create mode 100644 apps/nx-google-java-format-e2e/tests/nx-google-java-format.spec.ts create mode 100644 apps/nx-google-java-format-e2e/tsconfig.json create mode 100644 apps/nx-google-java-format-e2e/tsconfig.spec.json create mode 100644 libs/nx-google-java-format/.babelrc create mode 100644 libs/nx-google-java-format/.eslintrc.json create mode 100644 libs/nx-google-java-format/.gitignore create mode 100644 libs/nx-google-java-format/README.md create mode 100644 libs/nx-google-java-format/executors.json create mode 100644 libs/nx-google-java-format/generators.json create mode 100644 libs/nx-google-java-format/jest.config.ts create mode 100644 libs/nx-google-java-format/package.json create mode 100644 libs/nx-google-java-format/project.json create mode 100644 libs/nx-google-java-format/src/executors/build/executor.spec.ts.off create mode 100644 libs/nx-google-java-format/src/executors/build/executor.ts create mode 100644 libs/nx-google-java-format/src/executors/build/schema.d.ts create mode 100644 libs/nx-google-java-format/src/executors/build/schema.json create mode 100644 libs/nx-google-java-format/src/executors/check-format/executor.spec.ts.off create mode 100644 libs/nx-google-java-format/src/executors/check-format/executor.ts create mode 100644 libs/nx-google-java-format/src/executors/check-format/schema.d.ts create mode 100644 libs/nx-google-java-format/src/executors/check-format/schema.json create mode 100644 libs/nx-google-java-format/src/generators/nx-google-java-format/files/src/index.ts__template__ create mode 100644 libs/nx-google-java-format/src/generators/nx-google-java-format/generator.spec.ts.off create mode 100644 libs/nx-google-java-format/src/generators/nx-google-java-format/generator.ts create mode 100644 libs/nx-google-java-format/src/generators/nx-google-java-format/schema.d.ts create mode 100644 libs/nx-google-java-format/src/generators/nx-google-java-format/schema.json create mode 100644 libs/nx-google-java-format/src/index.ts create mode 100644 libs/nx-google-java-format/tsconfig.json create mode 100644 libs/nx-google-java-format/tsconfig.lib.json create mode 100644 libs/nx-google-java-format/tsconfig.spec.json diff --git a/.eslintrc.json b/.eslintrc.json index 815488ecb7..7e2d1018ed 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -23,15 +23,8 @@ }, { "files": ["*.ts", "*.tsx"], - "extends": [ - "plugin:@nrwl/nx/typescript", - "standard", // required? - "eslint-config-prettier" - ], - "plugins": [ - "@typescript-eslint", - "eslint-plugin-prettier" - ], + "extends": ["plugin:@nrwl/nx/typescript", "standard", "eslint-config-prettier"], + "plugins": ["@typescript-eslint", "eslint-plugin-prettier"], "rules": { "dot-notation": "off", "no-useless-constructor": "off", @@ -51,6 +44,11 @@ "files": ["*.js", "*.jsx"], "extends": ["plugin:@nrwl/nx/javascript"], "rules": {} + }, + { + "files": "*.json", + "parser": "jsonc-eslint-parser", + "rules": {} } ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 587adbfdd5..2f51fea809 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -26,7 +26,6 @@ "editor.formatOnSave": true }, "[java]": { - // using google-java-format instead of the default formatter (see emeraldwalk.runonsave) "editor.formatOnSave": false }, "[html]": { @@ -46,13 +45,10 @@ { "match": "\\.java$", "cmd": "${workspaceRoot}/node_modules/.bin/google-java-format --replace ${file}" - }, - ], + } + ] }, - "eslint.workingDirectories": [ - "./apps/challenge-db-cli", - "." - ], + "eslint.workingDirectories": ["./apps/challenge-db-cli", "."], "sqltools.autoOpenSessionFiles": false, "sqltools.connections": [ { @@ -83,5 +79,6 @@ "java.configuration.updateBuildConfiguration": "disabled", "editor.inlayHints.enabled": "off", "rewrap.wrappingColumn": 100, - "editor.rulers": [100] -} \ No newline at end of file + "editor.rulers": [100], + "eslint.validate": ["json"] +} diff --git a/apps/challenge-user-service/project.json b/apps/challenge-user-service/project.json index df34e640a7..a5b42c5f1f 100644 --- a/apps/challenge-user-service/project.json +++ b/apps/challenge-user-service/project.json @@ -59,8 +59,8 @@ "root": "apps/challenge-user-service" } }, - "format-check": { - "executor": "@nxrocks/nx-spring-boot:format-check", + "check-format": { + "executor": "@sagebionetworks/nx-google-java-format:check-format", "options": { "root": "apps/challenge-user-service" } diff --git a/apps/nx-google-java-format-e2e/jest.config.ts b/apps/nx-google-java-format-e2e/jest.config.ts new file mode 100644 index 0000000000..47dc87e809 --- /dev/null +++ b/apps/nx-google-java-format-e2e/jest.config.ts @@ -0,0 +1,15 @@ +/* eslint-disable */ +export default { + displayName: 'nx-google-java-format-e2e', + preset: '../../jest.preset.js', + globals: { + 'ts-jest': { + tsconfig: '/tsconfig.spec.json', + }, + }, + transform: { + '^.+\\.[tj]s$': 'ts-jest', + }, + moduleFileExtensions: ['ts', 'js', 'html'], + coverageDirectory: '../../coverage/apps/nx-google-java-format-e2e', +}; diff --git a/apps/nx-google-java-format-e2e/project.json b/apps/nx-google-java-format-e2e/project.json new file mode 100644 index 0000000000..9ee749a273 --- /dev/null +++ b/apps/nx-google-java-format-e2e/project.json @@ -0,0 +1,16 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "projectType": "application", + "sourceRoot": "apps/nx-google-java-format-e2e/src", + "targets": { + "e2e": { + "executor": "@nrwl/nx-plugin:e2e", + "options": { + "target": "nx-google-java-format:build", + "jestConfig": "apps/nx-google-java-format-e2e/jest.config.ts" + } + } + }, + "tags": [], + "implicitDependencies": ["nx-google-java-format"] +} diff --git a/apps/nx-google-java-format-e2e/tests/nx-google-java-format.spec.ts b/apps/nx-google-java-format-e2e/tests/nx-google-java-format.spec.ts new file mode 100644 index 0000000000..5738fafe43 --- /dev/null +++ b/apps/nx-google-java-format-e2e/tests/nx-google-java-format.spec.ts @@ -0,0 +1,56 @@ +import { + checkFilesExist, + ensureNxProject, + readJson, + runNxCommandAsync, + uniq, +} from '@nrwl/nx-plugin/testing'; + +describe('nx-google-java-format e2e', () => { + // Setting up individual workspaces per + // test can cause e2e runs to take a long time. + // For this reason, we recommend each suite only + // consumes 1 workspace. The tests should each operate + // on a unique project in the workspace, such that they + // are not dependant on one another. + beforeAll(() => { + ensureNxProject('@sagebionetworks/nx-google-java-format', 'dist/libs/nx-google-java-format'); + }); + + afterAll(() => { + // `nx reset` kills the daemon, and performs + // some work which can help clean up e2e leftovers + runNxCommandAsync('reset'); + }); + + it('should create nx-google-java-format', async () => { + const project = uniq('nx-google-java-format'); + await runNxCommandAsync( + `generate @sagebionetworks/nx-google-java-format:nx-google-java-format ${project}` + ); + const result = await runNxCommandAsync(`build ${project}`); + expect(result.stdout).toContain('Executor ran'); + }, 120000); + + describe('--directory', () => { + it('should create src in the specified directory', async () => { + const project = uniq('nx-google-java-format'); + await runNxCommandAsync( + `generate @sagebionetworks/nx-google-java-format:nx-google-java-format ${project} --directory subdir` + ); + expect(() => checkFilesExist(`libs/subdir/${project}/src/index.ts`)).not.toThrow(); + }, 120000); + }); + + describe('--tags', () => { + it('should add tags to the project', async () => { + const projectName = uniq('nx-google-java-format'); + ensureNxProject('@sagebionetworks/nx-google-java-format', 'dist/libs/nx-google-java-format'); + await runNxCommandAsync( + `generate @sagebionetworks/nx-google-java-format:nx-google-java-format ${projectName} --tags e2etag,e2ePackage` + ); + const project = readJson(`libs/${projectName}/project.json`); + expect(project.tags).toEqual(['e2etag', 'e2ePackage']); + }, 120000); + }); +}); diff --git a/apps/nx-google-java-format-e2e/tsconfig.json b/apps/nx-google-java-format-e2e/tsconfig.json new file mode 100644 index 0000000000..b9c9d95376 --- /dev/null +++ b/apps/nx-google-java-format-e2e/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/apps/nx-google-java-format-e2e/tsconfig.spec.json b/apps/nx-google-java-format-e2e/tsconfig.spec.json new file mode 100644 index 0000000000..546f12877f --- /dev/null +++ b/apps/nx-google-java-format-e2e/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] +} diff --git a/libs/nx-google-java-format/.babelrc b/libs/nx-google-java-format/.babelrc new file mode 100644 index 0000000000..e24a5465f3 --- /dev/null +++ b/libs/nx-google-java-format/.babelrc @@ -0,0 +1,10 @@ +{ + "presets": [ + [ + "@nrwl/web/babel", + { + "useBuiltIns": "usage" + } + ] + ] +} diff --git a/libs/nx-google-java-format/.eslintrc.json b/libs/nx-google-java-format/.eslintrc.json new file mode 100644 index 0000000000..556554a795 --- /dev/null +++ b/libs/nx-google-java-format/.eslintrc.json @@ -0,0 +1,25 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["./package.json", "./generators.json", "./executors.json"], + "parser": "jsonc-eslint-parser", + "rules": { + "@nrwl/nx/nx-plugin-checks": "error" + } + } + ] +} diff --git a/libs/nx-google-java-format/.gitignore b/libs/nx-google-java-format/.gitignore new file mode 100644 index 0000000000..6a7b8b92af --- /dev/null +++ b/libs/nx-google-java-format/.gitignore @@ -0,0 +1 @@ +!src/executors/build/ \ No newline at end of file diff --git a/libs/nx-google-java-format/README.md b/libs/nx-google-java-format/README.md new file mode 100644 index 0000000000..955f7b9156 --- /dev/null +++ b/libs/nx-google-java-format/README.md @@ -0,0 +1,11 @@ +# nx-google-java-format + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build nx-google-java-format` to build the library. + +## Running unit tests + +Run `nx test nx-google-java-format` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/nx-google-java-format/executors.json b/libs/nx-google-java-format/executors.json new file mode 100644 index 0000000000..3660e06889 --- /dev/null +++ b/libs/nx-google-java-format/executors.json @@ -0,0 +1,15 @@ +{ + "$schema": "http://json-schema.org/schema", + "executors": { + "build": { + "implementation": "./src/executors/build/executor", + "schema": "./src/executors/build/schema.json", + "description": "build executor" + }, + "check-format": { + "implementation": "./src/executors/check-format/executor", + "schema": "./src/executors/check-format/schema.json", + "description": "check-format executor" + } + } +} diff --git a/libs/nx-google-java-format/generators.json b/libs/nx-google-java-format/generators.json new file mode 100644 index 0000000000..d3e68f4c65 --- /dev/null +++ b/libs/nx-google-java-format/generators.json @@ -0,0 +1,12 @@ +{ + "$schema": "http://json-schema.org/schema", + "name": "nx-google-java-format", + "version": "0.0.1", + "generators": { + "nx-google-java-format": { + "factory": "./src/generators/nx-google-java-format/generator", + "schema": "./src/generators/nx-google-java-format/schema.json", + "description": "nx-google-java-format generator" + } + } +} diff --git a/libs/nx-google-java-format/jest.config.ts b/libs/nx-google-java-format/jest.config.ts new file mode 100644 index 0000000000..d102c21b53 --- /dev/null +++ b/libs/nx-google-java-format/jest.config.ts @@ -0,0 +1,15 @@ +/* eslint-disable */ +export default { + displayName: 'nx-google-java-format', + preset: '../../jest.preset.js', + globals: { + 'ts-jest': { + tsconfig: '/tsconfig.spec.json', + }, + }, + transform: { + '^.+\\.[tj]s$': 'ts-jest', + }, + moduleFileExtensions: ['ts', 'js', 'html'], + coverageDirectory: '../../coverage/libs/nx-google-java-format', +}; diff --git a/libs/nx-google-java-format/package.json b/libs/nx-google-java-format/package.json new file mode 100644 index 0000000000..dafe6878f3 --- /dev/null +++ b/libs/nx-google-java-format/package.json @@ -0,0 +1,7 @@ +{ + "name": "@sagebionetworks/nx-google-java-format", + "version": "0.0.1", + "main": "src/index.js", + "generators": "./generators.json", + "executors": "./executors.json" +} diff --git a/libs/nx-google-java-format/project.json b/libs/nx-google-java-format/project.json new file mode 100644 index 0000000000..1491ec58f8 --- /dev/null +++ b/libs/nx-google-java-format/project.json @@ -0,0 +1,60 @@ +{ + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/nx-google-java-format/src", + "projectType": "library", + "targets": { + "build": { + "executor": "@nrwl/js:tsc", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/libs/nx-google-java-format", + "main": "libs/nx-google-java-format/src/index.ts", + "tsConfig": "libs/nx-google-java-format/tsconfig.lib.json", + "assets": [ + "libs/nx-google-java-format/*.md", + { + "input": "./libs/nx-google-java-format/src", + "glob": "**/!(*.ts)", + "output": "./src" + }, + { + "input": "./libs/nx-google-java-format/src", + "glob": "**/*.d.ts", + "output": "./src" + }, + { + "input": "./libs/nx-google-java-format", + "glob": "generators.json", + "output": "." + }, + { + "input": "./libs/nx-google-java-format", + "glob": "executors.json", + "output": "." + } + ] + } + }, + "lint": { + "executor": "@nrwl/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "libs/nx-google-java-format/**/*.ts", + "libs/nx-google-java-format/generators.json", + "libs/nx-google-java-format/executors.json", + "libs/nx-google-java-format/package.json" + ] + } + }, + "test": { + "executor": "@nrwl/jest:jest", + "outputs": ["coverage/libs/nx-google-java-format"], + "options": { + "jestConfig": "libs/nx-google-java-format/jest.config.ts", + "passWithNoTests": true + } + } + }, + "tags": [] +} diff --git a/libs/nx-google-java-format/src/executors/build/executor.spec.ts.off b/libs/nx-google-java-format/src/executors/build/executor.spec.ts.off new file mode 100644 index 0000000000..32de13c6b7 --- /dev/null +++ b/libs/nx-google-java-format/src/executors/build/executor.spec.ts.off @@ -0,0 +1,11 @@ +import { BuildExecutorSchema } from './schema'; +import executor from './executor'; + +const options: BuildExecutorSchema = {}; + +describe('Build Executor', () => { + it('can run', async () => { + const output = await executor(options); + expect(output.success).toBe(true); + }); +}); diff --git a/libs/nx-google-java-format/src/executors/build/executor.ts b/libs/nx-google-java-format/src/executors/build/executor.ts new file mode 100644 index 0000000000..39569a7dbb --- /dev/null +++ b/libs/nx-google-java-format/src/executors/build/executor.ts @@ -0,0 +1,8 @@ +import { BuildExecutorSchema } from './schema'; + +export default async function runExecutor(options: BuildExecutorSchema) { + console.log('Executor ran for Build', options); + return { + success: true, + }; +} diff --git a/libs/nx-google-java-format/src/executors/build/schema.d.ts b/libs/nx-google-java-format/src/executors/build/schema.d.ts new file mode 100644 index 0000000000..f8247abd51 --- /dev/null +++ b/libs/nx-google-java-format/src/executors/build/schema.d.ts @@ -0,0 +1 @@ +export interface BuildExecutorSchema {} // eslint-disable-line diff --git a/libs/nx-google-java-format/src/executors/build/schema.json b/libs/nx-google-java-format/src/executors/build/schema.json new file mode 100644 index 0000000000..54d8d22a82 --- /dev/null +++ b/libs/nx-google-java-format/src/executors/build/schema.json @@ -0,0 +1,9 @@ +{ + "$schema": "http://json-schema.org/schema", + "cli": "nx", + "title": "Build executor", + "description": "", + "type": "object", + "properties": {}, + "required": [] +} diff --git a/libs/nx-google-java-format/src/executors/check-format/executor.spec.ts.off b/libs/nx-google-java-format/src/executors/check-format/executor.spec.ts.off new file mode 100644 index 0000000000..e7ca0829a8 --- /dev/null +++ b/libs/nx-google-java-format/src/executors/check-format/executor.spec.ts.off @@ -0,0 +1,11 @@ +import { CheckFormatExecutorSchema } from './schema'; +import executor from './executor'; + +const options: CheckFormatExecutorSchema = {}; + +describe('CheckFormat Executor', () => { + it('can run', async () => { + const output = await executor(options); + expect(output.success).toBe(true); + }); +}); diff --git a/libs/nx-google-java-format/src/executors/check-format/executor.ts b/libs/nx-google-java-format/src/executors/check-format/executor.ts new file mode 100644 index 0000000000..f4d8498165 --- /dev/null +++ b/libs/nx-google-java-format/src/executors/check-format/executor.ts @@ -0,0 +1,8 @@ +import { CheckFormatExecutorSchema } from './schema'; + +export default async function runExecutor(options: CheckFormatExecutorSchema) { + console.log('Executor ran for CheckFormat', options); + return { + success: true, + }; +} diff --git a/libs/nx-google-java-format/src/executors/check-format/schema.d.ts b/libs/nx-google-java-format/src/executors/check-format/schema.d.ts new file mode 100644 index 0000000000..dcafdaae0a --- /dev/null +++ b/libs/nx-google-java-format/src/executors/check-format/schema.d.ts @@ -0,0 +1 @@ +export interface CheckFormatExecutorSchema {} // eslint-disable-line diff --git a/libs/nx-google-java-format/src/executors/check-format/schema.json b/libs/nx-google-java-format/src/executors/check-format/schema.json new file mode 100644 index 0000000000..6e180ca6e1 --- /dev/null +++ b/libs/nx-google-java-format/src/executors/check-format/schema.json @@ -0,0 +1,20 @@ +{ + "$schema": "http://json-schema.org/schema", + "cli": "nx", + "title": "Check Format executor", + "description": "Check that the project files are properly formatted", + "outputCapture": "pipe", + "type": "object", + "properties": { + "root": { + "description": "The project root", + "type": "string" + }, + "args": { + "description": "The argument to be passed to the underlying google-java-format command", + "type": "array", + "default": [] + } + }, + "required": [] +} diff --git a/libs/nx-google-java-format/src/generators/nx-google-java-format/files/src/index.ts__template__ b/libs/nx-google-java-format/src/generators/nx-google-java-format/files/src/index.ts__template__ new file mode 100644 index 0000000000..dde3cb697b --- /dev/null +++ b/libs/nx-google-java-format/src/generators/nx-google-java-format/files/src/index.ts__template__ @@ -0,0 +1 @@ +const variable = "<%= projectName %>"; \ No newline at end of file diff --git a/libs/nx-google-java-format/src/generators/nx-google-java-format/generator.spec.ts.off b/libs/nx-google-java-format/src/generators/nx-google-java-format/generator.spec.ts.off new file mode 100644 index 0000000000..7ee261061e --- /dev/null +++ b/libs/nx-google-java-format/src/generators/nx-google-java-format/generator.spec.ts.off @@ -0,0 +1,20 @@ +import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; +import { Tree, readProjectConfiguration } from '@nrwl/devkit'; + +import generator from './generator'; +import { NxGoogleJavaFormatGeneratorSchema } from './schema'; + +describe('nx-google-java-format generator', () => { + let appTree: Tree; + const options: NxGoogleJavaFormatGeneratorSchema = { name: 'test' }; + + beforeEach(() => { + appTree = createTreeWithEmptyWorkspace(); + }); + + it('should run successfully', async () => { + await generator(appTree, options); + const config = readProjectConfiguration(appTree, 'test'); + expect(config).toBeDefined(); + }); +}); diff --git a/libs/nx-google-java-format/src/generators/nx-google-java-format/generator.ts b/libs/nx-google-java-format/src/generators/nx-google-java-format/generator.ts new file mode 100644 index 0000000000..c4de501ec8 --- /dev/null +++ b/libs/nx-google-java-format/src/generators/nx-google-java-format/generator.ts @@ -0,0 +1,77 @@ +import { + addProjectConfiguration, + formatFiles, + generateFiles, + getWorkspaceLayout, + names, + offsetFromRoot, + Tree, +} from '@nrwl/devkit'; +import * as path from 'path'; +import { NxGoogleJavaFormatGeneratorSchema } from './schema'; + +interface NormalizedSchema extends NxGoogleJavaFormatGeneratorSchema { + projectName: string; + projectRoot: string; + projectDirectory: string; + parsedTags: string[]; +} + +function normalizeOptions( + tree: Tree, + options: NxGoogleJavaFormatGeneratorSchema +): NormalizedSchema { + const name = names(options.name).fileName; + const projectDirectory = options.directory + ? `${names(options.directory).fileName}/${name}` + : name; + // eslint-disable-next-line prefer-regex-literals + const projectName = projectDirectory.replace(new RegExp('/', 'g'), '-'); + const projectRoot = `${getWorkspaceLayout(tree).libsDir}/${projectDirectory}`; + const parsedTags = options.tags + ? options.tags.split(',').map((s) => s.trim()) + : []; + + return { + ...options, + projectName, + projectRoot, + projectDirectory, + parsedTags, + }; +} + +function addFiles(tree: Tree, options: NormalizedSchema) { + const templateOptions = { + ...options, + ...names(options.name), + offsetFromRoot: offsetFromRoot(options.projectRoot), + template: '', + }; + generateFiles( + tree, + path.join(__dirname, 'files'), + options.projectRoot, + templateOptions + ); +} + +export default async function ( + tree: Tree, + options: NxGoogleJavaFormatGeneratorSchema +) { + const normalizedOptions = normalizeOptions(tree, options); + addProjectConfiguration(tree, normalizedOptions.projectName, { + root: normalizedOptions.projectRoot, + projectType: 'library', + sourceRoot: `${normalizedOptions.projectRoot}/src`, + targets: { + build: { + executor: '@sagebionetworks/nx-google-java-format:build', + }, + }, + tags: normalizedOptions.parsedTags, + }); + addFiles(tree, normalizedOptions); + await formatFiles(tree); +} diff --git a/libs/nx-google-java-format/src/generators/nx-google-java-format/schema.d.ts b/libs/nx-google-java-format/src/generators/nx-google-java-format/schema.d.ts new file mode 100644 index 0000000000..e9fb002e60 --- /dev/null +++ b/libs/nx-google-java-format/src/generators/nx-google-java-format/schema.d.ts @@ -0,0 +1,5 @@ +export interface NxGoogleJavaFormatGeneratorSchema { + name: string; + tags?: string; + directory?: string; +} diff --git a/libs/nx-google-java-format/src/generators/nx-google-java-format/schema.json b/libs/nx-google-java-format/src/generators/nx-google-java-format/schema.json new file mode 100644 index 0000000000..87e72d9612 --- /dev/null +++ b/libs/nx-google-java-format/src/generators/nx-google-java-format/schema.json @@ -0,0 +1,29 @@ +{ + "$schema": "http://json-schema.org/schema", + "cli": "nx", + "$id": "NxGoogleJavaFormat", + "title": "", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "", + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "What name would you like to use?" + }, + "tags": { + "type": "string", + "description": "Add tags to the project (used for linting)", + "alias": "t" + }, + "directory": { + "type": "string", + "description": "A directory where the project is placed", + "alias": "d" + } + }, + "required": ["name"] +} diff --git a/libs/nx-google-java-format/src/index.ts b/libs/nx-google-java-format/src/index.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libs/nx-google-java-format/tsconfig.json b/libs/nx-google-java-format/tsconfig.json new file mode 100644 index 0000000000..19b9eece4d --- /dev/null +++ b/libs/nx-google-java-format/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "module": "commonjs" + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/libs/nx-google-java-format/tsconfig.lib.json b/libs/nx-google-java-format/tsconfig.lib.json new file mode 100644 index 0000000000..e85ef50f65 --- /dev/null +++ b/libs/nx-google-java-format/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": [] + }, + "include": ["**/*.ts"], + "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] +} diff --git a/libs/nx-google-java-format/tsconfig.spec.json b/libs/nx-google-java-format/tsconfig.spec.json new file mode 100644 index 0000000000..546f12877f --- /dev/null +++ b/libs/nx-google-java-format/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] +} diff --git a/package.json b/package.json index afd554e67d..3198582e9e 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@angular/platform-server": "14.1.1", "@angular/router": "14.1.1", "@nguniversal/express-engine": "^14.0.3", + "@swc/helpers": "~0.3.3", "commander": "^8.2.0", "core-js": "^3.6.5", "keycloak-angular": "^9.1.0", @@ -59,12 +60,14 @@ "@nrwl/angular": "14.5.4", "@nrwl/cli": "14.5.4", "@nrwl/cypress": "14.5.4", + "@nrwl/devkit": "14.5.4", "@nrwl/eslint-plugin-nx": "14.5.4", "@nrwl/jest": "14.5.4", "@nrwl/js": "14.5.4", "@nrwl/linter": "14.5.4", "@nrwl/node": "14.5.4", "@nrwl/nx-cloud": "14.3.0", + "@nrwl/nx-plugin": "14.5.4", "@nrwl/web": "14.5.4", "@nrwl/workspace": "14.5.4", "@nx-tools/nx-docker": "^2.3.0", @@ -72,6 +75,9 @@ "@openapitools/openapi-generator-cli": "^2.4.26", "@prettier/plugin-xml": "^2.2.0", "@redocly/openapi-cli": "^1.0.0-beta.81", + "@swc-node/register": "^1.4.2", + "@swc/cli": "~0.1.55", + "@swc/core": "^1.2.173", "@types/jest": "27.4.1", "@types/lodash": "^4.14.180", "@types/node": "18.6.3", @@ -99,6 +105,7 @@ "ibm-openapi-validator": "^0.55.0", "jest": "27.5.1", "jest-preset-angular": "11.1.2", + "jsonc-eslint-parser": "^2.1.0", "ng-packagr": "14.1.0", "nx": "14.5.4", "postcss": "^8.4.5", diff --git a/tsconfig.base.json b/tsconfig.base.json index ca1becf38b..5f020f9426 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -46,6 +46,7 @@ "libs/challenge-registry/user-profile/src/index.ts" ], "@sagebionetworks/challenge-registry/util": ["libs/challenge-registry/util/src/index.ts"], + "@sagebionetworks/nx-google-java-format": ["libs/nx-google-java-format/src/index.ts"], "@sagebionetworks/shared/data-access-user": ["libs/shared/data-access-user/src/index.ts"], "@sagebionetworks/shared/util": ["libs/shared/util/src/index.ts"], "@sagebionetworks/shared/web-components": ["libs/shared/web-components/src/index.ts"] diff --git a/workspace.json b/workspace.json index 445eb263a7..77acf2b13a 100644 --- a/workspace.json +++ b/workspace.json @@ -38,6 +38,8 @@ "challenge-registry-user-profile": "libs/challenge-registry/user-profile", "challenge-service-registry": "apps/challenge-service-registry", "challenge-user-service": "apps/challenge-user-service", + "nx-google-java-format": "libs/nx-google-java-format", + "nx-google-java-format-e2e": "apps/nx-google-java-format-e2e", "shared-assets": "libs/shared/assets", "shared-java-challenge-util": "libs/shared-java/challenge-util", "shared-styles": "libs/shared/styles", diff --git a/yarn.lock b/yarn.lock index eb4604bf86..c335bfe227 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4389,6 +4389,23 @@ __metadata: languageName: node linkType: hard +"@nrwl/nx-plugin@npm:14.5.4": + version: 14.5.4 + resolution: "@nrwl/nx-plugin@npm:14.5.4" + dependencies: + "@nrwl/devkit": 14.5.4 + "@nrwl/jest": 14.5.4 + "@nrwl/js": 14.5.4 + "@nrwl/linter": 14.5.4 + dotenv: ~10.0.0 + fs-extra: ^10.1.0 + rxjs: ^6.5.4 + semver: 7.3.4 + tslib: ^2.3.0 + checksum: bb7f426b897c9415685b81237c405bacafc45f5f18f19d7f2548409cd4bfb72d1e36709adfc4f9d90eb8fcd5cd627443e315b13f325b88b2c96f911e1fecdec5 + languageName: node + linkType: hard + "@nrwl/storybook@npm:14.5.4": version: 14.5.4 resolution: "@nrwl/storybook@npm:14.5.4" @@ -5478,6 +5495,237 @@ __metadata: languageName: node linkType: hard +"@swc-node/core@npm:^1.9.0": + version: 1.9.0 + resolution: "@swc-node/core@npm:1.9.0" + dependencies: + "@swc/core": ^1.2.172 + checksum: 6fb86ce83456443ecd1f5be423fcaa72a144dbc925b4db5a2213179be93c5bfb4d7d1572c05cd9052a2f06612285e1562ccb1f9f77a8c5829dfb46c0e3fa84a1 + languageName: node + linkType: hard + +"@swc-node/register@npm:^1.4.2": + version: 1.5.1 + resolution: "@swc-node/register@npm:1.5.1" + dependencies: + "@swc-node/core": ^1.9.0 + "@swc-node/sourcemap-support": ^0.2.0 + colorette: ^2.0.16 + debug: ^4.3.4 + pirates: ^4.0.5 + tslib: ^2.4.0 + peerDependencies: + typescript: ">= 4.3" + checksum: d4e4442e850bfd2416fcdf9b4a22afdcacde5bbb7c0ff21f5a3336ea3211c046805d7fadf8fbec1ab9f65b64eea07ef91cdc5d91792ba9c9045098bf8ba4c096 + languageName: node + linkType: hard + +"@swc-node/sourcemap-support@npm:^0.2.0": + version: 0.2.0 + resolution: "@swc-node/sourcemap-support@npm:0.2.0" + dependencies: + source-map-support: ^0.5.21 + checksum: b202ada28394f1b4127a98f3ad3cde9e46f0a3b1e9e80580c2ac7fd52d246b3bfe78dc8fc3e1ceb96bf4fc572687cc5d1cfc67ceb44aefb0fceaad40684d27c9 + languageName: node + linkType: hard + +"@swc/cli@npm:~0.1.55": + version: 0.1.57 + resolution: "@swc/cli@npm:0.1.57" + dependencies: + commander: ^7.1.0 + fast-glob: ^3.2.5 + slash: 3.0.0 + source-map: ^0.7.3 + peerDependencies: + "@swc/core": ^1.2.66 + chokidar: ^3.5.1 + peerDependenciesMeta: + chokidar: + optional: true + bin: + spack: bin/spack.js + swc: bin/swc.js + checksum: d19f02233f5ca18df9d5e9da1d0c847d47c81f4548d8465553b9c54b9ab0aca6ebc61b47f1eff085fe211aea0594e0c694bac3d5097f836fbfaa40d31d0a8dfd + languageName: node + linkType: hard + +"@swc/core-android-arm-eabi@npm:1.3.1": + version: 1.3.1 + resolution: "@swc/core-android-arm-eabi@npm:1.3.1" + dependencies: + "@swc/wasm": 1.2.122 + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@swc/core-android-arm64@npm:1.3.1": + version: 1.3.1 + resolution: "@swc/core-android-arm64@npm:1.3.1" + dependencies: + "@swc/wasm": 1.2.130 + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-darwin-arm64@npm:1.3.1": + version: 1.3.1 + resolution: "@swc/core-darwin-arm64@npm:1.3.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-darwin-x64@npm:1.3.1": + version: 1.3.1 + resolution: "@swc/core-darwin-x64@npm:1.3.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@swc/core-freebsd-x64@npm:1.3.1": + version: 1.3.1 + resolution: "@swc/core-freebsd-x64@npm:1.3.1" + dependencies: + "@swc/wasm": 1.2.130 + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@swc/core-linux-arm-gnueabihf@npm:1.3.1": + version: 1.3.1 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.1" + dependencies: + "@swc/wasm": 1.2.130 + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@swc/core-linux-arm64-gnu@npm:1.3.1": + version: 1.3.1 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-arm64-musl@npm:1.3.1": + version: 1.3.1 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@swc/core-linux-x64-gnu@npm:1.3.1": + version: 1.3.1 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-x64-musl@npm:1.3.1": + version: 1.3.1 + resolution: "@swc/core-linux-x64-musl@npm:1.3.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@swc/core-win32-arm64-msvc@npm:1.3.1": + version: 1.3.1 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.1" + dependencies: + "@swc/wasm": 1.2.130 + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@swc/core-win32-ia32-msvc@npm:1.3.1": + version: 1.3.1 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.1" + dependencies: + "@swc/wasm": 1.2.130 + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@swc/core-win32-x64-msvc@npm:1.3.1": + version: 1.3.1 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@swc/core@npm:^1.2.172, @swc/core@npm:^1.2.173": + version: 1.3.1 + resolution: "@swc/core@npm:1.3.1" + dependencies: + "@swc/core-android-arm-eabi": 1.3.1 + "@swc/core-android-arm64": 1.3.1 + "@swc/core-darwin-arm64": 1.3.1 + "@swc/core-darwin-x64": 1.3.1 + "@swc/core-freebsd-x64": 1.3.1 + "@swc/core-linux-arm-gnueabihf": 1.3.1 + "@swc/core-linux-arm64-gnu": 1.3.1 + "@swc/core-linux-arm64-musl": 1.3.1 + "@swc/core-linux-x64-gnu": 1.3.1 + "@swc/core-linux-x64-musl": 1.3.1 + "@swc/core-win32-arm64-msvc": 1.3.1 + "@swc/core-win32-ia32-msvc": 1.3.1 + "@swc/core-win32-x64-msvc": 1.3.1 + dependenciesMeta: + "@swc/core-android-arm-eabi": + optional: true + "@swc/core-android-arm64": + optional: true + "@swc/core-darwin-arm64": + optional: true + "@swc/core-darwin-x64": + optional: true + "@swc/core-freebsd-x64": + optional: true + "@swc/core-linux-arm-gnueabihf": + optional: true + "@swc/core-linux-arm64-gnu": + optional: true + "@swc/core-linux-arm64-musl": + optional: true + "@swc/core-linux-x64-gnu": + optional: true + "@swc/core-linux-x64-musl": + optional: true + "@swc/core-win32-arm64-msvc": + optional: true + "@swc/core-win32-ia32-msvc": + optional: true + "@swc/core-win32-x64-msvc": + optional: true + bin: + swcx: run_swcx.js + checksum: 68e0dcaf4dc8f5ad0e5d7181f3b095ca78afd8c9de5464fbf3c569eb371845beac35239e700da0c6ec1e09415a98c73fbba21ace278b21bc7aaa079e6544c73a + languageName: node + linkType: hard + +"@swc/helpers@npm:~0.3.3": + version: 0.3.17 + resolution: "@swc/helpers@npm:0.3.17" + dependencies: + tslib: ^2.4.0 + checksum: ce3a5146d738b707f0608bba731aa1fd0a8e3f75f140ff7281225d775a769f085f085e0293b570a9d201c76e09951af178c9222d8c706d4ed0d1c85b25f55cb6 + languageName: node + linkType: hard + +"@swc/wasm@npm:1.2.122": + version: 1.2.122 + resolution: "@swc/wasm@npm:1.2.122" + checksum: 563345370c5ad18373d3b403590ab880fe52dcd8fc8c8601be263fcd9886520b28a7f4e46236cf49ca2b136c79d4ef50c960bc34b7cdc2068118b0d84dfca1f4 + languageName: node + linkType: hard + +"@swc/wasm@npm:1.2.130": + version: 1.2.130 + resolution: "@swc/wasm@npm:1.2.130" + checksum: 02203bfef3e382c64cbbd63c138c8fdf61865e74d923b317e9d9e9f33f5a3f0a9533b5fdbc9505e76d78e864be04a82fc847eb987a1e47ccac5850146c858292 + languageName: node + linkType: hard + "@szmarczak/http-timer@npm:^1.1.2": version: 1.1.2 resolution: "@szmarczak/http-timer@npm:1.1.2" @@ -8218,12 +8466,14 @@ __metadata: "@nrwl/angular": 14.5.4 "@nrwl/cli": 14.5.4 "@nrwl/cypress": 14.5.4 + "@nrwl/devkit": 14.5.4 "@nrwl/eslint-plugin-nx": 14.5.4 "@nrwl/jest": 14.5.4 "@nrwl/js": 14.5.4 "@nrwl/linter": 14.5.4 "@nrwl/node": 14.5.4 "@nrwl/nx-cloud": 14.3.0 + "@nrwl/nx-plugin": 14.5.4 "@nrwl/web": 14.5.4 "@nrwl/workspace": 14.5.4 "@nx-tools/nx-docker": ^2.3.0 @@ -8231,6 +8481,10 @@ __metadata: "@openapitools/openapi-generator-cli": ^2.4.26 "@prettier/plugin-xml": ^2.2.0 "@redocly/openapi-cli": ^1.0.0-beta.81 + "@swc-node/register": ^1.4.2 + "@swc/cli": ~0.1.55 + "@swc/core": ^1.2.173 + "@swc/helpers": ~0.3.3 "@types/jest": 27.4.1 "@types/lodash": ^4.14.180 "@types/node": 18.6.3 @@ -8260,6 +8514,7 @@ __metadata: ibm-openapi-validator: ^0.55.0 jest: 27.5.1 jest-preset-angular: 11.1.2 + jsonc-eslint-parser: ^2.1.0 keycloak-angular: ^9.1.0 keycloak-js: ^18.0.0 lodash: ^4.17.21 @@ -8678,7 +8933,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^7.2.0": +"commander@npm:^7.1.0, commander@npm:^7.2.0": version: 7.2.0 resolution: "commander@npm:7.2.0" checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc @@ -11343,7 +11598,7 @@ __metadata: languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0": +"eslint-visitor-keys@npm:^3.0.0, eslint-visitor-keys@npm:^3.3.0": version: 3.3.0 resolution: "eslint-visitor-keys@npm:3.3.0" checksum: d59e68a7c5a6d0146526b0eec16ce87fbf97fe46b8281e0d41384224375c4e52f5ffb9e16d48f4ea50785cde93f766b0c898e31ab89978d88b0e1720fbfb7808 @@ -11395,7 +11650,7 @@ __metadata: languageName: node linkType: hard -"espree@npm:^9.3.2, espree@npm:^9.4.0": +"espree@npm:^9.0.0, espree@npm:^9.3.2, espree@npm:^9.4.0": version: 9.4.0 resolution: "espree@npm:9.4.0" dependencies: @@ -11726,6 +11981,19 @@ __metadata: languageName: node linkType: hard +"fast-glob@npm:^3.2.5": + version: 3.2.12 + resolution: "fast-glob@npm:3.2.12" + dependencies: + "@nodelib/fs.stat": ^2.0.2 + "@nodelib/fs.walk": ^1.2.3 + glob-parent: ^5.1.2 + merge2: ^1.3.0 + micromatch: ^4.0.4 + checksum: 0b1990f6ce831c7e28c4d505edcdaad8e27e88ab9fa65eedadb730438cfc7cde4910d6c975d6b7b8dc8a73da4773702ebcfcd6e3518e73938bb1383badfe01c2 + languageName: node + linkType: hard + "fast-json-stable-stringify@npm:2.x, fast-json-stable-stringify@npm:^2.0.0": version: 2.1.0 resolution: "fast-json-stable-stringify@npm:2.1.0" @@ -14879,6 +15147,18 @@ __metadata: languageName: node linkType: hard +"jsonc-eslint-parser@npm:^2.1.0": + version: 2.1.0 + resolution: "jsonc-eslint-parser@npm:2.1.0" + dependencies: + acorn: ^8.5.0 + eslint-visitor-keys: ^3.0.0 + espree: ^9.0.0 + semver: ^7.3.5 + checksum: 58a36c835a1d021a1cb91cf29f340420093443b91b307c09761ee00517cae2e4dc665436b3ef9caef6cc2feb768453087ce1bf2e8dfc2934067c9227ed69c6dc + languageName: node + linkType: hard + "jsonc-parser@npm:3.0.0": version: 3.0.0 resolution: "jsonc-parser@npm:3.0.0" @@ -17625,7 +17905,7 @@ __metadata: languageName: node linkType: hard -"pirates@npm:^4.0.4": +"pirates@npm:^4.0.4, pirates@npm:^4.0.5": version: 4.0.5 resolution: "pirates@npm:4.0.5" checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 @@ -20476,7 +20756,7 @@ __metadata: languageName: node linkType: hard -"slash@npm:^3.0.0": +"slash@npm:3.0.0, slash@npm:^3.0.0": version: 3.0.0 resolution: "slash@npm:3.0.0" checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c @@ -20665,7 +20945,7 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:0.5.21, source-map-support@npm:^0.5.5, source-map-support@npm:^0.5.6, source-map-support@npm:~0.5.20": +"source-map-support@npm:0.5.21, source-map-support@npm:^0.5.21, source-map-support@npm:^0.5.5, source-map-support@npm:^0.5.6, source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: From 08e5fb0cd3e1366bdccbf07191a761defc98c1f6 Mon Sep 17 00:00:00 2001 From: tschaffter Date: Sun, 18 Sep 2022 02:42:06 +0000 Subject: [PATCH 6/7] Remove nx-google-java-format --- apps/nx-google-java-format-e2e/jest.config.ts | 15 ---- apps/nx-google-java-format-e2e/project.json | 16 ---- .../tests/nx-google-java-format.spec.ts | 56 -------------- apps/nx-google-java-format-e2e/tsconfig.json | 10 --- .../tsconfig.spec.json | 9 --- libs/nx-google-java-format/.babelrc | 10 --- libs/nx-google-java-format/.eslintrc.json | 25 ------ libs/nx-google-java-format/.gitignore | 1 - libs/nx-google-java-format/README.md | 11 --- libs/nx-google-java-format/executors.json | 15 ---- libs/nx-google-java-format/generators.json | 12 --- libs/nx-google-java-format/jest.config.ts | 15 ---- libs/nx-google-java-format/package.json | 7 -- libs/nx-google-java-format/project.json | 60 --------------- .../src/executors/build/executor.spec.ts.off | 11 --- .../src/executors/build/executor.ts | 8 -- .../src/executors/build/schema.d.ts | 1 - .../src/executors/build/schema.json | 9 --- .../check-format/executor.spec.ts.off | 11 --- .../src/executors/check-format/executor.ts | 8 -- .../src/executors/check-format/schema.d.ts | 1 - .../src/executors/check-format/schema.json | 20 ----- .../files/src/index.ts__template__ | 1 - .../generator.spec.ts.off | 20 ----- .../nx-google-java-format/generator.ts | 77 ------------------- .../nx-google-java-format/schema.d.ts | 5 -- .../nx-google-java-format/schema.json | 29 ------- libs/nx-google-java-format/src/index.ts | 0 libs/nx-google-java-format/tsconfig.json | 16 ---- libs/nx-google-java-format/tsconfig.lib.json | 10 --- libs/nx-google-java-format/tsconfig.spec.json | 9 --- tsconfig.base.json | 1 - workspace.json | 2 - 33 files changed, 501 deletions(-) delete mode 100644 apps/nx-google-java-format-e2e/jest.config.ts delete mode 100644 apps/nx-google-java-format-e2e/project.json delete mode 100644 apps/nx-google-java-format-e2e/tests/nx-google-java-format.spec.ts delete mode 100644 apps/nx-google-java-format-e2e/tsconfig.json delete mode 100644 apps/nx-google-java-format-e2e/tsconfig.spec.json delete mode 100644 libs/nx-google-java-format/.babelrc delete mode 100644 libs/nx-google-java-format/.eslintrc.json delete mode 100644 libs/nx-google-java-format/.gitignore delete mode 100644 libs/nx-google-java-format/README.md delete mode 100644 libs/nx-google-java-format/executors.json delete mode 100644 libs/nx-google-java-format/generators.json delete mode 100644 libs/nx-google-java-format/jest.config.ts delete mode 100644 libs/nx-google-java-format/package.json delete mode 100644 libs/nx-google-java-format/project.json delete mode 100644 libs/nx-google-java-format/src/executors/build/executor.spec.ts.off delete mode 100644 libs/nx-google-java-format/src/executors/build/executor.ts delete mode 100644 libs/nx-google-java-format/src/executors/build/schema.d.ts delete mode 100644 libs/nx-google-java-format/src/executors/build/schema.json delete mode 100644 libs/nx-google-java-format/src/executors/check-format/executor.spec.ts.off delete mode 100644 libs/nx-google-java-format/src/executors/check-format/executor.ts delete mode 100644 libs/nx-google-java-format/src/executors/check-format/schema.d.ts delete mode 100644 libs/nx-google-java-format/src/executors/check-format/schema.json delete mode 100644 libs/nx-google-java-format/src/generators/nx-google-java-format/files/src/index.ts__template__ delete mode 100644 libs/nx-google-java-format/src/generators/nx-google-java-format/generator.spec.ts.off delete mode 100644 libs/nx-google-java-format/src/generators/nx-google-java-format/generator.ts delete mode 100644 libs/nx-google-java-format/src/generators/nx-google-java-format/schema.d.ts delete mode 100644 libs/nx-google-java-format/src/generators/nx-google-java-format/schema.json delete mode 100644 libs/nx-google-java-format/src/index.ts delete mode 100644 libs/nx-google-java-format/tsconfig.json delete mode 100644 libs/nx-google-java-format/tsconfig.lib.json delete mode 100644 libs/nx-google-java-format/tsconfig.spec.json diff --git a/apps/nx-google-java-format-e2e/jest.config.ts b/apps/nx-google-java-format-e2e/jest.config.ts deleted file mode 100644 index 47dc87e809..0000000000 --- a/apps/nx-google-java-format-e2e/jest.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* eslint-disable */ -export default { - displayName: 'nx-google-java-format-e2e', - preset: '../../jest.preset.js', - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.spec.json', - }, - }, - transform: { - '^.+\\.[tj]s$': 'ts-jest', - }, - moduleFileExtensions: ['ts', 'js', 'html'], - coverageDirectory: '../../coverage/apps/nx-google-java-format-e2e', -}; diff --git a/apps/nx-google-java-format-e2e/project.json b/apps/nx-google-java-format-e2e/project.json deleted file mode 100644 index 9ee749a273..0000000000 --- a/apps/nx-google-java-format-e2e/project.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "projectType": "application", - "sourceRoot": "apps/nx-google-java-format-e2e/src", - "targets": { - "e2e": { - "executor": "@nrwl/nx-plugin:e2e", - "options": { - "target": "nx-google-java-format:build", - "jestConfig": "apps/nx-google-java-format-e2e/jest.config.ts" - } - } - }, - "tags": [], - "implicitDependencies": ["nx-google-java-format"] -} diff --git a/apps/nx-google-java-format-e2e/tests/nx-google-java-format.spec.ts b/apps/nx-google-java-format-e2e/tests/nx-google-java-format.spec.ts deleted file mode 100644 index 5738fafe43..0000000000 --- a/apps/nx-google-java-format-e2e/tests/nx-google-java-format.spec.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { - checkFilesExist, - ensureNxProject, - readJson, - runNxCommandAsync, - uniq, -} from '@nrwl/nx-plugin/testing'; - -describe('nx-google-java-format e2e', () => { - // Setting up individual workspaces per - // test can cause e2e runs to take a long time. - // For this reason, we recommend each suite only - // consumes 1 workspace. The tests should each operate - // on a unique project in the workspace, such that they - // are not dependant on one another. - beforeAll(() => { - ensureNxProject('@sagebionetworks/nx-google-java-format', 'dist/libs/nx-google-java-format'); - }); - - afterAll(() => { - // `nx reset` kills the daemon, and performs - // some work which can help clean up e2e leftovers - runNxCommandAsync('reset'); - }); - - it('should create nx-google-java-format', async () => { - const project = uniq('nx-google-java-format'); - await runNxCommandAsync( - `generate @sagebionetworks/nx-google-java-format:nx-google-java-format ${project}` - ); - const result = await runNxCommandAsync(`build ${project}`); - expect(result.stdout).toContain('Executor ran'); - }, 120000); - - describe('--directory', () => { - it('should create src in the specified directory', async () => { - const project = uniq('nx-google-java-format'); - await runNxCommandAsync( - `generate @sagebionetworks/nx-google-java-format:nx-google-java-format ${project} --directory subdir` - ); - expect(() => checkFilesExist(`libs/subdir/${project}/src/index.ts`)).not.toThrow(); - }, 120000); - }); - - describe('--tags', () => { - it('should add tags to the project', async () => { - const projectName = uniq('nx-google-java-format'); - ensureNxProject('@sagebionetworks/nx-google-java-format', 'dist/libs/nx-google-java-format'); - await runNxCommandAsync( - `generate @sagebionetworks/nx-google-java-format:nx-google-java-format ${projectName} --tags e2etag,e2ePackage` - ); - const project = readJson(`libs/${projectName}/project.json`); - expect(project.tags).toEqual(['e2etag', 'e2ePackage']); - }, 120000); - }); -}); diff --git a/apps/nx-google-java-format-e2e/tsconfig.json b/apps/nx-google-java-format-e2e/tsconfig.json deleted file mode 100644 index b9c9d95376..0000000000 --- a/apps/nx-google-java-format-e2e/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/apps/nx-google-java-format-e2e/tsconfig.spec.json b/apps/nx-google-java-format-e2e/tsconfig.spec.json deleted file mode 100644 index 546f12877f..0000000000 --- a/apps/nx-google-java-format-e2e/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] -} diff --git a/libs/nx-google-java-format/.babelrc b/libs/nx-google-java-format/.babelrc deleted file mode 100644 index e24a5465f3..0000000000 --- a/libs/nx-google-java-format/.babelrc +++ /dev/null @@ -1,10 +0,0 @@ -{ - "presets": [ - [ - "@nrwl/web/babel", - { - "useBuiltIns": "usage" - } - ] - ] -} diff --git a/libs/nx-google-java-format/.eslintrc.json b/libs/nx-google-java-format/.eslintrc.json deleted file mode 100644 index 556554a795..0000000000 --- a/libs/nx-google-java-format/.eslintrc.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": ["../../.eslintrc.json"], - "ignorePatterns": ["!**/*"], - "overrides": [ - { - "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["*.ts", "*.tsx"], - "rules": {} - }, - { - "files": ["*.js", "*.jsx"], - "rules": {} - }, - { - "files": ["./package.json", "./generators.json", "./executors.json"], - "parser": "jsonc-eslint-parser", - "rules": { - "@nrwl/nx/nx-plugin-checks": "error" - } - } - ] -} diff --git a/libs/nx-google-java-format/.gitignore b/libs/nx-google-java-format/.gitignore deleted file mode 100644 index 6a7b8b92af..0000000000 --- a/libs/nx-google-java-format/.gitignore +++ /dev/null @@ -1 +0,0 @@ -!src/executors/build/ \ No newline at end of file diff --git a/libs/nx-google-java-format/README.md b/libs/nx-google-java-format/README.md deleted file mode 100644 index 955f7b9156..0000000000 --- a/libs/nx-google-java-format/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# nx-google-java-format - -This library was generated with [Nx](https://nx.dev). - -## Building - -Run `nx build nx-google-java-format` to build the library. - -## Running unit tests - -Run `nx test nx-google-java-format` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/nx-google-java-format/executors.json b/libs/nx-google-java-format/executors.json deleted file mode 100644 index 3660e06889..0000000000 --- a/libs/nx-google-java-format/executors.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "executors": { - "build": { - "implementation": "./src/executors/build/executor", - "schema": "./src/executors/build/schema.json", - "description": "build executor" - }, - "check-format": { - "implementation": "./src/executors/check-format/executor", - "schema": "./src/executors/check-format/schema.json", - "description": "check-format executor" - } - } -} diff --git a/libs/nx-google-java-format/generators.json b/libs/nx-google-java-format/generators.json deleted file mode 100644 index d3e68f4c65..0000000000 --- a/libs/nx-google-java-format/generators.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "name": "nx-google-java-format", - "version": "0.0.1", - "generators": { - "nx-google-java-format": { - "factory": "./src/generators/nx-google-java-format/generator", - "schema": "./src/generators/nx-google-java-format/schema.json", - "description": "nx-google-java-format generator" - } - } -} diff --git a/libs/nx-google-java-format/jest.config.ts b/libs/nx-google-java-format/jest.config.ts deleted file mode 100644 index d102c21b53..0000000000 --- a/libs/nx-google-java-format/jest.config.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* eslint-disable */ -export default { - displayName: 'nx-google-java-format', - preset: '../../jest.preset.js', - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.spec.json', - }, - }, - transform: { - '^.+\\.[tj]s$': 'ts-jest', - }, - moduleFileExtensions: ['ts', 'js', 'html'], - coverageDirectory: '../../coverage/libs/nx-google-java-format', -}; diff --git a/libs/nx-google-java-format/package.json b/libs/nx-google-java-format/package.json deleted file mode 100644 index dafe6878f3..0000000000 --- a/libs/nx-google-java-format/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "@sagebionetworks/nx-google-java-format", - "version": "0.0.1", - "main": "src/index.js", - "generators": "./generators.json", - "executors": "./executors.json" -} diff --git a/libs/nx-google-java-format/project.json b/libs/nx-google-java-format/project.json deleted file mode 100644 index 1491ec58f8..0000000000 --- a/libs/nx-google-java-format/project.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "libs/nx-google-java-format/src", - "projectType": "library", - "targets": { - "build": { - "executor": "@nrwl/js:tsc", - "outputs": ["{options.outputPath}"], - "options": { - "outputPath": "dist/libs/nx-google-java-format", - "main": "libs/nx-google-java-format/src/index.ts", - "tsConfig": "libs/nx-google-java-format/tsconfig.lib.json", - "assets": [ - "libs/nx-google-java-format/*.md", - { - "input": "./libs/nx-google-java-format/src", - "glob": "**/!(*.ts)", - "output": "./src" - }, - { - "input": "./libs/nx-google-java-format/src", - "glob": "**/*.d.ts", - "output": "./src" - }, - { - "input": "./libs/nx-google-java-format", - "glob": "generators.json", - "output": "." - }, - { - "input": "./libs/nx-google-java-format", - "glob": "executors.json", - "output": "." - } - ] - } - }, - "lint": { - "executor": "@nrwl/linter:eslint", - "outputs": ["{options.outputFile}"], - "options": { - "lintFilePatterns": [ - "libs/nx-google-java-format/**/*.ts", - "libs/nx-google-java-format/generators.json", - "libs/nx-google-java-format/executors.json", - "libs/nx-google-java-format/package.json" - ] - } - }, - "test": { - "executor": "@nrwl/jest:jest", - "outputs": ["coverage/libs/nx-google-java-format"], - "options": { - "jestConfig": "libs/nx-google-java-format/jest.config.ts", - "passWithNoTests": true - } - } - }, - "tags": [] -} diff --git a/libs/nx-google-java-format/src/executors/build/executor.spec.ts.off b/libs/nx-google-java-format/src/executors/build/executor.spec.ts.off deleted file mode 100644 index 32de13c6b7..0000000000 --- a/libs/nx-google-java-format/src/executors/build/executor.spec.ts.off +++ /dev/null @@ -1,11 +0,0 @@ -import { BuildExecutorSchema } from './schema'; -import executor from './executor'; - -const options: BuildExecutorSchema = {}; - -describe('Build Executor', () => { - it('can run', async () => { - const output = await executor(options); - expect(output.success).toBe(true); - }); -}); diff --git a/libs/nx-google-java-format/src/executors/build/executor.ts b/libs/nx-google-java-format/src/executors/build/executor.ts deleted file mode 100644 index 39569a7dbb..0000000000 --- a/libs/nx-google-java-format/src/executors/build/executor.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { BuildExecutorSchema } from './schema'; - -export default async function runExecutor(options: BuildExecutorSchema) { - console.log('Executor ran for Build', options); - return { - success: true, - }; -} diff --git a/libs/nx-google-java-format/src/executors/build/schema.d.ts b/libs/nx-google-java-format/src/executors/build/schema.d.ts deleted file mode 100644 index f8247abd51..0000000000 --- a/libs/nx-google-java-format/src/executors/build/schema.d.ts +++ /dev/null @@ -1 +0,0 @@ -export interface BuildExecutorSchema {} // eslint-disable-line diff --git a/libs/nx-google-java-format/src/executors/build/schema.json b/libs/nx-google-java-format/src/executors/build/schema.json deleted file mode 100644 index 54d8d22a82..0000000000 --- a/libs/nx-google-java-format/src/executors/build/schema.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "cli": "nx", - "title": "Build executor", - "description": "", - "type": "object", - "properties": {}, - "required": [] -} diff --git a/libs/nx-google-java-format/src/executors/check-format/executor.spec.ts.off b/libs/nx-google-java-format/src/executors/check-format/executor.spec.ts.off deleted file mode 100644 index e7ca0829a8..0000000000 --- a/libs/nx-google-java-format/src/executors/check-format/executor.spec.ts.off +++ /dev/null @@ -1,11 +0,0 @@ -import { CheckFormatExecutorSchema } from './schema'; -import executor from './executor'; - -const options: CheckFormatExecutorSchema = {}; - -describe('CheckFormat Executor', () => { - it('can run', async () => { - const output = await executor(options); - expect(output.success).toBe(true); - }); -}); diff --git a/libs/nx-google-java-format/src/executors/check-format/executor.ts b/libs/nx-google-java-format/src/executors/check-format/executor.ts deleted file mode 100644 index f4d8498165..0000000000 --- a/libs/nx-google-java-format/src/executors/check-format/executor.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { CheckFormatExecutorSchema } from './schema'; - -export default async function runExecutor(options: CheckFormatExecutorSchema) { - console.log('Executor ran for CheckFormat', options); - return { - success: true, - }; -} diff --git a/libs/nx-google-java-format/src/executors/check-format/schema.d.ts b/libs/nx-google-java-format/src/executors/check-format/schema.d.ts deleted file mode 100644 index dcafdaae0a..0000000000 --- a/libs/nx-google-java-format/src/executors/check-format/schema.d.ts +++ /dev/null @@ -1 +0,0 @@ -export interface CheckFormatExecutorSchema {} // eslint-disable-line diff --git a/libs/nx-google-java-format/src/executors/check-format/schema.json b/libs/nx-google-java-format/src/executors/check-format/schema.json deleted file mode 100644 index 6e180ca6e1..0000000000 --- a/libs/nx-google-java-format/src/executors/check-format/schema.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "cli": "nx", - "title": "Check Format executor", - "description": "Check that the project files are properly formatted", - "outputCapture": "pipe", - "type": "object", - "properties": { - "root": { - "description": "The project root", - "type": "string" - }, - "args": { - "description": "The argument to be passed to the underlying google-java-format command", - "type": "array", - "default": [] - } - }, - "required": [] -} diff --git a/libs/nx-google-java-format/src/generators/nx-google-java-format/files/src/index.ts__template__ b/libs/nx-google-java-format/src/generators/nx-google-java-format/files/src/index.ts__template__ deleted file mode 100644 index dde3cb697b..0000000000 --- a/libs/nx-google-java-format/src/generators/nx-google-java-format/files/src/index.ts__template__ +++ /dev/null @@ -1 +0,0 @@ -const variable = "<%= projectName %>"; \ No newline at end of file diff --git a/libs/nx-google-java-format/src/generators/nx-google-java-format/generator.spec.ts.off b/libs/nx-google-java-format/src/generators/nx-google-java-format/generator.spec.ts.off deleted file mode 100644 index 7ee261061e..0000000000 --- a/libs/nx-google-java-format/src/generators/nx-google-java-format/generator.spec.ts.off +++ /dev/null @@ -1,20 +0,0 @@ -import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; -import { Tree, readProjectConfiguration } from '@nrwl/devkit'; - -import generator from './generator'; -import { NxGoogleJavaFormatGeneratorSchema } from './schema'; - -describe('nx-google-java-format generator', () => { - let appTree: Tree; - const options: NxGoogleJavaFormatGeneratorSchema = { name: 'test' }; - - beforeEach(() => { - appTree = createTreeWithEmptyWorkspace(); - }); - - it('should run successfully', async () => { - await generator(appTree, options); - const config = readProjectConfiguration(appTree, 'test'); - expect(config).toBeDefined(); - }); -}); diff --git a/libs/nx-google-java-format/src/generators/nx-google-java-format/generator.ts b/libs/nx-google-java-format/src/generators/nx-google-java-format/generator.ts deleted file mode 100644 index c4de501ec8..0000000000 --- a/libs/nx-google-java-format/src/generators/nx-google-java-format/generator.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { - addProjectConfiguration, - formatFiles, - generateFiles, - getWorkspaceLayout, - names, - offsetFromRoot, - Tree, -} from '@nrwl/devkit'; -import * as path from 'path'; -import { NxGoogleJavaFormatGeneratorSchema } from './schema'; - -interface NormalizedSchema extends NxGoogleJavaFormatGeneratorSchema { - projectName: string; - projectRoot: string; - projectDirectory: string; - parsedTags: string[]; -} - -function normalizeOptions( - tree: Tree, - options: NxGoogleJavaFormatGeneratorSchema -): NormalizedSchema { - const name = names(options.name).fileName; - const projectDirectory = options.directory - ? `${names(options.directory).fileName}/${name}` - : name; - // eslint-disable-next-line prefer-regex-literals - const projectName = projectDirectory.replace(new RegExp('/', 'g'), '-'); - const projectRoot = `${getWorkspaceLayout(tree).libsDir}/${projectDirectory}`; - const parsedTags = options.tags - ? options.tags.split(',').map((s) => s.trim()) - : []; - - return { - ...options, - projectName, - projectRoot, - projectDirectory, - parsedTags, - }; -} - -function addFiles(tree: Tree, options: NormalizedSchema) { - const templateOptions = { - ...options, - ...names(options.name), - offsetFromRoot: offsetFromRoot(options.projectRoot), - template: '', - }; - generateFiles( - tree, - path.join(__dirname, 'files'), - options.projectRoot, - templateOptions - ); -} - -export default async function ( - tree: Tree, - options: NxGoogleJavaFormatGeneratorSchema -) { - const normalizedOptions = normalizeOptions(tree, options); - addProjectConfiguration(tree, normalizedOptions.projectName, { - root: normalizedOptions.projectRoot, - projectType: 'library', - sourceRoot: `${normalizedOptions.projectRoot}/src`, - targets: { - build: { - executor: '@sagebionetworks/nx-google-java-format:build', - }, - }, - tags: normalizedOptions.parsedTags, - }); - addFiles(tree, normalizedOptions); - await formatFiles(tree); -} diff --git a/libs/nx-google-java-format/src/generators/nx-google-java-format/schema.d.ts b/libs/nx-google-java-format/src/generators/nx-google-java-format/schema.d.ts deleted file mode 100644 index e9fb002e60..0000000000 --- a/libs/nx-google-java-format/src/generators/nx-google-java-format/schema.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface NxGoogleJavaFormatGeneratorSchema { - name: string; - tags?: string; - directory?: string; -} diff --git a/libs/nx-google-java-format/src/generators/nx-google-java-format/schema.json b/libs/nx-google-java-format/src/generators/nx-google-java-format/schema.json deleted file mode 100644 index 87e72d9612..0000000000 --- a/libs/nx-google-java-format/src/generators/nx-google-java-format/schema.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "$schema": "http://json-schema.org/schema", - "cli": "nx", - "$id": "NxGoogleJavaFormat", - "title": "", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "", - "$default": { - "$source": "argv", - "index": 0 - }, - "x-prompt": "What name would you like to use?" - }, - "tags": { - "type": "string", - "description": "Add tags to the project (used for linting)", - "alias": "t" - }, - "directory": { - "type": "string", - "description": "A directory where the project is placed", - "alias": "d" - } - }, - "required": ["name"] -} diff --git a/libs/nx-google-java-format/src/index.ts b/libs/nx-google-java-format/src/index.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/libs/nx-google-java-format/tsconfig.json b/libs/nx-google-java-format/tsconfig.json deleted file mode 100644 index 19b9eece4d..0000000000 --- a/libs/nx-google-java-format/tsconfig.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "module": "commonjs" - }, - "files": [], - "include": [], - "references": [ - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" - } - ] -} diff --git a/libs/nx-google-java-format/tsconfig.lib.json b/libs/nx-google-java-format/tsconfig.lib.json deleted file mode 100644 index e85ef50f65..0000000000 --- a/libs/nx-google-java-format/tsconfig.lib.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "declaration": true, - "types": [] - }, - "include": ["**/*.ts"], - "exclude": ["jest.config.ts", "**/*.spec.ts", "**/*.test.ts"] -} diff --git a/libs/nx-google-java-format/tsconfig.spec.json b/libs/nx-google-java-format/tsconfig.spec.json deleted file mode 100644 index 546f12877f..0000000000 --- a/libs/nx-google-java-format/tsconfig.spec.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "module": "commonjs", - "types": ["jest", "node"] - }, - "include": ["jest.config.ts", "**/*.test.ts", "**/*.spec.ts", "**/*.d.ts"] -} diff --git a/tsconfig.base.json b/tsconfig.base.json index 5f020f9426..ca1becf38b 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -46,7 +46,6 @@ "libs/challenge-registry/user-profile/src/index.ts" ], "@sagebionetworks/challenge-registry/util": ["libs/challenge-registry/util/src/index.ts"], - "@sagebionetworks/nx-google-java-format": ["libs/nx-google-java-format/src/index.ts"], "@sagebionetworks/shared/data-access-user": ["libs/shared/data-access-user/src/index.ts"], "@sagebionetworks/shared/util": ["libs/shared/util/src/index.ts"], "@sagebionetworks/shared/web-components": ["libs/shared/web-components/src/index.ts"] diff --git a/workspace.json b/workspace.json index 77acf2b13a..445eb263a7 100644 --- a/workspace.json +++ b/workspace.json @@ -38,8 +38,6 @@ "challenge-registry-user-profile": "libs/challenge-registry/user-profile", "challenge-service-registry": "apps/challenge-service-registry", "challenge-user-service": "apps/challenge-user-service", - "nx-google-java-format": "libs/nx-google-java-format", - "nx-google-java-format-e2e": "apps/nx-google-java-format-e2e", "shared-assets": "libs/shared/assets", "shared-java-challenge-util": "libs/shared-java/challenge-util", "shared-styles": "libs/shared/styles", From c9ff4ce99a5254d82a6a4cf336f158d7e49ed69b Mon Sep 17 00:00:00 2001 From: tschaffter Date: Sun, 18 Sep 2022 03:09:38 +0000 Subject: [PATCH 7/7] Add spotless and fix format of user service --- apps/challenge-user-service/build.gradle | 19 +++++++ apps/challenge-user-service/project.json | 8 ++- .../ChallengeUserServiceApplicationTests.java | 1 - .../UserRepositoryIntegrationTest.java | 11 ++-- .../CustomFeignClientConfiguration.java | 1 - .../CustomFeignErrorDecoder.java | 14 ++--- .../configuration/KeycloakManager.java | 17 ++++--- .../KeycloakManagerProperties.java | 3 +- .../configuration/OpenApiConfiguration.java | 19 +++++-- .../configuration/SecurityConfiguration.java | 13 +++-- .../challenge/controller/UserController.java | 15 ++---- .../challenge/model/dto/UserStatus.java | 5 +- .../challenge/model/entity/UserEntity.java | 2 + .../challenge/model/mapper/UserMapper.java | 2 +- .../model/repository/UserRepository.java | 3 +- .../model/rest/response/UserResponse.java | 2 +- .../service/KeycloakUserService.java | 22 ++++---- .../challenge/service/UserService.java | 48 ++++++++--------- .../service/rest/ChallengeCoreRestClient.java | 1 - .../controller/UserControllerTest.java | 21 ++------ .../challenge/service/UserServiceTest.java | 51 ++++++++++++------- nx.json | 15 ++++-- 22 files changed, 167 insertions(+), 126 deletions(-) diff --git a/apps/challenge-user-service/build.gradle b/apps/challenge-user-service/build.gradle index 1af6b09d23..d5b01f1a32 100644 --- a/apps/challenge-user-service/build.gradle +++ b/apps/challenge-user-service/build.gradle @@ -4,6 +4,7 @@ plugins { id 'jvm-test-suite' id 'org.springframework.boot' version '2.7.3' id 'org.springdoc.openapi-gradle-plugin' version '1.4.0' + id 'com.diffplug.spotless' version '6.8.0' } ext { @@ -106,3 +107,21 @@ openApi { outputDir.set(file("docs")) outputFileName.set("openapi.yaml") } + +spotless { + // format 'misc', { + // target '*.gradle', '*.md', '.gitignore' + + // trimTrailingWhitespace() + // indentWithSpaces(2) + // endWithNewline() + // } + + java { + target 'src/*/java/**/*.java' + + importOrder() + removeUnusedImports() + googleJavaFormat() + } +} diff --git a/apps/challenge-user-service/project.json b/apps/challenge-user-service/project.json index a5b42c5f1f..a5d87d8fc8 100644 --- a/apps/challenge-user-service/project.json +++ b/apps/challenge-user-service/project.json @@ -59,8 +59,14 @@ "root": "apps/challenge-user-service" } }, + "apply-format": { + "executor": "@nxrocks/nx-spring-boot:apply-format", + "options": { + "root": "apps/challenge-user-service" + } + }, "check-format": { - "executor": "@sagebionetworks/nx-google-java-format:check-format", + "executor": "@nxrocks/nx-spring-boot:check-format", "options": { "root": "apps/challenge-user-service" } diff --git a/apps/challenge-user-service/src/integrationTest/java/org/sagebionetworks/challenge/ChallengeUserServiceApplicationTests.java b/apps/challenge-user-service/src/integrationTest/java/org/sagebionetworks/challenge/ChallengeUserServiceApplicationTests.java index 2000c72d62..2dbc007ef0 100644 --- a/apps/challenge-user-service/src/integrationTest/java/org/sagebionetworks/challenge/ChallengeUserServiceApplicationTests.java +++ b/apps/challenge-user-service/src/integrationTest/java/org/sagebionetworks/challenge/ChallengeUserServiceApplicationTests.java @@ -8,5 +8,4 @@ class ChallengeUserServiceApplicationTests { @Test void contextLoads() {} - } diff --git a/apps/challenge-user-service/src/integrationTest/java/org/sagebionetworks/challenge/model/repository/UserRepositoryIntegrationTest.java b/apps/challenge-user-service/src/integrationTest/java/org/sagebionetworks/challenge/model/repository/UserRepositoryIntegrationTest.java index 2d132593a2..b1534384aa 100644 --- a/apps/challenge-user-service/src/integrationTest/java/org/sagebionetworks/challenge/model/repository/UserRepositoryIntegrationTest.java +++ b/apps/challenge-user-service/src/integrationTest/java/org/sagebionetworks/challenge/model/repository/UserRepositoryIntegrationTest.java @@ -14,11 +14,9 @@ @DataJpaTest public class UserRepositoryIntegrationTest { - @Autowired - private TestEntityManager entityManager; + @Autowired private TestEntityManager entityManager; - @Autowired - UserRepository repository; + @Autowired UserRepository repository; @Test public void shouldFindNoUsersIfRepositoryIsEmpty() { @@ -28,8 +26,9 @@ public void shouldFindNoUsersIfRepositoryIsEmpty() { @Test public void shouldStoreGivenUser() { - UserEntity user = repository - .save(new UserEntity("test", "1212f921-6ab0-444f-a5ea-9dc154199a3c", UserStatus.PENDING)); + UserEntity user = + repository.save( + new UserEntity("test", "1212f921-6ab0-444f-a5ea-9dc154199a3c", UserStatus.PENDING)); assertThat(user).hasFieldOrProperty("id"); assertThat(user).hasFieldOrPropertyWithValue("username", "test"); assertThat(user).hasFieldOrPropertyWithValue("authId", "1212f921-6ab0-444f-a5ea-9dc154199a3c"); diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/CustomFeignClientConfiguration.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/CustomFeignClientConfiguration.java index 17714c8a01..c9a0cfe11c 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/CustomFeignClientConfiguration.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/CustomFeignClientConfiguration.java @@ -12,5 +12,4 @@ public class CustomFeignClientConfiguration extends FeignClientProperties.FeignC public ErrorDecoder errorDecoder() { return new CustomFeignErrorDecoder(); } - } diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/CustomFeignErrorDecoder.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/CustomFeignErrorDecoder.java index 323328cbbd..0dd3463062 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/CustomFeignErrorDecoder.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/CustomFeignErrorDecoder.java @@ -4,13 +4,12 @@ import com.fasterxml.jackson.databind.ObjectMapper; import feign.Response; import feign.codec.ErrorDecoder; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.io.IOUtils; -import org.sagebionetworks.challenge.util.exception.SimpleChallengeGlobalException; - import java.io.IOException; import java.io.Reader; import java.nio.charset.StandardCharsets; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.IOUtils; +import org.sagebionetworks.challenge.util.exception.SimpleChallengeGlobalException; @Slf4j public class CustomFeignErrorDecoder implements ErrorDecoder { @@ -22,8 +21,10 @@ public Exception decode(String methodKey, Response response) { switch (response.status()) { case 400: - log.error("Error in request went through feign client {} ", - simpleChallengeGlobalException.getMessage() + " - " + log.error( + "Error in request went through feign client {} ", + simpleChallengeGlobalException.getMessage() + + " - " + simpleChallengeGlobalException.getCode()); return simpleChallengeGlobalException; case 401: @@ -36,7 +37,6 @@ public Exception decode(String methodKey, Response response) { log.error("Error in request went through feign client"); return new Exception("Common Feign Exception"); } - } private SimpleChallengeGlobalException extractChallengeCoreGlobalException(Response response) { diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/KeycloakManager.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/KeycloakManager.java index 592e56a077..effd748c7c 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/KeycloakManager.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/KeycloakManager.java @@ -1,18 +1,17 @@ package org.sagebionetworks.challenge.configuration; +import lombok.extern.slf4j.Slf4j; import org.keycloak.admin.client.Keycloak; import org.keycloak.admin.client.KeycloakBuilder; import org.keycloak.admin.client.resource.RealmResource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import lombok.extern.slf4j.Slf4j; @Slf4j @Component public class KeycloakManager { - @Autowired - private KeycloakManagerProperties keycloakProperties; + @Autowired private KeycloakManagerProperties keycloakProperties; private static Keycloak keycloakInstance = null; @@ -23,10 +22,14 @@ public RealmResource getKeycloakInstanceWithRealm() { public Keycloak getInstance() { if (keycloakInstance == null) { log.info("KC SERVER URL: {}", keycloakProperties.getServerUrl()); - keycloakInstance = KeycloakBuilder.builder().serverUrl(keycloakProperties.getServerUrl()) - .realm(keycloakProperties.getRealm()).grantType("client_credentials") - .clientId(keycloakProperties.getClientId()) - .clientSecret(keycloakProperties.getClientSecret()).build(); + keycloakInstance = + KeycloakBuilder.builder() + .serverUrl(keycloakProperties.getServerUrl()) + .realm(keycloakProperties.getRealm()) + .grantType("client_credentials") + .clientId(keycloakProperties.getClientId()) + .clientSecret(keycloakProperties.getClientSecret()) + .build(); } return keycloakInstance; } diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/KeycloakManagerProperties.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/KeycloakManagerProperties.java index d28d72074b..9bd4344836 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/KeycloakManagerProperties.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/KeycloakManagerProperties.java @@ -1,8 +1,8 @@ package org.sagebionetworks.challenge.configuration; +import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; -import lombok.Data; @Data @Configuration @@ -13,5 +13,4 @@ public class KeycloakManagerProperties { private String realm; private String clientId; private String clientSecret; - } diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/OpenApiConfiguration.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/OpenApiConfiguration.java index 097e631269..46a358bb9e 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/OpenApiConfiguration.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/OpenApiConfiguration.java @@ -12,10 +12,19 @@ public class OpenApiConfiguration { @Bean public OpenAPI openApi() { - return new OpenAPI().info(new Info().title("User API") - .description("This is the User Service of the Challenge Registry.").version("v1.0") - .contact(new Contact().name("This is the User ").url("https://challenge-registry.org")) - .termsOfService("TOC").license(new License().name("Apache 2.0") - .url("https://github.com/Sage-Bionetworks/challenge-registry/blob/main/LICENSE.txt"))); + return new OpenAPI() + .info( + new Info() + .title("User API") + .description("This is the User Service of the Challenge Registry.") + .version("v1.0") + .contact( + new Contact().name("This is the User ").url("https://challenge-registry.org")) + .termsOfService("TOC") + .license( + new License() + .name("Apache 2.0") + .url( + "https://github.com/Sage-Bionetworks/challenge-registry/blob/main/LICENSE.txt"))); } } diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/SecurityConfiguration.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/SecurityConfiguration.java index 9acead1d6e..b7ad4e4d87 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/SecurityConfiguration.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/configuration/SecurityConfiguration.java @@ -3,9 +3,6 @@ import org.keycloak.adapters.springsecurity.KeycloakConfiguration; import org.keycloak.adapters.springsecurity.authentication.KeycloakAuthenticationProvider; import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter; -// import org.keycloak.adapters.springsecurity.filter.KeycloakAuthenticationProcessingFilter; -// import org.sagebionetworks.challenge.exception.CustomKeycloakAuthenticationHandler; -// import org.sagebionetworks.challenge.exception.RestAccessDeniedHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; @@ -29,9 +26,15 @@ class SecurityConfiguration extends KeycloakWebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { super.configure(http); - http.csrf().disable().cors().disable().authorizeRequests() + http.csrf() + .disable() + .cors() + .disable() + .authorizeRequests() .antMatchers("/api/v1/users/register", "/api/v1/api-docs/**", "/v3/**", "/api/v1/**") - .permitAll().anyRequest().authenticated(); + .permitAll() + .anyRequest() + .authenticated(); // Custom error handler // http.exceptionHandling().accessDeniedHandler(restAccessDeniedHandler); diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/controller/UserController.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/controller/UserController.java index 91cb5bd323..3e5d989280 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/controller/UserController.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/controller/UserController.java @@ -1,26 +1,22 @@ package org.sagebionetworks.challenge.controller; +import java.util.List; +import lombok.extern.slf4j.Slf4j; import org.sagebionetworks.challenge.model.dto.User; import org.sagebionetworks.challenge.model.dto.UserUpdateRequest; import org.sagebionetworks.challenge.service.UserService; import org.springdoc.api.annotations.ParameterObject; - -import lombok.extern.slf4j.Slf4j; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.util.List; -// import javax.annotation.security.RolesAllowed; @Slf4j @RestController @RequestMapping(value = "/api/v1/users") public class UserController { - @Autowired - UserService userService; + @Autowired UserService userService; @PostMapping(value = "/register") public ResponseEntity createUser(@RequestBody User request) { @@ -30,8 +26,8 @@ public ResponseEntity createUser(@RequestBody User request) { } @PatchMapping(value = "/{id}") - public ResponseEntity updateUser(@PathVariable("id") Long userId, - @RequestBody UserUpdateRequest userUpdateRequest) { + public ResponseEntity updateUser( + @PathVariable("id") Long userId, @RequestBody UserUpdateRequest userUpdateRequest) { log.info("Update the user with {}", userUpdateRequest.toString()); return ResponseEntity.ok(userService.updateUser(userId, userUpdateRequest)); // return ResponseEntity.ok(null); @@ -51,5 +47,4 @@ public ResponseEntity getUser(@PathVariable("id") Long id) { return ResponseEntity.ok(userService.getUser(id)); // return ResponseEntity.ok(null); } - } diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/dto/UserStatus.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/dto/UserStatus.java index 1a31d41299..3aab17c222 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/dto/UserStatus.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/dto/UserStatus.java @@ -1,5 +1,8 @@ package org.sagebionetworks.challenge.model.dto; public enum UserStatus { - PENDING, APPROVED, DISABLED, BLACKLIST + PENDING, + APPROVED, + DISABLED, + BLACKLIST } diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/entity/UserEntity.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/entity/UserEntity.java index c8383036f2..d2c08a3fb1 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/entity/UserEntity.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/entity/UserEntity.java @@ -21,8 +21,10 @@ public class UserEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + private String username; private String authId; + @Enumerated(EnumType.STRING) private UserStatus status; diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/mapper/UserMapper.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/mapper/UserMapper.java index e3a1c441b8..bd125d942e 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/mapper/UserMapper.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/mapper/UserMapper.java @@ -1,8 +1,8 @@ package org.sagebionetworks.challenge.model.mapper; -import org.sagebionetworks.challenge.util.model.mapper.BaseMapper; import org.sagebionetworks.challenge.model.dto.User; import org.sagebionetworks.challenge.model.entity.UserEntity; +import org.sagebionetworks.challenge.util.model.mapper.BaseMapper; import org.springframework.beans.BeanUtils; public class UserMapper extends BaseMapper { diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/repository/UserRepository.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/repository/UserRepository.java index c1e95eec77..abdc24355d 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/repository/UserRepository.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/repository/UserRepository.java @@ -3,5 +3,4 @@ import org.sagebionetworks.challenge.model.entity.UserEntity; import org.springframework.data.jpa.repository.JpaRepository; -public interface UserRepository extends JpaRepository { -} +public interface UserRepository extends JpaRepository {} diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/rest/response/UserResponse.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/rest/response/UserResponse.java index babb60d551..e4ffdff28b 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/rest/response/UserResponse.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/model/rest/response/UserResponse.java @@ -1,8 +1,8 @@ package org.sagebionetworks.challenge.model.rest.response; +import java.util.List; import lombok.Getter; import lombok.Setter; -import java.util.List; @Getter @Setter diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/service/KeycloakUserService.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/service/KeycloakUserService.java index 6a5c3208ac..4f2962855c 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/service/KeycloakUserService.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/service/KeycloakUserService.java @@ -1,28 +1,29 @@ package org.sagebionetworks.challenge.service; -import org.sagebionetworks.challenge.configuration.KeycloakManager; - +import java.util.Optional; +import javax.ws.rs.core.Response; import org.keycloak.admin.client.resource.UserResource; import org.keycloak.representations.idm.UserRepresentation; +import org.sagebionetworks.challenge.configuration.KeycloakManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import javax.ws.rs.core.Response; -import java.util.Optional; - @Service public class KeycloakUserService { - @Autowired - private KeycloakManager keycloakManager; + @Autowired private KeycloakManager keycloakManager; public Integer createUser(UserRepresentation userRepresentation) { - Response response = keycloakManager.getKeycloakInstanceWithRealm().users().create(userRepresentation); + Response response = + keycloakManager.getKeycloakInstanceWithRealm().users().create(userRepresentation); return response.getStatus(); } public void updateUser(UserRepresentation userRepresentation) { - keycloakManager.getKeycloakInstanceWithRealm().users().get(userRepresentation.getId()) + keycloakManager + .getKeycloakInstanceWithRealm() + .users() + .get(userRepresentation.getId()) .update(userRepresentation); } @@ -34,7 +35,8 @@ public Optional getUserByUsername(String username) { public UserRepresentation getUser(String authId) { try { - UserResource userResource = keycloakManager.getKeycloakInstanceWithRealm().users().get(authId); + UserResource userResource = + keycloakManager.getKeycloakInstanceWithRealm().users().get(authId); return userResource.toRepresentation(); } catch (Exception e) { throw new RuntimeException("User not found under given ID"); diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/service/UserService.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/service/UserService.java index 7bc20f9c49..1c4a364927 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/service/UserService.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/service/UserService.java @@ -1,45 +1,41 @@ package org.sagebionetworks.challenge.service; -import org.sagebionetworks.challenge.model.dto.UserStatus; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import javax.persistence.EntityNotFoundException; +import lombok.extern.slf4j.Slf4j; +import org.keycloak.representations.idm.CredentialRepresentation; +import org.keycloak.representations.idm.UserRepresentation; import org.sagebionetworks.challenge.exception.GlobalErrorCode; import org.sagebionetworks.challenge.exception.InvalidUserException; import org.sagebionetworks.challenge.exception.UserAlreadyRegisteredException; import org.sagebionetworks.challenge.model.dto.User; +import org.sagebionetworks.challenge.model.dto.UserStatus; import org.sagebionetworks.challenge.model.dto.UserUpdateRequest; import org.sagebionetworks.challenge.model.entity.UserEntity; import org.sagebionetworks.challenge.model.mapper.UserMapper; import org.sagebionetworks.challenge.model.repository.UserRepository; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.keycloak.representations.idm.CredentialRepresentation; -import org.keycloak.representations.idm.UserRepresentation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import javax.persistence.EntityNotFoundException; -import java.util.Collections; -import java.util.List; -import java.util.Optional; - @Slf4j // @RequiredArgsConstructor @Service public class UserService { - @Autowired - private KeycloakUserService keycloakUserService; + @Autowired private KeycloakUserService keycloakUserService; - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; private UserMapper userMapper = new UserMapper(); public User createUser(User user) { if (keycloakUserService.getUserByUsername(user.getUsername()).isPresent()) { - throw new UserAlreadyRegisteredException("This username is already registered.", - GlobalErrorCode.ERROR_USERNAME_REGISTERED); + throw new UserAlreadyRegisteredException( + "This username is already registered.", GlobalErrorCode.ERROR_USERNAME_REGISTERED); } UserRepresentation userRepresentation = new UserRepresentation(); @@ -64,24 +60,25 @@ public User createUser(User user) { return userMapper.convertToDto(userEntity); } - throw new InvalidUserException("Unable to create the new user", - GlobalErrorCode.ERROR_INVALID_USER); + throw new InvalidUserException( + "Unable to create the new user", GlobalErrorCode.ERROR_INVALID_USER); } public List listUsers(Pageable pageable) { Page allUsersInDb = userRepository.findAll(pageable); List users = userMapper.convertToDtoList(allUsersInDb.getContent()); - users.forEach(user -> { - UserRepresentation userRepresentation = keycloakUserService.getUser(user.getAuthId()); - user.setId(user.getId()); - user.setEmail(userRepresentation.getEmail()); - }); + users.forEach( + user -> { + UserRepresentation userRepresentation = keycloakUserService.getUser(user.getAuthId()); + user.setId(user.getId()); + user.setEmail(userRepresentation.getEmail()); + }); return users; } public User getUser(Long userId) { - return userMapper - .convertToDto(userRepository.findById(userId).orElseThrow(EntityNotFoundException::new)); + return userMapper.convertToDto( + userRepository.findById(userId).orElseThrow(EntityNotFoundException::new)); } public User updateUser(Long id, UserUpdateRequest userUpdateRequest) { @@ -97,5 +94,4 @@ public User updateUser(Long id, UserUpdateRequest userUpdateRequest) { userEntity.setStatus(userUpdateRequest.getStatus()); return userMapper.convertToDto(userRepository.save(userEntity)); } - } diff --git a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/service/rest/ChallengeCoreRestClient.java b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/service/rest/ChallengeCoreRestClient.java index 169b0564fd..bfea7a54d3 100644 --- a/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/service/rest/ChallengeCoreRestClient.java +++ b/apps/challenge-user-service/src/main/java/org/sagebionetworks/challenge/service/rest/ChallengeCoreRestClient.java @@ -12,5 +12,4 @@ public interface ChallengeCoreRestClient { @RequestMapping(method = RequestMethod.GET, value = "/api/v1/user/{identification}") UserResponse readUser(@PathVariable("identification") String identification); - } diff --git a/apps/challenge-user-service/src/test/java/org/sagebionetworks/challenge/controller/UserControllerTest.java b/apps/challenge-user-service/src/test/java/org/sagebionetworks/challenge/controller/UserControllerTest.java index 1019bd1fdb..dffdc1ac7b 100644 --- a/apps/challenge-user-service/src/test/java/org/sagebionetworks/challenge/controller/UserControllerTest.java +++ b/apps/challenge-user-service/src/test/java/org/sagebionetworks/challenge/controller/UserControllerTest.java @@ -1,24 +1,15 @@ package org.sagebionetworks.challenge.controller; -import static org.junit.jupiter.api.Assumptions.assumeTrue; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; - import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.mockito.Mockito; -import org.sagebionetworks.challenge.model.dto.User; import org.sagebionetworks.challenge.model.repository.UserRepository; import org.sagebionetworks.challenge.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; -import org.springframework.http.MediaType; -import org.springframework.test.context.ActiveProfiles; import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; // import lombok.extern.slf4j.Slf4j; // @Slf4j @@ -26,17 +17,13 @@ @AutoConfigureMockMvc public class UserControllerTest { - @Autowired - private MockMvc mockMvc; + @Autowired private MockMvc mockMvc; - @Autowired - private ObjectMapper objectMapper; + @Autowired private ObjectMapper objectMapper; - @Autowired - private UserRepository userRepository; + @Autowired private UserRepository userRepository; - @MockBean - private UserService userService; + @MockBean private UserService userService; // private UserMapper userMapper = new UserMapper(); diff --git a/apps/challenge-user-service/src/test/java/org/sagebionetworks/challenge/service/UserServiceTest.java b/apps/challenge-user-service/src/test/java/org/sagebionetworks/challenge/service/UserServiceTest.java index b0525599db..e1e74fccab 100644 --- a/apps/challenge-user-service/src/test/java/org/sagebionetworks/challenge/service/UserServiceTest.java +++ b/apps/challenge-user-service/src/test/java/org/sagebionetworks/challenge/service/UserServiceTest.java @@ -6,7 +6,6 @@ import static org.mockito.Mockito.when; import java.util.List; -// import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.keycloak.representations.idm.UserRepresentation; @@ -27,14 +26,11 @@ @SpringBootTest public class UserServiceTest { - @Autowired - private UserService userService; + @Autowired private UserService userService; - @MockBean - private UserRepository userRepository; + @MockBean private UserRepository userRepository; - @MockBean - private KeycloakUserService keycloakUserService; + @MockBean private KeycloakUserService keycloakUserService; private User user; private UserMapper userMapper = new UserMapper(); @@ -44,8 +40,15 @@ public class UserServiceTest { @BeforeEach public void setup() { - user = User.builder().id(1L).username("test").email("test@gmail.com").password("changeme") - .authId("1").status(UserStatus.PENDING).build(); + user = + User.builder() + .id(1L) + .username("test") + .email("test@gmail.com") + .password("changeme") + .authId("1") + .status(UserStatus.PENDING) + .build(); } @Test @@ -56,21 +59,31 @@ public void test() { @Test void givenUserList_whenGetAllUsers_thenReturnUserList() { // given - User user2 = User.builder().id(2L).username("test2").email("test2@gmail.com") - .password("changeme").authId("2").status(UserStatus.PENDING).build(); + User user2 = + User.builder() + .id(2L) + .username("test2") + .email("test2@gmail.com") + .password("changeme") + .authId("2") + .status(UserStatus.PENDING) + .build(); List givenUsers = List.of(user, user2); List givenUserList = List.of(userMapper.convertToEntity(user), userMapper.convertToEntity(user2)); Page userPage = new PageImpl<>(givenUserList); when(userRepository.findAll(isA(Pageable.class))).thenReturn(userPage); - when(keycloakUserService.getUser(anyString())).thenAnswer(input -> { - String authId = input.getArgument(0); - User user = givenUsers.stream().filter(u -> authId.equals(u.getAuthId())).findFirst().get(); - UserRepresentation representation = new UserRepresentation(); - representation.setId(user.getId().toString()); - representation.setEmail(user.getEmail()); - return representation; - }); + when(keycloakUserService.getUser(anyString())) + .thenAnswer( + input -> { + String authId = input.getArgument(0); + User user = + givenUsers.stream().filter(u -> authId.equals(u.getAuthId())).findFirst().get(); + UserRepresentation representation = new UserRepresentation(); + representation.setId(user.getId().toString()); + representation.setEmail(user.getEmail()); + return representation; + }); // when List users = userService.listUsers(Pageable.unpaged()); diff --git a/nx.json b/nx.json index c76717a78e..08c7e07cb2 100644 --- a/nx.json +++ b/nx.json @@ -14,7 +14,12 @@ "default": { "runner": "@nrwl/nx-cloud", "options": { - "cacheableOperations": ["build", "test", "lint", "e2e"], + "cacheableOperations": [ + "build", + "test", + "lint", + "e2e" + ], "canTrackAnalytics": false, "showUsageWarnings": true, "scan": true @@ -37,11 +42,15 @@ } }, "defaultProject": "challenge-registry", - "plugins": ["@nxrocks/nx-spring-boot"], + "plugins": [ + "@nxrocks/nx-spring-boot" + ], "$schema": "./node_modules/nx/schemas/nx-schema.json", "targetDefaults": { "build": { - "dependsOn": ["^build"] + "dependsOn": [ + "^build" + ] } } }