open-index/open-npm huggingface dataset:
npm package: @lancejpollard/quadratic-residue-prng.js
Description: ```js const permute = require('@lancejpollard/quadratic-residue-prng.js')
Latest version: 1.0.0


# [Permutation PRNG](https://preshing.com/20121224/how-to-generate-a-sequence-of-unique-random-integers/)

```js
const permute = require('@lancejpollard/quadratic-residue-prng.js')

const E = 3132343537383103113163n
const A = 975319753197531975319n
const O = 541613713n
const U = 32 ** 15

let i = 0
while (i < U) {
  const x = permute(i, E, A, O, U)
  console.log(x)
  i++
}
```

- E, A, and O must be primes smaller than U, with E the largest, A the second largest, and O relatively small.
- U can be any bigint.
- All numbers must be bigint.
- `i` is an incrementing bigint
npm package: @lancejpollard/resilient-puppeteer.js
Description: By default, on normal real-world web-pages, the Puppeteer library for Node.js will crash for a variety of difficult to describe situations. This just makes it so you can know that your web page rendering script will _eventually_ be successful, recovering 
Latest version: 0.2.4


# Resilient Puppeteer

By default, on normal real-world web-pages, the Puppeteer library for Node.js will crash for a variety of difficult to describe situations. This just makes it so you can know that your web page rendering script will _eventually_ be successful, recovering from errors and making sure it continues to chug along processing more pages.

Also, we make it easy to add proxy support, as it's sometimes important to add a proxy.

```
npm install @lancejpollard/resilient-puppeteer.js
```

```js
const resilient = require('@lancejpollard/resilient-puppeteer.js')

start()

async function start() {
  await resilient.launch()

  const urls = [...]

  for (let i = 0, n = urls.length; i < n; i++) {
    const url = urls[i]
    // it's not going to crash.
    await resilient.visit(url)
    // it can crash here if your DOM code is incorrect though,
    // but that is what you want.
    const hrefs = await resilient.evaluate(getLinks)
    // insert them to db or something otherwise.
    console.log(hrefs)
    // sometimes it helps to just wait :)
    await resilient.wait(1000)
  }

  await resilient.close()

  function getLinks() {
    const links = {}
    Array.prototype.slice.call(document.querySelectorAll('a')).forEach(a => {
      links[a.href] = true
    })
    return Object.keys(links)
  }
}
```

Can go into headed mode if you want as well.

```js
await resilient.launch({ headless: false })
```

You can use a proxy as well:

```js
const proxy = `https://zproxy.lum-superproxy.io:22225`
const username = `lum-customer-m1_3918c719-zone-zone1`
const password = `cjia091jioa`

await resilient.launch({
  proxy,
  username,
  password
})
```
npm package: @lancejpollard/resolve-action-tree.js
Description: Chunks steps into batches by group to run in parallel.
Latest version: 0.0.1


# Resolve Action Trees in JavaScript

Chunks steps into batches by group to run in parallel.

```
npm install @lancejpollard/resolve-action-tree.js
```

```js
const resolveSteps = require('@lancejpollard/resolve-action-tree.js')
const tree = generateActionTree()
const steps = resolveSteps(tree)
console.log(JSON.stringify(steps, null, 2))

