Skip to content

refactor(dapi-client)!: convert to ESM, drop webpack/karma#3676

Closed
PastaPastaPasta wants to merge 3 commits into
dashpay:v3.1-devfrom
PastaPastaPasta:claude/esm-3-dapi-client
Closed

refactor(dapi-client)!: convert to ESM, drop webpack/karma#3676
PastaPastaPasta wants to merge 3 commits into
dashpay:v3.1-devfrom
PastaPastaPasta:claude/esm-3-dapi-client

Conversation

@PastaPastaPasta
Copy link
Copy Markdown
Member

Summary

Converts @dashevo/dapi-client to pure ESM. Removes the webpack/karma browser-bundle infrastructure. Consumers must now use a modern bundler (Vite/esbuild/webpack 5) that handles ESM natively.

This is PR 3 of 5 in the stacked series. Depends on #3674 and #3675.

Warning

This PR temporarily breaks wallet-lib and js-dash-sdk tests. Both packages currently require() dapi-client, and CJS cannot require an ESM module. PRs 4 and 5 in this stack convert those packages to ESM and unbreak them. The three PRs (3, 4, 5) should land together.

What changes

dapi-client

  • package.json: "type": "module", "exports": { ".": "./lib/index.js", "./lib/*": "./lib/*" }, drops main. The wildcard preserves the deep-import paths that wallet-lib and js-dash-sdk use.
  • All ~115 source files and ~80 test files converted from CJS require/module.exports to ESM import/export. All relative imports include the .js extension (ESM requirement).
  • events npm package moved from devDependencies → dependencies. Used by DAPIClient, ReconnectableStream, BlockHeadersProvider for EventEmitter. The npm events package works in both Node and browser bundlers.
  • Deletes webpack.config.js, karma.conf.js, lib/test/karma/. Removes @babel/core, babel-loader, all karma-*, all browser-polyfill devDeps (assert-browserify, buffer, crypto-browserify, os-browserify, path-browserify, process, stream-browserify, string_decoder, url, util, webpack, webpack-cli).
  • .mocharc.yml uses import: for the ESM bootstrap.

Bootstrap

  • lib/test/bootstrap.js converted to ESM with a defensive loadDpp.default ?? loadDpp unwrap (wasm-dpp is CJS; NodeNext interop sometimes wraps the default in a namespace object).

Test plan

  • yarn workspace @dashevo/dapi-client run test:unit315 passing
  • yarn workspace @dashevo/wallet-lib run test:unit — 364/377, 13 failing (expected; PR 4 fixes)
  • yarn workspace dash run test:unit — TS compile fails on Cannot find module '@dashevo/dapi-client' (expected; PR 5 fixes)

Breaking changes

  • Package is ESM-only. Any require('@dashevo/dapi-client') breaks.
  • Deep imports require .js extensions: import X from '@dashevo/dapi-client/lib/transport/ReconnectableStream.js' (was ...ReconnectableStream before).
  • No prebuilt browser bundle. Consumers must use a bundler.
  • Drops devDeps that downstream consumers might have transitively relied on for browser polyfills. Consumers needing those must add them to their own devDeps.

Stack

…ton/fetch/promisify shims

Non-breaking cleanup pass; package stays CJS, no public API changes, no consumer changes required.

dapi-client: replace winston with a minimal console-backed logger that preserves the same API (.error/.warn/.info/.verbose/.debug/.silly/.getForId). Drop node-fetch and the lib/test/bootstrap setimmediate shim — Node 18+ has both globally. Drop the https.Agent self-signed-TLS branch from requestJsonRpc (was Node-only; consumers wanting this must configure NODE_TLS_REJECT_UNAUTHORIZED at the app layer). Inline lodash/sample in ListDAPIAddressProvider. Add engines.node >=18.18. Remove dependencies: winston, node-fetch, lodash, bs58 (unused), node-inspect-extracted (unused). Remove devDeps: setimmediate.

dapi-grpc: inline the promisify shim in core/v0/web/CorePromiseClient.js and platform/v0/web/PlatformPromiseClient.js so the browser bundle no longer requires Node's util module. Both files document the shim so a future codegen regen does not silently reintroduce require('util').
… API

