mirror of
https://github.com/pezkuwichain/pezkuwi-ui.git
synced 2026-06-15 03:41:03 +00:00
31 lines
675 B
TypeScript
31 lines
675 B
TypeScript
// Copyright 2017-2023 @polkadot/ui-shared authors & contributors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
import type { Seeder } from './types';
|
|
|
|
import { isU8a, stringToU8a } from '@polkadot/util';
|
|
|
|
const DIVISOR = 256 * 256;
|
|
|
|
export function seeder (_seed: string | Uint8Array = new Uint8Array(32)): Seeder {
|
|
const seed: Uint8Array = isU8a(_seed)
|
|
? _seed
|
|
: stringToU8a(_seed);
|
|
|
|
let index = (seed[Math.floor(seed.length / 2)] % seed.length) - 1;
|
|
|
|
const next = (): number => {
|
|
index += 1;
|
|
|
|
if (index === seed.length) {
|
|
index = 0;
|
|
}
|
|
|
|
return seed[index];
|
|
};
|
|
|
|
return (): number => {
|
|
return ((next() * 256) + next()) / DIVISOR;
|
|
};
|
|
}
|