Satoshi Qazi MuhammedandClaude Opus 5.5 edd1ea0870 util: group thousands in linear time
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>
2026-10-07 19:21:45 +04:00
2026-10-07 19:21:45 +04:00
2026-10-07 19:21:45 +04:00
2026-10-07 19:21:45 +04:00

@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.

License

Apache-2.0

Author

Dijital Kurdistan Tech Institute

S
Description
No description provided
Readme Apache-2.0
3.4 MiB
1 Watchers 0 Forks
Languages
TypeScript 99.4%
Python 0.2%
Shell 0.2%
JavaScript 0.1%
HTML 0.1%