1- import fs from 'node:fs/promises' ;
21import glob from 'fast-glob' ;
2+ import { assign , readJSON , sortKeys , writeFile } from './utils' ;
33
44async function main ( ) {
55 // Load base "en" first
@@ -27,16 +27,10 @@ async function main() {
2727 ) ,
2828 ) ;
2929
30- const file = JSON . stringify ( sort ( data ) , null , 2 ) ;
30+ const file = JSON . stringify ( sortKeys ( data ) , null , 2 ) ;
3131 if ( ! file ) return ;
32- await fs . writeFile ( 'lang/underscript.json' , file ) ;
33- }
3432
35- function assign ( obj = { } , lang = '' , key = '' , value = '' ) {
36- // Only add key if value exists
37- if ( ! value ) return ;
38- obj [ lang ] ??= { } ; // Does lang exist?
39- obj [ lang ] [ key ] = value ;
33+ await writeFile ( 'lang/underscript.json' , file ) ;
4034}
4135
4236/**
@@ -48,7 +42,7 @@ async function bundle(files = []) {
4842 await Promise . all ( files . map ( async ( file ) => {
4943 const [ lang , name ] = getFileParts ( file ) ;
5044
51- Object . entries ( await parse ( file ) ) . forEach (
45+ Object . entries ( await readJSON ( file ) ) . forEach (
5246 ( [ key , value ] ) => {
5347 assign ( ret , lang , `underscript.${ name } .${ key } ` , value ) ;
5448 } ,
@@ -63,22 +57,4 @@ function getFileParts(file = '') {
6357 return [ lang , name . substring ( 0 , name . lastIndexOf ( '.' ) ) ] ;
6458}
6559
66- async function parse ( file ) {
67- const content = await fs . readFile ( file ) ;
68- return JSON . parse ( content ) ;
69- }
70-
71- function sort ( obj = { } ) {
72- const keys = Object . keys ( obj ) ;
73- if ( ! keys . length ) return undefined ;
74- const sorted = { } ;
75- keys . sort ( ) . forEach (
76- ( key ) => {
77- const value = obj [ key ] ;
78- sorted [ key ] = typeof value === 'object' ? sort ( value ) : value ;
79- } ,
80- ) ;
81- return sorted ;
82- }
83-
8460main ( ) ;
0 commit comments