function generateActionTree() {
  // this would be constructed through a bunch of real-world
  // functions, queuing up all the actions
  // and pointing outputs to inputs.
  return [
    { action: 'create', group: 'tb1', output: 'key1' },
    { action: 'create', group: 'tb2', output: 'key2' },
    { action: 'create', group: 'tb2', output: 'key3' },
    { action: 'create', group: 'tb3', output: 'key5' },
    { action: 'create', group: 'tb4', output: 'key6' },
    { action: 'create', group: 'tb3', output: 'key7' },
    { action: 'create', group: 'tb4', output: 'key8' },
    { action: 'create', group: 'tb3', output: 'key9' },
    { action: 'create', group: 'tb3', output: 'key10', input: {
      y: { type: 'binding', path: ['key6', 'foo'] },
      z: { type: 'binding', path: ['key1', 'bar'] }
    } },
    { action: 'create', group: 'tb1', output: 'key4', input: {
      x: { type: 'binding', path: ['key2', 'baz'] }
    } },
    { action: 'create', group: 'tb4', output: 'key11', input: {
      a: { type: 'binding', path: ['key10', 'z'] },
      b: { type: 'binding', path: ['key1', 'bar'] }
    } },
    { action: 'create', group: 'tb1', output: 'key12', input: {
      p: { type: 'binding', path: ['key10', 'z'] },
      q: { type: 'binding', path: ['key11', 'a'] }
    } },
    { action: 'create', group: 'tb4', output: 'key13' },
    { action: 'create', group: 'tb3', output: 'key14' },
    { action: 'create', group: 'tb4', output: 'key15', input: {
      a: { type: 'binding', path: ['key8', 'z'] },
    } },
    { action: 'create', group: 'tb5', output: 'key16' },
    { action: 'create', group: 'tb6', output: 'key17' },
    { action: 'create', group: 'tb6', output: 'key18', input: {
      m: { type: 'binding', path: ['key4', 'x'] },
    } },
    { action: 'create', group: 'tb6', output: 'key19', input: {
      m: { type: 'binding', path: ['key4', 'x'] },
      n: { type: 'binding', path: ['key13', 'a'] },
    } },
    { action: 'create', group: 'tb6', output: 'key20', input: {
      m: { type: 'binding', path: ['key18', 'm'] },
      n: { type: 'binding', path: ['key17', 'm'] },
    } },
    { action: 'create', group: 'tb1', output: 'key21' },
    { action: 'create', group: 'tb2', output: 'key22', input: {
      w: { type: 'binding', path: ['key18', 'm'] },
      x: { type: 'binding', path: ['key17', 'm'] },
    } },
    { action: 'create', group: 'tb2', output: 'key23' },
    { action: 'create', group: 'tb3', output: 'key24' },
  ]
}
```
npm package: @lancejpollard/text.js
Description: <br/> <br/> <br/> <br/>
Latest version: 0.1.1


<br/>
<br/>
<br/>
<br/>

<h3 align="center">text.js</h3>
<p align="center">
  Language Text Transformation
</p>

<br/>
<br/>

<p align="center">
  <a href="#introduction">Introduction</a> •
  <a href="#installation">Installation</a>
</p>

<br/>
<br/>
<br/>

### Introduction

Use this to transform text.

```js
const text = require('@lancejpollard/text.js')

text('בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ׃', {
  family: 'hebrew',
  source: {
    script: 'hebrew',
    system: 'biblical'
  },
  target: {
    script: 'latin',
    system: 'ula'
  }
})
// ber̈e'xiyt bar̈a' 'elohiym 'et haxamayim ve'et ha'ár̈ets.
```

Or use it from the command line

```
$ text mandarin latin pinyin latin ula \
  "Nǐ jiào shén me míng zì"
nǐ tx̤yàu x̣ọ́n mo̤ míq tsì
$ text hebrew hebrew biblical latin ula \
  "בְּרֵאשִׁ֖ית בָּרָ֣א אֱלֹהִ֑ים אֵ֥ת הַשָּׁמַ֖יִם וְאֵ֥ת הָאָֽרֶץ׃"
ber̈e'xiyt bar̈a' 'elohiym 'et haxamayim ve'et ha'ár̈ets.
$ text norse latin old runic medieval-futhark \
  "Hljóðs bið ek allar helgar kindir"
ᚼᛚᛦᚮᚧᛋ ᛒᛁᚧ ᛂᚴ ᛆᛚᛚᛆᚱ ᚼᛂᛚᚵᛆᚱ ᚴᛁᚿᛑᛁᚱ
$ text norse latin old latin ula \
  "Hljóðs bið ek allar helgar kindir"
hlyȏc̣s bic̣ ek allaŕŕ helgaŕŕ kindiŕŕ
$ text tibetan tibetan classical latin ula \
  "སེམས་ལ་སེམས་མ་མཆིས་ཏེ"
semas la semas ma matxhis te
```

### Installation

```
$ npm install @lancejpollard/text.js
```

Or for CLI:

```
$ npm install @lancejpollard/text.js -g
```

### License

MIT