blend-kit 1.0.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.
Files changed (210) hide show
  1. package/dist/helper/ApiHelper.js +0 -0
  2. package/dist/helper/BasicHelper.js +28 -0
  3. package/dist/helper/CommonHelper.js +10 -0
  4. package/dist/helper/DataHelper.js +241 -0
  5. package/dist/helper/ExpressHelper.js +728 -0
  6. package/dist/helper/FrontEndApiHelper.js +485 -0
  7. package/dist/helper/FrontEndReactApiHelper.js +483 -0
  8. package/dist/helper/MongoHelper.js +143 -0
  9. package/dist/helper/RNHelper.js +560 -0
  10. package/dist/helper/ReactHelper.js +524 -0
  11. package/dist/helper/SectionHelper.js +152 -0
  12. package/dist/helper/fileHelper.js +127 -0
  13. package/dist/helper/grammarHelper/BlendApiGrammarHelper.js +48 -0
  14. package/dist/helper/grammarHelper/BlendBasicGrammarHelper.js +98 -0
  15. package/dist/helper/grammarHelper/BlendDataGrammarHelper.js +47 -0
  16. package/dist/helper/grammarHelper/BlendMDPGrammarHelper.js +29 -0
  17. package/dist/helper/grammarHelper/BlendMongoGrammarHelper.js +51 -0
  18. package/dist/helper/grammarHelper/BlendRNGrammarHelper.js +56 -0
  19. package/dist/helper/grammarHelper/BlendReactGrammarHelper.js +55 -0
  20. package/dist/helper/grammarHelper/GrammarErrorHelper.js +16 -0
  21. package/dist/index.js +159 -0
  22. package/dist/parser/blendApi/src/grammar/BlendApiLexer.js +201 -0
  23. package/dist/parser/blendApi/src/grammar/BlendApiListener.js +3 -0
  24. package/dist/parser/blendApi/src/grammar/BlendApiParser.js +961 -0
  25. package/dist/parser/blendData/src/grammar/BlendDataLexer.js +154 -0
  26. package/dist/parser/blendData/src/grammar/BlendDataListener.js +3 -0
  27. package/dist/parser/blendData/src/grammar/BlendDataParser.js +641 -0
  28. package/dist/parser/blendMDP/src/grammar/BlendMDPLexer.js +151 -0
  29. package/dist/parser/blendMDP/src/grammar/BlendMDPListener.js +3 -0
  30. package/dist/parser/blendMDP/src/grammar/BlendMDPParser.js +490 -0
  31. package/dist/parser/blendMongo/src/grammar/BlendMongoLexer.js +187 -0
  32. package/dist/parser/blendMongo/src/grammar/BlendMongoListener.js +3 -0
  33. package/dist/parser/blendMongo/src/grammar/BlendMongoParser.js +848 -0
  34. package/dist/parser/blendRN/src/grammar/BlendRNLexer.js +172 -0
  35. package/dist/parser/blendRN/src/grammar/BlendRNListener.js +3 -0
  36. package/dist/parser/blendRN/src/grammar/BlendRNParser.js +657 -0
  37. package/dist/parser/blendReact/src/grammar/BlendReactLexer.js +159 -0
  38. package/dist/parser/blendReact/src/grammar/BlendReactListener.js +3 -0
  39. package/dist/parser/blendReact/src/grammar/BlendReactParser.js +644 -0
  40. package/dist/parser/blendbasic/src/grammar/BlendBasicLexer.js +147 -0
  41. package/dist/parser/blendbasic/src/grammar/BlendBasicListener.js +3 -0
  42. package/dist/parser/blendbasic/src/grammar/BlendBasicParser.js +747 -0
  43. package/dist/src/app.js +76 -0
  44. package/dist/src/app.ts +54 -0
  45. package/dist/types/apiOperationTypes.js +13 -0
  46. package/dist/types/basicOperationTypes.js +2 -0
  47. package/dist/types/dataOperationTypes.js +2 -0
  48. package/dist/types/frontendOperationTypes.js +4 -0
  49. package/dist/types/generalTypes.js +0 -0
  50. package/dist/types/mongoOperationTypes.js +12 -0
  51. package/package.json +29 -0
  52. package/src/grammar/.antlr/ApiModuleLexer.interp +71 -0
  53. package/src/grammar/.antlr/ApiModuleLexer.java +194 -0
  54. package/src/grammar/.antlr/ApiModuleLexer.tokens +32 -0
  55. package/src/grammar/.antlr/BlendApi.interp +70 -0
  56. package/src/grammar/.antlr/BlendApi.tokens +44 -0
  57. package/src/grammar/.antlr/BlendApiLexer.interp +89 -0
  58. package/src/grammar/.antlr/BlendApiLexer.java +237 -0
  59. package/src/grammar/.antlr/BlendApiLexer.tokens +44 -0
  60. package/src/grammar/.antlr/BlendApiParser.java +767 -0
  61. package/src/grammar/.antlr/BlendBasic.interp +41 -0
  62. package/src/grammar/.antlr/BlendBasic.tokens +20 -0
  63. package/src/grammar/.antlr/BlendBasicLexer.interp +50 -0
  64. package/src/grammar/.antlr/BlendBasicLexer.java +179 -0
  65. package/src/grammar/.antlr/BlendBasicLexer.tokens +20 -0
  66. package/src/grammar/.antlr/BlendBasicParser.java +599 -0
  67. package/src/grammar/.antlr/BlendData.interp +50 -0
  68. package/src/grammar/.antlr/BlendData.tokens +29 -0
  69. package/src/grammar/.antlr/BlendDataLexer.interp +65 -0
  70. package/src/grammar/.antlr/BlendDataLexer.java +181 -0
  71. package/src/grammar/.antlr/BlendDataLexer.tokens +29 -0
  72. package/src/grammar/.antlr/BlendDataParser.java +520 -0
  73. package/src/grammar/.antlr/BlendMDP.interp +45 -0
  74. package/src/grammar/.antlr/BlendMDP.tokens +25 -0
  75. package/src/grammar/.antlr/BlendMDPLexer.interp +59 -0
  76. package/src/grammar/.antlr/BlendMDPLexer.java +178 -0
  77. package/src/grammar/.antlr/BlendMDPLexer.tokens +25 -0
  78. package/src/grammar/.antlr/BlendMDPParser.java +386 -0
  79. package/src/grammar/.antlr/BlendMongo.interp +65 -0
  80. package/src/grammar/.antlr/BlendMongo.tokens +41 -0
  81. package/src/grammar/.antlr/BlendMongoLexer.interp +83 -0
  82. package/src/grammar/.antlr/BlendMongoLexer.java +219 -0
  83. package/src/grammar/.antlr/BlendMongoLexer.tokens +41 -0
  84. package/src/grammar/.antlr/BlendMongoParser.java +669 -0
  85. package/src/grammar/.antlr/BlendRN.interp +53 -0
  86. package/src/grammar/.antlr/BlendRN.tokens +31 -0
  87. package/src/grammar/.antlr/BlendRNLexer.interp +71 -0
  88. package/src/grammar/.antlr/BlendRNLexer.java +202 -0
  89. package/src/grammar/.antlr/BlendRNLexer.tokens +31 -0
  90. package/src/grammar/.antlr/BlendRNParser.java +542 -0
  91. package/src/grammar/.antlr/BlendReact.interp +49 -0
  92. package/src/grammar/.antlr/BlendReact.tokens +28 -0
  93. package/src/grammar/.antlr/BlendReactLexer.interp +65 -0
  94. package/src/grammar/.antlr/BlendReactLexer.java +188 -0
  95. package/src/grammar/.antlr/BlendReactLexer.tokens +28 -0
  96. package/src/grammar/.antlr/BlendReactParser.java +530 -0
  97. package/src/grammar/BlendApi.g4 +26 -0
  98. package/src/grammar/BlendBasic.g4 +16 -0
  99. package/src/grammar/BlendData.g4 +24 -0
  100. package/src/grammar/BlendMDP.g4 +12 -0
  101. package/src/grammar/BlendMongo.g4 +24 -0
  102. package/src/grammar/BlendRN.g4 +18 -0
  103. package/src/grammar/BlendReact.g4 +16 -0
  104. package/src/helper/BasicHelper.ts +35 -0
  105. package/src/helper/CommonHelper.ts +5 -0
  106. package/src/helper/DataHelper.ts +268 -0
  107. package/src/helper/ExpressHelper.ts +807 -0
  108. package/src/helper/FrontEndApiHelper.ts +526 -0
  109. package/src/helper/FrontEndReactApiHelper.ts +532 -0
  110. package/src/helper/MongoHelper.ts +165 -0
  111. package/src/helper/RNHelper.ts +651 -0
  112. package/src/helper/ReactHelper.ts +597 -0
  113. package/src/helper/SectionHelper.ts +154 -0
  114. package/src/helper/fileHelper.ts +111 -0
  115. package/src/helper/grammarHelper/BlendApiGrammarHelper.ts +45 -0
  116. package/src/helper/grammarHelper/BlendBasicGrammarHelper.ts +101 -0
  117. package/src/helper/grammarHelper/BlendDataGrammarHelper.ts +49 -0
  118. package/src/helper/grammarHelper/BlendMDPGrammarHelper.ts +33 -0
  119. package/src/helper/grammarHelper/BlendMongoGrammarHelper.ts +50 -0
  120. package/src/helper/grammarHelper/BlendRNGrammarHelper.ts +65 -0
  121. package/src/helper/grammarHelper/BlendReactGrammarHelper.ts +65 -0
  122. package/src/helper/grammarHelper/GrammarErrorHelper.ts +13 -0
  123. package/src/index.ts +168 -0
  124. package/src/parser/blendApi/src/grammar/BlendApi.interp +70 -0
  125. package/src/parser/blendApi/src/grammar/BlendApi.tokens +44 -0
  126. package/src/parser/blendApi/src/grammar/BlendApiLexer.interp +89 -0
  127. package/src/parser/blendApi/src/grammar/BlendApiLexer.tokens +44 -0
  128. package/src/parser/blendApi/src/grammar/BlendApiLexer.ts +193 -0
  129. package/src/parser/blendApi/src/grammar/BlendApiListener.ts +145 -0
  130. package/src/parser/blendApi/src/grammar/BlendApiParser.ts +968 -0
  131. package/src/parser/blendData/src/grammar/BlendData.interp +50 -0
  132. package/src/parser/blendData/src/grammar/BlendData.tokens +29 -0
  133. package/src/parser/blendData/src/grammar/BlendDataLexer.interp +65 -0
  134. package/src/parser/blendData/src/grammar/BlendDataLexer.tokens +29 -0
  135. package/src/parser/blendData/src/grammar/BlendDataLexer.ts +146 -0
  136. package/src/parser/blendData/src/grammar/BlendDataListener.ts +97 -0
  137. package/src/parser/blendData/src/grammar/BlendDataParser.ts +641 -0
  138. package/src/parser/blendMDP/src/grammar/BlendMDP.interp +45 -0
  139. package/src/parser/blendMDP/src/grammar/BlendMDP.tokens +25 -0
  140. package/src/parser/blendMDP/src/grammar/BlendMDPLexer.interp +59 -0
  141. package/src/parser/blendMDP/src/grammar/BlendMDPLexer.tokens +25 -0
  142. package/src/parser/blendMDP/src/grammar/BlendMDPLexer.ts +143 -0
  143. package/src/parser/blendMDP/src/grammar/BlendMDPListener.ts +85 -0
  144. package/src/parser/blendMDP/src/grammar/BlendMDPParser.ts +483 -0
  145. package/src/parser/blendMongo/src/grammar/BlendMongo.interp +65 -0
  146. package/src/parser/blendMongo/src/grammar/BlendMongo.tokens +41 -0
  147. package/src/parser/blendMongo/src/grammar/BlendMongoLexer.interp +83 -0
  148. package/src/parser/blendMongo/src/grammar/BlendMongoLexer.tokens +41 -0
  149. package/src/parser/blendMongo/src/grammar/BlendMongoLexer.ts +179 -0
  150. package/src/parser/blendMongo/src/grammar/BlendMongoListener.ts +133 -0
  151. package/src/parser/blendMongo/src/grammar/BlendMongoParser.ts +849 -0
  152. package/src/parser/blendRN/src/grammar/BlendRN.interp +53 -0
  153. package/src/parser/blendRN/src/grammar/BlendRN.tokens +31 -0
  154. package/src/parser/blendRN/src/grammar/BlendRNLexer.interp +71 -0
  155. package/src/parser/blendRN/src/grammar/BlendRNLexer.tokens +31 -0
  156. package/src/parser/blendRN/src/grammar/BlendRNLexer.ts +164 -0
  157. package/src/parser/blendRN/src/grammar/BlendRNListener.ts +85 -0
  158. package/src/parser/blendRN/src/grammar/BlendRNParser.ts +659 -0
  159. package/src/parser/blendReact/src/grammar/BlendReact.interp +49 -0
  160. package/src/parser/blendReact/src/grammar/BlendReact.tokens +28 -0
  161. package/src/parser/blendReact/src/grammar/BlendReactLexer.interp +65 -0
  162. package/src/parser/blendReact/src/grammar/BlendReactLexer.tokens +28 -0
  163. package/src/parser/blendReact/src/grammar/BlendReactLexer.ts +151 -0
  164. package/src/parser/blendReact/src/grammar/BlendReactListener.ts +85 -0
  165. package/src/parser/blendReact/src/grammar/BlendReactParser.ts +646 -0
  166. package/src/parser/blendbasic/src/grammar/BlendBasic.interp +41 -0
  167. package/src/parser/blendbasic/src/grammar/BlendBasic.tokens +20 -0
  168. package/src/parser/blendbasic/src/grammar/BlendBasicLexer.interp +50 -0
  169. package/src/parser/blendbasic/src/grammar/BlendBasicLexer.tokens +20 -0
  170. package/src/parser/blendbasic/src/grammar/BlendBasicLexer.ts +139 -0
  171. package/src/parser/blendbasic/src/grammar/BlendBasicListener.ts +109 -0
  172. package/src/parser/blendbasic/src/grammar/BlendBasicParser.ts +747 -0
  173. package/src/types/apiOperationTypes.ts +43 -0
  174. package/src/types/basicOperationTypes.ts +15 -0
  175. package/src/types/dataOperationTypes.ts +20 -0
  176. package/src/types/frontendOperationTypes.ts +92 -0
  177. package/src/types/generalTypes.ts +0 -0
  178. package/src/types/mongoOperationTypes.ts +36 -0
  179. package/template/.env.dev +1 -0
  180. package/template/package.json +36 -0
  181. package/template/src/app.js +76 -0
  182. package/template/src/app.ts +54 -0
  183. package/template/src/config/app.config.js +0 -0
  184. package/template/src/config/app.config.ts +0 -0
  185. package/template/src/config/database.config.js +6 -0
  186. package/template/src/config/database.config.ts +4 -0
  187. package/template/src/data/interfaces.js +2 -0
  188. package/template/src/data/interfaces.ts +23 -0
  189. package/template/src/middlewares/auth.js +22 -0
  190. package/template/src/middlewares/auth.ts +21 -0
  191. package/template/src/models/Database.js +10 -0
  192. package/template/src/models/Database.ts +8 -0
  193. package/template/src/models/User/Permission.model.js +13 -0
  194. package/template/src/models/User/Permission.model.ts +14 -0
  195. package/template/src/models/User/Role.model.js +13 -0
  196. package/template/src/models/User/Role.model.ts +14 -0
  197. package/template/src/models/User/User.model.js +17 -0
  198. package/template/src/models/User/User.model.ts +18 -0
  199. package/template/src/routes/User.routes.js +47 -0
  200. package/template/src/routes/User.routes.ts +41 -0
  201. package/template/src/routes/common/common.routes.config.js +14 -0
  202. package/template/src/routes/common/common.routes.config.ts +15 -0
  203. package/template/src/services/User/User.service.js +75 -0
  204. package/template/src/services/User/User.service.ts +68 -0
  205. package/template/src/services/User/api.data.js +72 -0
  206. package/template/src/services/User/api.data.ts +79 -0
  207. package/template/src/services/User/api.interface.js +3 -0
  208. package/template/src/services/User/api.interface.ts +10 -0
  209. package/template/tsconfig.json +10 -0
  210. package/tsconfig.json +13 -0
