@ronas-it/nx-generators 0.8.0 → 0.8.2

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.
Files changed (100) hide show
  1. package/README.md +22 -3
  2. package/generators.json +10 -0
  3. package/package.json +1 -1
  4. package/src/generators/code-checks/files/.eslint.ronasit.json.template +186 -0
  5. package/src/generators/code-checks/files/.eslintrc.json.template +1 -1
  6. package/src/generators/code-checks/generator.js +1 -1
  7. package/src/generators/code-checks/generator.js.map +1 -1
  8. package/src/generators/entity-api/generator.js +12 -13
  9. package/src/generators/entity-api/generator.js.map +1 -1
  10. package/src/generators/expo-app/app-files/README.md.template +24 -9
  11. package/src/generators/expo-app/app-files/eas.json.template +25 -14
  12. package/src/generators/expo-app/generator.js +10 -7
  13. package/src/generators/expo-app/generator.js.map +1 -1
  14. package/src/generators/expo-app/scripts.d.ts +3 -2
  15. package/src/generators/expo-app/scripts.js +3 -2
  16. package/src/generators/expo-app/scripts.js.map +1 -1
  17. package/src/generators/form/generator.js +9 -68
  18. package/src/generators/form/generator.js.map +1 -1
  19. package/src/generators/form/utils/add-form-usage.d.ts +1 -0
  20. package/src/generators/form/utils/add-form-usage.js +67 -0
  21. package/src/generators/form/utils/add-form-usage.js.map +1 -0
  22. package/src/generators/form/utils/get-app-name.d.ts +1 -0
  23. package/src/generators/form/utils/get-app-name.js +8 -0
  24. package/src/generators/form/utils/get-app-name.js.map +1 -0
  25. package/src/generators/form/utils/get-form-utils-directory.d.ts +2 -0
  26. package/src/generators/form/utils/get-form-utils-directory.js +34 -0
  27. package/src/generators/form/utils/get-form-utils-directory.js.map +1 -0
  28. package/src/generators/form/utils/index.d.ts +4 -0
  29. package/src/generators/form/utils/index.js +8 -0
  30. package/src/generators/form/utils/index.js.map +1 -0
  31. package/src/generators/form/utils/update-index.d.ts +2 -0
  32. package/src/generators/form/utils/update-index.js +18 -0
  33. package/src/generators/form/utils/update-index.js.map +1 -0
  34. package/src/generators/lib-tags/generator.d.ts +4 -0
  35. package/src/generators/lib-tags/generator.js +53 -0
  36. package/src/generators/lib-tags/generator.js.map +1 -0
  37. package/src/generators/lib-tags/interfaces/context.d.ts +6 -0
  38. package/src/generators/lib-tags/interfaces/context.js +3 -0
  39. package/src/generators/lib-tags/interfaces/context.js.map +1 -0
  40. package/src/generators/lib-tags/interfaces/index.d.ts +1 -0
  41. package/src/generators/lib-tags/interfaces/index.js +5 -0
  42. package/src/generators/lib-tags/interfaces/index.js.map +1 -0
  43. package/src/generators/lib-tags/schema.d.ts +3 -0
  44. package/src/generators/lib-tags/schema.json +14 -0
  45. package/src/generators/lib-tags/utils/check-lib-tags.d.ts +4 -0
  46. package/src/generators/lib-tags/utils/check-lib-tags.js +81 -0
  47. package/src/generators/lib-tags/utils/check-lib-tags.js.map +1 -0
  48. package/src/generators/lib-tags/utils/index.d.ts +1 -0
  49. package/src/generators/lib-tags/utils/index.js +5 -0
  50. package/src/generators/lib-tags/utils/index.js.map +1 -0
  51. package/src/generators/next-app/generator.js +1 -1
  52. package/src/generators/next-app/generator.js.map +1 -1
  53. package/src/generators/react-component/files/component.tsx.template +13 -3
  54. package/src/generators/react-component/generator.js +2 -1
  55. package/src/generators/react-component/generator.js.map +1 -1
  56. package/src/generators/react-component/schema.d.ts +1 -0
  57. package/src/generators/react-component/schema.json +5 -0
  58. package/src/generators/react-lib/files/lib/component.tsx.template +13 -3
  59. package/src/generators/react-lib/generator.js +16 -27
  60. package/src/generators/react-lib/generator.js.map +1 -1
  61. package/src/generators/react-lib/schema.d.ts +1 -0
  62. package/src/generators/react-lib/schema.json +4 -0
  63. package/src/generators/react-lib/utils/get-lib-directory-name.d.ts +1 -0
  64. package/src/generators/react-lib/utils/get-lib-directory-name.js +15 -0
  65. package/src/generators/react-lib/utils/get-lib-directory-name.js.map +1 -0
  66. package/src/generators/react-lib/utils/index.d.ts +1 -0
  67. package/src/generators/react-lib/utils/index.js +5 -0
  68. package/src/generators/react-lib/utils/index.js.map +1 -0
  69. package/src/shared/dependencies.d.ts +1 -0
  70. package/src/shared/dependencies.js +1 -0
  71. package/src/shared/dependencies.js.map +1 -1
  72. package/src/shared/generators/auth/generator.d.ts +2 -4
  73. package/src/shared/generators/auth/generator.js +1 -0
  74. package/src/shared/generators/auth/generator.js.map +1 -1
  75. package/src/shared/generators/auth/schema.d.ts +4 -0
  76. package/src/shared/generators/auth/schema.json +27 -0
  77. package/src/shared/generators/form-utils/generator.d.ts +0 -1
  78. package/src/shared/generators/form-utils/generator.js.map +1 -1
  79. package/src/shared/generators/store/expo-app/lib-files/shared/data-access/store/src/store.ts.template +1 -1
  80. package/src/shared/generators/store/next-app/lib-files/shared/data-access/store/src/store.ts.template +1 -1
  81. package/src/shared/generators/ui-kitten/generator.d.ts +1 -2
  82. package/src/shared/generators/ui-kitten/generator.js +1 -9
  83. package/src/shared/generators/ui-kitten/generator.js.map +1 -1
  84. package/src/shared/generators/ui-kitten/schema.d.ts +0 -1
  85. package/src/shared/generators/ui-kitten/schema.json +1 -7
  86. package/src/shared/utils/cli-utils.d.ts +2 -0
  87. package/src/shared/utils/cli-utils.js +40 -3
  88. package/src/shared/utils/cli-utils.js.map +1 -1
  89. package/src/shared/utils/config-utils.d.ts +15 -0
  90. package/src/shared/utils/config-utils.js +80 -16
  91. package/src/shared/utils/config-utils.js.map +1 -1
  92. package/src/shared/utils/constants.d.ts +3 -0
  93. package/src/shared/utils/constants.js +7 -0
  94. package/src/shared/utils/constants.js.map +1 -0
  95. package/src/shared/utils/index.d.ts +1 -0
  96. package/src/shared/utils/index.js +1 -0
  97. package/src/shared/utils/index.js.map +1 -1
  98. package/src/generators/code-checks/files/.eslint.ronasit.js.template +0 -186
  99. /package/src/generators/entity-api/files/models/{entity.ts.template → __entityFileName__.ts.template} +0 -0
  100. /package/src/generators/form/files/{form.ts.template → __fileName__.ts.template} +0 -0
