|   | 
| /* | 
| * Licensed to the Apache Software Foundation (ASF) under one | 
| * or more contributor license agreements.  See the NOTICE file | 
| * distributed with this work for additional information | 
| * regarding copyright ownership.  The ASF licenses this file | 
| * to you under the Apache License, Version 2.0 (the | 
| * "License"); you may not use this file except in compliance | 
| * with the License.  You may obtain a copy of the License at | 
| * | 
| *   http://www.apache.org/licenses/LICENSE-2.0 | 
| * | 
| * Unless required by applicable law or agreed to in writing, | 
| * software distributed under the License is distributed on an | 
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
| * KIND, either express or implied.  See the License for the | 
| * specific language governing permissions and limitations | 
| * under the License. | 
| */ | 
|   | 
| const fs = require('fs'); | 
| const preamble = require('./preamble'); | 
| const ts = require('typescript'); | 
| const path = require('path'); | 
| const fsExtra = require('fs-extra'); | 
|   | 
| const umdWrapperHead = ` | 
| ${preamble.js} | 
| /** | 
|  * AUTO-GENERATED FILE. DO NOT MODIFY. | 
|  */ | 
| (function(root, factory) { | 
|     if (typeof define === 'function' && define.amd) { | 
|         // AMD. Register as an anonymous module. | 
|         define(['exports'], factory); | 
|     } else if ( | 
|         typeof exports === 'object' && | 
|         typeof exports.nodeName !== 'string' | 
|     ) { | 
|         // CommonJS | 
|         factory(exports); | 
|     } else { | 
|         // Browser globals | 
|         factory({}); | 
|     } | 
| })(this, function(exports) { | 
| `; | 
|   | 
| const umdWrapperHeadWithEcharts = ` | 
| ${preamble.js} | 
| /** | 
|  * AUTO-GENERATED FILE. DO NOT MODIFY. | 
|  */ | 
| (function(root, factory) { | 
|     if (typeof define === 'function' && define.amd) { | 
|         // AMD. Register as an anonymous module. | 
|         define(['exports', 'echarts'], factory); | 
|     } else if ( | 
|         typeof exports === 'object' && | 
|         typeof exports.nodeName !== 'string' | 
|     ) { | 
|         // CommonJS | 
|         factory(exports, require('echarts/lib/echarts')); | 
|     } else { | 
|         // Browser globals | 
|         factory({}, root.echarts); | 
|     } | 
| })(this, function(exports, echarts) { | 
| `; | 
|   | 
| const umdWrapperTail = ` | 
| });`; | 
|   | 
| async function buildI18nWrap() { | 
|     const targetDir = path.join(__dirname, '../i18n'); | 
|     const sourceDir = path.join(__dirname, '../src/i18n'); | 
|     const files = fs.readdirSync(sourceDir); | 
|     files.forEach(t => { | 
|         if(!t.startsWith('lang')) { | 
|             return; | 
|         } | 
|         const fileName = t.replace(/\.ts$/, ''); | 
|         const type = fileName.replace(/^lang/, ''); | 
|         const echartsRegister = ` | 
|     echarts.registerLocale('${type}', localeObj); | 
|         `; | 
|         const pureExports = ` | 
|     for (var key in localeObj) { | 
|         if (localeObj.hasOwnProperty(key)) { | 
|             exports[key] = localeObj[key]; | 
|         } | 
|     } | 
|         `; | 
|         const code = fs.readFileSync(path.join(sourceDir, t), 'utf-8'); | 
|         // const outputText = ts.transpileModule(code, { | 
|         //     module: ts.ModuleKind.CommonJS, | 
|         // }).outputText; | 
|         // Simple regexp replace is enough | 
|         const outputCode = code.replace(/export\s+?default/, 'var localeObj =') | 
|             .replace(/\/\*([\w\W]*?)\*\//, ''); | 
|   | 
|         fsExtra.ensureDirSync(targetDir); | 
|   | 
|         fs.writeFileSync(path.join(targetDir, fileName + '.js'), umdWrapperHeadWithEcharts + outputCode + echartsRegister + umdWrapperTail, 'utf-8'); | 
|         fs.writeFileSync(path.join(targetDir, fileName + '-obj.js'), umdWrapperHead + outputCode + pureExports + umdWrapperTail, 'utf-8'); | 
|     }) | 
|     console.log('i18n build completed'); | 
| } | 
|   | 
| buildI18nWrap(); | 
|   | 
| module.exports = { | 
|     buildI18n: buildI18nWrap | 
| }; |