Skip to content

Commit 2f3d9ee

Browse files
committed
feat: updates generateTypeHelper to use type keyword and updates prettier version
* adds support for verbatimModuleSyntax * adds support for user defined prettier config * updates prettier and related dependencies to latest versions BREAKING CHANGE: Typescript < 3.8 is no longer supported, please update to typescript >= 3.8 COMPLETES: #242
1 parent d08f56a commit 2f3d9ee

31 files changed

+1254
-924
lines changed

package-lock.json

Lines changed: 1039 additions & 719 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,13 @@
9797
"lodash.kebabcase": "^4.1.1",
9898
"lodash.snakecase": "^4.1.1",
9999
"ora": "^5.1.0",
100-
"prettier": "^1.19.1",
100+
"prettier": "^3.2.5",
101101
"svgo": "^3.0.2",
102102
"typescript": "^4.9.4"
103103
},
104104
"devDependencies": {
105-
"@commitlint/cli": "^11.0.0",
106-
"@commitlint/config-conventional": "^11.0.0",
105+
"@commitlint/cli": "^18.6.1",
106+
"@commitlint/config-conventional": "^18.6.2",
107107
"@semantic-release/changelog": "^3.0.1",
108108
"@semantic-release/exec": "^3.3.2",
109109
"@semantic-release/git": "^7.0.6",
@@ -116,7 +116,7 @@
116116
"husky": "^3.1.0",
117117
"import-conductor": "^2.0.3",
118118
"jest": "^24.9.0",
119-
"pretty-quick": "^2.0.1",
119+
"pretty-quick": "^4.0.0",
120120
"replace-json-property": "^1.4.1",
121121
"semantic-release": "^15.13.31",
122122
"ts-jest": "^24.2.0",

src/lib/compiler/typescript-compiler.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export const compileToEsNext = (filePaths: string[], outputDir: string): void =>
88
outDir: outputDir,
99
moduleResolution: ts.ModuleResolutionKind.NodeJs,
1010
target: ts.ScriptTarget.ES2020,
11-
module: ts.ModuleKind.ESNext
11+
module: ts.ModuleKind.ESNext,
1212
};
1313

1414
ts.createProgram(filePaths, compilerOptionsNext).emit();
@@ -23,7 +23,7 @@ export const addMJsExtensionToImportStatements = (outputDir: string): void => {
2323
return;
2424
}
2525

