@powerhousedao/codegen 4.1.0-dev.15 → 4.1.0-dev.16

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.
@@ -9,11 +9,6 @@ export const schema: DocumentNode = gql`
9
9
  """
10
10
  Subgraph definition
11
11
  """
12
-
13
- """
14
- Queries:
15
- """
16
-
17
12
  type Query {
18
13
  example(driveId: String!): String
19
14
  }
@@ -2,6 +2,9 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/reducer.ts"
3
3
  force: true
4
4
  ---
5
+ // TODO: remove eslint-disable rules once refactor is done
6
+ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
7
+ /* eslint-disable @typescript-eslint/no-unsafe-argument */
5
8
  import { type StateReducer, isDocumentAction, createReducer } from "document-model";
6
9
  import { <%= 'type ' + h.changeCase.pascal(documentType) %>Document, z } from './types.js';
7
10
 
@@ -2,20 +2,17 @@
2
2
  to: "<%= rootDir %>/<%= h.changeCase.param(documentType) %>/gen/<%= module %>/error.ts"
3
3
  force: true
4
4
  ---
5
- <% if (actions.some(action => action.errors?.length > 0)) { _%>
5
+ <% if (errors.length > 0) { _%>
6
6
  export type ErrorCode =
7
- <% actions.forEach((action, actionIndex) => { _%>
8
- <% action.errors.forEach((error, errorIndex) => { _%>
9
- | '<%= h.changeCase.pascal(error.name) %>'<% if (actionIndex === actions.length - 1 && errorIndex === action.errors.length - 1) { %>;<% } %>
10
- <% }); _%>
7
+ <% errors.forEach((error, errorIndex) => { _%>
8
+ | '<%= h.changeCase.pascal(error.name) %>'<% if (errorIndex === errors.length - 1) { %>;<% } %>
11
9
  <% }); _%>
12
10
 
13
11
  export interface ReducerError {
14
12
  errorCode: ErrorCode;
15
13
  }
16
14
 
17
- <% actions.forEach(action => { _%>
18
- <% action.errors.forEach(error => { _%>
15
+ <% errors.forEach(error => { _%>
19
16
  export class <%= h.changeCase.pascal(error.name) %> extends Error implements ReducerError {
20
17
  errorCode = '<%= h.changeCase.pascal(error.name) %>' as ErrorCode;
21
18
  constructor(message = '<%= h.changeCase.pascal(error.name) %>') {
@@ -23,7 +20,6 @@ export class <%= h.changeCase.pascal(error.name) %> extends Error implements Red
23
20
  }
24
21
  }
25
22
 
26
- <% }); _%>
27
23
  <% }); _%>
28
24
 
29
25
  <% } _%>
@@ -32,9 +28,9 @@ export const errors = {
32
28
  <% if(action.errors?.length > 0){ -%>
33
29
  <%= h.changeCase.pascal(action.name) %>: {
34
30
  <% action.errors.forEach(error => { _%>
35
- <%= h.changeCase.pascal(error.name) %>,
31
+ <%= h.changeCase.pascal(error.name) %>,
36
32
  <% }); _%>
37
- },
33
+ },
38
34
  <% } -%>
39
35
  <% }); _%>
40
36
  };
@@ -1,13 +1,16 @@
1
+ import { type DocumentModelState } from "document-model";
1
2
  import { type Args } from "../generate-document-model/index.js";
2
3
  type ModuleArgs = Args & {
3
4
  module: string;
4
5
  };
6
+ type OperationError = DocumentModelState["specifications"][number]["modules"][number]["operations"][number]["errors"][number];
5
7
  type Actions = {
6
8
  name: string | null;
7
9
  hasInput: boolean;
8
10
  hasAttachment: boolean | undefined;
9
11
  scope: string;
10
12
  state: string;
13
+ errors: OperationError[];
11
14
  };
12
15
  declare const _default: {
13
16
  params: ({ args }: {
@@ -17,6 +20,7 @@ declare const _default: {
17
20
  documentType: string;
18
21
  module: string;
19
22
  actions: Actions[];
23
+ errors: import("document-model").DocumentModelOperationError[];
20
24
  };
21
25
  };
22
26
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAEhE,KAAK,UAAU,GAAG,IAAI,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5C,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;;uBAGmB;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE;;;;;;;AADzC,wBA6BE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,qCAAqC,CAAC;AAEhE,KAAK,UAAU,GAAG,IAAI,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5C,KAAK,cAAc,GACjB,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1G,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B,CAAC;;uBAGmB;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE;;;;;;;;AADzC,wBA2CE"}
@@ -11,17 +11,29 @@ exports.default = {
11
11
  name: a.name,
12
12
  hasInput: a.schema !== null,
13
13
  hasAttachment: a.schema?.includes(": Attachment"),
14
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
15
14
  scope: a.scope || "global",
16
15
  state: a.scope === "global" ? "" : a.scope, // the state this action affects
17
16
  errors: a.errors,
18
17
  }))
19
18
  : [];
19
+ const errors = actions.reduce((acc, action) => {
20
+ action.errors.forEach((error) => {
21
+ const existingError = acc.find((e) => e.code === error.code);
22
+ if (!existingError) {
23
+ acc.push(error);
24
+ }
25
+ else if (JSON.stringify(existingError) !== JSON.stringify(error)) {
26
+ console.warn(`Warning: Duplicate error code "${error.code}" with different fields found`);
27
+ }
28
+ });
29
+ return acc;
30
+ }, []);
20
31
  return {
21
32
  rootDir: args.rootDir,
22
33
  documentType: documentModel.name,
23
34
  module: (0, change_case_1.paramCase)(args.module),
24
35
  actions,
36
+ errors,
25
37
  };
26
38
  },
27
39
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.ts"],"names":[],"mappings":";;AAAA,6CAAwC;AAaxC,kBAAe;IACb,MAAM,EAAE,CAAC,EAAE,IAAI,EAAwB,EAAE,EAAE;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAuB,CAAC;QAC3E,MAAM,UAAU,GACd,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxE,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAC9B,CAAC;QAEF,MAAM,OAAO,GACX,eAAe,CAAC,MAAM,GAAG,CAAC;YACxB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,MAAM,KAAK,IAAI;gBAC3B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC;gBACjD,uEAAuE;gBACvE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,QAAQ;gBAC1B,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,gCAAgC;gBAC5E,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC;YACL,CAAC,CAAC,EAAE,CAAC;QAET,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,aAAa,CAAC,IAAI;YAChC,MAAM,EAAE,IAAA,uBAAS,EAAC,IAAI,CAAC,MAAM,CAAC;YAC9B,OAAO;SACR,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/codegen/.hygen/templates/powerhouse/generate-document-model-module/index.ts"],"names":[],"mappings":";;AAAA,6CAAwC;AAgBxC,kBAAe;IACb,MAAM,EAAE,CAAC,EAAE,IAAI,EAAwB,EAAE,EAAE;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAuB,CAAC;QAC3E,MAAM,UAAU,GACd,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxE,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAC/C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAC9B,CAAC;QAEF,MAAM,OAAO,GACX,eAAe,CAAC,MAAM,GAAG,CAAC;YACxB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,QAAQ,EAAE,CAAC,CAAC,MAAM,KAAK,IAAI;gBAC3B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC;gBACjD,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,QAAQ;gBAC1B,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,gCAAgC;gBAC5E,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC;YACL,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YAC9D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC9B,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC7D,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC;qBAAM,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnE,OAAO,CAAC,IAAI,CACV,kCAAkC,KAAK,CAAC,IAAI,+BAA+B,CAC5E,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,aAAa,CAAC,IAAI;YAChC,MAAM,EAAE,IAAA,uBAAS,EAAC,IAAI,CAAC,MAAM,CAAC;YAC9B,OAAO;YACP,MAAM;SACP,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -1,12 +1,13 @@
1
1
  import { type DocumentModelState, type Operation as ModuleOperation } from "document-model/document-model/gen/schema/types";
2
2
  import { type Project } from "ts-morph";
3
3
  export type ModuleSpec = DocumentModelState["specifications"][0]["modules"][0];
4
+ export type OperationError = ModuleOperation["errors"][number];
4
5
  export type Operation = ModuleOperation & {
5
6
  hasInput: boolean;
6
7
  hasAttachment: boolean | undefined;
7
8
  scope: string;
8
9
  state: string;
9
- errors?: unknown;
10
+ errors?: OperationError[];
10
11
  };
11
12
  export interface GenerationContext {
12
13
  rootDir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"GenerationContext.d.ts","sourceRoot":"","sources":["../../../../src/ts-morph-generator/core/GenerationContext.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,SAAS,IAAI,eAAe,EAClC,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAGxC,MAAM,MAAM,UAAU,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/E,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG;IACxC,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,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,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,EACL,KAAK,kBAAkB,EACvB,KAAK,SAAS,IAAI,eAAe,EAClC,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,UAAU,CAAC;AAGxC,MAAM,MAAM,UAAU,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/E,MAAM,MAAM,cAAc,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG;IACxC,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,cAAc,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,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"}
@@ -3,6 +3,7 @@ import { type GenerationContext } from "../core/GenerationContext.js";
3
3
  export declare class ReducerGenerator extends FileGenerator {
4
4
  generate(context: GenerationContext): Promise<void>;
5
5
  private static getDefaultReducerCode;
6
+ private addErrorImports;
6
7
  private getOutputPath;
7
8
  private createReducerObject;
8
9
  private addReducerMethod;
@@ -1 +1 @@
1
- {"version":3,"file":"ReducerGenerator.d.ts","sourceRoot":"","sources":["../../../../src/ts-morph-generator/file-generators/ReducerGenerator.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,KAAK,iBAAiB,EAEvB,MAAM,8BAA8B,CAAC;AAEtC,qBAAa,gBAAiB,SAAQ,aAAa;IAC3C,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCzD,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAOpC,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/file-generators/ReducerGenerator.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,KAAK,iBAAiB,EAGvB,MAAM,8BAA8B,CAAC;AAEtC,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"}
@@ -15,6 +15,8 @@ export class ReducerGenerator extends FileGenerator {
15
15
  this.importManager.addTypeImport(sourceFile, typeImportName, typeImportPath);
16
16
  // AST logic (specific to reducers)
17
17
  this.createReducerObject(sourceFile, typeImportName, context.operations, context.forceUpdate);
18
+ // Detect and import error classes used in the actual reducer code (after generation)
19
+ this.addErrorImports(sourceFile, context);
18
20
  await sourceFile.save();
19
21
  }
20
22
  static getDefaultReducerCode(methodName) {
@@ -23,6 +25,59 @@ export class ReducerGenerator extends FileGenerator {
23
25
  `throw new Error('Reducer "${methodName}" not yet implemented');`,
24
26
  ];
25
27
  }
28
+ addErrorImports(sourceFile, context) {
29
+ // Collect all errors from all operations
30
+ const allErrors = [];
31
+ context.operations.forEach((operation) => {
32
+ if (Array.isArray(operation.errors)) {
33
+ operation.errors
34
+ .filter((error) => error.name)
35
+ .forEach((error) => {
36
+ // Deduplicate errors by name
37
+ if (!allErrors.find((e) => e.name === error.name)) {
38
+ allErrors.push(error);
39
+ }
40
+ });
41
+ }
42
+ });
43
+ if (allErrors.length === 0)
44
+ return;
45
+ // Analyze the actual source file content to find which errors are used
46
+ const sourceFileContent = sourceFile.getFullText();
47
+ const usedErrors = new Set();
48
+ allErrors.forEach((error) => {
49
+ // Check if error class name is mentioned anywhere in the source file
50
+ // Look for patterns like "new ErrorName" or "throw ErrorName" or "ErrorName("
51
+ const errorPattern = new RegExp(`\\b${error.name}\\b`, "g");
52
+ if (errorPattern.test(sourceFileContent)) {
53
+ usedErrors.add(error.name);
54
+ }
55
+ });
56
+ // Add imports for used errors (only if they're not already imported)
57
+ if (usedErrors.size > 0) {
58
+ const errorImportPath = `../../gen/${paramCase(context.module.name)}/error.js`;
59
+ const errorClassNames = Array.from(usedErrors);
60
+ // Check if imports already exist to avoid duplicates
61
+ const existingImports = sourceFile.getImportDeclarations();
62
+ const existingErrorImport = existingImports.find((importDecl) => importDecl.getModuleSpecifierValue() === errorImportPath);
63
+ if (existingErrorImport) {
64
+ // Get already imported error names
65
+ const existingNamedImports = existingErrorImport
66
+ .getNamedImports()
67
+ .map((namedImport) => namedImport.getName());
68
+ // Only import errors that aren't already imported
69
+ const newErrorsToImport = errorClassNames.filter((errorName) => !existingNamedImports.includes(errorName));
70
+ if (newErrorsToImport.length > 0) {
71
+ // Add new named imports to existing import declaration
72
+ existingErrorImport.addNamedImports(newErrorsToImport);
73
+ }
74
+ }
75
+ else {
76
+ // Create new import declaration
77
+ this.importManager.addNamedImports(sourceFile, errorClassNames, errorImportPath);
78
+ }
79
+ }
80
+ }
26
81
  getOutputPath(context) {
27
82
  return this.directoryManager.getReducerPath(context.rootDir, context.docModel.name, context.module.name);
28
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ReducerGenerator.js","sourceRoot":"","sources":["../../../../src/ts-morph-generator/file-generators/ReducerGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReducerGenerator.js","sourceRoot":"","sources":["../../../../src/ts-morph-generator/file-generators/ReducerGenerator.ts"],"names":[],"mappings":"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"}