open-index/open-npm huggingface dataset:
npm package: @idylwork/eslint-config
Description: Personal ESLint shareable config
Latest version: 1.0.3

# eslint-config-idyl
## Installation
### command line
```bash
npm install --save-dev @idylwork/eslint-config
```

### eslint.config.mjs
```js
import eslintIdylPlugin from '@idylwork/eslint-config'

export default [...eslintIdylPlugin]
```

## Usage
```bash
eslint --fix
```
npm package: @iebh/cacx
Description: Intentionally simple XML parser designed for minimal dependency and speed
Author: Matt Carter
Latest version: 1.1.0

@IEBH/CACX
==========
Intentionally simple XML parser designed for minimal dependencies and speed.


API
===


new CacxParser(options)
-----------------------
Initalize the parser with options.

```javascript
import Parser from '@iebh/cacx';
// OR
import {CacxParser} from '@iebh/cacx';

let parser = new Parser()
    .append('<a><b><c>Hello World</c></b></a>')
    .exec()
    .value() //= `{tag: 'a', children: ...}`
```


CacxParser.append(input)
------------------------
Append (or set) string content to be parsed.
Returns the CacxParser instance.


CacxParser.exec()
-----------------
Parse the existing buffer into XML. Can be called after each `append()` to drain the buffer.
This function should be called at least once prior to `value()`.
Returns the CacxParser instance.


flatten()
---------
Process the current stack into a logical do-the-right-thing data structure.
See the various `settings.flatten*` options to configure the behaviour here.
Returns the CacxParser instance.


CacxParser.value()
------------------
Returns the parsed XML stack.
This will throw if `settings.collect` is falsy.
Returns the nested object stack.


parse(input, options)
---------------------
Simple all-in-one string parser helper.

```javascript
import {parser} from '@iebh/cacx';

parse('<a><b><c>Hello World</c></b></a>') //= `{tag: 'a', children: ...}`
```

parseFile(path, options)
------------------------
Helper for streaming file inputs into the parser.

```javascript
import {parseFile} from '@iebh/cacx';

parseFile('./file.xml') //= `{tag: 'a', children: ...}`
```


parseCollectionFile(path, tags, options)
----------------------------------------
Helper to stream a file and run a callback when a named tag closes.

```javascript
import {parseCollectionFile} from '@iebh/cacx';

parseCollectionFile(
    './file.xml',
    {
        record(node) {
            // Node should represent the state of any `record` element within the XML
        },
    },
    { // Other options
        flatten: true, // Try to flatten the output into a logical JavaScript object
    },
);
```
npm package: @iebh/reflib-cli
Description: Command line interface for @IEBH/Reflib
Author: Matt Carter
Latest version: 2.0.0