26-
children.forEach(file => {
26+
children.forEach((file) => {
2727
const path = `${outputDir}/${file}`;
2828
if (lstatSync(path).isDirectory()) {
2929
addMJsExtensionToImportStatements(path);
@@ -46,7 +46,7 @@ export const renameJsFilesToMJs = (outputDir: string) => {
4646
return;
4747
}
4848

49-
children.forEach(file => {
49+
children.forEach((file) => {
5050
const path = `${outputDir}/${file}`;
5151
if (lstatSync(path).isDirectory()) {
5252
renameJsFilesToMJs(path);
@@ -64,7 +64,7 @@ export const compileToUMD = (filePaths: string[], outputDir: string): void => {
6464
outDir: outputDir,
6565
moduleResolution: ts.ModuleResolutionKind.NodeJs,
6666
target: ts.ScriptTarget.ES2020,
67-
module: ts.ModuleKind.UMD
67+
module: ts.ModuleKind.UMD,
6868
};
6969
ts.createProgram(filePaths, compilerOptionsUMD).emit();
7070
};

src/lib/converters/constants.converter.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
generateSvgConstant,
55
generateTSXConstant,
66
generateTypeDefinition,
7-
generateTypeHelper
7+
generateTypeHelper,
88
} from '../generators/code-snippet-generators';
99
import { generateExportSection } from '../helpers/complete-icon-set.helper';
1010
import { writeFile } from '../helpers/file-helpers';
@@ -20,7 +20,7 @@ export async function convertToConstants(conversionOptions: ConstantsConversionO
2020

2121
const svgDefinitions = await callAndMonitorAsync<SvgDefinition[]>(
2222
filesProcessor.bind({}, conversionOptions),
23-
'Processing SVG files'
23+
'Processing SVG files',
2424
);
2525

2626
if (!svgDefinitions.length) {
@@ -43,7 +43,7 @@ async function convertToTSConstants(conversionOptions: ConstantsConversionOption
4343
exportCompleteIconSet,
4444
completeIconSetName,
4545
generateType,
46-
generateEnum
46+
generateEnum,
4747
} = conversionOptions;
4848
let exportAllStatement = '';
4949

@@ -52,13 +52,13 @@ async function convertToTSConstants(conversionOptions: ConstantsConversionOption
5252
const typeDefinition = generateType
5353
? callAndMonitor<string>(
5454
generateTypeDefinition.bind({}, conversionOptions, svgDefinitions),
55-
'Generate type definitions'
55+
'Generate type definitions',
5656
)
5757
: '';
5858

5959
const interfaceDefinition = callAndMonitor<string>(
6060
generateInterfaceDefinition.bind({}, conversionOptions),
61-
'Generate Interface Definition'
61+
'Generate Interface Definition',
6262
);
6363

6464
const enumDefinition = generateEnum
@@ -68,15 +68,15 @@ async function convertToTSConstants(conversionOptions: ConstantsConversionOption
6868
if (exportCompleteIconSet) {
6969
exportAllStatement = callAndMonitor<string>(
7070
generateExportSection.bind({}, svgDefinitions, completeIconSetName),
71-
'Exporting all constants'
71+
'Exporting all constants',
7272
);
7373
}
7474

7575
const typeHelper = callAndMonitor<string>(generateTypeHelper.bind({}, interfaceName), 'Generate Type Helper');
7676
const fileContent = `${svgContants}${typeDefinition}${enumDefinition}${interfaceDefinition}${typeHelper}${exportAllStatement}`;
7777
await callAndMonitorAsync<void>(
7878
writeFile.bind({}, outputDirectory, fileName, fileContent),
79-
`Writing files to ${outputDirectory}`
79+
`Writing files to ${outputDirectory}`,
8080
);
8181
Logger.generationSuccess(outputDirectory);
8282
}
@@ -90,29 +90,29 @@ async function convertToTSXConstants(conversionOptions: ConstantsConversionOptio
9090
if (exportCompleteIconSet) {
9191
exportAllStatement = callAndMonitor<string>(
9292
generateExportSection.bind({}, svgDefinitions, completeIconSetName, FILE_TYPE.TSX),
93-
'Exporting all TSX constants as ${completeIconSetName}'
93+
'Exporting all TSX constants as ${completeIconSetName}',
9494
);
9595
}
9696

9797
const fileContent = `${tsxContants}${exportAllStatement}`;
9898

9999
await callAndMonitorAsync<void>(
100100
writeFile.bind({}, outputDirectory, fileName, fileContent, FILE_TYPE.TSX),
101-
`Writing files to ${outputDirectory}`
101+
`Writing files to ${outputDirectory}`,
102102
);
103103
Logger.generationSuccess(outputDirectory);
104104
}
105105

106106
function getTSConstants(svgDefinitions): string {
107-
const svgConstants = svgDefinitions.map(svgDefinition =>
108-
generateSvgConstant(svgDefinition.variableName, svgDefinition.typeName, svgDefinition.data)
107+
const svgConstants = svgDefinitions.map((svgDefinition) =>
108+
generateSvgConstant(svgDefinition.variableName, svgDefinition.typeName, svgDefinition.data),
109109
);
110110
return svgConstants.join('');
111111
}
112112

113113
function getTSXConstants(svgDefinitions): string {
114-
const tsxConstants = svgDefinitions.map(svgDefinition =>
115-
generateTSXConstant(svgDefinition.variableName, svgDefinition.data)
114+
const tsxConstants = svgDefinitions.map((svgDefinition) =>
115+
generateTSXConstant(svgDefinition.variableName, svgDefinition.data),
116116
);
117117
return tsxConstants.join('');
118118
}

src/lib/converters/files.converter.ts

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
generateSvgConstant,
77
generateTypeDefinition,
88
generateTypeHelperWithImport,
9-
generateTSXConstant
9+
generateTSXConstant,
1010
} from '../generators/code-snippet-generators';
1111
import { generateCompleteIconSetContent } from '../helpers/complete-icon-set.helper';
1212
import { deleteFiles, deleteFolder, writeFile } from '../helpers/file-helpers';
@@ -15,7 +15,7 @@ import { callAndMonitor, callAndMonitorAsync } from '../helpers/monitor';
1515
import { getFilePathsFromRegex } from '../helpers/regex-helpers';
1616
import {
1717
FilesConversionOptions,
18-
SVG_TO_TS_COMPILATION_OUTPUT
18+
SVG_TO_TS_COMPILATION_OUTPUT,
1919
} from '../options/conversion-options/files-conversion-options';
2020
import { FILE_TYPE } from '../shared/file-type.model';
2121

@@ -39,17 +39,17 @@ async function generateTSXFiles(conversionOptions: FilesConversionOptions) {
3939
barrelFileName,
4040
interfaceName,
4141
generateType,
42-
modelFileName
42+
modelFileName,
4343
} = conversionOptions;
4444

4545
const svgDefinitions = await callAndMonitorAsync<SvgDefinition[]>(
4646
filesProcessor.bind({}, conversionOptions),
47-
'Processing SVG files'
47+
'Processing SVG files',
4848
);
4949

5050
const generatedFileNames = await callAndMonitorAsync<string[]>(
5151
generateTSXFileConstants.bind({}, svgDefinitions, outputDirectory, iconsFolderName),
52-
'Generate TSX constants'
52+
'Generate TSX constants',
5353
);
5454

5555
if (exportCompleteIconSet) {
@@ -62,9 +62,9 @@ async function generateTSXFiles(conversionOptions: FilesConversionOptions) {
6262
completeIconSetName,
6363
interfaceName,
6464
generateType,
65-
modelFileName
65+
modelFileName,
6666
),
67-
'Export complete icon set'
67+
'Export complete icon set',
6868
);
6969
generatedFileNames.push(completeIconSetName);
7070
}
@@ -75,7 +75,7 @@ async function generateTSXFiles(conversionOptions: FilesConversionOptions) {
7575

7676
await callAndMonitorAsync<void>(
7777
writeFile.bind({}, outputDirectory, barrelFileName, indexFileContent),
78-
'Generate barrel file'
78+
'Generate barrel file',
7979
);
8080

8181
Logger.generationSuccess(outputDirectory);
@@ -93,20 +93,20 @@ async function generateTSFiles(conversionOptions: FilesConversionOptions) {
9393
completeIconSetName,
9494
compilationOutput,
9595
barrelFileName,
96-
generateType
96+
generateType,
9797
} = conversionOptions;
9898
await callAndMonitorAsync<void>(
9999
deleteFolder.bind({}, `${outputDirectory}/${iconsFolderName}`),
100-
'Deleting the output folder'
100+
'Deleting the output folder',
101101
);
102102
const svgDefinitions = await callAndMonitorAsync<SvgDefinition[]>(
103103
filesProcessor.bind({}, conversionOptions),
104-
'Processing SVG files'
104+
'Processing SVG files',
105105
);
106106

107107
const generatedFileNames = await callAndMonitorAsync<string[]>(
108108
generateSVGConstants.bind({}, svgDefinitions, outputDirectory, iconsFolderName),
109-
'Generate SVG constants'
109+
'Generate SVG constants',
110110
);
111111

112112
if (exportCompleteIconSet) {
@@ -119,16 +119,16 @@ async function generateTSFiles(conversionOptions: FilesConversionOptions) {
119119
completeIconSetName,
120120
interfaceName,
121121
modelFileName,
122-
generateType
122+
generateType,
123123
),
124-
'Export complete icon set'
124+
'Export complete icon set',
125125
);
126126
generatedFileNames.push(completeIconSetName);
127127
}
128128

129129
let indexFileContent = callAndMonitor<string>(
130130
generateTypeHelperWithImport.bind({}, interfaceName, iconsFolderName, modelFileName),
131-
'Generate Type Helper'
131+
'Generate Type Helper',
132132
);
133133

134134
indexFileContent += generatedFileNames
@@ -138,27 +138,27 @@ async function generateTSFiles(conversionOptions: FilesConversionOptions) {
138138
indexFileContent += generateExportStatement(modelFileName, iconsFolderName);
139139
await callAndMonitorAsync<void>(
140140
writeFile.bind({}, outputDirectory, barrelFileName, indexFileContent),
141-
'Generate barrel file'
141+
'Generate barrel file',
142142
);
143143

144144
if (modelFileName) {
145145
const modelFile = await callAndMonitorAsync<void>(
146146
generateModelFile.bind({}, conversionOptions, svgDefinitions),
147-
'Generate model file'
147+
'Generate model file',
148148
);
149149

150150
if (additionalModelOutputPath) {
151151
await callAndMonitorAsync<void>(
152152
writeFile.bind({}, `${additionalModelOutputPath}`, modelFileName, modelFile),
153-
'Write model file to additional output path'
153+
'Write model file to additional output path',
154154
);
155155
}
156156
}
157157

158158
if (compileSources) {
159159
await callAndMonitorAsync<void>(
160160
compileTypeScriptToJS.bind({}, outputDirectory, iconsFolderName, barrelFileName, compilationOutput),
161-
'Compile TypeScript to JavaScript'
161+
'Compile TypeScript to JavaScript',
162162
);
163163
}
164164
Logger.generationSuccess(outputDirectory);
@@ -167,35 +167,35 @@ async function generateTSFiles(conversionOptions: FilesConversionOptions) {
167167
const generateSVGConstants = async (
168168
svgDefinitions: SvgDefinition[],
169169
outputDirectory: string,
170-
iconsFolderName: string
170+
iconsFolderName: string,
171171
): Promise<string[]> => {
172172
const generatedFileNames: string[] = [];
173173
await Promise.all(
174-
svgDefinitions.map(async svgDefinition => {
174+
svgDefinitions.map(async (svgDefinition) => {
175175
const svgConstant = generateSvgConstant(svgDefinition.variableName, svgDefinition.typeName, svgDefinition.data);
176176
const generatedFileName = `${svgDefinition.prefix}-${svgDefinition.filenameWithoutEnding}.icon`;
177177
generatedFileNames.push(generatedFileName);
178178
await writeFile(`${outputDirectory}/${iconsFolderName}`, generatedFileName, svgConstant);
179179
Logger.verboseInfo(`write file svg: ${outputDirectory}/${iconsFolderName}/${generatedFileName}.ts`);
180-
})
180+
}),
181181
);
182182
return generatedFileNames;
183183
};
184184

185185
const generateTSXFileConstants = async (
186186
svgDefinitions: SvgDefinition[],
187187
outputDirectory: string,
188-
iconsFolderName: string
188+
iconsFolderName: string,
189189
): Promise<string[]> => {
190190
const generatedFileNames: string[] = [];
191191
await Promise.all(
192-
svgDefinitions.map(async svgDefinition => {
192+
svgDefinitions.map(async (svgDefinition) => {
193193
const tsxConstant = generateTSXConstant(svgDefinition.variableName, svgDefinition.data);
194194
const generatedFileName = `${svgDefinition.prefix}-${svgDefinition.filenameWithoutEnding}.icon`;
195195
generatedFileNames.push(generatedFileName);
196196
await writeFile(`${outputDirectory}/${iconsFolderName}`, generatedFileName, tsxConstant, FILE_TYPE.TSX);
197197
Logger.verboseInfo(`write file svg: ${outputDirectory}/${iconsFolderName}/${generatedFileName}.tsx`);
198-
})
198+
}),
199199
);
200200
return generatedFileNames;
201201
};
@@ -207,21 +207,21 @@ const generateCompleteIconSet = async (
207207
completeIconSetName: string,
208208
interfaceName?: string,
209209
modelFileName?: string,
210-
generateType?: boolean
210+
generateType?: boolean,
211211
): Promise<void> => {
212212
const completeIconSetContent = generateCompleteIconSetContent(
213213
svgDefinitions,
214214
completeIconSetName,
215215
interfaceName,
216216
modelFileName,
217-
generateType
217+
generateType,
218218
);
219219
await writeFile(`${outputDirectory}/${iconsFolderName}`, completeIconSetName, completeIconSetContent);
220220
};
221221

222222
const generateModelFile = async (
223223
conversionOptions: FilesConversionOptions,
224-
svgDefinitions: SvgDefinition[]
224+
svgDefinitions: SvgDefinition[],
225225
): Promise<string> => {
226226
const { outputDirectory, modelFileName, additionalModelOutputPath, iconsFolderName } = conversionOptions;
227227

@@ -231,13 +231,13 @@ const generateModelFile = async (
231231
const modelFile = `${typeDefinition}${interfaceDefinition}${enumDefinition}`;
232232
await writeFile(`${outputDirectory}/${iconsFolderName}`, modelFileName, modelFile);
233233
Logger.verboseInfo(
234-
`model-file successfully generated under ${outputDirectory}/${iconsFolderName}/${modelFileName}.ts`
234+
`model-file successfully generated under ${outputDirectory}/${iconsFolderName}/${modelFileName}.ts`,
235235
);
236236

237237
if (additionalModelOutputPath) {
238238
await writeFile(`${additionalModelOutputPath}`, modelFileName, modelFile);
239239
Logger.verboseInfo(
240-
`additional model-file successfully generated under ${additionalModelOutputPath}/${modelFileName}.ts`
240+
`additional model-file successfully generated under ${additionalModelOutputPath}/${modelFileName}.ts`,
241241
);
242242
}
243243
return modelFile;
@@ -247,11 +247,11 @@ const compileTypeScriptToJS = async (
247247
outputDirectory: string,
248248
iconsFolderName: string,
249249
barrelFileName: string,
250-
compilationOutput: SVG_TO_TS_COMPILATION_OUTPUT
250+
compilationOutput: SVG_TO_TS_COMPILATION_OUTPUT,
251251
): Promise<void> => {
252252
const generatedTypeScriptFilePaths = await getFilePathsFromRegex([
253253
`${outputDirectory}/${iconsFolderName}/*.ts`,
254-
`${outputDirectory}/${barrelFileName}.ts`
254+
`${outputDirectory}/${barrelFileName}.ts`,
255255
]);
256256
switch (compilationOutput) {
257257
case SVG_TO_TS_COMPILATION_OUTPUT.ESM:

0 commit comments

Comments
 (0)