diff --git a/sdk/oko_cosmos_kit/package.json b/sdk/oko_cosmos_kit/package.json index 7f4372299..1a06ac442 100644 --- a/sdk/oko_cosmos_kit/package.json +++ b/sdk/oko_cosmos_kit/package.json @@ -21,7 +21,7 @@ ], "scripts": { "clean": "del-cli dist", - "build": "yarn clean && rollup -c --configPlugin typescript && tsc-alias", + "build": "tsx ./scripts/build.ts", "lint": "eslint --ext .tsx,.ts .", "format": "eslint --ext .tsx,.ts --fix ." }, @@ -52,6 +52,7 @@ "del-cli": "^6.0.0", "rollup": "^4.0.0", "tsc-alias": "^1.8.16", + "tsx": "^4.20.3", "typescript": "^5.8.3" }, "gitHead": "b1c4753a3a1aa996a2f5c28297d71adbe2457945" diff --git a/sdk/oko_cosmos_kit/rollup.config.ts b/sdk/oko_cosmos_kit/rollup.config.ts deleted file mode 100644 index d804b2c68..000000000 --- a/sdk/oko_cosmos_kit/rollup.config.ts +++ /dev/null @@ -1,35 +0,0 @@ -import typescript from "@rollup/plugin-typescript"; -import { nodeResolve } from "@rollup/plugin-node-resolve"; -import commonjs from "@rollup/plugin-commonjs"; -import type { RollupOptions } from "rollup"; - -export const config: RollupOptions[] = [ - { - input: "src/index.ts", - output: [ - { - dir: "dist", - format: "esm", - sourcemap: true, - }, - ], - external: [ - "@cosmos-kit/core", - "@keplr-wallet/types", - "@oko-wallet/oko-sdk-core", - "@oko-wallet/oko-sdk-cosmos", - "@cosmjs/amino", - "@cosmjs/proto-signing", - ], - plugins: [ - nodeResolve(), - commonjs(), - typescript({ - tsconfig: "./tsconfig.rollup.json", - noEmitOnError: true, - }), - ], - }, -]; - -export default config; diff --git a/sdk/oko_cosmos_kit/scripts/build.ts b/sdk/oko_cosmos_kit/scripts/build.ts new file mode 100644 index 000000000..ec8fd5150 --- /dev/null +++ b/sdk/oko_cosmos_kit/scripts/build.ts @@ -0,0 +1,124 @@ +import { deleteAsync } from "del"; +import path from "node:path"; +import typescript from "@rollup/plugin-typescript"; +import { nodeResolve } from "@rollup/plugin-node-resolve"; +import json from "@rollup/plugin-json"; +import chalk from "chalk"; +import { + rollup, + type InputOptions, + type OutputOptions, + type RollupBuild, +} from "rollup"; +import { fileURLToPath } from "node:url"; +import { replaceTscAliasPaths } from "tsc-alias"; +import commonjs from "@rollup/plugin-commonjs"; + +import tsConfigJson from "../tsconfig.json"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const PKG_ROOT = path.resolve(__dirname, ".."); + +async function main() { + console.log("Start build"); + + await removeDirtyFiles(); + await bundle(); + replaceTscAlias(); + + console.log("Done build"); +} + +async function removeDirtyFiles() { + const TS_BUILD_INFO = "*.tsbuildinfo"; + const DIST = "dist"; + + console.log("deleting: %s, %s", TS_BUILD_INFO, DIST); + + await deleteAsync([ + path.resolve(PKG_ROOT, DIST), + path.resolve(PKG_ROOT, TS_BUILD_INFO), + ]); +} + +function replaceTscAlias() { + replaceTscAliasPaths({ configFile: path.resolve(PKG_ROOT, "tsconfig.json") }); + + console.log("Done tsc-alias"); +} + +async function bundle() { + console.log("Start bundling"); + + const srcPath = path.resolve(__dirname, "../src"); + + const rollupTSConfig = { + ...tsConfigJson, + }; + rollupTSConfig.compilerOptions.rootDir = srcPath; + rollupTSConfig.include = [`${srcPath}/**/*`]; + + const inputOptions: InputOptions = { + input: "src/index.ts", + external: [ + "@cosmos-kit/core", + "@keplr-wallet/types", + "@oko-wallet/oko-sdk-core", + "@oko-wallet/oko-sdk-cosmos", + "@cosmjs/amino", + "@cosmjs/proto-signing", + ], + plugins: [ + json(), + nodeResolve(), + commonjs(), + typescript({ + ...rollupTSConfig, + noEmitOnError: true, + outputToFilesystem: true, + }), + ], + }; + + const outputOptionsList: OutputOptions[] = [ + { + file: "dist/index.js", + format: "esm", + sourcemap: true, + }, + ]; + + let bundle: RollupBuild; + try { + console.log(chalk.cyan("input: %s"), chalk.bold(inputOptions.input)); + bundle = await rollup(inputOptions); + + await generateOutputs(bundle, inputOptions, outputOptionsList); + } catch (error) { + console.error(error); + process.exit(1); + } + + if (bundle) { + await bundle.close(); + } +} + +async function generateOutputs( + bundle: RollupBuild, + inputOptions: InputOptions, + outputOptionsList: OutputOptions[], +) { + for (const outputOptions of outputOptionsList) { + console.log( + chalk.green("generated: %s → %s"), + chalk.bold(inputOptions.input), + chalk.bold(outputOptions.file), + ); + + await bundle.write(outputOptions); + } +} + +main().then(); diff --git a/sdk/oko_cosmos_kit/tsconfig.rollup.json b/sdk/oko_cosmos_kit/tsconfig.rollup.json deleted file mode 100644 index 3d658a6f7..000000000 --- a/sdk/oko_cosmos_kit/tsconfig.rollup.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "rootDir": "./src" - }, - "include": ["src/**/*"] -} diff --git a/sdk/oko_sdk_cosmos/package.json b/sdk/oko_sdk_cosmos/package.json index 204c09349..33d3fb728 100644 --- a/sdk/oko_sdk_cosmos/package.json +++ b/sdk/oko_sdk_cosmos/package.json @@ -7,7 +7,6 @@ }, "scripts": { "clean": "del-cli dist", - "build_backup": "yarn clean && rollup -c --configPlugin typescript && tsc-alias", "build": "tsx ./scripts/build.ts", "test": "NODE_OPTIONS=--experimental-vm-modules jest" }, diff --git a/sdk/oko_sdk_cosmos/rollup.config.ts b/sdk/oko_sdk_cosmos/rollup.config.ts deleted file mode 100644 index 5e9172ccf..000000000 --- a/sdk/oko_sdk_cosmos/rollup.config.ts +++ /dev/null @@ -1,41 +0,0 @@ -import typescript from "@rollup/plugin-typescript"; -import { nodeResolve } from "@rollup/plugin-node-resolve"; -import commonjs from "@rollup/plugin-commonjs"; -import json from "@rollup/plugin-json"; -import type { RollupOptions } from "rollup"; - -export const config: RollupOptions[] = [ - { - input: "src/index.ts", - output: [ - { - dir: "dist", - format: "esm", - sourcemap: true, - }, - ], - external: [ - "@oko-wallet/oko-sdk-core", - "@cosmjs/amino", - "@cosmjs/proto-signing", - "@oko-wallet/stdlib-js", - "@keplr-wallet/proto-types", - "@keplr-wallet/types", - "@noble/curves", - "@noble/hashes", - "bech32", - "buffer", - ], - plugins: [ - json(), - nodeResolve(), - commonjs(), - typescript({ - tsconfig: "./tsconfig.rollup.json", - noEmitOnError: true, - }), - ], - }, -]; - -export default config; diff --git a/sdk/oko_sdk_cosmos/scripts/build.ts b/sdk/oko_sdk_cosmos/scripts/build.ts index 8205d352d..35d73dee5 100644 --- a/sdk/oko_sdk_cosmos/scripts/build.ts +++ b/sdk/oko_sdk_cosmos/scripts/build.ts @@ -53,11 +53,11 @@ async function bundle() { const srcPath = path.resolve(__dirname, "../src"); - const tsConfig = { + const rollupTSConfig = { ...tsConfigJson, }; - tsConfig.compilerOptions.rootDir = srcPath; - tsConfig.include = [`${srcPath}/**/*`]; + rollupTSConfig.compilerOptions.rootDir = srcPath; + rollupTSConfig.include = [`${srcPath}/**/*`]; const inputOptions: InputOptions = { input: "src/index.ts", @@ -78,7 +78,7 @@ async function bundle() { nodeResolve(), commonjs(), typescript({ - ...tsConfig, + ...rollupTSConfig, noEmitOnError: true, outputToFilesystem: true, }), diff --git a/sdk/oko_sdk_cosmos/tsconfig.rollup.json b/sdk/oko_sdk_cosmos/tsconfig.rollup.json deleted file mode 100644 index 3d658a6f7..000000000 --- a/sdk/oko_sdk_cosmos/tsconfig.rollup.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "rootDir": "./src" - }, - "include": ["src/**/*"] -} diff --git a/sdk/oko_sdk_eth/package.json b/sdk/oko_sdk_eth/package.json index 8a692a78e..cec6ab5cd 100644 --- a/sdk/oko_sdk_eth/package.json +++ b/sdk/oko_sdk_eth/package.json @@ -33,7 +33,7 @@ }, "scripts": { "clean": "del-cli dist", - "build": "yarn clean && rollup -c --configPlugin typescript && tsc-alias", + "build": "tsx ./scripts/build.ts", "test": "NODE_OPTIONS=--experimental-vm-modules jest", "hardhat": "npx hardhat node", "prepublishOnly": "yarn build" @@ -61,6 +61,7 @@ "rollup": "^4.0.0", "ts-jest": "^29.4.5", "tsc-alias": "^1.8.16", + "tsx": "^4.20.3", "typescript": "^5.8.3" }, "gitHead": "b1c4753a3a1aa996a2f5c28297d71adbe2457945" diff --git a/sdk/oko_sdk_eth/rollup.config.ts b/sdk/oko_sdk_eth/rollup.config.ts deleted file mode 100644 index 52afc511b..000000000 --- a/sdk/oko_sdk_eth/rollup.config.ts +++ /dev/null @@ -1,43 +0,0 @@ -import typescript from "@rollup/plugin-typescript"; -import { nodeResolve } from "@rollup/plugin-node-resolve"; -import commonjs from "@rollup/plugin-commonjs"; -import json from "@rollup/plugin-json"; -import type { RollupOptions } from "rollup"; - -const config: RollupOptions[] = [ - { - input: "src/index.ts", - output: { - dir: "dist", - format: "esm", - sourcemap: true, - }, - external: [ - "@oko-wallet/stdlib-js", - "@keplr-wallet/types", - "@oko-wallet/oko-sdk-core", - "eventemitter3", - "viem", - "uuid", - /^viem\//, - /^ox\//, - ], - plugins: [ - json(), - nodeResolve({ - preferBuiltins: false, - browser: true, - }), - commonjs({ - include: /node_modules/, - transformMixedEsModules: true, - }), - typescript({ - tsconfig: "./tsconfig.rollup.json", - noEmitOnError: true, - }), - ], - }, -]; - -export default config; diff --git a/sdk/oko_sdk_eth/scripts/build.ts b/sdk/oko_sdk_eth/scripts/build.ts new file mode 100644 index 000000000..426af195b --- /dev/null +++ b/sdk/oko_sdk_eth/scripts/build.ts @@ -0,0 +1,138 @@ +import { deleteAsync } from "del"; +import path from "node:path"; +import commonjs from "@rollup/plugin-commonjs"; +import typescript from "@rollup/plugin-typescript"; +import { nodeResolve } from "@rollup/plugin-node-resolve"; +import json from "@rollup/plugin-json"; +import chalk from "chalk"; +import { + rollup, + type InputOptions, + type OutputOptions, + type RollupBuild, +} from "rollup"; +import { fileURLToPath } from "node:url"; +import { replaceTscAliasPaths } from "tsc-alias"; + +import tsConfigJson from "../tsconfig.json"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const PKG_ROOT = path.resolve(__dirname, ".."); + +async function main() { + console.log("Start building"); + + await removeDirtyFiles(); + await bundle(); + replaceTscAlias(); + + console.log("Done"); +} + +async function removeDirtyFiles() { + const TS_BUILD_INFO = "*.tsbuildinfo"; + const DIST = "dist"; + + console.log("deleting: %s, %s", TS_BUILD_INFO, DIST); + + await deleteAsync([ + path.resolve(PKG_ROOT, DIST), + path.resolve(PKG_ROOT, TS_BUILD_INFO), + ]); +} + +function replaceTscAlias() { + replaceTscAliasPaths({ configFile: path.resolve(PKG_ROOT, "tsconfig.json") }); + + console.log("Done tsc-alias"); +} + +async function bundle() { + console.log("Start bundling"); + + const srcPath = path.resolve(PKG_ROOT, "./src"); + + const rollupTSConfig = { + ...tsConfigJson, + }; + rollupTSConfig.compilerOptions.rootDir = srcPath; + rollupTSConfig.include = [`${srcPath}/**/*`]; + + const inputOptions: InputOptions = { + input: "src/index.ts", + external: [ + "@oko-wallet/stdlib-js", + "@keplr-wallet/types", + "@oko-wallet/oko-sdk-core", + "eventemitter3", + "viem", + "uuid", + /^viem\//, + /^ox\//, + ], + plugins: [ + json(), + nodeResolve({ + preferBuiltins: false, + browser: true, + }), + commonjs({ + include: /node_modules/, + transformMixedEsModules: true, + }), + typescript({ + ...rollupTSConfig, + noEmitOnError: true, + outputToFilesystem: true, + }), + ], + }; + + const outputOptionsList: OutputOptions[] = [ + { + file: "dist/index.js", + format: "esm", + sourcemap: true, + }, + // { + // file: "dist/index.min.js", + // format: "esm", + // sourcemap: true, + // plugins: [terser()], + // }, + ]; + + let bundle: RollupBuild; + try { + console.log(chalk.cyan("input: %s"), chalk.bold(inputOptions.input)); + bundle = await rollup(inputOptions); + + await generateOutputs(bundle, inputOptions, outputOptionsList); + } catch (error) { + console.error(error); + process.exit(1); + } + + if (bundle) { + await bundle.close(); + } +} + +async function generateOutputs( + bundle: RollupBuild, + inputOptions: InputOptions, + outputOptionsList: OutputOptions[], +) { + for (const outputOptions of outputOptionsList) { + console.log( + chalk.green("generated: %s → %s"), + chalk.bold(inputOptions.input), + chalk.bold(outputOptions.file), + ); + + await bundle.write(outputOptions); + } +} + +main().then(); diff --git a/sdk/oko_sdk_eth/scripts/generate-version.cjs b/sdk/oko_sdk_eth/scripts/generate-version.cjs deleted file mode 100644 index 5f43be2bb..000000000 --- a/sdk/oko_sdk_eth/scripts/generate-version.cjs +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env node - -const { writeFileSync } = require("fs"); -const { join } = require("path"); -const packageJson = require("../package.json"); - -function generateVersionFile() { - const versionFilePath = join(__dirname, "../src/provider/version.ts"); - const content = `export const VERSION = ${JSON.stringify(packageJson.version)};\n`; - - writeFileSync(versionFilePath, content, "utf8"); - - console.log(`✅ Generated version.ts with VERSION: ${packageJson.version}`); -} - -if (require.main === module) { - generateVersionFile(); -} - -module.exports = { generateVersionFile }; diff --git a/sdk/oko_sdk_eth/tsconfig.rollup.json b/sdk/oko_sdk_eth/tsconfig.rollup.json deleted file mode 100644 index fc51b72b3..000000000 --- a/sdk/oko_sdk_eth/tsconfig.rollup.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "rootDir": "./src" - }, - "include": ["src/**/*"], - "exclude": ["**/*.test.ts", "**/tests/**/*", "**/*.spec.ts"] -} diff --git a/yarn.lock b/yarn.lock index 7cd9aaf03..83895a007 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10821,6 +10821,7 @@ __metadata: del-cli: "npm:^6.0.0" rollup: "npm:^4.0.0" tsc-alias: "npm:^1.8.16" + tsx: "npm:^4.20.3" typescript: "npm:^5.8.3" peerDependencies: "@cosmjs/amino": ">= 0.28" @@ -11013,6 +11014,7 @@ __metadata: rollup: "npm:^4.0.0" ts-jest: "npm:^29.4.5" tsc-alias: "npm:^1.8.16" + tsx: "npm:^4.20.3" typescript: "npm:^5.8.3" uuid: "npm:^13.0.0" viem: "npm:^2.41.2"