Reflib-CLI
==========
Command line interface for [Reflib](https://github.com/hash-bang/Reflib-Node).


Features
--------
**Count the references in a library (and check they are valid)**

```
reflib LibraryIn.xml -c
```


**Convert between formats**

```
reflib LibraryIn.xml -o json >LibraryOut.json
```


**Deduplicate libraries**

```
reflib LibraryIn.xml -x --dedupe >LibraryOut.xml
```


**Query using JSON expressions**

```
reflib LibraryIn.xml -q '{year: "2008"}'
```


Usage
-----


  Usage: app [file...]

  Options:

    -h, --help                   output usage information
    -V, --version                output the version number
    -c, --count                  Dont output refs, just output the count (sets `-o count`)
    -j, --json                   Output valid JSON (sets `-o json`)
    -x, --xml                    Output EndNote XML file (sets `-o endnotexml`)
    -o, --output [mode]          Output file format (js, json, endnotexml, count)
    -q, --query [expression...]  Query by HanSON expression (loose JSON parsing)
    -v, --verbose                Be verbose (also prints a running total if -c is specified)
    --dedupe [action]            Deduplicate the library via the sra-dedupe NPM module. Actions are 'remove' (default), 'count' or 'mark' (to set the caption to "DUPE")
    --no-color                   Force disable color
    --no-progress                Disable progress bars
npm package: @iebh/vue-cli-plugin-tera
Description: A Vue CLI plugin that injects the TERA-tools.com proxy into a project
Author: Matt Carter
Latest version: 1.0.3

@IEBH/vue-cli-plugin-tera
=========================
Wrapper for Vue-Cli which installs the [TERA-fy](https://github.com/IEBH/TERA-fy) proxy within a Vue project.
npm package: @iebh/vuex-tera-json
Description: A Vuex plugin for syncing state with Tera (using JSON files)
Author: connorf25
Latest version: 3.0.16

# vuex-tera-json

A Vuex plugin for syncing state with Tera.

## Installation

```bash
npm install @iebh/vuex-tera-json
```

## Usage

Note: Make sure to remove any localforage/localstorage references in the store as this will create a bug where state gets carried over on new projects.

### Store Configuration

In your Vuex store configuration file (e.g. `store.js`), create and export the sync plugin, then add it to your store:

```javascript
import Vue from 'vue'
import Vuex from 'vuex'
import { createSyncPlugin } from '@iebh/vuex-tera-json';

Vue.use(Vuex)

// Create and export the TERA sync plugin
// Parameters:
// 1. key: unique identifier for the tool (e.g. 'wordFreq')
// 2. debug: boolean for debug mode
// 3. options: configuration object (optional)
export const teraSyncPlugin = createSyncPlugin('wordFreq', false, {
    debounceMs: 100 // Debounce time in milliseconds
})

export default new Vuex.Store({
    modules: {
        // Your store modules
    },
    plugins: [teraSyncPlugin]
})
```

### Application Initialization

In your main application file (e.g. `main.js`), import the store and plugin, then initialize them with your Vue instance:

```javascript
import Vue from 'vue'
import App from './App.vue'
import store, { teraSyncPlugin } from './store'
import TeraFy from "@iebh/tera-fy/dist/terafy.es2019.js"
import TerafyVue from "@iebh/tera-fy/dist/plugin.vue2.es2019.js"

// Initialize TeraFy
const terafy = new TeraFy()
    .set("devMode", process.env.VUE_APP_TERAFY_DEV)
    .setIfDev("verbosity", process.env.VUE_APP_TERAFY_VERBOSITY)
    .use(TerafyVue);

(async ()=> {
    const app = new Vue({
        render: h => h(App),
        store,
        created() {
            // Set up the sync plugin
            teraSyncPlugin(store).setVueInstance(this)
        },
        beforeDestroy() {
            // Cleanup
            teraSyncPlugin(store).destroy()
        }
    });

    // Initialize Tera
    await terafy.init({
        app,
        Vue
    });

    // Signal that Tera is ready
    teraSyncPlugin(store).setTeraReady();

    app.$mount("#app");
})()
```

## API

### Plugin Creation

- `createSyncPlugin(key, debug, options)`: Creates the Vuex plugin for syncing with Tera
  - `key`: String - Unique identifier for the tool (e.g. 'wordFreq')
  - `debug`: Boolean - Enable debug mode
  - `options`: Object - Configuration options
    - `debounceMs`: Number - Debounce time in milliseconds (default: 100)

### Plugin Methods

- `setVueInstance(instance)`: Sets the Vue instance for the sync plugin
- `setTeraReady()`: Signals that Tera is ready and initiates the first sync
- `destroy()`: Cleans up the plugin when the Vue instance is destroyed

## Best Practices

1. Always export the plugin instance if you need to access its methods outside the store
2. Call `setVueInstance()` in your Vue app's `created` hook
3. Call `destroy()` in your Vue app's `beforeDestroy` hook to prevent memory leaks
4. Initialize Tera before calling `setTeraReady()`

## License

MIT
npm package: @iebh/vuex-tera-sync
Description: A Vuex plugin for syncing state with Tera
Author: connorf25
Latest version: 2.0.4

# vuex-tera-sync

A Vuex plugin for syncing state with Tera.

## Installation

```bash
npm install @iebh/vuex-tera-sync
```

## Usage

Note: Make sure to remove any localforage/localstorage references in the store as this will create a bug where state gets carried over on new projects.

### Store Configuration

In your Vuex store configuration file (e.g. `store.js`), create and export the sync plugin, then add it to your store:

```javascript
import Vue from 'vue'
import Vuex from 'vuex'
import { createSyncPlugin } from '@iebh/vuex-tera-sync';

Vue.use(Vuex)

// Create and export the TERA sync plugin
// Parameters:
// 1. key: unique identifier for the tool (e.g. 'wordFreq')
// 2. debug: boolean for debug mode
// 3. options: configuration object (optional)
export const teraSyncPlugin = createSyncPlugin('wordFreq', false, {
    debounceMs: 100 // Debounce time in milliseconds
})

export default new Vuex.Store({
    modules: {
        // Your store modules
    },
    plugins: [teraSyncPlugin]
})
```

### Application Initialization

In your main application file (e.g. `main.js`), import the store and plugin, then initialize them with your Vue instance:

```javascript
import Vue from 'vue'
import App from './App.vue'
import store, { teraSyncPlugin } from './store'
import TeraFy from "@iebh/tera-fy/dist/terafy.es2019.js"
import TerafyVue from "@iebh/tera-fy/dist/plugin.vue2.es2019.js"

// Initialize TeraFy
const terafy = new TeraFy()
    .set("devMode", process.env.VUE_APP_TERAFY_DEV)
    .setIfDev("verbosity", process.env.VUE_APP_TERAFY_VERBOSITY)
    .use(TerafyVue);

(async ()=> {
    const app = new Vue({
        render: h => h(App),
        store,
        created() {
            // Set up the sync plugin
            teraSyncPlugin(store).setVueInstance(this)
        },
        beforeDestroy() {
            // Cleanup
            teraSyncPlugin(store).destroy()
        }
    });

    // Initialize Tera
    await terafy.init({
        app,
        Vue
    });

    // Signal that Tera is ready
    teraSyncPlugin(store).setTeraReady();

    app.$mount("#app");
})()
```

## API

### Plugin Creation

- `createSyncPlugin(key, debug, options)`: Creates the Vuex plugin for syncing with Tera
  - `key`: String - Unique identifier for the tool (e.g. 'wordFreq')
  - `debug`: Boolean - Enable debug mode
  - `options`: Object - Configuration options
    - `debounceMs`: Number - Debounce time in milliseconds (default: 100)

### Plugin Methods

- `setVueInstance(instance)`: Sets the Vue instance for the sync plugin
- `setTeraReady()`: Signals that Tera is ready and initiates the first sync
- `destroy()`: Cleans up the plugin when the Vue instance is destroyed

## Best Practices

1. Always export the plugin instance if you need to access its methods outside the store
2. Call `setVueInstance()` in your Vue app's `created` hook
3. Call `destroy()` in your Vue app's `beforeDestroy` hook to prevent memory leaks
4. Initialize Tera before calling `setTeraReady()`

## License

MIT
npm package: @ied/animate
Description: ## Install
Author: Yann Amsellem
Latest version: 1.0.0-beta.2

# Animation

## Install

```js
yarn add @ied/animate
```

## Use

```js
import Animate from '@ied/animate'

<Animate active>🦄</Animate>
```

## Types

```js
type Props = {
  active?: boolean,
  style?: {},
  className?: string,
  children: React$Node,
}
```
npm package: @ied/badge
Description: ## Install
Author: Didier Franc
Latest version: 1.0.1

# Badge

## Install

```js
yarn add @ied/badge
```

If you use icon props add this to your `index.html`

```
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
```

## Use

```js
import Badge from '@ied/badge'

<Badge firstName="Clark" lastName="Kent" />
<Badge firstName="Clark" lastName="Kent" small />
<Badge text="1" />
<Badge icon="people" />
<Badge icon="people" small />
```

## Types

```js
type Props = {
  firstName?: string,
  lastName?: string,
  text?: string,
  icon?: string,
  small?: boolean,
}
```
npm package: @ied/button
Description: ## Install
Author: Duc Giang NGUYEN
Latest version: 1.0.1
Deprecated: please use @material/react-button instead

# Button (deprecated, please use https://github.com/material-components/material-components-web-react/tree/master/packages/button)

## Install

```
yarn add @ied/button
```

## Use

```js
import Button from '@ied/button'

<Button
  type="submit"
  className="button"
  raised
  ripple
  style={{ marginRight: 20 }}
  onClick={e => console.log('Button 1 clicked')}
>
  Button 1
</Button>

<Button raised onClick={e => console.log('Button 2 clicked')}>
  Button 2
</Button>
```

## Types

```js
type Props = {
  className?: string,
  children?: React$Node,
  style?: {},
  onClick?: (e: SyntheticInputEvent<HTMLButtonElement>) => void,
  raised?: boolean,
  disabled?: boolean,
  type?: string,
  ripple?: boolean,
}
```
npm package: @ied/calc
Description: ## Install
Author: Didier Franc
Latest version: 1.0.0-beta.10

# Calc

## Install

```
yarn add @ied/calc
```

## Use

```js
import calc from '@ied/calc'

const x = calc('1 + 2 * 100')
// 201
```

## Types

```js
type Calc = (string: string) => number
```
npm package: @ied/cell-table
Description: ## Install
Author: Didier Franc
Latest version: 1.0.0-beta.10

# CellTable

## Install

```bash
yarn add @ied/cell-table
```

## Use

```js
import { CellTable, CellRow } from '@ied/cell-table'

const App = () => (
  <CellTable>
    <CellRow>
      <input />
      <input />
      <input />
      <input />
    </CellRow>
    <CellRow>
      <input />
      <input />
      <input />
      <input />
    </CellRow>
    <CellRow>
      <input />
      <input />
      <input />
      <input />
    </CellRow>
  </CellTable>
)
```

## Use with exposed methode

```js
import { CellTable, CellRow } from '@ied/cell-table'

class App extends React.Component {
  render () {
    <CellTable>
      {({ getNext }) => (
        <>
          <CellRow>
            <button onClick={() => getNext(this.input, 'ArrowRight')}>Go next<button>
            <input ref={elm => this.input = elm}/>
            <input />
            <input />
          </CellRow>
          <CellRow>
            <input />
            <input />
            <input />
            <input />
          </CellRow>
          <CellRow>
            <input />
            <input />
            <input />
            <input />
          </CellRow>
        </>
      )}
    </CellTable>
  }
}
```

## To avoid some inputs during navigation

```js
import { CellTable, CellRow } from '@ied/cell-table'

class App extends React.Component {
  render () {
    <CellTable>
      {({ getNext }) => (
        <>
          <CellRow>
            <input />
            <input className="ied-cell-table-avoid-el" tabIndex="-1" />
            <input />
          </CellRow>
          <CellRow>
            <input />
            <input />
            <input />
            <input />
          </CellRow>
          <CellRow>
            <input />
            <input />
            <input />
            <input />
          </CellRow>
        </>
      )}
    </CellTable>
  }
}
```

## Types

```js
type Props = {
  children: React$Node || ({getNext: (input:HTMLInputElement, action: Action) => void }) => React$Node,
  className?: string,
  style?: {},
}

enum Action = {
  "Enter"
  "ArrowRight"
  "Escape"
  "ArrowLeft"
  "ArrowDown"
  "ArrowUp"
}
```
npm package: @ied/color
Description: ## Install
Author: Didier Franc
Latest version: 1.0.0-beta.6

# Color

## Install

```
yarn add @ied/color
```

## Use

```js
import { getColorFromString } from '@ied/color'

const firstName = 'Harvey'
const lastName = 'Milk'

const color = getColorFromString(`${firstName}${lastName}`)
```

## Types

```js
type GetColorFromString = (
  string: string,
  saturation?: number,
  luminosity?: number,
  opacity?: number,
) => string
```
npm package: @ied/comment
Description: ## Install
Author: Bastien Guillou
Latest version: 1.0.0-beta.1

# Comment

## Install

```
yarn add '@ied/comment'
```

## Use

```js
import Comment from '@ied/comment'

<Comment text={text} compact />
```

## Types

```js
type Props = {
  text: string,
  compact?: boolean,
  className?: string,
  style?: {},
}
```
npm package: @ied/date
Description: # Date (deprecated, please use https://www.npmjs.com/package/date-fns)
Author: Didier Franc
Latest version: 1.0.0
Deprecated: please use date-fns instead

# Date

# Date (deprecated, please use https://www.npmjs.com/package/date-fns)

## Install

```
yarn add @ied/date
```

## Use

```js
import { getRelativeDate } from '@ied/date'

const date = '2018-02-13T10:42:21.341Z'
const formatedDate = getRelativeDate(date)
```

## Types

```js
type Locale = 'en' | 'fr' | 'de' | 'da'
type GetRelativeDate = (string: string | Date, locale: Locale) => string
```