@powerhousedao/codegen 5.0.3 → 5.0.5

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 (180) hide show
  1. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/actions.esm.t +3 -3
  2. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/creators.esm.t +3 -2
  3. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/customUtils.esm.t +1 -1
  4. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/document-models.esm.t +14 -0
  5. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/document-schema.esm.t +56 -0
  6. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/document-type.esm.t +6 -0
  7. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/documentModel.esm.t +1 -1
  8. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/documentModelTest.esm.t +110 -15
  9. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/hooks.esm.t +49 -0
  10. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.esm.t +12 -4
  11. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/index.js +66 -7
  12. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/lib.esm.t +4 -2
  13. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/module.esm.t +22 -0
  14. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/ph-factories.esm.t +23 -23
  15. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/reducer.esm.t +16 -9
  16. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/root-utils.esm.t +11 -0
  17. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/rootActions.esm.t +13 -0
  18. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/rootIndex.esm.t +6 -26
  19. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/schema.esm.t +2 -2
  20. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/src-index.esm.t +5 -0
  21. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/types.esm.t +16 -16
  22. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/utils.esm.t +31 -10
  23. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/creators.esm.t +10 -5
  24. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/customTest.esm.t +13 -18
  25. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.js +15 -0
  26. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/index.js +99 -4
  27. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/resolvers.esm.t +21 -10
  28. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model-subgraph/schema.esm.t +4 -3
  29. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/CreateDocument.esm.t +26 -29
  30. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/DriveContents.esm.t +23 -0
  31. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/DriveExplorer.esm.t +5 -126
  32. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/EmptyState.esm.t +19 -0
  33. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/Files.esm.t +29 -0
  34. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/FolderTree.esm.t +1 -1
  35. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/Folders.esm.t +28 -0
  36. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/components/NavigationBreadcrumbs.esm.t +14 -0
  37. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/config.esm.t +2 -1
  38. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/editor.esm.t +5 -2
  39. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/editors.esm.t +14 -0
  40. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.js +26 -3
  41. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/lib.esm.t +4 -2
  42. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/module.esm.t +15 -0
  43. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/edit-name.esm.t +78 -0
  44. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/editor.esm.t +7 -104
  45. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/editors.esm.t +14 -0
  46. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.js +74 -1
  47. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/lib.esm.t +4 -2
  48. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/module.esm.t +16 -0
  49. package/dist/src/codegen/.hygen/templates/powerhouse/utils.js +46 -0
  50. package/dist/src/codegen/__tests__/config.d.ts +2 -0
  51. package/dist/src/codegen/__tests__/config.d.ts.map +1 -0
  52. package/dist/src/codegen/__tests__/config.js +2 -0
  53. package/dist/src/codegen/__tests__/config.js.map +1 -0
  54. package/dist/src/codegen/__tests__/constants.d.ts +16 -0
  55. package/dist/src/codegen/__tests__/constants.d.ts.map +1 -0
  56. package/dist/src/codegen/__tests__/constants.js +16 -0
  57. package/dist/src/codegen/__tests__/constants.js.map +1 -0
  58. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content-v3.d.ts +2 -0
  59. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content-v3.d.ts.map +1 -0
  60. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content-v3.js +9 -0
  61. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content-v3.js.map +1 -0
  62. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content.d.ts +3 -0
  63. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content.d.ts.map +1 -0
  64. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content.js +33 -0
  65. package/dist/src/codegen/__tests__/fixtures/expected-reducer-content.js.map +1 -0
  66. package/dist/src/codegen/__tests__/fixtures/run-generated-tests.d.ts +2 -0
  67. package/dist/src/codegen/__tests__/fixtures/run-generated-tests.d.ts.map +1 -0
  68. package/dist/src/codegen/__tests__/fixtures/run-generated-tests.js +23 -0
  69. package/dist/src/codegen/__tests__/fixtures/run-generated-tests.js.map +1 -0
  70. package/dist/src/codegen/__tests__/fixtures/typecheck.d.ts +2 -0
  71. package/dist/src/codegen/__tests__/fixtures/typecheck.d.ts.map +1 -0
  72. package/dist/src/codegen/__tests__/fixtures/typecheck.js +23 -0
  73. package/dist/src/codegen/__tests__/fixtures/typecheck.js.map +1 -0
  74. package/dist/src/codegen/__tests__/generate-doc-model.test.d.ts +2 -0
  75. package/dist/src/codegen/__tests__/generate-doc-model.test.d.ts.map +1 -0
  76. package/dist/src/codegen/__tests__/generate-doc-model.test.js +206 -0
  77. package/dist/src/codegen/__tests__/generate-doc-model.test.js.map +1 -0
  78. package/dist/src/codegen/__tests__/generate-drive-editor.test.d.ts +2 -0
  79. package/dist/src/codegen/__tests__/generate-drive-editor.test.d.ts.map +1 -0
  80. package/dist/src/codegen/__tests__/generate-drive-editor.test.js +153 -0
  81. package/dist/src/codegen/__tests__/generate-drive-editor.test.js.map +1 -0
  82. package/dist/src/codegen/__tests__/generate-editor.test.d.ts +2 -0
  83. package/dist/src/codegen/__tests__/generate-editor.test.d.ts.map +1 -0
  84. package/dist/src/codegen/__tests__/generate-editor.test.js +112 -0
  85. package/dist/src/codegen/__tests__/generate-editor.test.js.map +1 -0
  86. package/dist/src/codegen/__tests__/generate-manifest.test.d.ts +2 -0
  87. package/dist/src/codegen/__tests__/generate-manifest.test.d.ts.map +1 -0
  88. package/dist/src/codegen/__tests__/generate-manifest.test.js +192 -0
  89. package/dist/src/codegen/__tests__/generate-manifest.test.js.map +1 -0
  90. package/dist/src/codegen/__tests__/generate-schemas.test.d.ts +2 -0
  91. package/dist/src/codegen/__tests__/generate-schemas.test.d.ts.map +1 -0
  92. package/dist/src/codegen/__tests__/generate-schemas.test.js +143 -0
  93. package/dist/src/codegen/__tests__/generate-schemas.test.js.map +1 -0
  94. package/dist/src/codegen/__tests__/global-setup.d.ts +2 -0
  95. package/dist/src/codegen/__tests__/global-setup.d.ts.map +1 -0
  96. package/dist/src/codegen/__tests__/global-setup.js +21 -0
  97. package/dist/src/codegen/__tests__/global-setup.js.map +1 -0
  98. package/dist/src/codegen/__tests__/ts-morph-generator.test.d.ts +2 -0
  99. package/dist/src/codegen/__tests__/ts-morph-generator.test.d.ts.map +1 -0
  100. package/dist/src/codegen/__tests__/ts-morph-generator.test.js +72 -0
  101. package/dist/src/codegen/__tests__/ts-morph-generator.test.js.map +1 -0
  102. package/dist/src/codegen/__tests__/utils.d.ts +7 -0
  103. package/dist/src/codegen/__tests__/utils.d.ts.map +1 -0
  104. package/dist/src/codegen/__tests__/utils.js +52 -0
  105. package/dist/src/codegen/__tests__/utils.js.map +1 -0
  106. package/dist/src/codegen/generate.d.ts +12 -2
  107. package/dist/src/codegen/generate.d.ts.map +1 -1
  108. package/dist/src/codegen/generate.js +26 -11
  109. package/dist/src/codegen/generate.js.map +1 -1
  110. package/dist/src/codegen/graphql.js +1 -1
  111. package/dist/src/codegen/graphql.js.map +1 -1
  112. package/dist/src/codegen/hygen.d.ts +19 -10
  113. package/dist/src/codegen/hygen.d.ts.map +1 -1
  114. package/dist/src/codegen/hygen.js +62 -16
  115. package/dist/src/codegen/hygen.js.map +1 -1
  116. package/dist/src/create-lib/checkout-project.d.ts +13 -0
  117. package/dist/src/create-lib/checkout-project.d.ts.map +1 -0
  118. package/dist/src/create-lib/checkout-project.js +47 -0
  119. package/dist/src/create-lib/checkout-project.js.map +1 -0
  120. package/dist/src/create-lib/create-project.d.ts +9 -5
  121. package/dist/src/create-lib/create-project.d.ts.map +1 -1
  122. package/dist/src/create-lib/create-project.js +37 -45
  123. package/dist/src/create-lib/create-project.js.map +1 -1
  124. package/dist/src/create-lib/feature-flags.d.ts +4 -0
  125. package/dist/src/create-lib/feature-flags.d.ts.map +1 -0
  126. package/dist/src/create-lib/feature-flags.js +4 -0
  127. package/dist/src/create-lib/feature-flags.js.map +1 -0
  128. package/dist/src/create-lib/index.d.ts +1 -0
  129. package/dist/src/create-lib/index.d.ts.map +1 -1
  130. package/dist/src/create-lib/index.js +1 -0
  131. package/dist/src/create-lib/index.js.map +1 -1
  132. package/dist/src/create-lib/utils.d.ts +7 -0
  133. package/dist/src/create-lib/utils.d.ts.map +1 -0
  134. package/dist/src/create-lib/utils.js +28 -0
  135. package/dist/src/create-lib/utils.js.map +1 -0
  136. package/dist/src/ts-morph-generator/__tests__/ReducerGenerator.test.d.ts +2 -0
  137. package/dist/src/ts-morph-generator/__tests__/ReducerGenerator.test.d.ts.map +1 -0
  138. package/dist/src/ts-morph-generator/__tests__/ReducerGenerator.test.js +491 -0
  139. package/dist/src/ts-morph-generator/__tests__/ReducerGenerator.test.js.map +1 -0
  140. package/dist/src/ts-morph-generator/core/FileGenerator.d.ts +3 -1
  141. package/dist/src/ts-morph-generator/core/FileGenerator.d.ts.map +1 -1
  142. package/dist/src/ts-morph-generator/core/FileGenerator.js +3 -1
  143. package/dist/src/ts-morph-generator/core/FileGenerator.js.map +1 -1
  144. package/dist/src/ts-morph-generator/core/GenerationContext.d.ts +1 -0
  145. package/dist/src/ts-morph-generator/core/GenerationContext.d.ts.map +1 -1
  146. package/dist/src/ts-morph-generator/core/ReducerGenerator.d.ts.map +1 -1
  147. package/dist/src/ts-morph-generator/core/ReducerGenerator.js +14 -7
  148. package/dist/src/ts-morph-generator/core/ReducerGenerator.js.map +1 -1
  149. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.d.ts +2 -1
  150. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.d.ts.map +1 -1
  151. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.js +10 -3
  152. package/dist/src/ts-morph-generator/core/TSMorphCodeGenerator.js.map +1 -1
  153. package/dist/src/ts-morph-generator/utilities/DeclarationManager.d.ts +5 -0
  154. package/dist/src/ts-morph-generator/utilities/DeclarationManager.d.ts.map +1 -0
  155. package/dist/src/ts-morph-generator/utilities/DeclarationManager.js +10 -0
  156. package/dist/src/ts-morph-generator/utilities/DeclarationManager.js.map +1 -0
  157. package/dist/src/ts-morph-generator/utilities/ImportManager.d.ts +1 -0
  158. package/dist/src/ts-morph-generator/utilities/ImportManager.d.ts.map +1 -1
  159. package/dist/src/ts-morph-generator/utilities/ImportManager.js +13 -3
  160. package/dist/src/ts-morph-generator/utilities/ImportManager.js.map +1 -1
  161. package/dist/src/ts-morph-generator/utilities/index.d.ts +1 -0
  162. package/dist/src/ts-morph-generator/utilities/index.d.ts.map +1 -1
  163. package/dist/src/ts-morph-generator/utilities/index.js +1 -0
  164. package/dist/src/ts-morph-generator/utilities/index.js.map +1 -1
  165. package/dist/src/utils/validation.d.ts.map +1 -1
  166. package/dist/src/utils/validation.js +3 -4
  167. package/dist/src/utils/validation.js.map +1 -1
  168. package/dist/tsconfig.tsbuildinfo +1 -0
  169. package/dist/vitest.config.d.ts +3 -0
  170. package/dist/vitest.config.d.ts.map +1 -0
  171. package/dist/vitest.config.js +16 -0
  172. package/dist/vitest.config.js.map +1 -0
  173. package/package.json +13 -12
  174. package/dist/src/codegen/.hygen/templates/powerhouse/generate-document-model/lib.inject_export.esm.t +0 -7
  175. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/index.esm.t +0 -15
  176. package/dist/src/codegen/.hygen/templates/powerhouse/generate-drive-editor/lib.inject_export.esm.t +0 -7
  177. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/hooks.esm.t +0 -16
  178. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/index.esm.t +0 -15
  179. package/dist/src/codegen/.hygen/templates/powerhouse/generate-editor/lib.inject_export.esm.t +0 -7
  180. package/dist/tsconfig.lib.tsbuildinfo +0 -1
