mirror of
https://github.com/pezkuwichain/pezkuwi-common.git
synced 2026-10-20 18:56:18 +00:00
edd1ea0870db011962a1ed13aadf4fa3cf8d9e23
formatDecimal split digits with /(\d+?)(?=(\d{3})+(?!\d)|$)/g, whose
lookahead rescans the rest of a digit run at every position: quadratic in
the run's length (CodeQL js/polynomial-redos, high; inherited unchanged
from upstream). 20k digits took 258 ms, 200k about 25 s.
A loop now finds the same groups: within each digit run a group ends where
the digits left are a positive multiple of three, or at the end of the
string. Identical output to the pattern on 210,000 random inputs plus the
edge cases (letters around digits, short runs, negatives); 200k digits take
7 ms. The new spec case for a 60k-digit number fails on the old code.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@pezkuwi/common
Common utilities, cryptographic functions, and keyring management for PezkuwiChain applications.
Developed by Dijital Kurdistan Tech Institute
Overview
This repository provides utility functions with additional safety checks, allowing for consistent coding and reducing boilerplate across all @pezkuwi packages.
Packages
| Package | Description |
|---|---|
| @pezkuwi/keyring | Keyring management for accounts |
| @pezkuwi/util | General utility functions |
| @pezkuwi/util-crypto | Cryptographic and hashing utilities |
| @pezkuwi/networks | Network definitions |
| @pezkuwi/x-bigint | BigInt polyfills |
| @pezkuwi/x-fetch | Fetch polyfills |
| @pezkuwi/x-global | Global object utilities |
| @pezkuwi/x-randomvalues | Random values polyfills |
| @pezkuwi/x-textdecoder | TextDecoder polyfills |
| @pezkuwi/x-textencoder | TextEncoder polyfills |
| @pezkuwi/x-ws | WebSocket polyfills |
Installation
# Keyring
npm install @pezkuwi/keyring
# Utilities
npm install @pezkuwi/util
# Crypto utilities
npm install @pezkuwi/util-crypto
Quick Start
import { Keyring } from '@pezkuwi/keyring';
import { hexToU8a, u8aToHex } from '@pezkuwi/util';
import { mnemonicGenerate, blake2AsHex } from '@pezkuwi/util-crypto';
// Generate a mnemonic
const mnemonic = mnemonicGenerate();
// Create a keyring and add account
const keyring = new Keyring({ type: 'sr25519' });
const pair = keyring.addFromMnemonic(mnemonic);
console.log(`Address: ${pair.address}`);
Development
Prerequisites
- Node.js >= 18.14
- Yarn 4.x (via corepack)
Building
git clone https://github.com/pezkuwichain/pezkuwi-common
cd pezkuwi-common
corepack enable
yarn install
yarn build
Tutorials
Looking for tutorials? Check out examples for guides on how to use these utilities.
Links
- Website: https://pezkuwichain.io
- Documentation: https://docs.pezkuwichain.io
- API Docs: https://js.pezkuwichain.app
- GitHub: https://github.com/pezkuwichain
License
Apache-2.0
Author
Dijital Kurdistan Tech Institute
Languages
TypeScript
99.4%
Python
0.2%
Shell
0.2%
JavaScript
0.1%
HTML
0.1%