Adds lib/utils/bytes.js helper (hexToBytes/bytesToHex/base64ToBytes/bytesToBase64/concatBytes/bytesEqual) and converts all Buffer.* call sites in dapi-client lib/ to Uint8Array, with corresponding test updates. Package stays CJS.

Production exceptions where Buffer is retained: BlockHeadersReader passes Buffer to dashcore-lib's BlockHeader (its BufferReader needs .readInt32LE), and GetIdentitiesContractKeysResponse passes Buffer to wasm-dpp's Identifier.from (it explicitly requires Node Buffer).

createGrpcTransportError now handles both raw bytes (grpc-js path) and base64 strings (grpc-web path) for drive-error-data-bin, stack-bin, and dash-serialized-consensus-error-bin metadata fields, restoring the dual-format behavior that Buffer.from(x, 'base64') used to provide implicitly.

Test updates: spec files that construct expected protobuf requests now wrap .toBuffer() with new Uint8Array(...) to match production's normalization (sinon calledOnceWithExactly distinguishes Buffer from plain Uint8Array).

Breaking change for direct consumers: response object byte fields are now Uint8Array. Callers that do response.field.toString('hex') will fail — use bytesToHex(response.field) from lib/utils/bytes instead. Buffer.isBuffer(response.field) now returns false; use response.field instanceof Uint8Array.

