Skip to content

Commit 3dd64d4

Browse files
committed
more tree shaking and build
1 parent f951757 commit 3dd64d4

File tree

4 files changed

+112
-12
lines changed

4 files changed

+112
-12
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,29 @@ jobs:
3131

3232
- name: Run Biome lint
3333
run: pnpm lint
34+
35+
build:
36+
name: Build Packages
37+
runs-on: ubuntu-latest
38+
needs: lint
39+
40+
steps:
41+
- name: Checkout repository
42+
uses: actions/checkout@v4
43+
44+
- name: Setup pnpm
45+
uses: pnpm/action-setup@v4
46+
with:
47+
version: 10.20.0
48+
49+
- name: Setup Node.js
50+
uses: actions/setup-node@v4
51+
with:
52+
node-version: 24
53+
cache: pnpm
54+
55+
- name: Install dependencies
56+
run: pnpm install --frozen-lockfile
57+
58+
- name: Build workspace
59+
run: pnpm build
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import { defineConfig } from 'tsup';
2+
3+
const entry = ['src/index.ts'];
4+
const common = {
5+
clean: true,
6+
dts: false,
7+
entry,
8+
keepNames: true,
9+
minify: false,
10+
shims: false,
11+
skipNodeModulesBundle: true,
12+
sourcemap: true,
13+
splitting: false,
14+
target: 'es2022',
15+
treeshake: true,
16+
} as const;
17+
18+
export default defineConfig([
19+
{
20+
...common,
21+
format: ['esm', 'cjs'],
22+
outDir: 'dist',
23+
outExtension({ format }) {
24+
return {
25+
js: format === 'esm' ? '.node.mjs' : '.node.cjs',
26+
};
27+
},
28+
platform: 'node',
29+
},
30+
{
31+
...common,
32+
format: ['esm', 'cjs'],
33+
outDir: 'dist',
34+
outExtension({ format }) {
35+
return {
36+
js: format === 'esm' ? '.browser.mjs' : '.browser.cjs',
37+
};
38+
},
39+
platform: 'browser',
40+
},
41+
{
42+
...common,
43+
format: ['esm'],
44+
outDir: 'dist',
45+
outExtension() {
46+
return { js: '.native.mjs' };
47+
},
48+
platform: 'neutral',
49+
},
50+
]);

packages/client-core/src/client/createClient.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { now } from '../utils';
66
import { createWalletRegistry } from '../wallet/registry';
77
import { createActions } from './actions';
88
import { createClientStore, createInitialClientState } from './createClientStore';
9-
import { createClientHelpers } from './helpers';
9+
import { createClientHelpers } from './createClientHelpers';
1010
import { createWatchers } from './watchers';
1111

1212
/**
@@ -61,15 +61,23 @@ export function createClient(config: SolanaClientConfig): SolanaClient {
6161
config,
6262
connectors,
6363
destroy,
64-
helpers,
64+
get helpers() {
65+
return helpers;
66+
},
6567
runtime,
6668
store,
67-
solTransfer: helpers.solTransfer,
68-
SolTransfer: helpers.solTransfer,
69+
get solTransfer() {
70+
return helpers.solTransfer;
71+
},
72+
get SolTransfer() {
73+
return helpers.solTransfer;
74+
},
6975
splToken: helpers.splToken,
7076
SplToken: helpers.splToken,
7177
SplHelper: helpers.splToken,
72-
transaction: helpers.transaction,
78+
get transaction() {
79+
return helpers.transaction;
80+
},
7381
watchers,
7482
};
7583
}

packages/client-core/src/client/helpers.ts renamed to packages/client-core/src/client/createClientHelpers.ts

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@ import type { Commitment } from '@solana/kit';
22

33
import { createSolTransferHelper, type SolTransferHelper } from '../features/sol';
44
import { createSplTokenHelper, type SplTokenHelper, type SplTokenHelperConfig } from '../features/spl';
5-
import { createTransactionHelper } from '../features/transactions';
5+
import { createTransactionHelper, type TransactionHelper } from '../features/transactions';
66
import type { ClientHelpers, ClientStore, SolanaClientRuntime } from '../types';
77

88
type SplTokenCacheEntry = Readonly<{
99
baseCommitment?: Commitment;
10-
helper: SplTokenHelper;
1110
scoped: SplTokenHelper;
1211
}>;
1312

@@ -76,9 +75,23 @@ function serialiseSplConfig(config: SplTokenHelperConfig): string {
7675

7776
export function createClientHelpers(runtime: SolanaClientRuntime, store: ClientStore): ClientHelpers {
7877
const getFallbackCommitment = () => store.getState().cluster.commitment;
79-
const solTransfer = wrapSolTransferHelper(createSolTransferHelper(runtime), getFallbackCommitment);
80-
const transaction = createTransactionHelper(runtime, getFallbackCommitment);
8178
const splTokenCache = new Map<string, SplTokenCacheEntry>();
79+
let solTransfer: SolTransferHelper | undefined;
80+
let transaction: TransactionHelper | undefined;
81+
82+
const getSolTransfer = () => {
83+
if (!solTransfer) {
84+
solTransfer = wrapSolTransferHelper(createSolTransferHelper(runtime), getFallbackCommitment);
85+
}
86+
return solTransfer;
87+
};
88+
89+
const getTransaction = () => {
90+
if (!transaction) {
91+
transaction = createTransactionHelper(runtime, getFallbackCommitment);
92+
}
93+
return transaction;
94+
};
8295

8396
function getSplTokenHelper(config: SplTokenHelperConfig): SplTokenHelper {
8497
const cacheKey = serialiseSplConfig(config);
@@ -90,15 +103,18 @@ export function createClientHelpers(runtime: SolanaClientRuntime, store: ClientS
90103
const scoped = wrapSplTokenHelper(helper, getFallbackCommitment, config.commitment);
91104
splTokenCache.set(cacheKey, {
92105
baseCommitment: config.commitment,
93-
helper,
94106
scoped,
95107
});
96108
return scoped;
97109
}
98110

99111
return Object.freeze({
100-
solTransfer,
112+
get solTransfer() {
113+
return getSolTransfer();
114+
},
101115
splToken: getSplTokenHelper,
102-
transaction,
116+
get transaction() {
117+
return getTransaction();
118+
},
103119
});
104120
}

0 commit comments

Comments
 (0)