| /* | |
| * 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 path = require('path'); | |
| const babel = require('@babel/core'); | |
| const fs = require('fs'); | |
| // See require('@babel/plugin-transform-modules-commonjs') | |
| // const esm2cjsPlugin = path.resolve(__dirname, '../../build/babel-plugin-transform-modules-commonjs-ec'); | |
| const removeDEVPlugin = path.resolve(__dirname, '../../build/babel-plugin-transform-remove-dev'); | |
| function run() { | |
| removeDEV(); | |
| esm2cjs(); | |
| } | |
| function removeDEV() { | |
| const suite = makeSuite('removeDEV'); | |
| suite.eachSrcFile(({fileName, filePath}) => { | |
| let result = babel.transformFileSync(filePath, { | |
| plugins: [removeDEVPlugin] | |
| }); | |
| suite.writeToExpectFile(fileName, result.code); | |
| console.log(`removing dev ${fileName} ...`); | |
| }); | |
| console.log('All done.'); | |
| } | |
| function esm2cjs() { | |
| const suite = makeSuite('esm2cjs'); | |
| suite.eachSrcFile(({fileName, filePath}) => { | |
| console.log(`transforming to cjs ${fileName} ...`); | |
| if (/^forbiden/.test(fileName)) { | |
| try { | |
| transformSingle(); | |
| throw new Error('Should fail.'); | |
| } | |
| catch (e) { | |
| console.log(`${fileName} failed as expected.`); | |
| } | |
| } | |
| else { | |
| transformSingle(); | |
| } | |
| function transformSingle() { | |
| let result = babel.transformFileSync(filePath, { | |
| // plugins: [removeDEVPlugin, esm2cjsPlugin] | |
| plugins: [removeDEVPlugin] | |
| }); | |
| suite.writeToExpectFile(fileName, result.code); | |
| } | |
| }); | |
| console.log('All done.'); | |
| } | |
| const makeSuite = suiteName => { | |
| const srcDir = path.resolve(__dirname, `./${suiteName}/src`); | |
| const expectDir = path.resolve(__dirname, `./${suiteName}/expect`); | |
| return { | |
| srcDir, | |
| expectDir, | |
| eachSrcFile(cb) { | |
| fs.readdirSync(srcDir).forEach(fileName => { | |
| if (!/^[^.].*[.]src[.]js$/.test(fileName)) { | |
| return; | |
| } | |
| const filePath = path.resolve(srcDir, fileName); | |
| cb({fileName, filePath, suiteName, srcDir, expectDir}); | |
| }); | |
| }, | |
| writeToExpectFile(srcFileName, content) { | |
| let outputPath = path.resolve(expectDir, srcFileName.replace('.src.', '.expect.')); | |
| fs.writeFileSync(outputPath, content, {encoding:'utf-8'}); | |
| } | |
| }; | |
| }; | |
| run(); |