Test results: dapi-client 315/315, wallet-lib 377/377, js-dash-sdk 60/60 — downstream consumers continue passing without modification (they exercise dapi-client mostly via mocks).
Converts @dashevo/dapi-client to pure ESM: type: module, exports map with ./lib/* wildcard, all CJS require/module.exports replaced with import/export, .js extensions on relative imports. Engine bumped to >=18.18.

Drops webpack.config.js, karma.conf.js, and lib/test/karma/. Removes the @babel/core, babel-loader, browser-polyfill, karma, and webpack devDeps. Consumers must use a modern bundler (Vite/esbuild/webpack 5) which handles ESM natively.

Moves 'events' npm package from devDependencies to dependencies — used by DAPIClient, ReconnectableStream, and BlockHeadersProvider for EventEmitter, and resolves correctly in both Node and browser bundlers.

BREAKING: CJS consumers (require) no longer work. Downstream consumers wallet-lib (PR 4) and js-dash-sdk (PR 5) are temporarily broken between this PR merging and PRs 4/5 merging — they must land as a sequence. Dashmate is already ESM and continues to work.

Test results: dapi-client 315/315. wallet-lib + js-dash-sdk fail as expected (fixed by PRs 4 + 5).
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 19, 2026

Important

Review skipped

Too many files!

This PR contains 187 files, which is 37 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 4a0c6605-29f6-438c-8b73-2421a1677180

📥 Commits

Reviewing files that changed from the base of the PR and between 6a3b904 and befadd8.

⛔ Files ignored due to path filters (13)
  • .yarn/cache/babel-loader-npm-9.1.3-cbf4da21df-7086e67827.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/common-path-prefix-npm-3.0.0-68b78785c1-09c180e8d8.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/core-js-npm-3.33.2-08a6fba407-d62554d51c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/find-cache-dir-npm-4.0.0-ad2504e37e-52a456a80d.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/find-up-npm-6.3.0-e5056fc655-4f3bdc30d4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/locate-path-npm-7.2.0-0e1169e19b-1c6d269d4e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/p-limit-npm-4.0.0-5dccf29b67-01d9d70695.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/p-locate-npm-6.0.0-b6cfb720dc-2bfe5234ef.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/path-exists-npm-5.0.0-0bf403c56c-8ca842868c.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/pkg-dir-npm-7.0.0-02ff099b31-94298b20a4.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/schema-utils-npm-4.2.0-e822c5b02e-808784735e.zip is excluded by !**/.yarn/**, !**/*.zip
  • .yarn/cache/yocto-queue-npm-1.0.0-7b502f1987-2cac84540f.zip is excluded by !**/.yarn/**, !**/*.zip
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (187)
  • .pnp.cjs
  • packages/dapi-grpc/clients/core/v0/web/CorePromiseClient.js
  • packages/dapi-grpc/clients/platform/v0/web/PlatformPromiseClient.js
  • packages/js-dapi-client/.mocharc.yml
  • packages/js-dapi-client/karma.conf.js
  • packages/js-dapi-client/lib/BlockHeadersProvider/BlockHeadersProvider.js
  • packages/js-dapi-client/lib/BlockHeadersProvider/BlockHeadersReader.js
  • packages/js-dapi-client/lib/BlockHeadersProvider/createBlockHeadersProviderFromOptions.js
  • packages/js-dapi-client/lib/DAPIClient.js
  • packages/js-dapi-client/lib/SimplifiedMasternodeListProvider/SimplifiedMasternodeListProvider.js
  • packages/js-dapi-client/lib/SimplifiedMasternodeListProvider/createMasternodeListStreamFactory.js
  • packages/js-dapi-client/lib/dapiAddressProvider/DAPIAddress.js
  • packages/js-dapi-client/lib/dapiAddressProvider/ListDAPIAddressProvider.js
  • packages/js-dapi-client/lib/dapiAddressProvider/SimplifiedMasternodeListDAPIAddressProvider.js
  • packages/js-dapi-client/lib/dapiAddressProvider/createDAPIAddressProviderFromOptions.js
  • packages/js-dapi-client/lib/dapiAddressProvider/errors/DAPIAddressHostMissingError.js
  • packages/js-dapi-client/lib/errors/DAPIClientError.js
  • packages/js-dapi-client/lib/index.js
  • packages/js-dapi-client/lib/logger/index.js
  • packages/js-dapi-client/lib/methods/core/CoreMethodsFacade.js
  • packages/js-dapi-client/lib/methods/core/broadcastTransactionFactory.js
  • packages/js-dapi-client/lib/methods/core/getBestBlockHashFactory.js
  • packages/js-dapi-client/lib/methods/core/getBestBlockHeightFactory.js
  • packages/js-dapi-client/lib/methods/core/getBlockByHashFactory.js
  • packages/js-dapi-client/lib/methods/core/getBlockByHeightFactory.js
  • packages/js-dapi-client/lib/methods/core/getBlockHashFactory.js
  • packages/js-dapi-client/lib/methods/core/getBlockchainStatusFactory.js
  • packages/js-dapi-client/lib/methods/core/getMasternodeStatusFactory.js
  • packages/js-dapi-client/lib/methods/core/getTransaction/GetTransactionResponse.js
  • packages/js-dapi-client/lib/methods/core/getTransaction/getTransactionFactory.js
  • packages/js-dapi-client/lib/methods/core/subscribeToBlockHeadersWithChainLocksFactory.js
  • packages/js-dapi-client/lib/methods/core/subscribeToMasternodeListFactory.js
  • packages/js-dapi-client/lib/methods/core/subscribeToTransactionsWithProofsFactory.js
  • packages/js-dapi-client/lib/methods/platform/PlatformMethodsFacade.js
  • packages/js-dapi-client/lib/methods/platform/broadcastStateTransition/BroadcastStateTransitionResponse.js
  • packages/js-dapi-client/lib/methods/platform/broadcastStateTransition/broadcastStateTransitionFactory.js
  • packages/js-dapi-client/lib/methods/platform/getConsensusParams/ConsensusParamsBlock.js
  • packages/js-dapi-client/lib/methods/platform/getConsensusParams/ConsensusParamsEvidence.js
  • packages/js-dapi-client/lib/methods/platform/getConsensusParams/getConsensusParamsFactory.js
  • packages/js-dapi-client/lib/methods/platform/getConsensusParams/getConsensusParamsResponse.js
  • packages/js-dapi-client/lib/methods/platform/getDataContract/GetDataContractResponse.js
  • packages/js-dapi-client/lib/methods/platform/getDataContract/getDataContractFactory.js
  • packages/js-dapi-client/lib/methods/platform/getDataContractHistory/DataContractHistoryEntry.js
  • packages/js-dapi-client/lib/methods/platform/getDataContractHistory/GetDataContractHistoryResponse.js
  • packages/js-dapi-client/lib/methods/platform/getDataContractHistory/getDataContractHistoryFactory.js
  • packages/js-dapi-client/lib/methods/platform/getDocuments/GetDocumentsResponse.js
  • packages/js-dapi-client/lib/methods/platform/getDocuments/getDocumentsFactory.js
  • packages/js-dapi-client/lib/methods/platform/getEpochsInfo/EpochInfo.js
  • packages/js-dapi-client/lib/methods/platform/getEpochsInfo/GetEpochsInfoResponse.js
  • packages/js-dapi-client/lib/methods/platform/getEpochsInfo/getEpochsInfoFactory.js
  • packages/js-dapi-client/lib/methods/platform/getIdentitiesContractKeys/GetIdentitiesContractKeysResponse.js
  • packages/js-dapi-client/lib/methods/platform/getIdentitiesContractKeys/getIdentitiesContractKeysFactory.js
  • packages/js-dapi-client/lib/methods/platform/getIdentity/GetIdentityResponse.js
  • packages/js-dapi-client/lib/methods/platform/getIdentity/getIdentityFactory.js
  • packages/js-dapi-client/lib/methods/platform/getIdentityBalance/GetIdentityBalanceResponse.js
  • packages/js-dapi-client/lib/methods/platform/getIdentityBalance/getIdentityBalanceFactory.js
  • packages/js-dapi-client/lib/methods/platform/getIdentityByPublicKeyHash/GetIdentityByPublicKeyHashResponse.js
  • packages/js-dapi-client/lib/methods/platform/getIdentityByPublicKeyHash/getIdentityByPublicKeyHashFactory.js
  • packages/js-dapi-client/lib/methods/platform/getIdentityContractNonce/GetIdentityContractNonceResponse.js
  • packages/js-dapi-client/lib/methods/platform/getIdentityContractNonce/getIdentityContractNonceFactory.js
  • packages/js-dapi-client/lib/methods/platform/getIdentityKeys/GetIdentityKeysResponse.js
  • packages/js-dapi-client/lib/methods/platform/getIdentityKeys/getIdentityKeysFactory.js
  • packages/js-dapi-client/lib/methods/platform/getIdentityNonce/GetIdentityNonceResponse.js
  • packages/js-dapi-client/lib/methods/platform/getIdentityNonce/getIdentityNonceFactory.js
  • packages/js-dapi-client/lib/methods/platform/getProtocolVersionUpgradeState/GetProtocolVersionUpgradeStateResponse.js
  • packages/js-dapi-client/lib/methods/platform/getProtocolVersionUpgradeState/VersionEntry.js
  • packages/js-dapi-client/lib/methods/platform/getProtocolVersionUpgradeState/getProtocolVersionUpgradeStateFactory.js
  • packages/js-dapi-client/lib/methods/platform/getProtocolVersionUpgradeVoteStatus/GetProtocolVersionUpgradeVoteStatusResponse.js
  • packages/js-dapi-client/lib/methods/platform/getProtocolVersionUpgradeVoteStatus/VersionSignal.js
  • packages/js-dapi-client/lib/methods/platform/getProtocolVersionUpgradeVoteStatus/getProtocolVersionUpgradeVoteStatusFactory.js
  • packages/js-dapi-client/lib/methods/platform/getStatus/ChainStatus.js
  • packages/js-dapi-client/lib/methods/platform/getStatus/GetStatusResponse.js
  • packages/js-dapi-client/lib/methods/platform/getStatus/NetworkStatus.js
  • packages/js-dapi-client/lib/methods/platform/getStatus/NodeStatus.js
  • packages/js-dapi-client/lib/methods/platform/getStatus/StateSyncStatus.js
  • packages/js-dapi-client/lib/methods/platform/getStatus/TimeStatus.js
  • packages/js-dapi-client/lib/methods/platform/getStatus/VersionStatus.js
  • packages/js-dapi-client/lib/methods/platform/getStatus/getStatusFactory.js
  • packages/js-dapi-client/lib/methods/platform/getTotalCreditsInPlatform/GetTotalCreditsInPlatformResponse.js
  • packages/js-dapi-client/lib/methods/platform/getTotalCreditsInPlatform/getTotalCreditsInPlatformFactory.js
  • packages/js-dapi-client/lib/methods/platform/response/AbstractResponse.js
  • packages/js-dapi-client/lib/methods/platform/response/Metadata.js
  • packages/js-dapi-client/lib/methods/platform/response/Proof.js
  • packages/js-dapi-client/lib/methods/platform/response/StoreTreeProofs.js
  • packages/js-dapi-client/lib/methods/platform/response/errors/InvalidResponseError.js
  • packages/js-dapi-client/lib/methods/platform/waitForStateTransitionResult/ErrorResult.js
  • packages/js-dapi-client/lib/methods/platform/waitForStateTransitionResult/WaitForStateTransitionResultResponse.js
  • packages/js-dapi-client/lib/methods/platform/waitForStateTransitionResult/waitForStateTransitionResultFactory.js
  • packages/js-dapi-client/lib/networkConfigs.js
  • packages/js-dapi-client/lib/test/bootstrap.js
  • packages/js-dapi-client/lib/test/fixtures/getHeadersFixture.js
  • packages/js-dapi-client/lib/test/fixtures/getMNListDiffsFixture.js
  • packages/js-dapi-client/lib/test/fixtures/getMetadataFixture.js
  • packages/js-dapi-client/lib/test/fixtures/getProofFixture.js
  • packages/js-dapi-client/lib/test/fixtures/getStatusFixture.js
  • packages/js-dapi-client/lib/test/karma/bootstrap.js
  • packages/js-dapi-client/lib/test/karma/loader.js
  • packages/js-dapi-client/lib/test/mocks/BlockHeadersWithChainLocksStreamMock.js
  • packages/js-dapi-client/lib/test/mocks/mockHeadersChain.js
  • packages/js-dapi-client/lib/transport/GrpcTransport/GrpcTransport.js
  • packages/js-dapi-client/lib/transport/GrpcTransport/createGrpcTransportError.js
  • packages/js-dapi-client/lib/transport/GrpcTransport/errors/InternalServerError.js
  • packages/js-dapi-client/lib/transport/GrpcTransport/errors/NotFoundError.js
  • packages/js-dapi-client/lib/transport/GrpcTransport/errors/TimeoutError.js
  • packages/js-dapi-client/lib/transport/JsonRpcTransport/JsonRpcTransport.js
  • packages/js-dapi-client/lib/transport/JsonRpcTransport/createJsonTransportError.js
  • packages/js-dapi-client/lib/transport/JsonRpcTransport/errors/JsonRpcError.js
  • packages/js-dapi-client/lib/transport/JsonRpcTransport/errors/WrongHttpCodeError.js
  • packages/js-dapi-client/lib/transport/JsonRpcTransport/requestJsonRpc.js
  • packages/js-dapi-client/lib/transport/ReconnectableStream.js
  • packages/js-dapi-client/lib/transport/errors/NoAvailableAddressesError.js
  • packages/js-dapi-client/lib/transport/errors/response/InvalidRequestDPPError.js
  • packages/js-dapi-client/lib/transport/errors/response/InvalidRequestError.js
  • packages/js-dapi-client/lib/transport/errors/response/MaxRetriesReachedError.js
  • packages/js-dapi-client/lib/transport/errors/response/NoAvailableAddressesForRetryError.js
  • packages/js-dapi-client/lib/transport/errors/response/ResponseError.js
  • packages/js-dapi-client/lib/transport/errors/response/RetriableResponseError.js
  • packages/js-dapi-client/lib/transport/errors/response/ServerError.js
  • packages/js-dapi-client/lib/utils/bytes.js
  • packages/js-dapi-client/lib/utils/wait.js
  • packages/js-dapi-client/package.json
  • packages/js-dapi-client/polyfills/fetch-polyfill.js
  • packages/js-dapi-client/test/integration/BlockHeadersProvider/BlockHeadersProvider.spec.js
  • packages/js-dapi-client/test/integration/DAPIClient.spec.js
  • packages/js-dapi-client/test/integration/SMLProvider/SimplifiedMasternodeListProvider.spec.js
  • packages/js-dapi-client/test/integration/methods/core/CoreMethodsFacade.spec.js
  • packages/js-dapi-client/test/integration/methods/platform/PlatformMethodsFacade.spec.js
  • packages/js-dapi-client/test/unit/BlockHeadersProvider/BlockHeadersProvider.spec.js
  • packages/js-dapi-client/test/unit/BlockHeadersProvider/BlockHeadersReader.spec.js
  • packages/js-dapi-client/test/unit/BlockHeadersProvider/createBlockHeadersProviderFromOptions.spec.js
  • packages/js-dapi-client/test/unit/DAPIClient.spec.js
  • packages/js-dapi-client/test/unit/dapiAddressProvider/DAPIAddress.spec.js
  • packages/js-dapi-client/test/unit/dapiAddressProvider/ListDAPIAddressProvider.spec.js
  • packages/js-dapi-client/test/unit/dapiAddressProvider/SimplifiedMasternodeListDAPIAddressProvider.spec.js
  • packages/js-dapi-client/test/unit/dapiAddressProvider/createDAPIAddressProviderFromOptions.spec.js
  • packages/js-dapi-client/test/unit/methods/core/broadcastTransactionFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/core/getBestBlockHashFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/core/getBlockByHashFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/core/getBlockByHeightFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/core/getBlockHashFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/core/getBlockchainStatusFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/core/getMasternodeStatusFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/core/getTransaction/GetTransactionResponse.spec.js
  • packages/js-dapi-client/test/unit/methods/core/getTransaction/getTransactionFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/core/subscribeToBlockHeadersWithChainLocksFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/core/subscribeToTransactionsWithProofsFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/broadcaseStateTransition/broadcastStateTransitionFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getConsensusParams/ConsensusParamsBlock.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getConsensusParams/ConsensusParamsEvidence.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getConsensusParams/getConsensusParamsFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getConsensusParams/getConsensusParamsResponse.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getDataContract/GetDataContractResponse.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getDataContract/getDataContractFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getDataContractHistory/GetDataContractHistoryResponse.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getDataContractHistory/getDataContractHistoryFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getDocuments/GetDocumentsResponse.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getDocuments/getDocumentsFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getEpochsInfo/GetEpochsInfoResponse.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getEpochsInfo/getEpochsInfoFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentitiesContractKeys/GetIdentitiesContractKeysResponse.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentitiesContractKeys/getIdentitiesContractKeysFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentity/GetIdentityResponse.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentity/getIdentityFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentityBalance/GetIdentityBalanceResponse.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentityBalance/getIdentityBalanceFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentityByPublicKeyHash/GetIdentityByPublicKeyHashResponse.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentityByPublicKeyHash/getIdentityByPublicKeyHashFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentityContractNonce/GetIdentityContractNonce.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentityContractNonce/getIdentityContractNonceFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentityKeys/GetIdentityKeys.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentityKeys/getIdentityKeysFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentityNonce/GetIdentityNonce.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getIdentityNonce/getIdentityNonceFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getProtocolVersionUpgradeState/GetProtocolVersionUpgradeStateResponse.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getProtocolVersionUpgradeState/getProtocolVersionUpgradeStateFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getProtocolVersionUpgradeVoteStatus/GetProtocolVersionUpgradeVoteStatusResponse.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getProtocolVersionUpgradeVoteStatus/getProtocolVersionUpgradeVoteStatusFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getStatus/GetStatusResponse.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/getStatus/getStatusFactory.spec.js
  • packages/js-dapi-client/test/unit/methods/platform/waitForStateTransitionResult/waitForStateTransitionResultFactory.spec.js
  • packages/js-dapi-client/test/unit/transport/GrpcTransport/GrpcTransport.spec.js
  • packages/js-dapi-client/test/unit/transport/GrpcTransport/createGrpcTransportError.spec.js
  • packages/js-dapi-client/test/unit/transport/JsonRpcTransport/JsonRpcTransport.spec.js
  • packages/js-dapi-client/test/unit/transport/JsonRpcTransport/createJsonTransportError.spec.js
  • packages/js-dapi-client/test/unit/transport/JsonRpcTransport/requestJsonRpc.spec.js
  • packages/js-dapi-client/test/unit/transport/ReconnectableStream.spec.js
  • packages/js-dapi-client/webpack.config.js

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@PastaPastaPasta
Copy link
Copy Markdown
Member Author

Closing — reopening as upstream→upstream so CI runs against secrets/runners. New PR link will be added shortly.

@PastaPastaPasta
Copy link
Copy Markdown
Member Author

Reopened as #3681 (upstream→upstream so CI runs against repo secrets/runners).

Copy link
Copy Markdown
Collaborator

@thepastaclaw thepastaclaw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

I verified the flagged loader/interoperability changes against the checked-out befadd8e30098c41d5f25d3bc61a48fac6cffdec source and the surrounding package/runtime setup. Neither reported issue survives inspection: Mocha 11 already loads require: entries through its ESM-aware requireOrImport() path, and the @dashevo/wasm-dpp package is emitted as a CommonJS namespace object with both named exports and default, which matches the production destructuring in createGrpcTransportError.js.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants