- @pezkuwi/dev, dev-test, dev-ts ^0.86.3; disable directives renamed
for the new rule names, or removed where the rule no longer reports
- rethrown errors carry the original as `cause` (13 sites)
- optional chains where a guard expression tested the same value
- Init: the registry cache settles with the creator's own promise,
dropping the entry in finally(), instead of re-wrapping it
- Combinator: a typed call instead of `Function`
- checkTypes.manual: synchronous checks run outside Promise.all
- sortValues, createTypeUnsafe: initial values that were never read
- typegen util: load docs.js for its side effect (it registers the
`docs` Handlebars partial) now that its types are re-exported
type-only
- MockProvider keeps its Header assertion: the package's own build
does not load api-augment, so createType returns a plain Codec there
- Decorate keeps `delete queue[i]`: the hole marks a fired queue and
later indexes must not shift
Carries the tx generator fix (struct and enum arguments keep their object
input) on top of 16.5.38. All packages and their exact internal pins move
to 16.5.39.
The tx generator rebranded each argument's lookup name (SpWeightsWeightV2Weight
to PezspWeightsWeightV2Weight) before asking getSimilarTypes for its inputs.
The registry knows the type only by its metadata name, so for every lookup
type the class checks found nothing and the generated signature was the bare
type: multisig.asMulti took `maxWeight: PezspWeightsWeightV2Weight` with no
`{ refTime?: any; proofSize?: any }`, and a timepoint without
`{ height?: any; index?: any }`. Passing a plain object, as every caller
does, was a type error.
getSimilarTypes and formatType now get the metadata name, as the query
generator already does for storage keys, and return rebranded names
themselves; the rebranded name is what goes into the imports and the
used-type list. The augment is regenerated (yarn build:metadata, 1070
passed). Only tx.ts files change; enum variant names are untouched.
Carries the typegen fix for types that contain an account (a0b19f4) and the
api-augment regenerated with it; nothing else changed since 16.5.37
(2a35891). All packages and their exact internal pins move to 16.5.38.
getSimilarTypes widened lookup types by name before its class checks, with
type.includes('AccountId32') and type.includes('MultiAddress'). Those also
match every type that only contains one: Vec<AccountId32>,
Option<AccountId32>, ITuple<[AccountId32, u32]>, Vec<MultiAddress>. They
were widened like a bare account and returned before reaching the Vec,
Option or Tuple branch, so the generated augment typed
multisig.asMulti(otherSignatories) as `Vec<AccountId32> | string |
Uint8Array` (no string[]), an Option<AccountId32> argument without null,
and a tuple key without its tuple form.
The names are now matched whole. The augment is regenerated
(yarn build:metadata); for these types it now matches what upstream
generates, e.g. `Vec<AccountId32> | (AccountId32 | string | Uint8Array)[]`.
- metadataMd located @pezkuwi/api-derive with import.meta.resolve at
module load. import.meta is a syntax error in the CJS output, so
require('@pezkuwi/typegen/metadataMd') failed. The directory now comes
from api-derive's packageInfo, which the build fills for each format
(package root for ESM, cjs/ for CommonJS), and is looked up only when
the derive docs are written.
- writeFile creates the output directory; the CLI used to die with an
unhandled ENOENT unless docs/<chain> and docs/derives already existed.
- the endpoint examples in the CLI help pointed at
wss://dicle-rpc.pezkuwi.io, which does not exist; they show
wss://rpc.pezkuwichain.io.
From the installed packages, the ESM bin and require(...).main() now
write the same eight files, identical to what the ESM bin wrote before.
The bound was 100 ms and the test failed once inside the full suite.
The regex it guards against needs about 9 s on that input and the
linear check about 1 ms, so 1 s still fails on the regex and does not
fail on a busy runner.
- @pezkuwi/typegen requires handlebars ^4.7.9; 4.7.8 and earlier are
affected by the open handlebars advisories
- yarn.lock: tar, ip-address, brace-expansion, fast-uri, js-yaml,
node-forge, postcss, lodash, ws and the other flagged transitive
packages resolve to patched releases within their declared ranges
The flagged packages still on an affected version are reached only
through the @pezkuwi/dev tool chain (webpack-dev-server 4, eslint 8,
gh-release), which pins their major versions; they are development
tools and are not part of any published package.
- typegen formatType: the inline-struct shortcut test /^{.+:.+}/ has two
unbounded wildcards and backtracks quadratically on input such as
'{{a:a:a:...' (370 ms at 20k repetitions). isInlineStruct checks the
same thing with indexOf: an opening brace, a colon at index 2 or later
and a closing brace at least two characters after it, all on the
first line. 500k random inputs give the same answer as the regex; a
test keeps it under 100 ms at 100k repetitions and goes red on the
regex.
- PortableRegistry: the type definition cache was a plain object
written as typeDefs[lookupIndex][key]. lookupIndex is always a number,
but nothing in the shape said so; it is now a Map, and the definition
is filled through its own reference.
Most are object keys out of order after the rename (dicle, pezkuwi,
bizinikiwi, teyrchains and zagros sort differently from the names they
replaced); they are sorted, behaviour is unchanged. The rest:
- createClass: header.hash is already the BlockHash type; the
`as any` cast is removed
- ScProvider: WellKnownChain is a string union in @bizinikiwi/connect,
so `string | WellKnownChain` was `string`; the spec parameter says so
- ScProvider: the jsonRpcResponses loop is a named async function whose
rejection (chain removed, client terminated) is caught explicitly
instead of a floating promise
- the fake chain in the spec no longer needs a non-null assertion
- Extrinsic.hash: redundant non-null assertion removed
- metadata-get.mjs writes the 2026 header
The packages/*/package.json files were the manifests the build writes
into build/, committed back over the source ones: exports maps of
thousands of entries pointing at ./cjs/* files, main at ./cjs/index.js,
module and types set. pezkuwi-dev-build-ts generates those fields
itself; in the source they pointed at files that only existed because
build output had been committed too. main, module, types, exports,
browser, react-native and sideEffects are back in the source form of
the upstream manifests; every other field is unchanged.
- @pezkuwi/* common dependencies 14.0.25 -> 14.0.26 (wasm-crypto 7.5.20
underneath, with working ed25519 and secp256k1)
- the root resolutions forcing common 14.0.25 and wasm 7.5.4 onto the
whole tree are removed; only the typescript pin remains
- @pezkuwi/dev, dev-test and dev-ts ^0.85.12
- the deno script is removed
- version 16.5.37
Packages had their compiled output checked in next to src/: .js,
.d.ts and cjs/ trees at the package root, 251 symlinks into build/,
root copies of typegen generate/ and templates/ and of types-support
json/, and a LICENSE per package. The build writes all of these into
build/ itself; in the source tree they shadowed src/ for anything
resolving the package root and drifted from it.
Root resolutions were pinned to 14.0.11, preventing yarn from
resolving to the latest published versions. Updated resolutions
and all package.json dependencies to 14.0.25 which includes
native bizinikiwi signing context via @pezkuwi/scure-sr25519.
- Published from build/ directories for correct npm structure
- Updated common dependencies to 14.0.25
- Added AuthorizeCall signed extension support
- All packages now have index.js at root level
- Update genesis hash to mainnet value
- Remove npmAuthToken from .yarnrc.yml (use GitHub Secrets instead)
- Add pezsp_* and pezframe_* path support in PortableRegistry