49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
const path = require('path');
|
|
const fs = require('fs');
|
|
const babelConfig = require('../babel.config');
|
|
|
|
require('@babel/register')({
|
|
...babelConfig,
|
|
extensions: ['.ts', '.tsx', '.js', '.jsx'],
|
|
env: {
|
|
development: {
|
|
sourceMaps: 'inline',
|
|
retainLines: true,
|
|
},
|
|
},
|
|
});
|
|
|
|
const { generateTypes } = require('../src/bin/generateTypes');
|
|
|
|
const [testConfigDir] = process.argv.slice(2);
|
|
|
|
let testDir;
|
|
if (testConfigDir) {
|
|
testDir = path.resolve(__dirname, testConfigDir);
|
|
setPaths(testDir);
|
|
generateTypes();
|
|
} else {
|
|
// Generate types for entire directory
|
|
testDir = __dirname;
|
|
|
|
fs.readdirSync(__dirname, { withFileTypes: true })
|
|
.filter((f) => f.isDirectory())
|
|
.forEach((dir) => {
|
|
const suiteDir = path.resolve(testDir, dir.name);
|
|
const configFound = setPaths(suiteDir);
|
|
if (configFound) generateTypes();
|
|
});
|
|
}
|
|
|
|
// Set config path and TS output path using test dir
|
|
function setPaths(dir) {
|
|
const configPath = path.resolve(dir, 'config.ts');
|
|
const outputPath = path.resolve(dir, 'payload-types.ts');
|
|
if (fs.existsSync(configPath) && fs.existsSync(outputPath)) {
|
|
process.env.PAYLOAD_CONFIG_PATH = configPath;
|
|
process.env.PAYLOAD_TS_OUTPUT_PATH = outputPath;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|