mtcute/scripts/build-package.js

112 lines
3.8 KiB
JavaScript

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 <package name>')
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 [
// '/// <reference types="./index.d.ts" />',
// 'const exports = {};',
// content,
// 'export const tl = exports.tl;',
// 'export const mtp = exports.mtp;',
// ].join('\n')
// })
// transformFile(path.join(outDir, 'binary/reader.js'), (content) => {
// return [
// '/// <reference types="./reader.d.ts" />',
// 'const exports = {};',
// content,
// 'export const __tlReaderMap = exports.__tlReaderMap;',
// ].join('\n')
// })
// transformFile(path.join(outDir, 'binary/writer.js'), (content) => {
// return [
// '/// <reference types="./writer.d.ts" />',
// 'const exports = {};',
// content,
// 'export const __tlWriterMap = exports.__tlWriterMap;',
// ].join('\n')
// })
// transformFile(path.join(outDir, 'binary/rsa-keys.js'), (content) => {
// return [
// '/// <reference types="./rsa-keys.d.ts" />',
// '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)
}