@@ -0,0 +1,35 @@
1
+ import { IBasicSection } from "../types/basicOperationTypes";
2
+ import { FileHelper } from "./fileHelper";
3
+ import path from 'path';
4
+ import BlendBasicGrammarHelper from "./grammarHelper/BlendBasicGrammarHelper";
5
+
6
+ export default class BasicHelper {
7
+ basicFilePath: string;
8
+ folderName: string;
9
+ folderPath: string;
10
+ basicFileContent: string;
11
+ configPath: string;
12
+ constructor() {
13
+ this.folderPath = path.join(process.cwd());
14
+ this.folderName = path.basename(this.folderPath);
15
+ this.basicFilePath = path.join(this.folderPath, `${this.folderName}.basic`);
16
+ this.configPath = path.join(this.folderPath, '.basicConfig');
17
+ }
18
+
19
+ parseSpec(spec: string) {
20
+
21
+ const blendbasic = new BlendBasicGrammarHelper();
22
+ const basicParsedJSON = blendbasic.parseBlendBasic(spec);
23
+ if(basicParsedJSON.valid) {
24
+ basicParsedJSON.basicJson.name = this.folderName;
25
+ FileHelper.ensureDir(this.configPath);
26
+ FileHelper.writeFile(`${this.configPath}/basicConfig.json`, JSON.stringify(basicParsedJSON.basicJson));
27
+ } else {
28
+
29
+ }
30
+
31
+ }
32
+
33
+
34
+
35
+ }
@@ -0,0 +1,5 @@
1
+ export class CommonHelper {
2
+ static hyphenSepratedString(text: string) {
3
+ return text.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();;
4
+ }
5
+ }
@@ -0,0 +1,268 @@
1
+ import path from 'path';
2
+ import { FileHelper } from './fileHelper';
3
+ import { IDataField, IDataModule, IDataSection } from '../types/dataOperationTypes';
4
+ import { IBasicProject, IBasicSection } from '../types/basicOperationTypes';
5
+ import BlendDataGrammarHelper from './grammarHelper/BlendDataGrammarHelper';
6
+ const basicDataTypes = ["string","object","boolean","number","any"];
7
+ export default class DataHelper {
8
+ basicFilePath: string;
9
+ folderName: string;
10
+ folderPath: string;
11
+ basicFileContent: string;
12
+ configPath: string;
13
+ basicProjectContent: IBasicProject;
14
+ constructor() {
15
+ this.folderPath = path.join(process.cwd());
16
+ this.folderName = path.basename(this.folderPath);
17
+ this.basicFilePath = path.join(this.folderPath, `${this.folderName}.basic`);
18
+ this.configPath = path.join(this.folderPath, '.basicConfig');
19
+ this.basicProjectContent = JSON.parse(FileHelper.readFile(`${this.configPath}/basicConfig.json`) || "{}");
20
+
21
+ }
22
+
23
+ doDataOperations(basicFileContent) {
24
+ try {
25
+
26
+ this.basicFileContent = basicFileContent;
27
+ this.createDataSpec();
28
+ this.parseSpec();
29
+ } catch(e) {
30
+
31
+ }
32
+ }
33
+
34
+ createDataSpec() {
35
+ this.basicProjectContent.sectionList.forEach(section => {
36
+ const sectionName = section.name.trim();
37
+ const sectionFolderPath = path.join(this.folderPath, 'spec', sectionName);
38
+ const dataFolderPath = path.join(sectionFolderPath, 'data');
39
+ section.dataModuleList.forEach(dataModule => {
40
+ const dataFilePath = path.join(dataFolderPath, `${dataModule}.data`);
41
+ if (!FileHelper.exists(dataFilePath)) {
42
+ FileHelper.writeFile(dataFilePath, `module ${dataModule}`);
43
+ } else {
44
+ }
45
+ })
46
+ })
47
+ }
48
+
49
+ parseSpec() {
50
+ let sectionDataObjList = [];
51
+ this.basicProjectContent.sectionList.forEach(section => {
52
+ const sectionName = section.name;
53
+ const sectionFolderPath = path.join(this.folderPath, 'spec', sectionName);
54
+ let mainDataObjList = [];
55
+
56
+ const dataFolderPath = path.join(sectionFolderPath, 'data');
57
+ section.dataModuleList.forEach(module => {
58
+ const filePath = path.join(dataFolderPath, `${module}.data`);
59
+ const specCode = FileHelper.readFile(filePath)
60
+ const json = new BlendDataGrammarHelper().parseBlendData(specCode);
61
+ if(!json.valid) {
62
+ throw new Error("Error while parsing the syntax")
63
+ }
64
+ const moduleDataObject = json.moduleDataObject
65
+ mainDataObjList.push(moduleDataObject)
66
+
67
+ })
68
+ sectionDataObjList.push({
69
+ name: sectionName,
70
+ sectionDataList: mainDataObjList
71
+ });
72
+ });
73
+ FileHelper.writeFile(`${this.configPath}/dataConfig.json`, JSON.stringify(sectionDataObjList));
74
+
75
+ }
76
+
77
+
78
+ parseJSONAndGenerateFiles() {
79
+ try {
80
+ const sectionDataList: IDataSection[] = JSON.parse(FileHelper.readFile(`${this.configPath}/dataConfig.json`));
81
+
82
+ sectionDataList.forEach(async (sectionData) => {
83
+ const sectionPath = path.join(this.folderPath, `module/${sectionData.name}`);
84
+ sectionData.sectionDataList.forEach(async (moduleData) => {
85
+ const dataPath = path.join(sectionPath, `data/${moduleData.name}.ts`);
86
+
87
+ const imports = new Set<string>(); // Collect unique imports
88
+
89
+ // Generate class definitions
90
+ const classesCode = moduleData.dataList
91
+ .map((curItem) => {
92
+ // Collect imports for fields with types like "Module->ClassName"
93
+ curItem.fields.forEach((field) => {
94
+ const typeParts = field.type.split("->");
95
+ if (typeParts.length === 2) {
96
+ const [module, typeName] = typeParts;
97
+ const baseTypeName = typeName.endsWith("[]") ? typeName.slice(0, -2) : typeName;
98
+ imports.add(`import { ${baseTypeName} } from './${module}';`);
99
+ }
100
+ });
101
+
102
+ // Generate the class code
103
+ return `
104
+ export class ${curItem.name} {
105
+ constructor(
106
+ ${curItem.fields
107
+ .map(
108
+ (field) =>
109
+ ` public ${field.name}: ${this.resolveType(field.type)}${!field.required ? '|undefined' : ''} = ${this.getDefaultValue(
110
+ field,moduleData
111
+ )},`
112
+ )
113
+ .join('\n')}
114
+ ) {}
115
+
116
+ static fromJSON(jsonObj: any): ${curItem.name} {
117
+ return new ${curItem.name}(
118
+ ${curItem.fields
119
+ .map((field) => this.generateFromJSONField(field))
120
+ .join(',\n')}
121
+ );
122
+ }
123
+
124
+ public toJson(): object {
125
+ return {
126
+ ${curItem.fields
127
+ .map((field) => this.generateToJSONField(field))
128
+ .join('\n')}
129
+ };
130
+ }
131
+ }
132
+ `;
133
+ })
134
+ .join('\n');
135
+
136
+ // Combine imports and class definitions
137
+ const finalCode = `
138
+ ${Array.from(imports).join('\n')}
139
+
140
+ ${classesCode}
141
+ `;
142
+ FileHelper.writeFile(dataPath, finalCode);
143
+ this.basicProjectContent.sectionList.forEach(section => {
144
+ section.expressModuleList.forEach(expressModule => {
145
+ // if (expressModule.includedDataModuleList.includes(moduleData.name)) {
146
+ if(section.name==sectionData.name) {
147
+ const expressDataPath = `${this.folderPath}/module/${section.name}/express/${section.name}-api/src-gen/data/${expressModule.name}/${moduleData.name}.ts`
148
+ FileHelper.writeFile(expressDataPath, finalCode);
149
+ }
150
+
151
+ // }
152
+ });
153
+
154
+ section.rnModuleList.forEach(rnModule => {
155
+ // if (expressModule.includedDataModuleList.includes(moduleData.name)) {
156
+ if(section.name==sectionData.name) {
157
+ const rnDataPath = `${this.folderPath}/module/${section.name}/react-native/${rnModule.name}/src-gen/data/${moduleData.name}.ts`
158
+ FileHelper.writeFile(rnDataPath, finalCode);
159
+ }
160
+
161
+ // }
162
+ });
163
+
164
+ section.reactModuleList.forEach(reactModule => {
165
+ // if (expressModule.includedDataModuleList.includes(moduleData.name)) {
166
+ if(section.name==sectionData.name) {
167
+ const reactDataPath = `${this.folderPath}/module/${section.name}/react/${reactModule.name}/src/src-gen/data/${moduleData.name}.ts`
168
+ FileHelper.writeFile(reactDataPath, finalCode);
169
+ }
170
+ // }
171
+ });
172
+ })
173
+
174
+ });
175
+ });
176
+ } catch(e) {
177
+
178
+ }
179
+ }
180
+
181
+ resolveType(type: string): string {
182
+ const typeParts = type.split("->");
183
+ const baseType = typeParts.length === 2 ? typeParts[1] : type;
184
+ return baseType.endsWith("[]") ? `${baseType.slice(0, -2)}[]` : baseType; // Handle array types
185
+ }
186
+
187
+ getDefaultValue(field: IDataField,curItem: IDataModule): string {
188
+ const typeParts = field.type.split("->");
189
+ const baseType = typeParts.length === 2 ? typeParts[1] : field.type;
190
+ if (baseType.endsWith("[]")) {
191
+ return "[]"; // Default value for arrays
192
+ }
193
+ if (typeParts.length === 2) {
194
+ const [, typeName] = typeParts;
195
+ const baseTypeName = typeName.endsWith("[]") ? typeName.slice(0, -2) : typeName;
196
+ return `new ${baseTypeName}()`; // Instantiate the imported class
197
+ }
198
+
199
+ if(!basicDataTypes.includes(field.type)) {
200
+ const currentFieldType = curItem.dataList.find(item => item.name==field.type);
201
+ if(!currentFieldType) {
202
+ throw new Error(`unable to find out ${currentFieldType}`);
203
+ } else {
204
+ if(field.required) {
205
+ return `new ${currentFieldType.name}()`
206
+ } else {
207
+ return undefined
208
+ }
209
+ }
210
+ }
211
+ else {
212
+
213
+
214
+ switch (field.type) {
215
+ case "string":
216
+ return field.required ? "''" : "undefined";
217
+ case "object":
218
+ return field.required ? "{}" : "undefined";
219
+ case "boolean":
220
+ return field.required ? "false" : "undefined";
221
+ case "number":
222
+ return field.required ? "0" : "undefined";
223
+ default:
224
+ return "null";
225
+ }
226
+
227
+ }
228
+
229
+ }
230
+
231
+ generateFromJSONField(field: IDataField): string {
232
+ const typeParts = field.type.split("->");
233
+ const baseType = typeParts.length === 2 ? typeParts[1] : field.type;
234
+ if (baseType.endsWith("[]")) {
235
+ const elementType = baseType.slice(0, -2);
236
+ if (["string", "number", "boolean"].includes(elementType)) {
237
+ return ` jsonObj.${field.name} ?? []`;
238
+ }
239
+ return ` (jsonObj.${field.name} != null) ? jsonObj.${field.name}.map((item: any) => ${elementType}.fromJSON(item)) : []`;
240
+ }
241
+ if (typeParts.length === 2) {
242
+ const [, typeName] = typeParts;
243
+ const baseTypeName = typeName.endsWith("[]") ? typeName.slice(0, -2) : typeName;
244
+ return ` (jsonObj.${field.name} != null) ? ${baseTypeName}.fromJSON(jsonObj.${field.name}) : new ${baseTypeName}()`;
245
+ }
246
+ if(!basicDataTypes.includes(baseType)) {
247
+ const baseTypeName = baseType.endsWith("[]") ? baseType.slice(0, -2) : baseType;
248
+ return ` (jsonObj.${field.name} != null) ? ${baseTypeName}.fromJSON(jsonObj.${field.name}) : new ${baseTypeName}()`;
249
+ }
250
+ return ` (jsonObj.${field.name} !== null) ? jsonObj?.${field.name} : undefined`;
251
+ }
252
+
253
+ generateToJSONField(field: IDataField): string {
254
+ const typeParts = field.type.split("->");
255
+ const baseType = typeParts.length === 2 ? typeParts[1] : field.type;
256
+ if (baseType.endsWith("[]")) {
257
+ const elementType = baseType.slice(0, -2);
258
+ if (["string", "number", "boolean"].includes(elementType)) {
259
+ return ` ${field.name}: this.${field.name} ?? [],`;
260
+ }
261
+ return ` ${field.name}: (this.${field.name} != null) ? this.${field.name}.map((x) => x.toJson()) : [],`;
262
+ }
263
+ return ` ${field.name}: this.${field.name} != null ? this.${field.name} : undefined,`;
264
+ }
265
+
266
+
267
+
268
+ }