@@ -4,26 +4,33 @@ import { fillEnumValues } from './src/app/utils';
44
55const { readFileSync, writeFileSync } = require ( 'fs' ) ;
66
7+ // outfile without extension
78export function run ( inFile : string , outFile : string ) {
89 if ( ! inFile ) {
910 console . error ( 'specify the input file' ) ;
1011 process . exit ( 1 ) ;
1112 }
12-
13+
1314 if ( ! outFile ) {
1415 console . error ( 'specify the path to the output file' ) ;
1516 process . exit ( 1 ) ;
1617 }
1718
1819 console . log ( `Generating enums from ${ inFile } ` ) ;
19-
20- const enums = loadFile ( inFile ) ;
2120
22- const content = Object . entries ( enums ) . map ( ( [ name , fields ] ) => {
23- return makeEnum ( name , Object . entries ( fields ) ) ;
24- } ) ;
21+ const enums = Object . entries ( loadFile ( inFile ) ) ;
22+
23+ const contentJs = enums . map ( ( [ name , fields ] ) =>
24+ makeJsEnum ( name , Object . entries ( fields ) ) ,
25+ ) ;
26+ const contentTs = enums . map ( ( [ name , fields ] ) =>
27+ makeTsEnum ( name , Object . entries ( fields ) ) ,
28+ ) ;
2529
26- writeFileSync ( outFile , content . join ( '\n' ) , {
30+ writeFileSync ( outFile + '.js' , contentJs . join ( '\n' ) , {
31+ encoding : 'utf8' ,
32+ } ) ;
33+ writeFileSync ( outFile + '.ts' , contentTs . join ( '\n' ) , {
2734 encoding : 'utf8' ,
2835 } ) ;
2936
@@ -37,11 +44,19 @@ export function run(inFile: string, outFile: string) {
3744 return content ;
3845 }
3946
40- function makeEnum ( name : string , fields : EnumRaw [ 'fields' ] ) {
47+ function makeJsEnum ( name : string , fields : EnumRaw [ 'fields' ] ) {
4148 return `export const ${ name } = ${ JSON . stringify (
4249 fromPairs ( fillEnumValues ( fields ) ) ,
4350 null ,
44- 2
51+ 2 ,
4552 ) } ;`;
4653 }
54+
55+ function makeTsEnum ( name : string , fields : EnumRaw [ 'fields' ] ) {
56+ return `export enum ${ name } ${ JSON . stringify (
57+ fromPairs ( fillEnumValues ( fields ) ) ,
58+ null ,
59+ 2 ,
60+ ) . replace ( / : / g, ' =' ) } ;`;
61+ }
4762}
0 commit comments