Browse Source

add generate-proxy with nx

pull/16711/head
Mahmut Gundogdu 3 years ago
parent
commit
0d713f65bd
  1. 25
      npm/ng-packs/packages/generators/.eslintrc.json
  2. 11
      npm/ng-packs/packages/generators/README.md
  3. 10
      npm/ng-packs/packages/generators/jest.config.ts
  4. 66
      npm/ng-packs/packages/generators/project.json
  5. 15
      npm/ng-packs/packages/generators/src/generators/generate-proxy/generator.ts
  6. 9
      npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.d.ts
  7. 94
      npm/ng-packs/packages/generators/src/generators/generate-proxy/schema.json
  8. 16
      npm/ng-packs/packages/generators/tsconfig.json
  9. 10
      npm/ng-packs/packages/generators/tsconfig.lib.json
  10. 9
      npm/ng-packs/packages/generators/tsconfig.spec.json

25
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"
}
}
]
}

11
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).

10
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: '<rootDir>/tsconfig.spec.json' }],
},
moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: '../../coverage/packages/generators',
};

66
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": []
}

15
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}`);
};
}

9
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;
}

94
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": []
}

16
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"
}
]
}

10
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"]
}

9
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"]
}
Loading…
Cancel
Save