@@ -0,0 +1,491 @@
1
+ import { DeclarationManager, DirectoryManager, ImportManager, } from "@powerhousedao/codegen";
2
+ import { camelCase, paramCase, pascalCase } from "change-case";
3
+ import { Project } from "ts-morph";
4
+ import { beforeEach, describe, expect, it } from "vitest";
5
+ import { ReducerGenerator } from "../core/ReducerGenerator.js";
6
+ function makeVariableAndTypeNamesFromContext(context) {
7
+ const typeImportPath = `${context.packageName}/document-models/${paramCase(context.docModel.name)}`;
8
+ const typeImportName = `${pascalCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;
9
+ const operationHandlersObjectName = `${camelCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;
10
+ return { typeImportPath, typeImportName, operationHandlersObjectName };
11
+ }
12
+ // Custom DirectoryManager for testing that works with in-memory file system
13
+ class TestDirectoryManager extends DirectoryManager {
14
+ async ensureExists(dirPath) {
15
+ // Skip directory creation for in-memory file system
16
+ }
17
+ async createSourceFile(project, filePath) {
18
+ // Check if file already exists and return it, otherwise create new one
19
+ const existing = project.getSourceFile(filePath);
20
+ if (existing) {
21
+ return existing;
22
+ }
23
+ return project.createSourceFile(filePath);
24
+ }
25
+ getReducerPath(rootDir, docModelName, moduleName) {
26
+ // Use the same logic as the real DirectoryManager
27
+ return super.getReducerPath(rootDir, docModelName, moduleName);
28
+ }
29
+ }
30
+ describe("ReducerGenerator Integration", () => {
31
+ let generator;
32
+ let project;
33
+ let importManager;
34
+ let directoryManager;
35
+ let declarationManager;
36
+ beforeEach(() => {
37
+ // Use real instances with in-memory file system
38
+ project = new Project({ useInMemoryFileSystem: true });
39
+ importManager = new ImportManager();
40
+ directoryManager = new TestDirectoryManager();
41
+ declarationManager = new DeclarationManager();
42
+ generator = new ReducerGenerator(importManager, directoryManager, declarationManager);
43
+ });
44
+ describe("generate", () => {
45
+ it("should create a complete reducer file with proper AST structure", async () => {
46
+ const operations = [
47
+ {
48
+ id: "1",
49
+ name: "SET_TEST_VALUE",
50
+ description: null,
51
+ errors: [],
52
+ examples: [],
53
+ reducer: null,
54
+ schema: null,
55
+ template: null,
56
+ scope: "global",
57
+ hasInput: true,
58
+ hasAttachment: false,
59
+ state: "",
60
+ },
61
+ {
62
+ id: "2",
63
+ name: "DELETE_ITEM",
64
+ description: null,
65
+ errors: [],
66
+ examples: [],
67
+ reducer: null,
68
+ schema: null,
69
+ template: null,
70
+ scope: "global",
71
+ hasInput: false,
72
+ hasAttachment: false,
73
+ state: "",
74
+ },
75
+ ];
76
+ const context = {
77
+ rootDir: "/test",
78
+ packageName: "test",
79
+ docModel: { name: "TestDoc" },
80
+ module: { name: "testModule" },
81
+ project,
82
+ operations,
83
+ forceUpdate: false,
84
+ };
85
+ await generator.generate(context);
86
+ // Get the generated file
87
+ const expectedPath = "/test/document-model/test-doc/src/reducers/test-module.ts";
88
+ const sourceFile = project.getSourceFile(expectedPath);
89
+ const typeImportPath = `${context.packageName}/document-models/${paramCase(context.docModel.name)}`;
90
+ const operationHandlersObjectName = `${camelCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;
91
+ expect(sourceFile).toBeDefined();
92
+ const content = sourceFile.getFullText();
93
+ // Check type import
94
+ expect(content).toContain(`import type { TestDocTestModuleOperations } from "${typeImportPath}";`);
95
+ // Check reducer variable declaration
96
+ expect(content).toContain(`export const ${operationHandlersObjectName}: TestDocTestModuleOperations = {`);
97
+ // Check generated methods
98
+ expect(content).toContain("setTestValueOperation(state, action) {");
99
+ expect(content).toContain('// TODO: Implement "setTestValueOperation" reducer');
100
+ expect(content).toContain("throw new Error('Reducer \"setTestValueOperation\" not yet implemented');");
101
+ expect(content).toContain("deleteItemOperation(state, action) {");
102
+ expect(content).toContain('// TODO: Implement "deleteItemOperation" reducer');
103
+ expect(content).toContain("throw new Error('Reducer \"deleteItemOperation\" not yet implemented');");
104
+ });
105
+ it("should handle existing reducer file and add new methods", async () => {
106
+ // First, create a file with one method
107
+ const initialOperations = [
108
+ {
109
+ id: "1",
110
+ name: "SET_VALUE",
111
+ description: null,
112
+ errors: [],
113
+ examples: [],
114
+ reducer: null,
115
+ schema: null,
116
+ template: null,
117
+ scope: "global",
118
+ hasInput: true,
119
+ hasAttachment: false,
120
+ state: "",
121
+ },
122
+ ];
123
+ const context = {
124
+ rootDir: "/test",
125
+ packageName: "test",
126
+ docModel: { name: "MyDoc" },
127
+ module: { name: "myModule" },
128
+ project,
129
+ operations: initialOperations,
130
+ forceUpdate: false,
131
+ };
132
+ await generator.generate(context);
133
+ // Now add more operations
134
+ const newOperations = [
135
+ ...initialOperations,
136
+ {
137
+ id: "2",
138
+ name: "DELETE_VALUE",
139
+ description: null,
140
+ errors: [],
141
+ examples: [],
142
+ reducer: null,
143
+ schema: null,
144
+ template: null,
145
+ scope: "global",
146
+ hasInput: false,
147
+ hasAttachment: false,
148
+ state: "",
149
+ },
150
+ ];
151
+ const updatedContext = {
152
+ ...context,
153
+ operations: newOperations,
154
+ };
155
+ await generator.generate(updatedContext);
156
+ const expectedPath = "/test/document-model/my-doc/src/reducers/my-module.ts";
157
+ const sourceFile = project.getSourceFile(expectedPath);
158
+ const content = sourceFile.getFullText();
159
+ // Should have both methods
160
+ expect(content).toContain("setValueOperation(state, action) {");
161
+ expect(content).toContain("deleteValueOperation(state, action) {");
162
+ // Should only have one import and one reducer declaration
163
+ const importMatches = content.match(/import type/g);
164
+ expect(importMatches).toHaveLength(1);
165
+ const { typeImportName, operationHandlersObjectName } = makeVariableAndTypeNamesFromContext(context);
166
+ const reducerMatches = content.match(`export const ${operationHandlersObjectName}: ${typeImportName} = {`);
167
+ expect(reducerMatches).toHaveLength(1);
168
+ });
169
+ it("should update existing reducer type when different", async () => {
170
+ const context = {
171
+ rootDir: "/test",
172
+ packageName: "test",
173
+ docModel: { name: "TestDoc" },
174
+ module: { name: "firstModule" },
175
+ project,
176
+ operations: [
177
+ {
178
+ id: "1",
179
+ name: "SET_VALUE",
180
+ description: null,
181
+ errors: [],
182
+ examples: [],
183
+ reducer: null,
184
+ schema: null,
185
+ template: null,
186
+ scope: "global",
187
+ hasInput: true,
188
+ hasAttachment: false,
189
+ state: "",
190
+ },
191
+ ],
192
+ forceUpdate: false,
193
+ };
194
+ // Generate first time
195
+ await generator.generate(context);
196
+ const filePath = "/test/document-model/test-doc/src/reducers/first-module.ts";
197
+ let sourceFile = project.getSourceFile(filePath);
198
+ let content = sourceFile.getFullText();
199
+ const typeImportPath = `${context.packageName}/document-models/${paramCase(context.docModel.name)}`;
200
+ const typeImportName = `${pascalCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;
201
+ const operationHandlersObjectName = `${camelCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;
202
+ expect(content).toContain(`import type { ${typeImportName} } from "${typeImportPath}";`);
203
+ expect(content).toContain(`export const ${operationHandlersObjectName}: ${typeImportName} = {`);
204
+ // Manually change the reducer variable type to simulate an outdated file
205
+ const reducerVar = sourceFile.getVariableDeclaration(operationHandlersObjectName);
206
+ reducerVar.setType(`Old${typeImportName}`);
207
+ // Generate again - should update the type
208
+ await generator.generate(context);
209
+ sourceFile = project.getSourceFile(filePath);
210
+ content = sourceFile.getFullText();
211
+ // Should have the correct type now
212
+ expect(content).toContain(operationHandlersObjectName);
213
+ expect(content).not.toContain(`Old${typeImportName}`);
214
+ });
215
+ it("should skip generation when no operations provided", async () => {
216
+ const context = {
217
+ rootDir: "/test",
218
+ packageName: "test",
219
+ docModel: { name: "TestDoc" },
220
+ module: { name: "emptyModule" },
221
+ project,
222
+ operations: [], // No operations
223
+ forceUpdate: false,
224
+ };
225
+ await generator.generate(context);
226
+ // Should not create any files
227
+ const expectedPath = "/test/document-model/test-doc/src/reducers/empty-module.ts";
228
+ const sourceFile = project.getSourceFile(expectedPath);
229
+ expect(sourceFile).toBeUndefined();
230
+ });
231
+ it("should handle special characters and case conversion correctly", async () => {
232
+ const operations = [
233
+ {
234
+ id: "1",
235
+ name: "SET_SPECIAL_VALUE",
236
+ description: null,
237
+ errors: [],
238
+ examples: [],
239
+ reducer: null,
240
+ schema: null,
241
+ template: null,
242
+ scope: "global",
243
+ hasInput: true,
244
+ hasAttachment: false,
245
+ state: "",
246
+ },
247
+ ];
248
+ const context = {
249
+ rootDir: "/test",
250
+ packageName: "test",
251
+ docModel: { name: "test_doc_name" },
252
+ module: { name: "test_module_name" },
253
+ project,
254
+ operations,
255
+ forceUpdate: false,
256
+ };
257
+ await generator.generate(context);
258
+ const { typeImportPath, typeImportName, operationHandlersObjectName } = makeVariableAndTypeNamesFromContext(context);
259
+ const expectedPath = "/test/document-model/test-doc-name/src/reducers/test-module-name.ts";
260
+ const sourceFile = project.getSourceFile(expectedPath);
261
+ const content = sourceFile.getFullText();
262
+ // Check PascalCase type name
263
+ expect(content).toContain(typeImportName);
264
+ // Check param-case import path
265
+ expect(content).toContain(`import type { ${typeImportName} } from "${typeImportPath}";`);
266
+ // Check camelCase method name
267
+ expect(content).toContain("setSpecialValueOperation(state, action)");
268
+ });
269
+ it("should skip operations with null or empty names", async () => {
270
+ const operations = [
271
+ {
272
+ id: "1",
273
+ name: "VALID_ACTION",
274
+ description: null,
275
+ errors: [],
276
+ examples: [],
277
+ reducer: null,
278
+ schema: null,
279
+ template: null,
280
+ scope: "global",
281
+ hasInput: true,
282
+ hasAttachment: false,
283
+ state: "",
284
+ },
285
+ {
286
+ id: "2",
287
+ name: null, // Should be skipped
288
+ description: null,
289
+ errors: [],
290
+ examples: [],
291
+ reducer: null,
292
+ schema: null,
293
+ template: null,
294
+ scope: "global",
295
+ hasInput: false,
296
+ hasAttachment: false,
297
+ state: "",
298
+ },
299
+ {
300
+ id: "3",
301
+ name: "", // Should be skipped
302
+ description: null,
303
+ errors: [],
304
+ examples: [],
305
+ reducer: null,
306
+ schema: null,
307
+ template: null,
308
+ scope: "global",
309
+ hasInput: false,
310
+ hasAttachment: false,
311
+ state: "",
312
+ },
313
+ ];
314
+ const context = {
315
+ rootDir: "/test",
316
+ packageName: "test",
317
+ docModel: { name: "TestDoc" },
318
+ module: { name: "testModule" },
319
+ project,
320
+ operations,
321
+ forceUpdate: false,
322
+ };
323
+ await generator.generate(context);
324
+ const expectedPath = "/test/document-model/test-doc/src/reducers/test-module.ts";
325
+ const sourceFile = project.getSourceFile(expectedPath);
326
+ const content = sourceFile.getFullText();
327
+ // Should only have the valid operation method
328
+ expect(content).toContain("validActionOperation(state, action)");
329
+ // Should not have methods for null/empty names
330
+ const methodMatches = content.match(/Operation\(state, action\)/g);
331
+ expect(methodMatches).toHaveLength(1); // Only one method
332
+ });
333
+ it("should generate custom reducer code when provided", async () => {
334
+ const operations = [
335
+ {
336
+ id: "1",
337
+ name: "SET_VALUE",
338
+ description: null,
339
+ errors: [],
340
+ examples: [],
341
+ reducer: "state.value = action.input.value;\nreturn state;",
342
+ schema: null,
343
+ template: null,
344
+ scope: "global",
345
+ hasInput: true,
346
+ hasAttachment: false,
347
+ state: "",
348
+ },
349
+ ];
350
+ const context = {
351
+ rootDir: "/test",
352
+ packageName: "test",
353
+ docModel: { name: "TestDoc" },
354
+ module: { name: "testModule" },
355
+ project,
356
+ operations,
357
+ forceUpdate: false,
358
+ };
359
+ await generator.generate(context);
360
+ const expectedPath = "/test/document-model/test-doc/src/reducers/test-module.ts";
361
+ const sourceFile = project.getSourceFile(expectedPath);
362
+ const content = sourceFile.getFullText();
363
+ // Should contain custom reducer code instead of TODO
364
+ expect(content).toContain("state.value = action.input.value;");
365
+ expect(content).toContain("return state;");
366
+ expect(content).not.toContain('// TODO: Implement "setValueOperation" reducer');
367
+ expect(content).not.toContain("throw new Error");
368
+ });
369
+ it("should update existing reducer when forceUpdate is true", async () => {
370
+ // First, create a reducer with default implementation
371
+ const initialOperations = [
372
+ {
373
+ id: "1",
374
+ name: "SET_VALUE",
375
+ description: null,
376
+ errors: [],
377
+ examples: [],
378
+ reducer: null,
379
+ schema: null,
380
+ template: null,
381
+ scope: "global",
382
+ hasInput: true,
383
+ hasAttachment: false,
384
+ state: "",
385
+ },
386
+ ];
387
+ const context = {
388
+ rootDir: "/test",
389
+ packageName: "test",
390
+ docModel: { name: "TestDoc" },
391
+ module: { name: "testModule" },
392
+ project,
393
+ operations: initialOperations,
394
+ forceUpdate: false,
395
+ };
396
+ await generator.generate(context);
397
+ const expectedPath = "/test/document-model/test-doc/src/reducers/test-module.ts";
398
+ let sourceFile = project.getSourceFile(expectedPath);
399
+ let content = sourceFile.getFullText();
400
+ // Should have default TODO implementation
401
+ expect(content).toContain('// TODO: Implement "setValueOperation" reducer');
402
+ // Now update with custom reducer code and forceUpdate = true
403
+ const updatedOperations = [
404
+ {
405
+ id: "1",
406
+ name: "SET_VALUE",
407
+ description: null,
408
+ errors: [],
409
+ examples: [],
410
+ reducer: "state.customValue = action.input.value;\nreturn state;",
411
+ schema: null,
412
+ template: null,
413
+ scope: "global",
414
+ hasInput: true,
415
+ hasAttachment: false,
416
+ state: "",
417
+ },
418
+ ];
419
+ const updatedContext = {
420
+ ...context,
421
+ operations: updatedOperations,
422
+ forceUpdate: true,
423
+ };
424
+ await generator.generate(updatedContext);
425
+ sourceFile = project.getSourceFile(expectedPath);
426
+ content = sourceFile.getFullText();
427
+ // Should now have custom implementation
428
+ expect(content).toContain("state.customValue = action.input.value;");
429
+ expect(content).not.toContain('// TODO: Implement "setValueOperation" reducer');
430
+ });
431
+ it("should not update existing reducer when forceUpdate is false", async () => {
432
+ // First, create a reducer with default implementation
433
+ const initialOperations = [
434
+ {
435
+ id: "1",
436
+ name: "SET_VALUE",
437
+ description: null,
438
+ errors: [],
439
+ examples: [],
440
+ reducer: null,
441
+ schema: null,
442
+ template: null,
443
+ scope: "global",
444
+ hasInput: true,
445
+ hasAttachment: false,
446
+ state: "",
447
+ },
448
+ ];
449
+ const context = {
450
+ rootDir: "/test",
451
+ packageName: "test",
452
+ docModel: { name: "TestDoc" },
453
+ module: { name: "testModule" },
454
+ project,
455
+ operations: initialOperations,
456
+ forceUpdate: false,
457
+ };
458
+ await generator.generate(context);
459
+ // Now try to update with custom reducer code but forceUpdate = false
460
+ const updatedOperations = [
461
+ {
462
+ id: "1",
463
+ name: "SET_VALUE",
464
+ description: null,
465
+ errors: [],
466
+ examples: [],
467
+ reducer: "state.customValue = action.input.value;\nreturn state;",
468
+ schema: null,
469
+ template: null,
470
+ scope: "global",
471
+ hasInput: true,
472
+ hasAttachment: false,
473
+ state: "",
474
+ },
475
+ ];
476
+ const updatedContext = {
477
+ ...context,
478
+ operations: updatedOperations,
479
+ forceUpdate: false,
480
+ };
481
+ await generator.generate(updatedContext);
482
+ const expectedPath = "/test/document-model/test-doc/src/reducers/test-module.ts";
483
+ const sourceFile = project.getSourceFile(expectedPath);
484
+ const content = sourceFile.getFullText();
485
+ // Should still have original TODO implementation
486
+ expect(content).toContain('// TODO: Implement "setValueOperation" reducer');
487
+ expect(content).not.toContain("state.customValue = action.input.value;");
488
+ });
489
+ });
490
+ });
491
+ //# sourceMappingURL=ReducerGenerator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReducerGenerator.test.js","sourceRoot":"","sources":["../../../../src/ts-morph-generator/__tests__/ReducerGenerator.test.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,11 @@
1
1
  import type { DirectoryManager, ImportManager } from "@powerhousedao/codegen";
2
+ import type { DeclarationManager } from "../utilities/DeclarationManager.js";
2
3
  import type { GenerationContext } from "./GenerationContext.js";
3
4
  export declare abstract class FileGenerator {
4
5
  protected importManager: ImportManager;
5
6
  protected directoryManager: DirectoryManager;
6
- constructor(importManager: ImportManager, directoryManager: DirectoryManager);
7
+ protected declarationManager: DeclarationManager;
8
+ constructor(importManager: ImportManager, directoryManager: DirectoryManager, declarationManager: DeclarationManager);
7
9
  abstract generate(context: GenerationContext): Promise<void>;
8
10
  }
9
11
  //# sourceMappingURL=FileGenerator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileGenerator.d.ts","sourceRoot":"","sources":["../../../../src/ts-morph-generator/core/FileGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,8BAAsB,aAAa;IAE/B,SAAS,CAAC,aAAa,EAAE,aAAa;IACtC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB;gBADlC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB;IAG9C,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAC7D"}
1
+ {"version":3,"file":"FileGenerator.d.ts","sourceRoot":"","sources":["../../../../src/ts-morph-generator/core/FileGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,8BAAsB,aAAa;IAE/B,SAAS,CAAC,aAAa,EAAE,aAAa;IACtC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB;IAC5C,SAAS,CAAC,kBAAkB,EAAE,kBAAkB;gBAFtC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,kBAAkB,EAAE,kBAAkB;IAGlD,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAC7D"}
@@ -1,9 +1,11 @@
1
1
  export class FileGenerator {
2
2
  importManager;
3
3
  directoryManager;
4
- constructor(importManager, directoryManager) {
4
+ declarationManager;
5
+ constructor(importManager, directoryManager, declarationManager) {
5
6
  this.importManager = importManager;
6
7
  this.directoryManager = directoryManager;
8
+ this.declarationManager = declarationManager;
7
9
  }
8
10
  }
9
11
  //# sourceMappingURL=FileGenerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileGenerator.js","sourceRoot":"","sources":["../../../../src/ts-morph-generator/core/FileGenerator.ts"],"names":[],"mappings":"AAGA,MAAM,OAAgB,aAAa;IAErB;IACA;IAFZ,YACY,aAA4B,EAC5B,gBAAkC;QADlC,kBAAa,GAAb,aAAa,CAAe;QAC5B,qBAAgB,GAAhB,gBAAgB,CAAkB;IAC3C,CAAC;CAGL"}
1
+ {"version":3,"file":"FileGenerator.js","sourceRoot":"","sources":["../../../../src/ts-morph-generator/core/FileGenerator.ts"],"names":[],"mappings":"AAIA,MAAM,OAAgB,aAAa;IAErB;IACA;IACA;IAHZ,YACY,aAA4B,EAC5B,gBAAkC,EAClC,kBAAsC;QAFtC,kBAAa,GAAb,aAAa,CAAe;QAC5B,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,uBAAkB,GAAlB,kBAAkB,CAAoB;IAC/C,CAAC;CAGL"}
@@ -19,6 +19,7 @@ export type CodegenOperation = {
19
19
  };
20
20
  export interface GenerationContext {
21
21
  rootDir: string;
22
+ packageName: string;
22
23
  docModel: DocumentModelGlobalState;
23
24
  module: ModuleSpecification;
24
25
  project: Project;
@@ -1 +1 @@
1
- {"version":3,"file":"GenerationContext.d.ts","sourceRoot":"","sources":["../../../../src/ts-morph-generator/core/GenerationContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,2BAA2B,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,wBAAwB,CAAC;IACnC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC"}
1
+ {"version":3,"file":"GenerationContext.d.ts","sourceRoot":"","sources":["../../../../src/ts-morph-generator/core/GenerationContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,2BAA2B,EAAE,CAAC;CACxC,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,wBAAwB,CAAC;IACnC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReducerGenerator.d.ts","sourceRoot":"","sources":["../../../../src/ts-morph-generator/core/ReducerGenerator.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAEhC,qBAAa,gBAAiB,SAAQ,aAAa;IAC3C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCzD,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAOpC,OAAO,CAAC,eAAe;IAyEvB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,mBAAmB;IAsC3B,OAAO,CAAC,gBAAgB;IAiCxB,OAAO,CAAC,oBAAoB;CAK7B"}
1
+ {"version":3,"file":"ReducerGenerator.d.ts","sourceRoot":"","sources":["../../../../src/ts-morph-generator/core/ReducerGenerator.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAEhC,qBAAa,gBAAiB,SAAQ,aAAa;IAC3C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCzD,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAOpC,OAAO,CAAC,eAAe;IAyEvB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,mBAAmB;IAkD3B,OAAO,CAAC,gBAAgB;IAiCxB,OAAO,CAAC,oBAAoB;CAK7B"}
@@ -8,13 +8,14 @@ export class ReducerGenerator extends FileGenerator {
8
8
  return;
9
9
  const filePath = this.getOutputPath(context);
10
10
  const sourceFile = await this.directoryManager.createSourceFile(context.project, filePath);
11
+ const packageName = context.packageName;
11
12
  // Reducer-specific import logic
12
13
  const typeImportName = `${pascalCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;
13
- const typeImportPath = `../../gen/${paramCase(context.module.name)}/operations.js`;
14
+ const typeImportPath = `${packageName}/document-models/${paramCase(context.docModel.name)}`;
14
15
  // Import management (shared utility)
15
- this.importManager.addTypeImport(sourceFile, typeImportName, typeImportPath);
16
+ this.importManager.replaceImportByName(sourceFile, typeImportName, typeImportPath, true);
16
17
  // AST logic (specific to reducers)
17
- this.createReducerObject(sourceFile, typeImportName, context.operations, context.forceUpdate);
18
+ this.createReducerObject(sourceFile, typeImportName, context);
18
19
  // Detect and import error classes used in the actual reducer code (after generation)
19
20
  this.addErrorImports(sourceFile, context);
20
21
  await sourceFile.save();
@@ -81,21 +82,27 @@ export class ReducerGenerator extends FileGenerator {
81
82
  getOutputPath(context) {
82
83
  return this.directoryManager.getReducerPath(context.rootDir, context.docModel.name, context.module.name);
83
84
  }
84
- createReducerObject(sourceFile, typeName, operations, forceUpdate = false) {
85
- let reducerVar = sourceFile.getVariableDeclaration("reducer");
85
+ createReducerObject(sourceFile, typeName, context) {
86
+ const { operations, forceUpdate } = context;
87
+ const operationHandlersObjectName = `${camelCase(context.docModel.name)}${pascalCase(context.module.name)}Operations`;
88
+ const legacyReducerVar = sourceFile.getVariableDeclaration("reducer");
89
+ if (legacyReducerVar) {
90
+ this.declarationManager.renameVariable(sourceFile, "reducer", operationHandlersObjectName);
91
+ }
92
+ let reducerVar = sourceFile.getVariableDeclaration(operationHandlersObjectName);
86
93
  if (!reducerVar) {
87
94
  sourceFile.addVariableStatement({
88
95
  declarationKind: VariableDeclarationKind.Const,
89
96
  isExported: true,
90
97
  declarations: [
91
98
  {
92
- name: "reducer",
99
+ name: operationHandlersObjectName,
93
100
  type: typeName,
94
101
  initializer: "{}",
95
102
  },
96
103
  ],
97
104
  });
98
- reducerVar = sourceFile.getVariableDeclarationOrThrow("reducer");
105
+ reducerVar = sourceFile.getVariableDeclarationOrThrow(operationHandlersObjectName);
99
106
  }
100
107
  else {
101
108
  // Ensure correct type