Skip to content

Commit 82fd246

Browse files
authored
fix(imports): Correct imports of services with no data object (#54)
1 parent a63197e commit 82fd246

File tree

1 file changed

+40
-35
lines changed

1 file changed

+40
-35
lines changed

src/createImports.mts

Lines changed: 40 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,32 @@ export const createImports = ({
2424
.getSourceFiles()
2525
.find((sourceFile) => sourceFile.getFilePath().includes("models.ts"));
2626

27+
const serviceFile = project
28+
.getSourceFiles()
29+
.find((sourceFile) => sourceFile.getFilePath().includes("services.ts"));
30+
2731
if (!modelsFile) {
2832
throw new Error("No models file found");
2933
}
3034

35+
if (!serviceFile) {
36+
throw new Error("No service file found");
37+
}
38+
3139
const modalNames = Array.from(modelsFile.getExportedDeclarations().keys());
3240

41+
const serviceExports = Array.from(
42+
serviceFile.getExportedDeclarations().keys()
43+
);
44+
45+
const serviceNames = serviceExports.filter((name) =>
46+
name.endsWith(serviceEndName)
47+
);
48+
49+
const serviceNamesData = serviceExports.filter((name) =>
50+
name.endsWith("Data")
51+
);
52+
3353
return [
3454
ts.factory.createImportDeclaration(
3555
undefined,
@@ -77,48 +97,33 @@ export const createImports = ({
7797
ts.factory.createStringLiteral("@tanstack/react-query"),
7898
undefined
7999
),
80-
// import all class names from service file
81-
...uniqueClassNames.map((className) => {
82-
return ts.factory.createImportDeclaration(
100+
ts.factory.createImportDeclaration(
101+
undefined,
102+
ts.factory.createImportClause(
103+
false,
83104
undefined,
84-
ts.factory.createImportClause(
85-
false,
86-
undefined,
87-
ts.factory.createNamedImports([
105+
ts.factory.createNamedImports([
106+
// import all class names from service file
107+
...serviceNames.map((serviceName) =>
88108
ts.factory.createImportSpecifier(
89109
false,
90110
undefined,
91-
ts.factory.createIdentifier(className)
92-
),
93-
])
94-
),
95-
ts.factory.createStringLiteral(join("../requests")),
96-
undefined
97-
);
98-
}),
99-
// import all data objects from service file
100-
...uniqueClassNames.map((className) => {
101-
// remove serviceEndName from the end of class name
102-
// TODO: we should use a better way to remove the serviceEndName from the end of the class name
103-
const classNameData = className.replace(serviceEndName, "");
104-
105-
return ts.factory.createImportDeclaration(
106-
undefined,
107-
ts.factory.createImportClause(
108-
false,
109-
undefined,
110-
ts.factory.createNamedImports([
111+
ts.factory.createIdentifier(serviceName)
112+
)
113+
),
114+
// import all data objects from service file
115+
...serviceNamesData.map((dataName) =>
111116
ts.factory.createImportSpecifier(
112117
false,
113118
undefined,
114-
ts.factory.createIdentifier(`${classNameData}Data`)
115-
),
116-
])
117-
),
118-
ts.factory.createStringLiteral(join("../requests")),
119-
undefined
120-
);
121-
}),
119+
ts.factory.createIdentifier(dataName)
120+
)
121+
),
122+
])
123+
),
124+
ts.factory.createStringLiteral(join("../requests")),
125+
undefined
126+
),
122127
// import all the models by name
123128
ts.factory.createImportDeclaration(
124129
undefined,

0 commit comments

Comments
 (0)