@ronas-it/nx-generators 0.6.1 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -0
- package/generators.json +5 -0
- package/package.json +2 -1
- package/src/generators/entity-api/files/api.ts.template +15 -0
- package/src/generators/entity-api/files/config.ts.template +4 -0
- package/src/generators/entity-api/files/index.ts.template +3 -0
- package/src/generators/entity-api/files/models/entity-request.ts.template +8 -0
- package/src/generators/entity-api/files/models/entity.ts.template +8 -0
- package/src/generators/entity-api/files/models/index.ts.template +3 -0
- package/src/generators/entity-api/files/models/pagination-request.ts.template +8 -0
- package/src/generators/entity-api/generator.d.ts +4 -0
- package/src/generators/entity-api/generator.js +90 -0
- package/src/generators/entity-api/generator.js.map +1 -0
- package/src/generators/entity-api/schema.d.ts +4 -0
- package/src/generators/entity-api/schema.json +18 -0
- package/src/generators/react-component/generator.js +1 -2
- package/src/generators/react-component/generator.js.map +1 -1
- package/src/shared/utils/cli-utils.d.ts +5 -1
- package/src/shared/utils/cli-utils.js +24 -4
- package/src/shared/utils/cli-utils.js.map +1 -1
- package/src/shared/utils/dynamic-import.d.ts +1 -0
- package/src/shared/utils/dynamic-import.js +5 -0
- package/src/shared/utils/dynamic-import.js.map +1 -0
- package/src/shared/utils/index.d.ts +1 -0
- package/src/shared/utils/index.js +1 -0
- package/src/shared/utils/index.js.map +1 -1
package/README.md
CHANGED
|
@@ -148,6 +148,22 @@ or
|
|
|
148
148
|
npx nx g react-component AppButton --subcomponent
|
|
149
149
|
```
|
|
150
150
|
|
|
151
|
+
### 7. `entity-api`
|
|
152
|
+
|
|
153
|
+
Creates an API with related entities in API library. It also updates redux store middlewares, reducers.
|
|
154
|
+
|
|
155
|
+
#### Options
|
|
156
|
+
|
|
157
|
+
1. `name` (optional) - name of the entity (e.g. User)
|
|
158
|
+
|
|
159
|
+
2. `baseEndpoint` (optional) - name of used endpoint in your API (e.g. /users)
|
|
160
|
+
|
|
161
|
+
#### Example
|
|
162
|
+
|
|
163
|
+
```sh
|
|
164
|
+
npx nx g entity-api --name=User --baseEndpoint=users
|
|
165
|
+
```
|
|
166
|
+
|
|
151
167
|
### Note
|
|
152
168
|
|
|
153
169
|
Each generator accepts the `--help` argument to see generator instructions.
|
package/generators.json
CHANGED
|
@@ -34,6 +34,11 @@
|
|
|
34
34
|
"factory": "./src/shared/generators/ui-kitten/generator",
|
|
35
35
|
"schema": "./src/shared/generators/ui-kitten/schema.json",
|
|
36
36
|
"description": "UI-Kitten generator for Expo projects"
|
|
37
|
+
},
|
|
38
|
+
"entity-api": {
|
|
39
|
+
"factory": "./src/generators/entity-api/generator",
|
|
40
|
+
"schema": "./src/generators/entity-api/schema.json",
|
|
41
|
+
"description": "entity-api generator"
|
|
37
42
|
}
|
|
38
43
|
}
|
|
39
44
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ronas-it/nx-generators",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"description": "NX generators for Ronas IT projects",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ronas IT",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"@nx/expo": "^19.3.0",
|
|
29
29
|
"lodash": "^4.17.21",
|
|
30
30
|
"tslib": "^2.6.3",
|
|
31
|
+
"ts-morph": "^23.0.0",
|
|
31
32
|
"inquirer-autocomplete-standalone": "^0.8.1"
|
|
32
33
|
},
|
|
33
34
|
"type": "commonjs",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createEntityApi } from '@ronas-it/rtkq-entity-api';
|
|
2
|
+
import { axiosBaseQuery, createAppApi } from '<%= apiClientDirectory %>';
|
|
3
|
+
import { <%= entityName %> } from '../<%= entityFileName %>';
|
|
4
|
+
import { <%= apiName %>ApiConfig } from './config';
|
|
5
|
+
import { <%= entityName %>EntityRequest, <%= entityName %>PaginationRequest } from './models';
|
|
6
|
+
|
|
7
|
+
export const <%= apiName %>Api = createEntityApi({
|
|
8
|
+
entityName: <%= apiName %>ApiConfig.entityName,
|
|
9
|
+
baseApiCreator: createAppApi,
|
|
10
|
+
baseQuery: axiosBaseQuery,
|
|
11
|
+
baseEndpoint: <%= apiName %>ApiConfig.baseEndpoint,
|
|
12
|
+
entityConstructor: <%= entityName %>,
|
|
13
|
+
entityGetRequestConstructor: <%= entityName %>EntityRequest,
|
|
14
|
+
entitySearchRequestConstructor: <%= entityName %>PaginationRequest
|
|
15
|
+
});
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.entityApiGenerator = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const devkit_1 = require("@nx/devkit");
|
|
6
|
+
const ts_morph_1 = require("ts-morph");
|
|
7
|
+
const path = require("path");
|
|
8
|
+
const lodash_1 = require("lodash");
|
|
9
|
+
const utils_1 = require("../../shared/utils");
|
|
10
|
+
function entityApiGenerator(tree, options) {
|
|
11
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
12
|
+
const { default: autocomplete } = yield (0, utils_1.dynamicImport)('inquirer-autocomplete-standalone');
|
|
13
|
+
const nxLibsPaths = (0, utils_1.getNxLibsPaths)([utils_1.LibraryType.DATA_ACCESS]);
|
|
14
|
+
const apiLibsPaths = (0, utils_1.searchNxLibsPaths)(nxLibsPaths, 'data-access/api/');
|
|
15
|
+
const apiClientLibsPaths = (0, utils_1.searchNxLibsPaths)(nxLibsPaths, 'data-access/api-client/');
|
|
16
|
+
if (!apiClientLibsPaths.length) {
|
|
17
|
+
throw new Error('Could not find API Client path.');
|
|
18
|
+
}
|
|
19
|
+
if (!apiLibsPaths.length) {
|
|
20
|
+
throw new Error('Could not find API path.');
|
|
21
|
+
}
|
|
22
|
+
if (apiClientLibsPaths.length > 1) {
|
|
23
|
+
apiClientLibsPaths[0] = yield autocomplete({
|
|
24
|
+
message: 'Select the api client library path:',
|
|
25
|
+
source: (input) => (0, utils_1.filterSource)(input, apiClientLibsPaths)
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
if (apiLibsPaths.length > 1) {
|
|
29
|
+
apiLibsPaths[0] = yield autocomplete({
|
|
30
|
+
message: 'Select the api library path:',
|
|
31
|
+
source: (input) => (0, utils_1.filterSource)(input, apiLibsPaths)
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
const apiDirectory = (0, utils_1.searchAliasPath)(apiLibsPaths[0]);
|
|
35
|
+
const apiClientDirectory = (0, utils_1.searchAliasPath)(apiClientLibsPaths[0]);
|
|
36
|
+
const libPath = apiLibsPaths[0];
|
|
37
|
+
const libRootPath = `${libPath}/lib`;
|
|
38
|
+
options.name = options.name || (yield (0, utils_1.askQuestion)('Enter the name of the entity (e.g: User): '));
|
|
39
|
+
const apiName = (0, lodash_1.kebabCase)(options.name);
|
|
40
|
+
options.baseEndpoint = options.baseEndpoint || (yield (0, utils_1.askQuestion)('Enter the base endpoint (e.g: /users): ', `/${apiName}`));
|
|
41
|
+
const apiPath = `${libRootPath}/${apiName}`;
|
|
42
|
+
const entityName = (0, lodash_1.startCase)((0, lodash_1.camelCase)(apiName)).replace(/\s+/g, '');
|
|
43
|
+
(0, devkit_1.generateFiles)(tree, path.join(__dirname, `files`), apiPath, Object.assign(Object.assign({}, options), { apiName: (0, lodash_1.camelCase)(options.name), entityName, entityFileName: apiName, apiClientDirectory, baseEndpoint: options.baseEndpoint.startsWith('/') ? options.baseEndpoint : `/${options.baseEndpoint}` }));
|
|
44
|
+
tree.rename(`${apiPath}/models/entity.ts`, `${apiPath}/models/${apiName}.ts`);
|
|
45
|
+
const appendFileContent = (path, endContent) => {
|
|
46
|
+
const content = tree.read(path, 'utf-8');
|
|
47
|
+
const contentUpdate = content + endContent;
|
|
48
|
+
tree.write(path, contentUpdate);
|
|
49
|
+
};
|
|
50
|
+
appendFileContent(`${libRootPath}/index.ts`, `export * from './${apiName}';\n`);
|
|
51
|
+
const storeLibsPaths = (0, utils_1.searchNxLibsPaths)(nxLibsPaths, 'data-access/store/');
|
|
52
|
+
if (!storeLibsPaths.length) {
|
|
53
|
+
yield (0, devkit_1.formatFiles)(tree);
|
|
54
|
+
throw new Error('Could not find redux store path.');
|
|
55
|
+
}
|
|
56
|
+
if (storeLibsPaths.length > 1) {
|
|
57
|
+
storeLibsPaths[0] = yield autocomplete({
|
|
58
|
+
message: 'Select the store library path:',
|
|
59
|
+
source: (input) => (0, utils_1.filterSource)(input, storeLibsPaths)
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
// Update redux store
|
|
63
|
+
const apiNameDeclaration = (0, lodash_1.camelCase)(options.name + 'Api');
|
|
64
|
+
const project = new ts_morph_1.Project({
|
|
65
|
+
manipulationSettings: {
|
|
66
|
+
indentationText: ts_morph_1.IndentationText.TwoSpaces,
|
|
67
|
+
quoteKind: ts_morph_1.QuoteKind.Single
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
const store = project.addSourceFileAtPath(`${storeLibsPaths[0]}/store.ts`);
|
|
71
|
+
// TODO: create declaration if not exists
|
|
72
|
+
const apiImportsDeclaration = store.getImportDeclarationOrThrow((node) => node.getModuleSpecifierValue() === apiDirectory);
|
|
73
|
+
apiImportsDeclaration.addNamedImport(apiNameDeclaration);
|
|
74
|
+
const rootReducer = store.getVariableDeclarationOrThrow('rootReducer');
|
|
75
|
+
rootReducer.getInitializerIfKindOrThrow(ts_morph_1.SyntaxKind.ObjectLiteralExpression)
|
|
76
|
+
.addProperty({
|
|
77
|
+
name: `[${apiNameDeclaration}.reducerPath]`,
|
|
78
|
+
initializer: `${apiNameDeclaration}.reducer`,
|
|
79
|
+
kind: ts_morph_1.StructureKind.PropertyAssignment
|
|
80
|
+
});
|
|
81
|
+
const middlewares = store.getVariableDeclarationOrThrow('middlewares');
|
|
82
|
+
middlewares.getInitializerIfKindOrThrow(ts_morph_1.SyntaxKind.ArrayLiteralExpression)
|
|
83
|
+
.addElement(`${apiNameDeclaration}.middleware`);
|
|
84
|
+
project.saveSync();
|
|
85
|
+
yield (0, devkit_1.formatFiles)(tree);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
exports.entityApiGenerator = entityApiGenerator;
|
|
89
|
+
exports.default = entityApiGenerator;
|
|
90
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/entity-api/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"$id": "EntityAPI",
|
|
4
|
+
"title": "",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"properties": {
|
|
7
|
+
"name": {
|
|
8
|
+
"type": "string",
|
|
9
|
+
"description": "Name of the entity",
|
|
10
|
+
"default": "",
|
|
11
|
+
"$default": {
|
|
12
|
+
"$source": "argv",
|
|
13
|
+
"index": 0
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"required": []
|
|
18
|
+
}
|
|
@@ -7,10 +7,9 @@ const path = require("path");
|
|
|
7
7
|
const lodash_1 = require("lodash");
|
|
8
8
|
const utils_1 = require("../../shared/utils");
|
|
9
9
|
const fs_1 = require("fs");
|
|
10
|
-
const dynamicImport = new Function('specifier', 'return import(specifier)');
|
|
11
10
|
function reactComponentGenerator(tree, options) {
|
|
12
11
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
13
|
-
const { default: autocomplete } = yield dynamicImport('inquirer-autocomplete-standalone');
|
|
12
|
+
const { default: autocomplete } = yield (0, utils_1.dynamicImport)('inquirer-autocomplete-standalone');
|
|
14
13
|
const nxLibsPaths = (0, utils_1.getNxLibsPaths)([utils_1.LibraryType.FEATURES, utils_1.LibraryType.UI]);
|
|
15
14
|
const libPath = yield autocomplete({
|
|
16
15
|
message: 'Enter the library path:',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/react-component/generator.ts"],"names":[],"mappings":";;;;AAAA,uCAA8D;AAC9D,6BAA6B;AAC7B,mCAAmC;AAEnC,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/react-component/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const askQuestion: (question: string) => Promise<string>;
|
|
1
|
+
export declare const askQuestion: (question: string, defaultAnswer?: string) => Promise<string>;
|
|
2
2
|
export declare enum LibraryType {
|
|
3
3
|
UI = "ui",
|
|
4
4
|
DATA_ACCESS = "data-access",
|
|
@@ -7,3 +7,7 @@ export declare enum LibraryType {
|
|
|
7
7
|
}
|
|
8
8
|
export declare const getNxLibsPaths: (types: Array<LibraryType>) => any[];
|
|
9
9
|
export declare const searchNxLibsPaths: (paths: Array<string>, input: string) => string[];
|
|
10
|
+
export declare const searchAliasPath: (input: string) => string;
|
|
11
|
+
export declare const filterSource: (input: string, source: Array<string>) => Promise<{
|
|
12
|
+
value: string;
|
|
13
|
+
}[]>;
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.searchNxLibsPaths = exports.getNxLibsPaths = exports.LibraryType = exports.askQuestion = void 0;
|
|
3
|
+
exports.filterSource = exports.searchAliasPath = exports.searchNxLibsPaths = exports.getNxLibsPaths = exports.LibraryType = exports.askQuestion = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
4
5
|
const readline = require("readline");
|
|
5
6
|
const fs = require("fs");
|
|
6
|
-
const askQuestion = (question) => {
|
|
7
|
+
const askQuestion = (question, defaultAnswer) => {
|
|
7
8
|
const rl = readline.createInterface({
|
|
8
9
|
input: process.stdin,
|
|
9
10
|
output: process.stdout,
|
|
10
11
|
});
|
|
12
|
+
if (defaultAnswer) {
|
|
13
|
+
rl.write(defaultAnswer);
|
|
14
|
+
// Move cursor to end of the line
|
|
15
|
+
setTimeout(() => rl.write(null, { ctrl: true, name: 'e' }));
|
|
16
|
+
}
|
|
11
17
|
return new Promise((resolve) => rl.question(question, (answer) => {
|
|
12
18
|
rl.close();
|
|
13
19
|
resolve(answer);
|
|
@@ -21,7 +27,7 @@ var LibraryType;
|
|
|
21
27
|
LibraryType["FEATURES"] = "features";
|
|
22
28
|
LibraryType["UTILS"] = "utils";
|
|
23
29
|
})(LibraryType || (exports.LibraryType = LibraryType = {}));
|
|
24
|
-
const
|
|
30
|
+
const parseLibsPaths = () => {
|
|
25
31
|
let tsconfig;
|
|
26
32
|
if (fs.existsSync('tsconfig.base.json')) {
|
|
27
33
|
tsconfig = JSON.parse(fs.readFileSync('tsconfig.base.json', 'utf8'));
|
|
@@ -29,7 +35,10 @@ const getNxLibsPaths = (types) => {
|
|
|
29
35
|
else {
|
|
30
36
|
tsconfig = JSON.parse(fs.readFileSync('tsconfig.json', 'utf8'));
|
|
31
37
|
}
|
|
32
|
-
|
|
38
|
+
return tsconfig.compilerOptions.paths;
|
|
39
|
+
};
|
|
40
|
+
const getNxLibsPaths = (types) => {
|
|
41
|
+
const libs = parseLibsPaths();
|
|
33
42
|
return Object.values(libs)
|
|
34
43
|
.map((value) => value[0].replace('/index.ts', ''))
|
|
35
44
|
.filter((value) => types.some((type) => value.includes(type)));
|
|
@@ -39,4 +48,15 @@ const searchNxLibsPaths = (paths, input) => {
|
|
|
39
48
|
return paths.filter((path) => path.includes(input));
|
|
40
49
|
};
|
|
41
50
|
exports.searchNxLibsPaths = searchNxLibsPaths;
|
|
51
|
+
const searchAliasPath = (input) => {
|
|
52
|
+
const libs = parseLibsPaths();
|
|
53
|
+
const path = Object.keys(libs).find((key) => libs[key][0].includes(input));
|
|
54
|
+
return path;
|
|
55
|
+
};
|
|
56
|
+
exports.searchAliasPath = searchAliasPath;
|
|
57
|
+
const filterSource = (input, source) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
58
|
+
const filteredData = source.filter((pathname) => pathname.toLowerCase().includes(input.toLowerCase()));
|
|
59
|
+
return filteredData.map((path) => ({ value: path }));
|
|
60
|
+
});
|
|
61
|
+
exports.filterSource = filterSource;
|
|
42
62
|
//# sourceMappingURL=cli-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-utils.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/cli-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli-utils.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/cli-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const dynamicImport: <T = never>(specifier: string) => Promise<T>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-import.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/dynamic-import.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,IAAI,QAAQ,CACvC,WAAW,EACX,0BAA0B,CACqB,CAAC"}
|
|
@@ -3,4 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./format-utils"), exports);
|
|
5
5
|
tslib_1.__exportStar(require("./cli-utils"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./dynamic-import"), exports);
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,sDAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../plugin/src/shared/utils/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,sDAA4B;AAC5B,2DAAiC"}
|