open-index/open-npm huggingface dataset:
npm package: @mujo/aracari
Description: This is a small utility to pull text from html and also replace text in html.
Author: Jacob Lowe
Latest version: 0.5.0

<img src="./assets/aracari.svg" height="300" style="float: right; margin-left: 10px margin-bottom: 10px" />

# Aracari

This is a small utility to pull text from html and also replace text in html. This is used to be able to do text replacement in a html document without messing with any html elements or breaking any references.

## Usage

Aracari takes a DOM node and gives you a series of tools to deal with the text in that DOM node. If you want the full text no html you can have that. If you want to safely replace the text in a node you can do that as well.

```shell
npm install aracari --save
# or
yarn add aracari
```

### Initializing

To setup aracari you just need to pass a root element to the constructor.

```typescript
import { Aracari } from "aracari";

const aracari = new Aracari(document.getElementById("content"));
```

### Getting text

After initializing aracari you just need to call `getText` to pull the text from
aracari.

```typescript
const aracari = new Aracari(document.getElementById("content"));
const text = aracari.getText(); // Text of #content no html.
// text: This is aracari!
```

### Replacing text

To replace text with aracari it needs to be in a single text node. This is so aracari does not have to evaluate html. We have a set of tools to test if a given word is in a single text node it will replace it. If its not a single text node it will simply not replace it.

```typescript
// Check for node.
const canReplace = aracari.isInSingleNode("aracari");

if (canReplace) {
  // Replace on the fly text on a page with other TextNodes or
  // DOM nodes.
  // Build up some DOM nodes.
  const boldNode = document.createElement("strong");
  bold.textContent = "araçari";
  const textNode = document.createTextNode("a hermosa ");
  // Do the replacment and reload aracari cache.
  const newText = aracari
    .replaceText("aracari", [textNode, boldNode])
    .remap() // changes internal mapping (not need if used as side effect)
    .text();
  // newText: This is a hermosa aracari!
  // html will be updated with new nodes
}
```
npm package: @mujo/plugins
Description: A set of utilities to create plugins in Mujo
Author: Jacob Lowe
Latest version: 2.2.0

# Mujō Plugin

This is a set of utilities to create a Mujō plugins. This is a collection of hooks and components that allow you to hook into functionality of Mujō extension without having to modify its source code.

* [Example plugin](../extension/plugins/mujo-plugin-breaktimer)
* [Render targets doc](./docs/README.md)
* [Components doc](./docs/components.md)
* [Hooks doc](./docs/hooks.md)

## Install

```
npm i @mujo/plugins
```

## Usage

```javascript
import { Background, Content, NewTabPage } from '@mujo/plugins'

const MyPlugin = () => (
  <>
    <Background>
      <MyBackgroundScripts />
    </Background>
    <NewTabPage>
      <MyNewTabPage />
    </NewTabPage>
    <Content>
      <MyContentScripts />
    </Content>
  </>
)

export default MyPlugin
```
npm package: @mujo/raf
Description: requestAnimationFrame polyfill for node and the browser
Author: Chris Dickinson
Latest version: 3.4.1-1

# raf

[![Browser Support](http://ci.testling.com/chrisdickinson/raf.png)](http://ci.testling.com/chrisdickinson/raf)

requestAnimationFrame polyfill for node and the browser.

```js
var raf = require('raf')

raf(function tick() {
  // Animation logic
  raf(tick)
})
```

**Note:** The stream/event emitter logic found in versions prior to 1.0.0 can be found in [raf-stream](https://www.npmjs.org/package/raf-stream).

## Getting started

### CommonJS (Node, Browserify, Webpack, etc.)

Install `raf` from npm:

```bash
npm install --save raf
```

Require it like you would any other module:

```js
const raf = require('raf')
```

### AMD (require.js, etc)

Download the UMD-bundle from [wzrd.in](https://wzrd.in/standalone/raf@latest) (remember to include the current version number in the filename).

Add it to your AMD module loader config and require it like you would any other module:

```html
define(['raf'], raf => {...})
```

### `<script>`

Download the UMD-bundle from [wzrd.in](https://wzrd.in/standalone/raf@latest) (remember to include the current version number in the filename).

Then include it via a script tag:

```html
<script src="raf-x.x.x.js"></script>
```

The API will be available on `window.raf`.

## API

[Documentation at Mozilla Developer Network](https://developer.mozilla.org/en-US/docs/Web/API/window.requestAnimationFrame), [W3 Specification](http://www.w3.org/TR/animation-timing/#requestAnimationFrame)

### var handle = raf(callback)

`callback` is the function to invoke in the next frame. `handle` is a long integer value that uniquely identifies the entry in the callback list. This is a non-zero value, but you may not make any other assumptions about its value.

### raf.cancel(handle)

`handle` is the entry identifier returned by `raf()`. Removes the queued animation frame callback (other queued callbacks will still be invoked unless cancelled).

### raf.polyfill([object])

Shorthand to polyfill `window.requestAnimationFrame` and `window.cancelAnimationFrame` if necessary (Polyfills `global` in node).

Alternatively you can require `raf/polyfill` which will act the same as `require('raf').polyfill()`.

If you provide `object` the polyfills are attached to that given object, instead of the inferred global.
Useful if you have an instance of a fake `window` object, and want to add `raf` and `caf` to it.

## Acknowledgments

Based on work by Erik Möller, Paul Irish, and Tino Zijdel (https://gist.github.com/paulirish/1579671)

## License

MIT