Skip to content
This repository was archived by the owner on Mar 5, 2025. It is now read-only.

Commit ab80131

Browse files
author
Alex
authored
support ESM builds (#6131)
* update files to support es6 imports * add js to file extensions * remove stats * adding js for relative paths * update configs * update relative links to js * update extensionalias to accept .js relative paths * allow relative js imports * update * test other tests * remove running on prs * remove artifacts from esm build * update build * update flow * revert build -esm
1 parent 6202d1e commit ab80131

File tree

146 files changed

+754
-484
lines changed

Some content is hidden

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

146 files changed

+754
-484
lines changed

.eslintrc.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,9 @@ module.exports = {
1111
sourceType: 'module',
1212
},
1313
extends: ['web3-base/ts'],
14+
settings: {
15+
'import/resolver': {
16+
typescript: {}, // this loads tsconfig.json to eslint
17+
},
18+
},
1419
};

.github/workflows/build.yml

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ jobs:
3131
with:
3232
name: web3-${{ matrix.node }}.js.tar.gz
3333
path: /tmp/web3-${{ matrix.node }}.js.tar.gz
34-
build-esm-types:
35-
name: Build ESM & Types
34+
build-esm:
35+
name: Build ESM
3636
needs: build
3737
runs-on: ubuntu-latest
3838
strategy:
@@ -48,6 +48,22 @@ jobs:
4848
path: /tmp
4949
- run: tar -xf /tmp/web3-${{ matrix.node }}.js.tar.gz -C ./
5050
- run: yarn build:esm
51+
build-types:
52+
name: Build Types
53+
needs: build
54+
runs-on: ubuntu-latest
55+
strategy:
56+
matrix:
57+
node: [ 18, 16 ]
58+
steps:
59+
- uses: actions/setup-node@v3
60+
with:
61+
node-version: ${{ matrix.node }}
62+
- uses: actions/download-artifact@v3
63+
with:
64+
name: web3-${{ matrix.node }}.js.tar.gz
65+
path: /tmp
66+
- run: tar -xf /tmp/web3-${{ matrix.node }}.js.tar.gz -C ./
5167
- run: yarn build:types
5268
lint:
5369
name: Lint

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1488,6 +1488,7 @@ should use 4.0.1-alpha.0 for testing.
14881488
#### web3-eth-accounts
14891489

14901490
- Fixed ESM import bugs reported in (#6032) and (#6034)
1491+
- ESM projects will not need to run --experimental-specifier-resolution=node (#6127)
14911492

14921493
### Changed
14931494

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
"cypress-jest-adapter": "^0.1.1",
107107
"declaration-bundler-webpack-plugin": "^1.0.3",
108108
"eslint": "^8.20.0",
109+
"eslint-import-resolver-typescript": "^3.5.5",
109110
"http-browserify": "^1.7.0",
110111
"https-browserify": "^1.0.0",
111112
"husky": "^8.0.1",

packages/web3-core/src/index.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@ You should have received a copy of the GNU Lesser General Public License
1515
along with web3.js. If not, see <http://www.gnu.org/licenses/>.
1616
*/
1717

18-
export * from './web3_config';
19-
export * from './web3_request_manager';
20-
export * from './web3_subscription_manager';
21-
export * from './web3_subscriptions';
22-
export * from './web3_context';
23-
export * from './web3_batch_request';
24-
export * from './utils';
25-
export * from './types';
26-
export * from './formatters';
27-
export * from './web3_promi_event';
28-
export * from './web3_event_emitter';
18+
export * from './web3_config.js';
19+
export * from './web3_request_manager.js';
20+
export * from './web3_subscription_manager.js';
21+
export * from './web3_subscriptions.js';
22+
export * from './web3_context.js';
23+
export * from './web3_batch_request.js';
24+
export * from './utils.js';
25+
export * from './types.js';
26+
export * from './formatters.js';
27+
export * from './web3_promi_event.js';
28+
export * from './web3_event_emitter.js';
2929

3030
// For backward usability export as namespace
31-
export * as formatters from './formatters';
31+
export * as formatters from './formatters.js';

packages/web3-core/src/web3_batch_request.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
1818
import { JsonRpcBatchResponse, JsonRpcOptionalRequest, JsonRpcRequest } from 'web3-types';
1919
import { jsonRpc, Web3DeferredPromise } from 'web3-utils';
2020
import { OperationAbortError, OperationTimeoutError, ResponseError } from 'web3-errors';
21-
import { Web3RequestManager } from './web3_request_manager';
21+
import { Web3RequestManager } from './web3_request_manager.js';
2222

2323
export const DEFAULT_BATCH_REQUEST_TIMEOUT = 1000;
2424

packages/web3-core/src/web3_config.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
1818
import { Numbers, HexString, BlockNumberOrTag, Common } from 'web3-types';
1919
import { ConfigHardforkMismatchError, ConfigChainMismatchError } from 'web3-errors';
2020
import { isNullish, toHex } from 'web3-utils';
21-
import { TransactionTypeParser } from './types';
21+
import { TransactionTypeParser } from './types.js';
2222
// eslint-disable-next-line import/no-cycle
23-
import { TransactionBuilder } from './web3_context';
24-
import { Web3EventEmitter } from './web3_event_emitter';
23+
import { TransactionBuilder } from './web3_context.js';
24+
import { Web3EventEmitter } from './web3_event_emitter.js';
2525

2626
// To avoid cycle dependency declare this
2727
export interface Web3ConfigOptions {

packages/web3-core/src/web3_context.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,13 @@ import {
2929
import { isNullish } from 'web3-utils';
3030
import { ExistingPluginNamespaceError } from 'web3-errors';
3131

32-
import { isSupportedProvider } from './utils';
32+
import { isSupportedProvider } from './utils.js';
3333
// eslint-disable-next-line import/no-cycle
34-
import { Web3Config, Web3ConfigEvent, Web3ConfigOptions } from './web3_config';
35-
import { Web3RequestManager } from './web3_request_manager';
36-
import { Web3SubscriptionConstructor } from './web3_subscriptions';
37-
import { Web3SubscriptionManager } from './web3_subscription_manager';
38-
import { Web3BatchRequest } from './web3_batch_request';
34+
import { Web3Config, Web3ConfigEvent, Web3ConfigOptions } from './web3_config.js';
35+
import { Web3RequestManager } from './web3_request_manager.js';
36+
import { Web3SubscriptionConstructor } from './web3_subscriptions.js';
37+
import { Web3SubscriptionManager } from './web3_subscription_manager.js';
38+
import { Web3BatchRequest } from './web3_batch_request.js';
3939

4040
// To avoid circular dependencies, we need to export type from here.
4141
export type Web3ContextObject<

packages/web3-core/src/web3_promi_event.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {
2020
Web3EventEmitter,
2121
Web3EventKey,
2222
Web3EventMap,
23-
} from './web3_event_emitter';
23+
} from './web3_event_emitter.js';
2424

2525
export type PromiseExecutor<T> = (
2626
resolve: (data: T) => void,

packages/web3-core/src/web3_request_manager.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ import {
5050
isLegacySendAsyncProvider,
5151
isLegacySendProvider,
5252
isWeb3Provider,
53-
} from './utils';
54-
import { Web3EventEmitter } from './web3_event_emitter';
53+
} from './utils.js';
54+
import { Web3EventEmitter } from './web3_event_emitter.js';
5555

5656
export enum Web3RequestManagerEvent {
5757
PROVIDER_CHANGED = 'PROVIDER_CHANGED',

0 commit comments

Comments
 (0)