92 lines
2.7 KiB
JavaScript
92 lines
2.7 KiB
JavaScript
import { execSync } from 'child_process'
|
|
import { writeFileSync, mkdirSync, cpSync, existsSync, rmSync, readdirSync, readFileSync } from 'fs'
|
|
import { fileURLToPath } from 'url'
|
|
import { dirname, join, resolve, relative } from 'path'
|
|
|
|
const __filename = fileURLToPath(import.meta.url)
|
|
const __dirname = dirname(__filename)
|
|
|
|
const frontendDir = resolve(__dirname, '..')
|
|
const rootDir = resolve(frontendDir, '..')
|
|
const systemPromptsDir = join(rootDir, 'system_prompts', 'auto-generated')
|
|
const packageDir = join(frontendDir, 'package')
|
|
const packageSystemPromptsDir = join(packageDir, 'system_prompts')
|
|
|
|
// Create package/system_prompts directory
|
|
if (!existsSync(packageSystemPromptsDir)) {
|
|
mkdirSync(packageSystemPromptsDir, { recursive: true })
|
|
}
|
|
|
|
// Create a temporary tsconfig for compiling system_prompts
|
|
const tempTsConfig = {
|
|
compilerOptions: {
|
|
target: 'ES2021',
|
|
module: 'ESNext',
|
|
moduleResolution: 'bundler',
|
|
lib: ['ES2021'],
|
|
declaration: true,
|
|
declarationMap: false,
|
|
sourceMap: false,
|
|
outDir: packageSystemPromptsDir,
|
|
rootDir: systemPromptsDir,
|
|
esModuleInterop: true,
|
|
skipLibCheck: true,
|
|
strict: false,
|
|
isolatedModules: true,
|
|
resolveJsonModule: true,
|
|
allowSyntheticDefaultImports: true
|
|
},
|
|
include: [join(systemPromptsDir, '**/*.ts')],
|
|
exclude: ['node_modules']
|
|
}
|
|
|
|
const tempTsConfigPath = join(frontendDir, 'tsconfig.system-prompts.json')
|
|
writeFileSync(tempTsConfigPath, JSON.stringify(tempTsConfig, null, 2))
|
|
|
|
try {
|
|
// Compile TypeScript files
|
|
console.log('Compiling system_prompts...')
|
|
execSync(`npx tsc --project ${tempTsConfigPath}`, {
|
|
stdio: 'inherit',
|
|
cwd: frontendDir
|
|
})
|
|
|
|
console.log('system_prompts compiled and copied to package/system_prompts')
|
|
|
|
// Rewrite imports in packaged files to use the correct path
|
|
console.log('Rewriting $system_prompts imports in packaged files...')
|
|
|
|
function rewriteImportsInFile(filePath) {
|
|
const content = readFileSync(filePath, 'utf-8')
|
|
|
|
// Specifically rewrite: ../../../../../../../system_prompts/auto-generated to ../../../../system_prompts
|
|
const pattern = /from\s+['"](\.\.\/){7}system_prompts\/auto-generated['"]/g
|
|
|
|
const modified = content.replace(pattern, "from '../../../../system_prompts'")
|
|
|
|
if (modified !== content) {
|
|
writeFileSync(filePath, modified, 'utf-8')
|
|
}
|
|
}
|
|
|
|
function processDirectory(dir) {
|
|
const entries = readdirSync(dir, { withFileTypes: true })
|
|
for (const entry of entries) {
|
|
const fullPath = join(dir, entry.name)
|
|
if (entry.isDirectory()) {
|
|
processDirectory(fullPath)
|
|
} else if (entry.isFile() && entry.name.endsWith('.js')) {
|
|
rewriteImportsInFile(fullPath)
|
|
}
|
|
}
|
|
}
|
|
|
|
processDirectory(packageDir)
|
|
console.log('Finished rewriting imports')
|
|
} finally {
|
|
// Clean up temporary tsconfig
|
|
if (existsSync(tempTsConfigPath)) {
|
|
rmSync(tempTsConfigPath)
|
|
}
|
|
}
|