mirror of
https://github.com/Heretek-AI/opencode.git
synced 2026-11-13 14:51:33 -10:00
Reuse the shared dependency-aware plugin loader for Core hot reloads. Scope watcher setup callbacks and subscriptions, recover missing external helpers, and preserve explicit local entrypoint invalidation without reloading package dependencies. Add regression coverage and portable RPC fixtures.
51 lines
1.5 KiB
TypeScript
Executable File
51 lines
1.5 KiB
TypeScript
Executable File
#!/usr/bin/env bun
|
|
import { Script } from "@opencode-ai/script"
|
|
import { $ } from "bun"
|
|
import { fileURLToPath } from "url"
|
|
|
|
const dir = fileURLToPath(new URL("..", import.meta.url))
|
|
process.chdir(dir)
|
|
|
|
async function published(name: string, version: string) {
|
|
return (await $`npm view ${name}@${version} version`.nothrow()).exitCode === 0
|
|
}
|
|
|
|
await $`bun run build`
|
|
const originalText = await Bun.file("package.json").text()
|
|
const pkg = JSON.parse(originalText) as {
|
|
name: string
|
|
version: string
|
|
exports: Record<string, string>
|
|
imports: Record<string, Record<string, string>>
|
|
}
|
|
if (await published(pkg.name, pkg.version)) {
|
|
console.log(`already published ${pkg.name}@${pkg.version}`)
|
|
} else {
|
|
for (const [key, value] of Object.entries(pkg.exports)) {
|
|
const file = value.replace("./src/", "./dist/").replace(".ts", "")
|
|
// @ts-ignore
|
|
pkg.exports[key] = {
|
|
import: file + ".js",
|
|
types: file + ".d.ts",
|
|
}
|
|
}
|
|
pkg.imports = Object.fromEntries(
|
|
Object.entries(pkg.imports).map(([key, conditions]) => [
|
|
key,
|
|
Object.fromEntries(
|
|
Object.entries(conditions).map(([condition, value]) => [
|
|
condition,
|
|
value.replace("./src/", "./dist/").replace(/\.ts$/, ".js"),
|
|
]),
|
|
),
|
|
]),
|
|
)
|
|
await Bun.write("package.json", JSON.stringify(pkg, null, 2))
|
|
try {
|
|
await $`bun pm pack`
|
|
await $`npm publish *.tgz --tag ${Script.channel} --access public`
|
|
} finally {
|
|
await Bun.write("package.json", originalText)
|
|
}
|
|
}
|