@@ -5,70 +5,8 @@ const tslib_1 = require("tslib");
5
5
  const devkit_1 = require("@nx/devkit");
6
6
  const path = require("path");
7
7
  const utils_1 = require("../../shared/utils");
8
- const fs_1 = require("fs");
9
- const lodash_1 = require("lodash");
10
8
  const dependencies_1 = require("../../shared/dependencies");
11
- const ts_morph_1 = require("ts-morph");
12
- function getFormUtilsDirectory() {
13
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
14
- const { default: autocomplete } = yield (0, utils_1.dynamicImport)('inquirer-autocomplete-standalone');
15
- const utilsLibsPaths = (0, utils_1.getNxLibsPaths)([utils_1.LibraryType.UTILS]);
16
- const formUtilsLibsPaths = (0, utils_1.searchNxLibsPaths)(utilsLibsPaths, 'utils/form/src', 'endsWith');
17
- if (!formUtilsLibsPaths.length) {
18
- throw new Error('Could not find a library with the form utilities.');
19
- }
20
- if (formUtilsLibsPaths.length > 1) {
21
- formUtilsLibsPaths[0] = yield autocomplete({
22
- message: 'Select the path of the library with the form utilities: ',
23
- source: (input) => (0, utils_1.filterSource)(input, formUtilsLibsPaths)
24
- });
25
- }
26
- return (0, utils_1.searchAliasPath)(formUtilsLibsPaths[0]);
27
- });
28
- }
29
- function updateIndex(formsPath, fileName, tree) {
30
- const formsIndexFilePath = `${formsPath}/index.ts`;
31
- const newIndexContent = `export * from './${(0, lodash_1.kebabCase)(fileName)}';\n`;
32
- if (!(0, fs_1.existsSync)(formsIndexFilePath)) {
33
- tree.write(formsIndexFilePath, newIndexContent);
34
- }
35
- else {
36
- (0, utils_1.appendFileContent)(formsIndexFilePath, newIndexContent, tree);
37
- }
38
- }
39
- function getFormUsageCode(formClassName) {
40
- return `const formSchema = new ${formClassName}();
41
- const form = useForm<${formClassName}>({
42
- defaultValues: formSchema.formValues,
43
- resolver: yupResolver<any>(${formClassName}.validationSchema)
44
- });\n\n`;
45
- }
46
- function addFormUsage(libPath, placeOfUse, formClassName) {
47
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
48
- const project = new ts_morph_1.Project({
49
- manipulationSettings: {
50
- indentationText: ts_morph_1.IndentationText.TwoSpaces,
51
- quoteKind: ts_morph_1.QuoteKind.Single
52
- }
53
- });
54
- const files = project.addSourceFilesAtPaths([`${libPath}/lib/**/*.tsx`, `${libPath}/lib/**/*.ts`]);
55
- const file = files.find((file) => file.getFunction(placeOfUse) || file.getVariableDeclaration(placeOfUse));
56
- if (!file) {
57
- throw new Error('Could not find the place where the form should be used.');
58
- }
59
- const pathToForm = file.getFilePath().includes('components')
60
- ? '../../forms'
61
- : file.getFilePath().includes('hooks')
62
- ? '../forms'
63
- : './forms';
64
- (0, utils_1.addNamedImport)(formClassName, pathToForm, file);
65
- (0, utils_1.addNamedImport)('useForm', 'react-hook-form', file);
66
- (0, utils_1.addNamedImport)('yupResolver', '@hookform/resolvers/yup', file);
67
- const component = file.getFunction(placeOfUse) || file.getVariableDeclaration(placeOfUse).getInitializerIfKindOrThrow(ts_morph_1.SyntaxKind.FunctionExpression);
68
- component.setBodyText(`${getFormUsageCode(formClassName)}${component.getBodyText()}`);
69
- project.saveSync();
70
- });
71
- }
9
+ const utils_2 = require("./utils");
72
10
  function formGenerator(tree, options) {
73
11
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
74
12
  // Get input data
@@ -85,14 +23,17 @@ function formGenerator(tree, options) {
85
23
  const placeOfUse = options.placeOfUse;
86
24
  // Generate form class
87
25
  const formsPath = `${libPath}/lib/forms`;
88
- const formUtilsDirectory = yield getFormUtilsDirectory();
26
+ const formFilePath = `${formsPath}/${fileName}.ts`;
27
+ if (tree.exists(formFilePath)) {
28
+ throw new Error('The form already exists');
29
+ }
30
+ const formUtilsDirectory = yield (0, utils_2.getFormUtilsDirectory)(tree, (0, utils_2.getAppName)(libPath));
89
31
  const formClassName = `${(0, utils_1.formatName)(fileName, true)}FormSchema`;
90
- (0, devkit_1.generateFiles)(tree, path.join(__dirname, `files`), formsPath, { className: formClassName, formUtilsDirectory });
91
- tree.rename(`${formsPath}/form.ts`, `${formsPath}/${fileName}.ts`);
92
- updateIndex(formsPath, fileName, tree);
32
+ (0, devkit_1.generateFiles)(tree, path.join(__dirname, `files`), formsPath, { className: formClassName, fileName, formUtilsDirectory });
33
+ (0, utils_2.updateIndex)(formsPath, fileName, tree);
93
34
  // Add form usage
94
35
  if (placeOfUse) {
95
- yield addFormUsage(libPath, placeOfUse, formClassName);
36
+ yield (0, utils_2.addFormUsage)(libPath, placeOfUse, formClassName);
96
37
  }
97
38
  yield (0, devkit_1.formatFiles)(tree);
98
39
  // Install dependencies
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/form/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/form/generator.ts"],"names":[],"mappings":";;;;AAAA,uCAAiH;AACjH,6BAA6B;AAE7B,8CAA+G;AAC/G,4DAAyD;AACzD,mCAAuF;AAEvF,SAAsB,aAAa,CAAC,IAAU,EAAE,OAA4B;;QAC1E,iBAAiB;QACjB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,IAAA,qBAAa,EAAoD,kCAAkC,CAAC,CAAC;QAC7I,MAAM,kBAAkB,GAAG,IAAA,sBAAc,EAAC,CAAC,mBAAW,CAAC,QAAQ,EAAE,mBAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;YACjC,OAAO,EAAE,0BAA0B;YACnC,MAAM,EAAE,CAAO,KAAK,EAAE,EAAE;gBACtB,MAAM,mBAAmB,GAAG,IAAA,yBAAiB,EAAC,kBAAkB,EAAE,KAAK,CAAC,CAAA;gBAExE,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YAC7D,CAAC,CAAA;SACF,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;QAC9B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QAEtC,sBAAsB;QACtB,MAAM,SAAS,GAAG,GAAG,OAAO,YAAY,CAAC;QACzC,MAAM,YAAY,GAAG,GAAG,SAAS,IAAI,QAAQ,KAAK,CAAC;QACnD,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,IAAA,6BAAqB,EAAC,IAAI,EAAE,IAAA,kBAAU,EAAC,OAAO,CAAC,CAAC,CAAC;QAClF,MAAM,aAAa,GAAG,GAAG,IAAA,kBAAU,EAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC;QAChE,IAAA,sBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC1H,IAAA,mBAAW,EAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEvC,iBAAiB;QACjB,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAA,oBAAY,EAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QAExB,uBAAuB;QACvB,IAAA,qCAA4B,EAAC,IAAI,EAAE,2BAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,GAAG,EAAE;YACV,IAAA,4BAAmB,EAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC;IACJ,CAAC;CAAA;AAvCD,sCAuCC;AAED,kBAAe,aAAa,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function addFormUsage(libPath: string, placeOfUseName: string, formClassName: string): Promise<void>;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addFormUsage = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const ts_morph_1 = require("ts-morph");
6
+ const utils_1 = require("../../../shared/utils");
7
+ function getFormUsageCode(formClassName) {
8
+ return `const formSchema = new ${formClassName}();
9
+ const form = useForm({
10
+ defaultValues: formSchema.formValues,
11
+ resolver: yupResolver(${formClassName}.validationSchema)
12
+ });\n\n`;
13
+ }
14
+ function getForwardRefFunction(variable) {
15
+ const callExpressionInitializer = variable.getInitializerIfKind(ts_morph_1.SyntaxKind.CallExpression);
16
+ const hasForwardRef = (callExpressionInitializer === null || callExpressionInitializer === void 0 ? void 0 : callExpressionInitializer.getExpression().getText()) === 'forwardRef';
17
+ if (!hasForwardRef) {
18
+ throw new Error('Could not find forwardRef');
19
+ }
20
+ const argument = callExpressionInitializer.getArguments()[0];
21
+ const hasComponentFunction = argument && [ts_morph_1.SyntaxKind.FunctionExpression, ts_morph_1.SyntaxKind.ArrowFunction].includes(argument.getKind());
22
+ if (!hasComponentFunction) {
23
+ throw new Error('Could not find a component function in forwardRef');
24
+ }
25
+ return argument.asKind(argument.getKind() === ts_morph_1.SyntaxKind.FunctionExpression ? ts_morph_1.SyntaxKind.FunctionExpression : ts_morph_1.SyntaxKind.ArrowFunction);
26
+ }
27
+ function getPlaceOfUse(file, placeOfUseName) {
28
+ const placeOfUseFunction = file.getFunction(placeOfUseName);
29
+ if (placeOfUseFunction) {
30
+ return placeOfUseFunction;
31
+ }
32
+ const variable = file.getVariableDeclaration(placeOfUseName);
33
+ if (!variable) {
34
+ throw new Error(`Could not find the place where the form should be used (${placeOfUseName}).`);
35
+ }
36
+ return variable.getInitializerIfKind(ts_morph_1.SyntaxKind.FunctionExpression)
37
+ || variable.getInitializerIfKind(ts_morph_1.SyntaxKind.ArrowFunction)
38
+ || getForwardRefFunction(variable);
39
+ }
40
+ function addFormUsage(libPath, placeOfUseName, formClassName) {
41
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
42
+ const project = new ts_morph_1.Project({
43
+ manipulationSettings: {
44
+ indentationText: ts_morph_1.IndentationText.TwoSpaces,
45
+ quoteKind: ts_morph_1.QuoteKind.Single
46
+ }
47
+ });
48
+ const files = project.addSourceFilesAtPaths([`${libPath}/lib/**/*.tsx`, `${libPath}/lib/**/*.ts`]);
49
+ const file = files.find((file) => file.getFunction(placeOfUseName) || file.getVariableDeclaration(placeOfUseName));
50
+ if (!file) {
51
+ throw new Error('Could not find the place where the form should be used.');
52
+ }
53
+ const pathToForm = file.getFilePath().includes('components')
54
+ ? '../../forms'
55
+ : file.getFilePath().includes('hooks')
56
+ ? '../forms'
57
+ : './forms';
58
+ (0, utils_1.addNamedImport)(formClassName, pathToForm, file);
59
+ (0, utils_1.addNamedImport)('useForm', 'react-hook-form', file);
60
+ (0, utils_1.addNamedImport)('yupResolver', '@hookform/resolvers/yup', file);
61
+ const placeOfUse = getPlaceOfUse(file, placeOfUseName);
62
+ placeOfUse.setBodyText(`${getFormUsageCode(formClassName)}${placeOfUse.getBodyText()}`);
63
+ project.saveSync();
64
+ });
65
+ }
66
+ exports.addFormUsage = addFormUsage;
67
+ //# sourceMappingURL=add-form-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-form-usage.js","sourceRoot":"","sources":["../../../../../../plugin/src/generators/form/utils/add-form-usage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function getAppName(path: string): string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAppName = void 0;
4
+ function getAppName(path) {
5
+ return path.split('/')[1];
6
+ }
7
+ exports.getAppName = getAppName;
8
+ //# sourceMappingURL=get-app-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-app-name.js","sourceRoot":"","sources":["../../../../../../plugin/src/generators/form/utils/get-app-name.ts"],"names":[],"mappings":";;;AAAA,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAFD,gCAEC"}
@@ -0,0 +1,2 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export declare function getFormUtilsDirectory(tree: Tree, appName: string): Promise<string>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFormUtilsDirectory = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const utils_1 = require("../../../shared/utils");
6
+ const generators_1 = require("../../../shared/generators");
7
+ const get_app_name_1 = require("./get-app-name");
8
+ function getFormUtilsPaths() {
9
+ const utilsLibsPaths = (0, utils_1.getNxLibsPaths)([utils_1.LibraryType.UTILS]);
10
+ return (0, utils_1.searchNxLibsPaths)(utilsLibsPaths, 'utils/form/src', 'endsWith');
11
+ }
12
+ function getFormUtilsDirectory(tree, appName) {
13
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
14
+ const { default: autocomplete } = yield (0, utils_1.dynamicImport)('inquirer-autocomplete-standalone');
15
+ const formUtilsLibsPaths = getFormUtilsPaths();
16
+ if (!formUtilsLibsPaths.length) {
17
+ const formUtilsAppDirectory = yield (0, utils_1.selectApplication)(tree, 'It\'s necessary to generate form utilities. What application should they be in?');
18
+ yield (0, generators_1.runFormUtilsGenerator)(tree, { directory: formUtilsAppDirectory });
19
+ return (0, utils_1.searchAliasPath)(getFormUtilsPaths()[0]);
20
+ }
21
+ if (formUtilsLibsPaths.length > 1) {
22
+ if (appName === utils_1.constants.sharedValue) {
23
+ return (0, utils_1.searchAliasPath)(formUtilsLibsPaths.find((path) => (0, get_app_name_1.getAppName)(path) === utils_1.constants.sharedValue));
24
+ }
25
+ formUtilsLibsPaths[0] = yield autocomplete({
26
+ message: 'Select the path of the library with the form utilities: ',
27
+ source: (input) => (0, utils_1.filterSource)(input, formUtilsLibsPaths.filter((path) => [appName, utils_1.constants.sharedValue].includes((0, get_app_name_1.getAppName)(path))))
28
+ });
29
+ }
30
+ return (0, utils_1.searchAliasPath)(formUtilsLibsPaths[0]);
31
+ });
32
+ }
33
+ exports.getFormUtilsDirectory = getFormUtilsDirectory;
34
+ //# sourceMappingURL=get-form-utils-directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-form-utils-directory.js","sourceRoot":"","sources":["../../../../../../plugin/src/generators/form/utils/get-form-utils-directory.ts"],"names":[],"mappings":";;;;AAAA,iDAQ+B;AAC/B,2DAAmE;AAEnE,iDAA4C;AAE5C,SAAS,iBAAiB;IACxB,MAAM,cAAc,GAAG,IAAA,sBAAc,EAAC,CAAC,mBAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3D,OAAO,IAAA,yBAAiB,EAAC,cAAc,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;AACzE,CAAC;AAED,SAAsB,qBAAqB,CAAC,IAAU,EAAE,OAAe;;QACrE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,IAAA,qBAAa,EAAoD,kCAAkC,CAAC,CAAC;QAE7I,MAAM,kBAAkB,GAAG,iBAAiB,EAAE,CAAC;QAE/C,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,qBAAqB,GAAG,MAAM,IAAA,yBAAiB,EAAC,IAAI,EAAE,iFAAiF,CAAC,CAAA;YAC9I,MAAM,IAAA,kCAAqB,EAAC,IAAI,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,CAAC;YAExE,OAAO,IAAA,uBAAe,EAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,OAAO,KAAK,iBAAS,CAAC,WAAW,EAAE,CAAC;gBACtC,OAAO,IAAA,uBAAe,EAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,yBAAU,EAAC,IAAI,CAAC,KAAK,iBAAS,CAAC,WAAW,CAAC,CAAC,CAAA;YACvG,CAAC;YAED,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,YAAY,CAAC;gBACzC,OAAO,EAAE,0DAA0D;gBACnE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,oBAAY,EAAC,KAAK,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,iBAAS,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAA,yBAAU,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACzI,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAA,uBAAe,EAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;CAAA;AAxBD,sDAwBC"}
@@ -0,0 +1,4 @@
1
+ export * from './get-form-utils-directory';
2
+ export * from './update-index';
3
+ export * from './add-form-usage';
4
+ export * from './get-app-name';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./get-form-utils-directory"), exports);
5
+ tslib_1.__exportStar(require("./update-index"), exports);
6
+ tslib_1.__exportStar(require("./add-form-usage"), exports);
7
+ tslib_1.__exportStar(require("./get-app-name"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../plugin/src/generators/form/utils/index.ts"],"names":[],"mappings":";;;AAAA,qEAA2C;AAC3C,yDAA+B;AAC/B,2DAAiC;AACjC,yDAA+B"}
@@ -0,0 +1,2 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export declare function updateIndex(formsPath: string, fileName: string, tree: Tree): void;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateIndex = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const fs_1 = require("fs");
6
+ const utils_1 = require("../../../shared/utils");
7
+ function updateIndex(formsPath, fileName, tree) {
8
+ const formsIndexFilePath = `${formsPath}/index.ts`;
9
+ const newIndexContent = `export * from './${(0, lodash_1.kebabCase)(fileName)}';\n`;
10
+ if (!(0, fs_1.existsSync)(formsIndexFilePath)) {
11
+ tree.write(formsIndexFilePath, newIndexContent);
12
+ }
13
+ else {
14
+ (0, utils_1.appendFileContent)(formsIndexFilePath, newIndexContent, tree);
15
+ }
16
+ }
17
+ exports.updateIndex = updateIndex;
18
+ //# sourceMappingURL=update-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-index.js","sourceRoot":"","sources":["../../../../../../plugin/src/generators/form/utils/update-index.ts"],"names":[],"mappings":";;;AACA,mCAAmC;AACnC,2BAAgC;AAChC,iDAA0D;AAE1D,SAAgB,WAAW,CAAC,SAAiB,EAAE,QAAgB,EAAE,IAAU;IACzE,MAAM,kBAAkB,GAAG,GAAG,SAAS,WAAW,CAAC;IACnD,MAAM,eAAe,GAAG,oBAAoB,IAAA,kBAAS,EAAC,QAAQ,CAAC,MAAM,CAAC;IACtE,IAAI,CAAC,IAAA,eAAU,EAAC,kBAAkB,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,eAAe,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,IAAA,yBAAiB,EAAC,kBAAkB,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AARD,kCAQC"}
@@ -0,0 +1,4 @@
1
+ import { Tree } from '@nx/devkit';
2
+ import { LibTagsGeneratorSchema } from './schema';
3
+ export declare function libTagsGenerator(tree: Tree, options: LibTagsGeneratorSchema): Promise<void>;
4
+ export default libTagsGenerator;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.libTagsGenerator = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const child_process_1 = require("child_process");
7
+ const utils_1 = require("../../shared/utils");
8
+ const lodash_1 = require("lodash");
9
+ const utils_2 = require("./utils");
10
+ const context = {
11
+ config: {},
12
+ rules: [],
13
+ log: console.log
14
+ };
15
+ function libTagsGenerator(tree, options) {
16
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
17
+ const hasUnstagedChanges = (0, child_process_1.execSync)('git status -s').toString('utf8');
18
+ if (hasUnstagedChanges) {
19
+ const shouldContinue = (yield (0, utils_1.askQuestion)('You have unstaged changes. Are you sure you want to continue? (y/n): ')) === 'y';
20
+ if (!shouldContinue) {
21
+ return;
22
+ }
23
+ }
24
+ if (options.silent) {
25
+ context.log = lodash_1.noop;
26
+ }
27
+ // #1 Check eslint config nx-boundaries rule
28
+ devkit_1.output.log({ title: devkit_1.output.bold('1. Checking eslint config nx-boundaries rule...') });
29
+ context.config = (0, utils_1.verifyEsLintConfig)(tree);
30
+ // #2 Check projects tags
31
+ devkit_1.output.log({ title: devkit_1.output.bold('2. Checking projects tags...') });
32
+ const projects = (0, devkit_1.getProjects)(tree);
33
+ const applications = [];
34
+ const libraries = [];
35
+ context.rules = (0, utils_1.getNxRules)(context.config);
36
+ projects.forEach((project) => {
37
+ if (project.projectType === 'application') {
38
+ applications.push(project);
39
+ }
40
+ if (project.projectType === 'library' && project.root.startsWith('libs')) {
41
+ libraries.push(project);
42
+ }
43
+ });
44
+ applications.forEach((application) => (0, utils_2.checkApplicationTags)(application, tree, context));
45
+ context.config = (0, utils_1.readESLintConfig)(tree).config;
46
+ context.rules = (0, utils_1.getNxRules)(context.config);
47
+ libraries.forEach((library) => (0, utils_2.checkLibraryTags)(library, tree, context));
48
+ yield (0, devkit_1.formatFiles)(tree);
49
+ });
50
+ }
51
+ exports.libTagsGenerator = libTagsGenerator;
52
+ exports.default = libTagsGenerator;
53
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/lib-tags/generator.ts"],"names":[],"mappings":";;;;AAAA,uCAA0F;AAE1F,iDAAyC;AACzC,8CAAmG;AACnG,mCAA8B;AAC9B,mCAAiE;AAGjE,MAAM,OAAO,GAAmB;IAC9B,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,GAAG,EAAE,OAAO,CAAC,GAAG;CACjB,CAAC;AAEF,SAAsB,gBAAgB,CACpC,IAAU,EACV,OAA+B;;QAE/B,MAAM,kBAAkB,GAAG,IAAA,wBAAQ,EAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEtE,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,cAAc,GAAG,CAAA,MAAM,IAAA,mBAAW,EAAC,uEAAuE,CAAC,MAAK,GAAG,CAAC;YAE1H,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,GAAG,aAAI,CAAC;QACrB,CAAC;QAED,4CAA4C;QAC5C,eAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,eAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAC;QACtF,OAAO,CAAC,MAAM,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,CAAC;QAE1C,yBAAyB;QACzB,eAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,eAAM,CAAC,IAAI,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;QACnC,MAAM,YAAY,GAAgC,EAAE,CAAC;QACrD,MAAM,SAAS,GAAgC,EAAE,CAAC;QAElD,OAAO,CAAC,KAAK,GAAG,IAAA,kBAAU,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE3C,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,OAAO,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;gBAC1C,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YAED,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAA,4BAAoB,EAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAExF,OAAO,CAAC,MAAM,GAAG,IAAA,wBAAgB,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QAC/C,OAAO,CAAC,KAAK,GAAG,IAAA,kBAAU,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAE3C,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,wBAAgB,EAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAEzE,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CAAA;AAhDD,4CAgDC;AAED,kBAAe,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Constraint } from '../../../shared/utils';
2
+ export interface LibTagsContext {
3
+ config: Record<string, any>;
4
+ rules: Array<Constraint>;
5
+ log: (message: any, ...optionalParams: Array<any>) => void;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../../../plugin/src/generators/lib-tags/interfaces/context.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export * from './context';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./context"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../plugin/src/generators/lib-tags/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,oDAA0B"}
@@ -0,0 +1,3 @@
1
+ export interface LibTagsGeneratorSchema {
2
+ silent?: boolean;
3
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/schema",
3
+ "$id": "LibTags",
4
+ "title": "",
5
+ "type": "object",
6
+ "properties": {
7
+ "silent": {
8
+ "type": "boolean",
9
+ "description": "",
10
+ "$default": false
11
+ }
12
+ },
13
+ "required": []
14
+ }
@@ -0,0 +1,4 @@
1
+ import { ProjectConfiguration, Tree } from '@nx/devkit';
2
+ import { LibTagsContext } from '../interfaces';
3
+ export declare const checkApplicationTags: (project: ProjectConfiguration, tree: Tree, context: LibTagsContext) => void;
4
+ export declare const checkLibraryTags: (project: ProjectConfiguration, tree: Tree, context: LibTagsContext) => void;
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkLibraryTags = exports.checkApplicationTags = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const utils_1 = require("../../../shared/utils");
6
+ const getTagFromLibPath = (libPath, type) => {
7
+ const projectAppTag = libPath.split('/')[1];
8
+ switch (type) {
9
+ case 'app':
10
+ return projectAppTag;
11
+ case 'scope':
12
+ return projectAppTag === utils_1.constants.sharedValue ? utils_1.constants.sharedValue : libPath.split('/')[2];
13
+ case 'type':
14
+ return projectAppTag === utils_1.constants.sharedValue ? libPath.split('/')[2] : libPath.split('/')[3];
15
+ }
16
+ };
17
+ const verifyLibraryTag = (project, tree, tag, tagType, context, ruleNotFoundCallback) => {
18
+ const defaultRuleNotFoundCallback = () => {
19
+ throw new Error(`Missing ${tagType} tag rule for ${tag}. Please add it to the ESLint config file.`);
20
+ };
21
+ if (tag) {
22
+ const tagRule = context.rules.find((rule) => rule.sourceTag === tag);
23
+ if (!tagRule) {
24
+ const callback = ruleNotFoundCallback || defaultRuleNotFoundCallback;
25
+ callback();
26
+ }
27
+ }
28
+ else {
29
+ context.log(`Missing ${tagType} tag for ${project.name}. Adding...`);
30
+ project = (0, devkit_1.readProjectConfiguration)(tree, project.name);
31
+ const tag = getTagFromLibPath(project.root, tagType);
32
+ if (tagType === 'type') {
33
+ const typeTagRule = context.rules.find((rule) => rule.sourceTag === `type:${tag}`);
34
+ if (!typeTagRule) {
35
+ throw new Error(`Missing type tag rule for ${tag}. Please add it to the ESLint config file.`);
36
+ }
37
+ }
38
+ (0, devkit_1.updateProjectConfiguration)(tree, project.name, Object.assign(Object.assign({}, project), { tags: [...project.tags, `${tagType}:${tag}`] }));
39
+ if (tagType === 'scope') {
40
+ (0, utils_1.addNxScopeTag)(tree, tag);
41
+ }
42
+ }
43
+ };
44
+ const checkApplicationTags = (project, tree, context) => {
45
+ const { tags } = project;
46
+ const appTag = tags.find((tag) => tag.startsWith('app:'));
47
+ const hasTypeTag = tags.includes('type:app');
48
+ if (appTag) {
49
+ const appTagRule = context.rules.find((rule) => rule.sourceTag === appTag);
50
+ if (!appTagRule) {
51
+ context.log(`Missing app tag rule for ${appTag}. Adding...\n`);
52
+ (0, utils_1.addNxAppTag)(tree, appTag.replace('app:', ''));
53
+ }
54
+ }
55
+ else {
56
+ context.log(`Missing app tag for ${project.name}. Adding...`);
57
+ const projectAppTag = project.root.split('/').pop();
58
+ (0, devkit_1.updateProjectConfiguration)(tree, project.name, Object.assign(Object.assign({}, project), { tags: [...project.tags, `app:${projectAppTag}`] }));
59
+ (0, utils_1.addNxAppTag)(tree, projectAppTag);
60
+ }
61
+ if (!hasTypeTag) {
62
+ context.log(`Missing type tag for ${project.name}. Adding...`);
63
+ project = (0, devkit_1.readProjectConfiguration)(tree, project.name);
64
+ (0, devkit_1.updateProjectConfiguration)(tree, project.name, Object.assign(Object.assign({}, project), { tags: [...project.tags, 'type:app'] }));
65
+ }
66
+ };
67
+ exports.checkApplicationTags = checkApplicationTags;
68
+ const checkLibraryTags = (project, tree, context) => {
69
+ const { tags } = project;
70
+ const appTag = tags.find((tag) => tag.startsWith('app:'));
71
+ const scopeTag = tags.find((tag) => tag.startsWith('scope:'));
72
+ const typeTag = tags.find((tag) => tag.startsWith('type:'));
73
+ verifyLibraryTag(project, tree, appTag, 'app', context);
74
+ verifyLibraryTag(project, tree, scopeTag, 'scope', context, () => {
75
+ context.log(`Missing scope tag rule for ${scopeTag}. Adding...`);
76
+ (0, utils_1.addNxScopeTag)(tree, scopeTag.replace('scope:', ''));
77
+ });
78
+ verifyLibraryTag(project, tree, typeTag, 'type', context);
79
+ };
80
+ exports.checkLibraryTags = checkLibraryTags;
81
+ //# sourceMappingURL=check-lib-tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-lib-tags.js","sourceRoot":"","sources":["../../../../../../plugin/src/generators/lib-tags/utils/check-lib-tags.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './check-lib-tags';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./check-lib-tags"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../plugin/src/generators/lib-tags/utils/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC"}
@@ -22,7 +22,7 @@ function nextAppGenerator(tree, options) {
22
22
  yield (0, generators_1.runAppEnvGenerator)(tree, options);
23
23
  const shouldGenerateStoreLib = (yield (0, utils_1.askQuestion)('Do you want to create store lib? (y/n): ')) === 'y';
24
24
  if (shouldGenerateStoreLib) {
25
- (0, child_process_1.execSync)(`npx nx g store ${options.name} ${options.directory} ${enums_1.BaseGeneratorType.NEXT_APP}`, { stdio: 'inherit' });
25
+ yield (0, generators_1.runStoreGenerator)(tree, Object.assign(Object.assign({}, options), { baseGeneratorType: enums_1.BaseGeneratorType.NEXT_APP }));
26
26
  }
27
27
  const shouldGenerateApiClientLib = shouldGenerateStoreLib && (yield (0, utils_1.askQuestion)('Do you want to create api client lib? (y/n): ')) === 'y';
28
28
  if (shouldGenerateApiClientLib) {
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/next-app/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/next-app/generator.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,20 @@
1
- import React, { Fragment, ReactElement } from 'react';
1
+ import React, { <% if(withForwardRef) { %>forwardRef, ForwardedRef, <% } %>Fragment, ReactElement } from 'react';
2
2
 
3
- interface <%= formatName(name, true) %>Props {
3
+ interface <%= name %>Props {
4
4
  // TODO: Describe props
5
5
  }
6
6
 
7
- export function <%= formatName(name, true) %>(props: <%= formatName(name, true) %>Props): ReactElement {
7
+ <% if(withForwardRef) { %>
8
+ export const <%= name %> = forwardRef(function Component(
9
+ props: <%= name %>Props,
10
+ ref: ForwardedRef<>, // TODO: add ref type
11
+ ): ReactElement {
12
+ // TODO: Implement component
13
+ return <Fragment />;
14
+ });
15
+ <% } else { %>
16
+ export function <%= name %>(props: <%= name %>Props): ReactElement {
8
17
  // TODO: Implement component
9
18
  return <Fragment />;
10
19
  }
20
+ <% } %>
@@ -20,6 +20,7 @@ function reactComponentGenerator(tree, options) {
20
20
  });
21
21
  options.name = options.name || (yield (0, utils_1.askQuestion)('Enter the name of the component (e.g: AppButton): '));
22
22
  options.subcomponent = options.subcomponent || (yield (0, utils_1.askQuestion)('Generate component inside components folder? (y/n): ')) === 'y';
23
+ options.withForwardRef = options.withForwardRef || (yield (0, utils_1.askQuestion)('Generate component with forwardRef? (y/n): ')) === 'y';
23
24
  const libRootPath = `${libPath}/lib`;
24
25
  const componentsPath = `${libRootPath}/components`;
25
26
  const componentPath = options.subcomponent
@@ -27,7 +28,7 @@ function reactComponentGenerator(tree, options) {
27
28
  : libRootPath;
28
29
  const shouldUpdateSrcIndex = !(0, fs_1.existsSync)(libRootPath);
29
30
  const shouldUpdateLibIndex = !(0, fs_1.existsSync)(componentsPath) && options.subcomponent;
30
- (0, devkit_1.generateFiles)(tree, path.join(__dirname, `files`), componentPath, Object.assign(Object.assign({}, options), { formatName: utils_1.formatName }));
31
+ (0, devkit_1.generateFiles)(tree, path.join(__dirname, `files`), componentPath, Object.assign(Object.assign({}, options), { name: (0, utils_1.formatName)(options.name, true) }));
31
32
  const updateIndexes = () => {
32
33
  const componentsIndexFilePath = `${libRootPath}/components/index.ts`;
33
34
  if (shouldUpdateSrcIndex) {
@@ -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,8CAQ4B;AAC5B,2BAAgC;AAEhC,SAAsB,uBAAuB,CAC3C,IAAU,EACV,OAAsC;;QAEtC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,IAAA,qBAAa,EAAoD,kCAAkC,CAAC,CAAC;QAE7I,MAAM,WAAW,GAAG,IAAA,sBAAc,EAAC,CAAC,mBAAW,CAAC,QAAQ,EAAE,mBAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3E,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;YACjC,OAAO,EAAE,yBAAyB;YAClC,MAAM,EAAE,CAAO,KAAK,EAAE,EAAE;gBACtB,MAAM,mBAAmB,GAAG,IAAA,yBAAiB,EAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBAEjE,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;YAC7D,CAAC,CAAA;SACF,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,KAAI,MAAM,IAAA,mBAAW,EAAC,oDAAoD,CAAC,CAAA,CAAC;QACvG,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAA,MAAM,IAAA,mBAAW,EAAC,sDAAsD,CAAC,MAAK,GAAG,CAAC;QAEjI,MAAM,WAAW,GAAG,GAAG,OAAO,MAAM,CAAC;QACrC,MAAM,cAAc,GAAG,GAAG,WAAW,aAAa,CAAC;QACnD,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY;YACxC,CAAC,CAAC,GAAG,WAAW,eAAe,IAAA,kBAAS,EAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxD,CAAC,CAAC,WAAW,CAAC;QAChB,MAAM,oBAAoB,GAAG,CAAC,IAAA,eAAU,EAAC,WAAW,CAAC,CAAC;QACtD,MAAM,oBAAoB,GAAG,CAAC,IAAA,eAAU,EAAC,cAAc,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC;QAEjF,IAAA,sBAAa,EAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,aAAa,kCAAO,OAAO,KAAE,UAAU,EAAV,kBAAU,IAAG,CAAC;QAE9F,MAAM,aAAa,GAAG,GAAS,EAAE;YAC/B,MAAM,uBAAuB,GAAG,GAAG,WAAW,sBAAsB,CAAC;YAErE,IAAI,oBAAoB,EAAE,CAAC;gBACzB,IAAA,yBAAiB,EAAC,GAAG,OAAO,WAAW,EAAE,0BAA0B,EAAE,IAAI,CAAC,CAAC;YAC7E,CAAC;YAED,IAAI,oBAAoB,EAAE,CAAC;gBACzB,IAAA,yBAAiB,EAAC,GAAG,WAAW,WAAW,EAAE,iCAAiC,EAAE,IAAI,CAAC,CAAC;YACxF,CAAC;YAED,IAAI,CAAC,IAAA,eAAU,EAAC,uBAAuB,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,oBAAoB,IAAA,kBAAS,EAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzF,CAAC;iBAAM,CAAC;gBACN,IAAA,yBAAiB,EAAC,uBAAuB,EAAE,oBAAoB,IAAA,kBAAS,EAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACtG,CAAC;QACH,CAAC,CAAA;QAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,aAAa,EAAE,CAAC;QAClB,CAAC;QAED,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CAAA;AArDD,0DAqDC;AAED,kBAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../plugin/src/generators/react-component/generator.ts"],"names":[],"mappings":"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"}