Wires this repo to the four forked @polkadot packages and @quantus/crypto, and the extension now builds with post-quantum crypto in it. Two mechanisms, for the reason established in quantus/ui: @quantus is routed as a whole scope in .yarnrc.yml, which is safe because we own every name in it, while the forked @polkadot packages are pinned individually to tarball URLs in resolutions. Routing the @polkadot scope would send yarn hunting for the dozens of packages in it that are not forked — api, types, rpc-provider, dev, x-*, hw-ledger and more — all of which must keep coming from npm. The forks carry -quantus.N versions, so a resolution left out fails with "No candidates found" rather than being quietly satisfied from npm by the unforked package. buildHierarchy.spec.ts is rewritten rather than deleted. compareByNetwork resolves a genesis hash through getNetworkMap(), which is built from selectableNetworks — and this fork only offers chains whose accounts are post-quantum, so Polkadot and Kusama are no longer in it. Both fixtures resolved to '' and compared equal, meaning the network-ordering tests passed without ordering anything. They now use Quantus and Heisenberg, whose display names sort in the same direction the originals did, so the fixtures keep their shape. Verified in the built artifacts rather than assumed: background.js carries QUANTUS_EXTRINSIC, the dilithium keypair types, ext_poseidon_hash, ext_mldsa_sign and the base64 wasm payload; extension.js carries the Quantus network entry, QTC and the mainnet genesis hash. The split is right — signing lives in the service worker, the UI only needs to render addresses. 65 tests pass; `yarn build:chrome` completes. Refs quantus/extension#2 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012uDUodEcRbBwNRi3UCmw8f
@polkadot/extension-inject
This is a basic extension injector that manages access to the global objects available. As an extension developer, you don't need to manage access to the window object manually, by just calling enable here, the global object is setup and managed properly. From here any dapp can access it with the @polkadot/extension-dapp package;
Usage
import { injectExtension } from '@polkadot/extension-inject';
// this a the function that will be exposed to be callable by the dapp. It resolves a promise
// with the injected interface, (see `Injected`) when the dapp at `originName` (url) is allowed
// to access functionality
function enableFn (originName: string): Promise<Injected> {
...
}
// injects the extension into the page
injectExtension(enableFn, { name: 'myExtension', version: '1.0.1' });