Skip to content

Commit 8429316

Browse files
feat(mbe, ebe): migrate to beta packages and deprecate bitgo package
BREAKING CHANGE: Migrating packages to beta package TICKET: WP-5336
1 parent 63acfb2 commit 8429316

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+4587
-2837
lines changed

masterBitgoExpress.json

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"openapi": "3.0.3",
33
"info": {
44
"title": "@bitgo/master-bitgo-express",
5-
"version": "1.0.0",
5+
"version": "0.0.0-semantically-released",
66
"description": "BitGo Enclaved Express - Secure enclave for BitGo signing operations with mTLS"
77
},
88
"paths": {
@@ -522,6 +522,26 @@
522522
}
523523
}
524524
},
525+
"400": {
526+
"description": "Bad Request",
527+
"content": {
528+
"application/json": {
529+
"schema": {
530+
"$ref": "#/components/schemas/ErrorResponse"
531+
}
532+
}
533+
}
534+
},
535+
"404": {
536+
"description": "Not Found",
537+
"content": {
538+
"application/json": {
539+
"schema": {
540+
"$ref": "#/components/schemas/ErrorResponse"
541+
}
542+
}
543+
}
544+
},
525545
"500": {
526546
"description": "Internal Server Error",
527547
"content": {

package.json

Lines changed: 80 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@bitgo/enclaved-bitgo-express",
3-
"version": "1.0.0",
3+
"version": "0.0.0-semantically-released",
44
"description": "BitGo Enclaved Express - Secure enclave for BitGo signing operations with mTLS",
55
"main": "./dist/src/index.js",
66
"types": "./dist/src/index.d.ts",
@@ -13,29 +13,94 @@
1313
"test": "mocha --require ts-node/register 'src/**/__tests__/**/*.test.ts'",
1414
"test:watch": "mocha --require ts-node/register --watch 'src/**/__tests__/**/*.test.ts'",
1515
"test:coverage": "nyc mocha --require ts-node/register 'src/**/__tests__/**/*.test.ts'",
16-
"lint": "eslint --quiet .",
17-
"lint:fix": "eslint --quiet . --fix",
16+
"lint": "eslint --quiet --ignore-pattern scripts/bump-version.ts .",
17+
"lint:fix": "eslint --quiet --ignore-pattern scripts/bump-version.ts . --fix",
1818
"generate-test-ssl": "openssl req -x509 -newkey rsa:2048 -keyout test-ssl-key.pem -out test-ssl-cert.pem -days 365 -nodes -subj '/CN=localhost'",
1919
"generate:openapi:masterExpress": "npx @api-ts/openapi-generator --name @bitgo/master-bitgo-express ./src/api/master/routers/index.ts > masterBitgoExpress.json",
20-
"container:build": "podman build -t bitgo-onprem-express ."
20+
"container:build": "podman build -t bitgo-onprem-express .",
21+
"bump-versions": "ts-node scripts/bump-version.ts"
2122
},
2223
"dependencies": {
2324
"@api-ts/io-ts-http": "^3.2.1",
2425
"@api-ts/openapi-generator": "^5.7.0",
2526
"@api-ts/response": "^2.1.0",
2627
"@api-ts/superagent-wrapper": "^1.3.3",
2728
"@api-ts/typed-express-router": "^1.1.13",
28-
"@bitgo-beta/sdk-lib-mpc": "8.2.1-alpha.291",
29-
"@bitgo/abstract-utxo": "^9.21.4",
30-
"@bitgo/sdk-coin-ada": "^4.11.5",
31-
"@bitgo/sdk-coin-dot": "^4.3.5",
32-
"@bitgo/sdk-coin-near": "^2.7.0",
33-
"@bitgo/sdk-coin-sol": "^4.12.5",
34-
"@bitgo/sdk-coin-sui": "^5.15.5",
35-
"@bitgo/sdk-core": "^35.3.0",
36-
"@bitgo/statics": "^54.6.0",
29+
"@bitgo-beta/sdk-lib-mpc": "8.2.0-beta.1022",
30+
"@bitgo-beta/abstract-utxo": "1.1.1-beta.1263",
31+
"@bitgo-beta/abstract-eth": "1.0.2-beta.1260",
32+
"@bitgo-beta/sdk-coin-ada": "2.3.14-beta.1028",
33+
"@bitgo-beta/sdk-coin-algo": "1.3.19-beta.1028",
34+
"@bitgo-beta/sdk-coin-apt": "1.0.1-beta.470",
35+
"@bitgo-beta/sdk-coin-arbeth": "1.0.1-beta.884",
36+
"@bitgo-beta/sdk-coin-asi": "1.0.1-beta.117",
37+
"@bitgo-beta/sdk-coin-atom": "3.1.2-beta.1027",
38+
"@bitgo-beta/sdk-coin-avaxc": "1.1.1-beta.1255",
39+
"@bitgo-beta/sdk-coin-avaxp": "3.5.10-beta.1027",
40+
"@bitgo-beta/sdk-coin-baby": "1.0.1-beta.370",
41+
"@bitgo-beta/sdk-coin-bch": "1.1.1-beta.1256",
42+
"@bitgo-beta/sdk-coin-bcha": "1.1.1-beta.1255",
43+
"@bitgo-beta/sdk-coin-bera": "1.0.1-beta.883",
44+
"@bitgo-beta/sdk-coin-bld": "1.0.1-beta.989",
45+
"@bitgo-beta/sdk-coin-bsc": "1.0.1-beta.1255",
46+
"@bitgo-beta/sdk-coin-bsv": "1.1.1-beta.1255",
47+
"@bitgo-beta/sdk-coin-btc": "1.0.2-beta.1256",
48+
"@bitgo-beta/sdk-coin-btg": "1.1.1-beta.1255",
49+
"@bitgo-beta/sdk-coin-celo": "1.1.1-beta.1254",
50+
"@bitgo-beta/sdk-coin-coredao": "1.0.0-beta.462",
51+
"@bitgo-beta/sdk-coin-coreum": "1.0.1-beta.871",
52+
"@bitgo-beta/sdk-coin-cronos": "1.0.1-beta.163",
53+
"@bitgo-beta/sdk-coin-cspr": "1.2.19-beta.1027",
54+
"@bitgo-beta/sdk-coin-dash": "1.1.1-beta.1256",
55+
"@bitgo-beta/sdk-coin-doge": "1.0.2-beta.1256",
56+
"@bitgo-beta/sdk-coin-dot": "2.2.8-beta.1027",
57+
"@bitgo-beta/sdk-coin-eos": "1.3.19-beta.1026",
58+
"@bitgo-beta/sdk-coin-etc": "1.0.2-beta.1254",
59+
"@bitgo-beta/sdk-coin-eth": "4.4.1-beta.1025",
60+
"@bitgo-beta/sdk-coin-ethw": "20.0.76-beta.193",
61+
"@bitgo-beta/sdk-coin-flr": "1.0.1-beta.369",
62+
"@bitgo-beta/sdk-coin-hash": "1.0.1-beta.986",
63+
"@bitgo-beta/sdk-coin-hbar": "1.0.2-beta.1256",
64+
"@bitgo-beta/sdk-coin-icp": "1.0.1-beta.382",
65+
"@bitgo-beta/sdk-coin-initia": "1.1.1-beta.143",
66+
"@bitgo-beta/sdk-coin-injective": "1.1.3-beta.980",
67+
"@bitgo-beta/sdk-coin-islm": "1.0.1-beta.883",
68+
"@bitgo-beta/sdk-coin-ltc": "1.1.1-beta.1256",
69+
"@bitgo-beta/sdk-coin-mon": "1.0.1-beta.198",
70+
"@bitgo-beta/sdk-coin-near": "1.3.19-beta.1025",
71+
"@bitgo-beta/sdk-coin-oas": "1.0.1-beta.464",
72+
"@bitgo-beta/sdk-coin-opeth": "1.0.1-beta.881",
73+
"@bitgo-beta/sdk-coin-osmo": "1.0.1-beta.1010",
74+
"@bitgo-beta/sdk-coin-polygon": "1.0.2-beta.1254",
75+
"@bitgo-beta/sdk-coin-polyx": "1.0.1-beta.227",
76+
"@bitgo-beta/sdk-coin-rbtc": "1.1.1-beta.1254",
77+
"@bitgo-beta/sdk-coin-rune": "1.0.0-beta.494",
78+
"@bitgo-beta/sdk-coin-sei": "1.0.1-beta.982",
79+
"@bitgo-beta/sdk-coin-sgb": "1.1.1-beta.369",
80+
"@bitgo-beta/sdk-coin-sol": "2.4.3-beta.1024",
81+
"@bitgo-beta/sdk-coin-soneium": "1.0.1-beta.178",
82+
"@bitgo-beta/sdk-coin-stt": "1.0.1-beta.187",
83+
"@bitgo-beta/sdk-coin-stx": "1.1.1-beta.1259",
84+
"@bitgo-beta/sdk-coin-sui": "3.0.3-beta.1024",
85+
"@bitgo-beta/sdk-coin-tao": "1.0.0-beta.391",
86+
"@bitgo-beta/sdk-coin-tia": "1.0.0-beta.991",
87+
"@bitgo-beta/sdk-coin-ton": "1.0.1-beta.892",
88+
"@bitgo-beta/sdk-coin-trx": "1.0.2-beta.1258",
89+
"@bitgo-beta/sdk-coin-vet": "1.0.1-beta.142",
90+
"@bitgo-beta/sdk-coin-wemix": "1.0.1-beta.362",
91+
"@bitgo-beta/sdk-coin-world": "1.0.1-beta.188",
92+
"@bitgo-beta/sdk-coin-xdc": "1.0.1-beta.369",
93+
"@bitgo-beta/sdk-coin-xlm": "2.0.5-beta.1024",
94+
"@bitgo-beta/sdk-coin-xrp": "1.1.1-beta.1257",
95+
"@bitgo-beta/sdk-coin-xtz": "1.1.1-beta.1257",
96+
"@bitgo-beta/sdk-coin-zec": "1.1.1-beta.1256",
97+
"@bitgo-beta/sdk-coin-zeta": "1.0.1-beta.947",
98+
"@bitgo-beta/sdk-coin-zketh": "1.0.1-beta.811",
99+
"@bitgo-beta/sdk-core": "8.2.1-beta.1030",
100+
"@bitgo-beta/statics": "15.1.1-beta.1033",
101+
"@bitgo/wasm-miniscript": "2.0.0-beta.7",
37102
"@commitlint/config-conventional": "^19.8.1",
38-
"bitgo": "^48.1.0",
103+
"bitgo": "^48.5.0",
39104
"body-parser": "^1.20.3",
40105
"connect-timeout": "^1.9.0",
41106
"debug": "^3.1.0",
@@ -51,7 +116,7 @@
51116
"zod": "^3.25.48"
52117
},
53118
"resolutions": {
54-
"@bitgo/sdk-core": "^35.3.0"
119+
"@bitgo-beta/sdk-core": "8.2.1-beta.1030"
55120
},
56121
"devDependencies": {
57122
"@api-ts/openapi-generator": "^5.7.0",

scripts/bump-version.ts

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
export {};
2+
3+
const { writeFileSync, mkdirSync, existsSync } = require('fs');
4+
const path = require('path');
5+
const https = require('https');
6+
7+
/**
8+
* Script purpose: Automatically update @bitgo-beta/ package versions in package.json
9+
* - Reads package.json in current directory
10+
* - Bumps @bitgo-beta/ packages to latest version
11+
* - Overwrites package.json with updated versions
12+
*/
13+
14+
type BitGoBetaPackageName = `@bitgo-beta/${string}`;
15+
16+
function dependencyIsBitGoBetaPackage(dependency: string): dependency is BitGoBetaPackageName {
17+
return dependency.startsWith('@bitgo-beta/');
18+
}
19+
20+
type Tag = {
21+
beta?: string;
22+
latest?: string;
23+
};
24+
25+
type DistTags = {
26+
tags: Tag;
27+
};
28+
29+
const packageJsonPath = path.resolve(process.cwd(), 'package.json');
30+
const packageJson = require(packageJsonPath);
31+
const packageNames: BitGoBetaPackageName[] = Object.keys(packageJson.dependencies).filter(
32+
dependencyIsBitGoBetaPackage,
33+
);
34+
35+
/**
36+
* Fetches distribution tags for a given package from npm registry
37+
*/
38+
const getDistTags = async (packageName: BitGoBetaPackageName): Promise<DistTags> => {
39+
return new Promise((resolve) => {
40+
https.get(
41+
`https://registry.npmjs.org/-/package/${packageName}/dist-tags`,
42+
(res: { on: (arg0: string, arg1: (d: any) => void) => void }) => {
43+
let data = '';
44+
res.on('data', (d) => {
45+
data += d;
46+
});
47+
res.on('end', () => {
48+
const tags = JSON.parse(data) as Tag;
49+
resolve({ tags });
50+
});
51+
},
52+
);
53+
});
54+
};
55+
56+
/**
57+
* Updates package version to latest in package.json
58+
*/
59+
const bumpVersion = async (packageName: BitGoBetaPackageName) => {
60+
const { tags } = await getDistTags(packageName);
61+
62+
// Prefer beta tag if available, otherwise use latest
63+
const next = tags['beta'] || tags['latest'];
64+
65+
if (next) {
66+
packageJson.dependencies[packageName] = next;
67+
console.log(`Upgrading ${packageName} to ${packageJson.dependencies[packageName]}...`);
68+
69+
// Update resolutions if the package is in resolutions
70+
if (packageJson.resolutions && packageJson.resolutions[packageName]) {
71+
packageJson.resolutions[packageName] = next;
72+
console.log(`Updating resolution for ${packageName} to ${next}...`);
73+
}
74+
} else {
75+
console.log(`No suitable version found for ${packageName}, keeping current version`);
76+
}
77+
78+
return;
79+
};
80+
81+
const bumpVersions = async () => {
82+
const bumpPromises = packageNames.map(bumpVersion);
83+
await Promise.all(bumpPromises);
84+
85+
const targetDir = path.join(process.cwd());
86+
87+
// Ensure scripts directory exists
88+
const scriptsDir = path.join(targetDir, 'scripts');
89+
if (!existsSync(scriptsDir)) {
90+
mkdirSync(scriptsDir, { recursive: true });
91+
}
92+
93+
writeFileSync(path.join(targetDir, 'package.json'), JSON.stringify(packageJson, null, 2) + '\n');
94+
95+
console.log(`Successfully bumped ${packageJson.name} dependencies`);
96+
};
97+
98+
void bumpVersions();

src/__tests__/api/enclaved/ecdsaUtils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// ECDSA MPCv2 specific imports
2-
import { DklsTypes, DklsComms, DklsDsg } from '@bitgo/sdk-lib-mpc';
2+
import { DklsTypes, DklsComms, DklsDsg } from '@bitgo-beta/sdk-lib-mpc';
33

4-
import { TxRequest, SignatureShareRecord, SignatureShareType } from '@bitgo/sdk-core';
4+
import { TxRequest, SignatureShareRecord, SignatureShareType } from '@bitgo-beta/sdk-core';
55

66
// MPCv2 type definitions
77
import {

src/__tests__/api/enclaved/postMpcV2Key.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import 'should';
77
import * as request from 'supertest';
88
import * as sinon from 'sinon';
99
import * as configModule from '../../../initConfig';
10-
import * as bitgoSdk from '@bitgo/sdk-core';
10+
import * as bitgoSdk from '@bitgo-beta/sdk-core';
1111
import { DklsComms, DklsDkg, DklsTypes } from '@bitgo-beta/sdk-lib-mpc';
12-
import { MPCv2PartiesEnum } from '@bitgo/sdk-core/dist/src/bitgo/utils/tss/ecdsa';
12+
import { MPCv2PartiesEnum } from '@bitgo-beta/sdk-core/dist/src/bitgo/utils/tss/ecdsa';
1313

1414
describe('postMpcV2Key', () => {
1515
let cfg: EnclavedConfig;

src/__tests__/api/enclaved/recoveryMultisigTransaction.test.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@ import { AppMode, EnclavedConfig, TlsMode } from '../../../shared/types';
66
import sinon from 'sinon';
77
import * as middleware from '../../../shared/middleware';
88
import { BitGoRequest } from '../../../types/request';
9-
import { BitGo } from 'bitgo';
9+
import { BitGoAPI as BitGo } from '@bitgo-beta/sdk-api';
1010
import * as kmsUtils from '../../../api/enclaved/utils';
1111

1212
describe('UTXO recovery', () => {
1313
let agent: request.SuperAgentTest;
14-
let mockBitgo: BitGo;
1514
let mockRetrieveKmsPrvKey: sinon.SinonStub;
1615
const coin = 'tbtc';
1716
const config: EnclavedConfig = {
@@ -36,17 +35,9 @@ describe('UTXO recovery', () => {
3635
accessToken: 'test_token',
3736
});
3837

39-
// Create mock BitGo instance
40-
mockBitgo = {
41-
_coinFactory: {},
42-
_useAms: false,
43-
initCoinFactory: sinon.stub(),
44-
coin: bitgo.coin.bind(bitgo), // Use the real coin method from initialized BitGo
45-
} as unknown as BitGo;
46-
4738
// Setup middleware stubs before creating app
4839
sinon.stub(middleware, 'prepareBitGo').callsFake(() => (req, res, next) => {
49-
(req as BitGoRequest<EnclavedConfig>).bitgo = mockBitgo;
40+
(req as BitGoRequest<EnclavedConfig>).bitgo = bitgo;
5041
(req as BitGoRequest<EnclavedConfig>).config = config;
5142
next();
5243
});

src/__tests__/api/enclaved/signMpcRecoveryTransaction.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'should';
22
import nock from 'nock';
33
import sinon from 'sinon';
44
import supertest from 'supertest';
5-
import { Utils } from '@bitgo/sdk-coin-sol';
5+
import { Utils } from '@bitgo-beta/sdk-coin-sol';
66
import * as kmsUtils from '../../../api/enclaved/utils';
77
import { app as expressApp } from '../../../enclavedApp';
88
import { AppMode, EnclavedConfig, TlsMode } from '../../../shared/types';

src/__tests__/api/enclaved/signMpcTransaction.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import { AppMode, EnclavedConfig, TlsMode } from '../../../shared/types';
77
import express from 'express';
88
import * as sinon from 'sinon';
99
import * as configModule from '../../../initConfig';
10-
import { Ed25519BIP32, Eddsa, SignatureShareType } from '@bitgo/sdk-core';
10+
import { Ed25519BIP32, Eddsa, SignatureShareType } from '@bitgo-beta/sdk-core';
1111
import { TxRequest } from '@bitgo/public-types';
12-
import { DklsUtils, DklsDsg, DklsTypes } from '@bitgo/sdk-lib-mpc';
12+
import { DklsUtils, DklsDsg, DklsTypes } from '@bitgo-beta/sdk-lib-mpc';
1313
import assert from 'assert';
1414
import { signBitgoMPCv2Round1, signBitgoMPCv2Round2, signBitgoMPCv2Round3 } from './ecdsaUtils';
1515
import { Hash } from 'crypto';

src/__tests__/api/master/accelerate.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as request from 'supertest';
44
import nock from 'nock';
55
import { app as expressApp } from '../../../masterExpressApp';
66
import { AppMode, MasterExpressConfig, TlsMode } from '../../../shared/types';
7-
import { Environments, Wallet } from '@bitgo/sdk-core';
7+
import { Environments, Wallet } from '@bitgo-beta/sdk-core';
88

99
describe('POST /api/:coin/wallet/:walletId/accelerate', () => {
1010
let agent: request.SuperAgentTest;

src/__tests__/api/master/consolidate.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ import * as request from 'supertest';
44
import nock from 'nock';
55
import { app as expressApp } from '../../../masterExpressApp';
66
import { AppMode, MasterExpressConfig, TlsMode } from '../../../shared/types';
7-
import { Environments, Wallet } from '@bitgo/sdk-core';
8-
import { Hteth } from '@bitgo/sdk-coin-eth';
7+
import { Environments, Wallet } from '@bitgo-beta/sdk-core';
8+
import { Hteth } from '@bitgo-beta/sdk-coin-eth';
99
import * as transactionRequests from '../../../api/master/handlers/transactionRequests';
1010
import * as handlerUtils from '../../../api/master/handlerUtils';
1111

0 commit comments

Comments
 (0)