|  |  | 
|  | /* | 
|  | * 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 | 
|  | }; |