import * as fs from 'node:fs' import { fileURLToPath } from 'node:url' import { resolve } from 'node:path' import { processPackageJson } from '../.config/vite-utils/package-json.js' import { runViteBuildSync } from './build-package-vite.js' if (process.argv.length < 3) { console.log('Usage: build-package.js ') process.exit(0) } const IS_JSR = process.env.JSR === '1' if (IS_JSR) { throw new Error('JSR build is temporarily disabled') } const packageName = process.argv[2] if (packageName === 'tl') { // create package by copying all the needed files const packageDir = fileURLToPath(new URL('../packages/tl', import.meta.url)) const outDir = fileURLToPath(new URL('../packages/tl/dist', import.meta.url)) fs.rmSync(outDir, { recursive: true, force: true }) const files = [ 'binary/reader.d.ts', 'binary/reader.js', 'binary/rsa-keys.d.ts', 'binary/rsa-keys.js', 'binary/writer.d.ts', 'binary/writer.js', 'index.d.ts', 'index.js', 'raw-errors.json', 'mtp-schema.json', 'api-schema.json', 'app-config.json', 'README.md', ] fs.mkdirSync(resolve(outDir, 'binary'), { recursive: true }) for (const f of files) { fs.copyFileSync(resolve(packageDir, f), resolve(outDir, f)) } fs.cpSync(new URL('../LICENSE', import.meta.url), resolve(outDir, 'LICENSE'), { recursive: true }) const { packageJson } = processPackageJson(packageDir) fs.writeFileSync(resolve(outDir, 'package.json'), JSON.stringify(packageJson, null, 4)) // todo // if (jsr) { // // jsr doesn't support cjs, so we'll need to add some shims // // todo: remove this god awfulness when tl esm rewrite // transformFile(path.join(outDir, 'index.js'), (content) => { // return [ // '/// ', // 'const exports = {};', // content, // 'export const tl = exports.tl;', // 'export const mtp = exports.mtp;', // ].join('\n') // }) // transformFile(path.join(outDir, 'binary/reader.js'), (content) => { // return [ // '/// ', // 'const exports = {};', // content, // 'export const __tlReaderMap = exports.__tlReaderMap;', // ].join('\n') // }) // transformFile(path.join(outDir, 'binary/writer.js'), (content) => { // return [ // '/// ', // 'const exports = {};', // content, // 'export const __tlWriterMap = exports.__tlWriterMap;', // ].join('\n') // }) // transformFile(path.join(outDir, 'binary/rsa-keys.js'), (content) => { // return [ // '/// ', // 'const exports = {};', // content, // 'export const __publicKeyIndex = exports.__publicKeyIndex;', // ].join('\n') // }) // // patch deno.json to add some export maps // transformFile(path.join(outDir, 'deno.json'), (content) => { // const json = JSON.parse(content) // json.exports = {} // for (const f of files) { // if (!f.match(/\.js(?:on)?$/)) continue // if (f === 'index.js') { // json.exports['.'] = './index.js' // } else { // json.exports[`./${f}`] = `./${f}` // } // } // return JSON.stringify(json, null, 2) // }) // } } else { runViteBuildSync(packageName) }