diff --git a/npm/ng-packs/packages/generators/.eslintrc.json b/npm/ng-packs/packages/generators/.eslintrc.json new file mode 100644 index 0000000000..99664e583f --- /dev/null +++ b/npm/ng-packs/packages/generators/.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"], + "parser": "jsonc-eslint-parser", + "rules": { + "@nx/nx-plugin-checks": "error" + } + } + ] +} diff --git a/npm/ng-packs/packages/generators/README.md b/npm/ng-packs/packages/generators/README.md new file mode 100644 index 0000000000..7d8e5b9edf --- /dev/null +++ b/npm/ng-packs/packages/generators/README.md @@ -0,0 +1,11 @@ +# generators + +This library was generated with [Nx](https://nx.dev). + +## Building + +Run `nx build generators` to build the library. + +## Running unit tests + +Run `nx test generators` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/npm/ng-packs/packages/generators/jest.config.ts b/npm/ng-packs/packages/generators/jest.config.ts new file mode 100644 index 0000000000..c14fb75a03 --- /dev/null +++ b/npm/ng-packs/packages/generators/jest.config.ts @@ -0,0 +1,10 @@ +/* eslint-disable */ +export default { + displayName: 'generators', + preset: '../../jest.preset.js', + transform: { + '^.+\\.[tj]s$': ['ts-jest', { tsconfig: '/tsconfig.spec.json' }], + }, + moduleFileExtensions: ['ts', 'js', 'html'], + coverageDirectory: '../../coverage/packages/generators', +}; diff --git a/npm/ng-packs/packages/generators/project.json b/npm/ng-packs/packages/generators/project.json new file mode 100644 index 0000000000..505cd53111 --- /dev/null +++ b/npm/ng-packs/packages/generators/project.json @@ -0,0 +1,66 @@ +{ + "name": "generators", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "packages/generators/src", + "projectType": "library", + "targets": { + "build": { + "executor": "@nx/js:tsc", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/packages/generators", + "main": "packages/generators/src/index.ts", + "tsConfig": "packages/generators/tsconfig.lib.json", + "assets": [ + "packages/generators/*.md", + { + "input": "./packages/generators/src", + "glob": "**/!(*.ts)", + "output": "./src" + }, + { + "input": "./packages/generators/src", + "glob": "**/*.d.ts", + "output": "./src" + }, + { + "input": "./packages/generators", + "glob": "generators.json", + "output": "." + }, + { + "input": "./packages/generators", + "glob": "executors.json", + "output": "." + } + ] + } + }, + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": [ + "packages/generators/**/*.ts", + "packages/generators/package.json", + "packages/generators/generators.json" + ] + } + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "packages/generators/jest.config.ts", + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + } + }, + "tags": [] +} diff --git a/npm/ng-packs/packages/generators/src/generators/generate-proxy/generator.ts b/npm/ng-packs/packages/generators/src/generators/generate-proxy/generator.ts new file mode 100644 index 0000000000..a12a59a82a --- /dev/null +++ b/npm/ng-packs/packages/generators/src/generators/generate-proxy/generator.ts @@ -0,0 +1,15 @@ +import { GenerateProxyGeneratorSchema } from './schema'; +import { Tree } from '@nrwl/devkit'; +import { wrapAngularDevkitSchematic } from '@nx/devkit/ngcli-adapter'; + +export default async function (host: Tree, schema: GenerateProxyGeneratorSchema) { + const runAngularLibrarySchematic = wrapAngularDevkitSchematic('@abp/ng.schematics', 'proxy-add'); + + await runAngularLibrarySchematic(host, { + ...schema, + }); + + return () => { + console.log(`proxy added '${schema.target}`); + }; +} diff --git a/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.d.ts b/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.d.ts new file mode 100644 index 0000000000..cbc2924c78 --- /dev/null +++ b/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.d.ts @@ -0,0 +1,9 @@ +export interface GenerateProxyGeneratorSchema { + module: string; + apiName: string; + source: string; + target: string; + url: string; + serviceType: string; + entryPoint: string; +} diff --git a/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.json b/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.json new file mode 100644 index 0000000000..51f3916848 --- /dev/null +++ b/npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.json @@ -0,0 +1,94 @@ +{ + "$schema": "https://json-schema.org/schema", + "$id": "GenerateProxy", + "title": "", + "type": "object", + "properties": { + "module": { + "description": "Backend module name", + "type": "string", + "$default": { + "$source": "argv", + "index": 0 + }, + "x-prompt": "Please enter backend module name. (default: \"app\")" + }, + "apiName": { + "description": "Backend api name, a.k.a. remoteServiceName", + "type": "string", + "$default": { + "$source": "argv", + "index": 1 + }, + "x-prompt": "Please enter backend api name, a.k.a. remoteServiceName. (default: \"default\")" + }, + "source": { + "description": "Source Angular project for API definition URL & root namespace resolution", + "type": "string", + "$default": { + "$source": "argv", + "index": 2 + }, + "x-prompt": "Please enter source Angular project for API definition URL & root namespace resolution. (default: workspace \"defaultProject\")" + }, + "target": { + "description": "Target Angular project to place the generated code", + "type": "string", + "$default": { + "$source": "argv", + "index": 3 + }, + "x-prompt": "Please enter target Angular project to place the generated code. (default: workspace \"defaultProject\")" + }, + "url": { + "description": "Url for API definition", + "type": "string", + "$default": { + "$source": "argv", + "index": 4 + }, + "x-prompt": "Please enter URL for API definition (default: API Name's url in environment file)" + }, + "serviceType": { + "description": "Service type to the generated code", + "type": "string", + "$default": { + "$source": "argv", + "index": 5 + }, + "enum": [ + "application", + "integration", + "all" + ], + "x-prompt": { + "message": "Specifies the service type to generate. `application`, `integration` and `all`, Default value: `application`", + "type": "list", + "items": [ + { + "value": "all", + "label": "All" + }, + { + "value": "application", + "label": "Application" + }, + { + "value": "integration", + "label": "Integration" + } + ] + } + }, + "entryPoint": { + "description": "Target Angular project to place the generated code", + "type": "string", + "$default": { + "$source": "argv", + "index": 6 + }, + "x-prompt": "Please enter target entry point to place the generated code. (default: null)" + } + }, + "required": [] +} diff --git a/npm/ng-packs/packages/generators/tsconfig.json b/npm/ng-packs/packages/generators/tsconfig.json new file mode 100644 index 0000000000..19b9eece4d --- /dev/null +++ b/npm/ng-packs/packages/generators/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/npm/ng-packs/packages/generators/tsconfig.lib.json b/npm/ng-packs/packages/generators/tsconfig.lib.json new file mode 100644 index 0000000000..33eca2c2cd --- /dev/null +++ b/npm/ng-packs/packages/generators/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/npm/ng-packs/packages/generators/tsconfig.spec.json b/npm/ng-packs/packages/generators/tsconfig.spec.json new file mode 100644 index 0000000000..f6d8ffcc9f --- /dev/null +++ b/npm/ng-packs/packages/generators/tsconfig.spec.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "include": ["jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts", "src/**/*.d.ts"] +}