open-index/open-npm huggingface dataset:
npm package: @jjkavalam/scanner
Description: An easy-to-use tokenizer
Latest version: 1.0.0

# scanner

An easy-to-use tokenizer

## Usage

```js
const { Scanner, Patterns } = require("@jjkavalam/scanner");

const sc = new Scanner(`... contents ...`);

// scan until end-of-line
const firstLine = sc.scanUntil(Patterns.EOL);

// or any arbitrary string or Regexp pattern
const nextColumn = sc.scanUntil(",");

// ...
```
npm package: @jjkavalam/tgf
Description: A Node.js parser for the TGF (Trivial Graph Format)
Author: Jobin Jacob Kavalam
Latest version: 1.2.0

# tgf

A Node.js parser for the [TGF (Trivial Graph Format)](https://en.wikipedia.org/wiki/Trivial_Graph_Format)

## Usage

```js
const parse = require("@jjkavalam/tgf");

const fs = require("fs");

const tgf = fs.readFileSync("g1.tgf", {encoding: "utf-8"});
```

Parsed result has the following features:

- `nodes: string[]`, array of nodes identified by label
- `adjList: {[string]: string[]}`, adjacency list representation of the graph
- `getWeight: function(string, string): number`, a function that returns the weight of each edge (or `undefined`)

A sample result:

```
{
  nodes: [
    '6', '3', '5',
    '2', '9', '7',
    '4', '8', '1'
  ],
  adjList: {
    '1': [ '2', '4' ],
    '2': [],
    '3': [ '6', '8' ],
    '4': [ '7' ],
    '5': [ '9' ],
    '6': [ '9' ],
    '7': [ '5', '6' ],
    '8': [],
    '9': []
  }
}
```

```
getWeight('1', '2')
=> 2
```

### Undirected graphs

The parser treats all edges in the TGF file as directed. Hence, to represent undirected graphs, two edges need to be
specified for each undirected edge.

But it is unlikely that your graph editor writes two edges for each undirected edge. Setting, `undirected` option will
cause the parser to compensate for this.

```js
parse(contents, {undirected: true})
```

## Related tools

- [yEd Graph editor](https://www.yworks.com/products/yed)
npm package: @jjlabsio/claude-crew
Description: 1인 SaaS 개발자를 위한 멀티 에이전트 오케스트레이션 — 개발, 마케팅, 일정을 한 대화에서 통합 관리
Author: Jaejin Song
Latest version: 0.1.19

# Claude Crew

1인 SaaS 개발자를 위한 Claude Code 멀티 에이전트 오케스트레이션 플러그인.

개발, 마케팅, 일정을 한 대화에서 통합 관리한다.

## 설치

Claude Code에서:

```
/plugin marketplace add jjlabsio/claude-crew
/plugin install claude-crew
```

또는 로컬에서 직접:

```
/plugin install /path/to/claude-crew
```

## 초기 설정

설치 후 반드시 한 번 실행:

```
/crew-setup
```

HUD statusline이 설정되어 세션 중 레포, 브랜치, 모델, 컨텍스트 사용률, 에이전트 상태를 실시간으로 확인할 수 있다.

## 사용

```
/crew
```

오케스트레이터가 시작되고 현황을 브리핑합니다.

## 에이전트 팀

| 에이전트 | 역할 |
|---------|------|
| **오케스트레이터** | 유저와 대화, 위임 판단, 영역 간 연동 |
| **PM** | 유저와 대화하여 기획 확정 |
| **플래너** | 기획을 명세로 확장, 태스크 분해 |
| **개발** | 코드 구현, QA와 계약 협상 |
| **QA** | 스프린트 계약 기반 회의적 검증 |
| **마케팅** | 콘텐츠 소재, 계획, build in public |

## 상태 파일

프로젝트 로컬 `.crew/` 디렉토리에 마크다운 파일로 상태를 관리합니다. 플러그인 업데이트 시에도 학습 내용과 상태는 보존됩니다.

## 설계 원칙

- [Anthropic 하네스 설계 아티클](https://www.anthropic.com/engineering/harness-design)을 최우선 레퍼런스로 따름
- 가능한 단순하게 시작하고 필요할 때만 복잡성을 높임
- 모델이 발전하면 불필요해진 구성 요소를 제거

## License

MIT
npm package: @jjldxz/lvb-electron
Description: An electron sdk of lvb(Live Video Broadcast)
Author: jjldxz
Latest version: 1.0.0

# @jjldxz/lvb-electron

An electron sdk of lvb(Live Video Broadcast)

## Install
```shell
yarn add @jjldx/lvb-electron
```
```shell
npm install @jjldx/lvb-electron
```
npm package: @jjldxz/rollup-plugin-env-files
Description: A Rollup plugin which parse env files and replaces env strings in files while bundling.
Author: jjldxz
Latest version: 1.0.0

# @jjldxz/rollup-plugin-env-files
A Rollup plugin which parse env files and replaces env strings in files while bundling.

## Install
```shell
yarn workspace [worksapce name] add @jjldx/rollup-plugin-env-files@1.0.0 -D
```

## Usage
Create a .env file in the root directory of your project. Add environment-specific variables on new lines in the form of NAME=VALUE. For example:
```dotenv
ENV_TEST=envTest
```
Create a rollup.config.js configuration file and import the plugin:
```javascript
import envFiles from '@jjldxz/rollup-plugin-env-files'

export default {
  input: 'src/index.js',
  output: {
    dir: 'output',
    format: 'cjs'
  },
  plugins: [
    envFiles()
  ]
}
```
process.env now has the keys and values you defined in your .env file.
npm package: @jjlmoya/utils-shared
Description: Shared SEO primitives and UI components for jjlmoya ecosystem
Author: jjlmoya
Latest version: 1.1.0

# @jjlmoya/utils-shared

Library of common components and utilities for jjlmoya projects, built with Astro and TypeScript.

## Installation

```bash
npm install @jjlmoya/utils-shared
```

## Setup

Ensure you have `astro-icon` configured in your `astro.config.mjs`:

```javascript
import { defineConfig } from "astro/config";
import icon from "astro-icon";

export default defineConfig({
    integrations: [icon()]
});
```

## Main Components

### SEO Components

- **SEOCard**: A premium card with icon support for highlighting information.
- **SEOList**: A stylistic list with custom icons and hover effects.
- **SEOStats**: Displays metrics and status with trend indicators.
- **SEOCode**: A custom code block with syntax highlighting and aria-labels.
- **SEOComparative**: Used for comparing features or options.
- **SEODiagnostic**: Shows status, success, or warning messages in a diagnostic format.
- **SEOTip**: Short informative boxes for advice.
- **SEOSummary**: A checklist-style list for wrapping up key points.

### UI Components

- **UtilityHeader**: A modern header for utility pages with gradient backgrounds.
- **Bibliography**: A list of links for further reading or citations.

## Usage Example

```astro
---
import { SEOCard, UtilityHeader } from "@jjlmoya/utils-shared";
---

<UtilityHeader 
    titleHighlight="My" 
    titleBase="Utility" 
    description="This is a description." 
/>

<SEOCard title="Ready to go" icon="mdi:rocket-launch">
    <p>This is a custom card content.</p>
</SEOCard>
```

## Development

To preview components in development:

```bash
npm run dev
```

Then visit `http://localhost:51000/` to see the showroom.
npm package: @jjmschofield/await-queue
Description: A charming little queue filled with awaitable tasks
Author: Jack Schofield
Latest version: 0.0.2

# await-queue
[![CircleCI](https://circleci.com/gh/jjmschofield/await-queue.svg?style=shield)](https://circleci.com/gh/jjmschofield/await-queue) [![Coverage Status](https://coveralls.io/repos/github/jjmschofield/await-queue/badge.svg?branch=master)](https://coveralls.io/github/jjmschofield/await-queue?branch=master) [![Known Vulnerabilities](https://snyk.io//test/github/jjmschofield/await-queue/badge.svg?targetFile=package.json)](https://snyk.io//test/github/jjmschofield/await-queue?targetFile=package.json)

A simple awaited queue for NodeJs. 

Designed to make managing concurrency limiting a breeze using tidy async/await syntax.

## Installation
```
$ npm install @jjmschofield/await-queue
```

## Usage
```
// Import the module
const { Queue } = require('@jjmschofield/await-queue');

const someQueableThing = async () =>{
    // Create a queue
    const queue = new Queue();
    
    // Await your task
    const result = await queue.add(someAsyncTask, { prop: 'value' });
    
    // Profit
}
```

Your async task can be any awaitable thing, it should take an object of inputs as it's first parameter eg:
```
const someAsyncTask = async ({ a, b }) =>{
    return { a, b };
}
```
As you can imagine, you can add virtually any function in which returns a promise, the world is your oyster!

## Config
What is a handy library without some config options? Here are yours:

```
const { Queue, QUEUE_MODE } = require('<path to file>');

const queue = new Queue({ 
    maxRetry: 3, // Number of times to retry a thing before returning the final error recieved
    mode: QUEUE_MODE.FIFO, // Can be 'FIFO' or 'LIFO'
    concurrency: 1, // How many tasks do you want to run at once?
}); 
```
npm package: @jjmyers/pg-crud
Description: A basic CRUD that is simple and quick to setup for postgres.
Author: Joshua Joseph Myers
Latest version: 1.0.2

# SQL Resource Builder

A small, opinionated library for building **type-safe SQL queries**, **relationship-aware resources**, and **REST-like data access paths** on top of PostgreSQL.

This is not an ORM that hides SQL from you.  
This is a tool that **helps you write SQL deliberately**, while still getting:

- composable query building
- relationship graphs
- automatic aggregation
- resource-style access (`/users/1/roles`)
- pagination, sorting, and filtering hooks

If SQL is the truth, this library is a polite assistant, not a liar.

---

## Features

- Declarative SQL query builder
- Explicit table aliasing (no magic joins)
- Composable `WHERE` conditions (`and`, `or`, `equal`, etc.)
- JSON aggregation for relationships
- Relationship graph definition
- Resource-style path access (`/users/:id/:relation`)
- Pagination, sorting, and filtering support
- Works directly with PostgreSQL JSON output

---

## Installation

```bash
npm install @jjmyers/pg-crud
```

---

## Core Concepts

### SQLBuilder

`SQLBuilder` is a fluent SQL construction tool.  
It builds SQL, it does not execute it.

```ts
const { select, alias, op, value, compile } = SQLBuilder();

const users = alias("users");
const userId = value(1);

select(users.field("id"), users.field("first_name"))
  .from(users)
  .where(op.equal(users, "id", userId));

const { statement, values } = compile();
```

---

### Aliases Are Mandatory

Every table must be aliased.  
This avoids ambiguous SQL and hidden joins.

---

### Joins and Aggregation

Aggregation is explicit and opt-in.

```ts
roles.as("roles", { aggregate: true, distinct: true });
```

---

## Relationship Builder

Define how tables connect:

```ts
relationshipBuilder({
  users: {
    "users.[users_id]addresses": { alias: "address", resource: "eager" },
    "users[companies_id].companies": { alias: "company" },
  },
});
```

---

## Resource API

Expose SQL as resource paths:

```ts
resources.get("/users/1/roles");
```

Supported paths:

- `/users`
- `/users/:id`
- `/users/:id/:relation`

---

## Design Philosophy

- SQL is not the enemy
- Explicit > implicit
- Control beats convenience
- No magic queries

---

## License

MIT
npm package: @jjoeman/treatuikit
Description: Set of UI components for treat projects
Latest version: 0.55.0

# 🥞 Pancake UIkit

[![Version](https://img.shields.io/npm/v/@pancakeswap-libs/uikit)](https://www.npmjs.com/package/@pancakeswap-libs/uikit) [![Size](https://img.shields.io/bundlephobia/min/@pancakeswap-libs/uikit)](https://www.npmjs.com/package/@pancakeswap-libs/uikit)

Pancake UIkit is a set of React components and hooks used to build pages on Pancake's apps. It also contains a theme file for dark and light mode.

## Install

`yarn add @pancakeswap-libs/uikit`

## Setup

### Theme

Before using Pancake UIkit, you need to provide the theme file to styled-component.

```
import { ThemeProvider } from 'styled-components'
import { light, dark } from '@pancakeswap-libs/uikit'
...
<ThemeProvider theme={isDark}>...</ThemeProvider>
```

### Reset

A reset CSS is available as a global styled component.

```
import { ResetCSS } from '@pancakeswap-libs/uikit'
...
<ResetCSS />
```

### Types

This project is built with Typescript and export all the relevant types.

## How to use the UIkit

If you want to use components from the UIkit, check the [Storybook documentation](https://pancakeswap.github.io/pancake-uikit/)
npm package: @jjordy/datagrid
Description: Composable Datagrid for react
Author: Jordan Addison
Latest version: 1.1.5

# @jjordy/datagrid

[![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

## Install

```bash
  $ npm install @jjordy/datagrid
```
## Requirements
* node `>= 8`
* npm `>= 5`

# Contributing & Development Instructions

## Install dependencies, and check to see it works

```bash
$ npm install                   # Install project dependencies
$ npm run dev                     # Development via storybook @ localhost:9001
```
While developing, you will probably rely mostly on `npm run dev`; however, there are additional scripts at your disposal:

|`npm run <script>`|Description|
|------------------|-----------|
|`dev`| Development Mode |
|`lint`|Lint all `.js` files.|
|`build`| Build Production Library.|
|`lint:fix`|Lint and fix all `.js` files. [Read more on this](http://eslint.org/docs/user-guide/command-line-interface.html#fix).|

## Project Structure
```
├── .storybook               # Storybook config
├── src                      # Client entry point
```
npm package: @jjordy/file-upload
Description: Composable Drag and drop file upload for react
Author: Jordan Addison
Latest version: 1.1.5

# @jjordy/file-upload

## A simple wrapper around react dropzone

[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)

## Install

```bash
$ npm install @jjordy/file-upload
```
## Requirements
* node `>= 8`
* npm `>= 5`

# Contributing & Development Instructions

## Install dependencies, and check to see it works

```bash
$ npm install                   # Install project dependencies
$ npm run dev                     # Development via storybook @ localhost:9001
```
While developing, you will probably rely mostly on `npm run dev`; however, there are additional scripts at your disposal:

|`npm run <script>`|Description|
|------------------|-----------|
|`dev`| Development Mode |
|`lint`|Lint all `.js` files.|
|`build`| Build Production Library.|
|`lint:fix`|Lint and fix all `.js` files. [Read more on this](http://eslint.org/docs/user-guide/command-line-interface.html#fix).|

## Project Structure
```
.
├── src                      # Client entry point
```
npm package: @jjordy/iam
Description: React Utilities for Dealing with IAM Policies
Author: Jordan Addison
Latest version: 2.0.2

# @jjordy/iam

# Work with custom IAM policies

[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)

## Install

```bash
$ npm install @jjordy/iam
```
## Requirements
* node `>= 8`
* npm `>= 5`

# Contributing & Development Instructions

## Install dependencies, and check to see it works

```bash
$ npm install                   # Install project dependencies
$ npm run dev                     # Development via storybook @ localhost:9001
```
While developing, you will probably rely mostly on `npm run dev`; however, there are additional scripts at your disposal:

|`npm run <script>`|Description|
|------------------|-----------|
|`dev`| Development Mode |
|`lint`|Lint all `.js` files.|
|`build`| Build Production Library.|
|`test`| Run tests.|
(http://eslint.org/docs/user-guide/command-line-interface.html#fix).|

## Project Structure
```
.
├── .storybook               # Storybook config
├── src                      # Client entry point
```
npm package: @jjordy/layout
Description: Composable layout components
Author: Jordan Addison
Latest version: 1.1.7

# @jjordy/layout

[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)

## Install

```bash
$ npm install @jjordy/layout
```
## Requirements
* node `>= 8`
* npm `>= 5`

# Contributing & Development Instructions

## Install dependencies, and check to see it works

```bash
$ npm install                   # Install project dependencies
$ npm run dev                     # Development via storybook @ localhost:9001
```
While developing, you will probably rely mostly on `npm run dev`; however, there are additional scripts at your disposal:

|`npm run <script>`|Description|
|------------------|-----------|
|`dev`| Development Mode |
|`lint`|Lint all `.js` files.|
|`build`| Build Production Library.|
|`lint:fix`|Lint and fix all `.js` files. [Read more on this](http://eslint.org/docs/user-guide/command-line-interface.html#fix).|

## Project Structure
```
├── .storybook               # Storybook config
├── src                      # Client entry point
```
npm package: @jjordy/primatives
Description: Composable layout primatives
Author: Jordan Addison
Latest version: 0.0.4

# @jjordy - Primatives

[![CircleCI](https://circleci.com/gh/jjordy/components/tree/master.svg?style=svg)](https://circleci.com/gh/jjordy/components/tree/master)
npm package: @jjordy/service
Description: A library for initializing a service oriented architecture
Author: Jordan Addison
Latest version: 0.0.1

# @jjordy/Service
---

## Basic Service

```javascript
import Service, { Plugin, SentryPlugin, StatsDPlugin, DebugPlugin } from '@jjordy/service'

class CustomService extends Plugin {
  constructor() {
    super('CustomService')
  }
  public register () {
    this.doSomethingCool()
  }
  public async init () {
    // initialize your plugin
  }
  private doSomethingCool () {
    console.log('Do Something Cool')
  }
}

async function go() {
  try {
    const service = new Service()
    await service.registerPlugin<StatsDPlugin>('StatsDPlugin', new StatsDPlugin())
    await service.registerPlugin<SentryPlugin>('SentryPlugin', new SentryPlugin())
    await service.registerPlugin<DebugPlugin>(
      'DebugPlugin', new DebugPlugin({ name: 'My Custom service' }))
    await service.init()
    // provided by SentryPlugin
    service.logEvent('HEY THERE')
    service.logMessage('HEY THERE')
    service.logException('HEY THERE')
    // provided by DebugPlugin
    service.log("test")
    // provided by StatsDPlugin
    service.stats.increment('service.test.increments', 20)
    process.exit(0)
  } catch (err) {
    console.log('Uh oh something went wrong intializing the service', err)
  }
}

go()

```
npm package: @jjordy/swr-devtools
Description: Devtools for SWR
Author: Jordan Addison
Latest version: 2.2.0

# SWR Devtools

Devtools for [swr](https://swr.now.sh/)

## Table of Contents

* [Screenshot](#Screenshot)
* [Live Demo](#live-demo)
  * [CodeSandbox](#codesandbox)
* [Install](#install)
* [Usage](#usage)
* [Props](#props)
* [Maintainers](#maintainers)
* [License](#license)

## Live Demo
[![Edit swr-devtools (forked)](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/exciting-benz-t5pq0?file=/src/App.tsx)


## Install

#### NPM

```bash
npm install @jjordy/swr-devtools
```

#### Yarn

```bash
yarn add @jjordy/swr-devtools
```

#### Usage

**``swr - 1.0.0`` is required at minimum .**

Import SWRDevtools and our custom devtools cache and use like below.
Custom cache is required > 1.0 swr to re-implement subscribe behavior which swr devtools relys on.
The SWRConfig with custom devtools cache should be above any request using swr.
```javascript
import { SWRConfig } from "swr";
import SWRDevtools from "@jjordy/swr-devtools";

export default function App({ Component, pageProps }) {
  return (
    <SWRDevtools>
      <Component {...pageProps} />
    </SWRDevtools>
  );
}
```

#### Props 


| Name  | Type  | Required  | Default |
|---|---|---|---| 
| CustomOpenComponent  | `React.ReactNode`  |  no |
| debug | `boolean` | no |
| position | `string`: `"right","left"` | no | right



## Maintainers

* Jordan Addison

## License

The MIT License (MIT)

Copyright (c) 2021 Jordan Addison

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
npm package: @jjordy/use-form
Description: React Hooks - Simple Form usage
Author: jjordy
Latest version: 0.0.3

# use-form

> React Hooks - Simple Form usage

[![NPM](https://img.shields.io/npm/v/use-form.svg)](https://www.npmjs.com/package/use-form) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)

## Install

```bash
npm install --save use-form
```

## Usage

```tsx
import * as React from 'react'

import MyComponent from 'use-form'

class Example extends React.Component {
  render () {
    return (
      <MyComponent />
    )
  }
}
```

## License

MIT © [jjordy](https://github.com/jjordy)
npm package: @jjordy/use-window-state
Description: Hook to sync the url and complex state.
Author: Jordan Addison
Latest version: 0.0.4

# useWindowState

Keep your url in sync with any arbitrary state thats serializable

## Table of Contents

* [Screenshot](#Screenshot)
* [Live Demo](#live-demo)
  * [CodeSandbox](#codesandbox)
* [Install](#install)
* [Usage](#usage)
* [Props](#props)
* [Maintainers](#maintainers)
* [License](#license)

## Live Demo
[![Edit useWindowState (forked)](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/usewindowstate-7fkowk)


## Install

#### NPM

```bash
npm install @jjordy/use-window-state
```

#### Yarn

```bash
yarn add @jjordy/use-window-state
```

#### Usage

```typescript
import useWindowSize from "@jjordy/use-window-size";

type MyUrlState = {
  limit: number;
  offset: number;
  query: string;
}

export default function App({ Component, pageProps }) {
  const { state, update } = useWindowSize<MyUrlState>({ initialValues: { limit: 0, offset: 0, query: ''}})
  return (
    <div>
      <Pagination limit={state.limit} offset={state.offset} />
    </div>
  );
}
```

#### Props 


| Name  | Type  | Required  | Default |
|---|---|---|---| 
| initialState | `any`  |  no |
| options | `qs options overrides` | no | {} |

## Maintainers

* Jordan Addison

## License

The MIT License (MIT)

Copyright (c) 2021 Jordan Addison

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
npm package: @jjordy/validation
Description: Validation helpers
Author: Jordan Addison
Latest version: 1.0.2

# @jjordy/validation

[![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)

## Install

```bash
$ npm install @jjordy/layout
```
## Requirements
* node `>= 8`
* npm `>= 5`

# Contributing & Development Instructions

## Install dependencies, and check to see it works

```bash
$ npm install                   # Install project dependencies
$ npm run dev                     # Development via storybook @ localhost:9001
```
While developing, you will probably rely mostly on `npm run dev`; however, there are additional scripts at your disposal:

|`npm run <script>`|Description|
|------------------|-----------|
|`dev`| Development Mode |
|`lint`|Lint all `.js` files.|
|`build`| Build Production Library.|
|`lint:fix`|Lint and fix all `.js` files. [Read more on this](http://eslint.org/docs/user-guide/command-line-interface.html#fix).|

## Project Structure
```
├── .storybook               # Storybook config
├── src                      # Client entry point
```
npm package: @jjorissen52/env-vault
Description: Utility for environment synchronization with credentials vaults.
Author: JP Jorissen
Latest version: 0.1.7

## What?
Synchronize your local environment from a secrets vault.

## Which?
Just 1password so far.

## Supports
Any functionality not indicated on the above support table is purely serendipitous.

| Platform | Arch  | Support |
|----------|-------|---------|
| MacOs    | amd64 | ✅       |
| MacOs    | m1    | ❓       |
| Linux    | amd64 | ✅       |
| Windows  | amd64 | ❌       |
| Other    | Other | ❌       |

Legend:

| Symbol | Status                  |
|--------|-------------------------|
| ✅      | Target platform         |
| ❓      | Not explicitly excluded |
| ❌      | No intention to support |

## Installation

You can add it to your current project with
```bash
npm install @jjorissen52/env-vault

# optional alias (assuming GNU readlink)
alias ev="$(readlink -f ./node_modules/.bin/ev)"
```

Or you can download the latest binary, found in the GitHub releases.

## Setup
Configuration is stored by default in `$HOME/.config/ev.json`. You can change the location like so:
```bash
export EV_CONFIG_DIR=~/.config/better-place.json
```

## Usage
At a high level, you create "comparison configurations" where you provide a path to a template
and a corresponding location to save the result environment file, and `ev` will populate your
file.

### Concepts
#### Comparison Configurations
These are descriptions of how to populate an env file. Any given comparison configuration should contain everything necessary
to populate an environment file.

#### Global Defaults
All comparison configuration options inherit from these when left unspecified.

#### Vault Defaults
Each vault has its own way of authenticating and thus its own set of defaults.
Comparison configuration options inherit from these when left unspecified. Note that right now
only the 1password vault type is supported.

### Examples
**Note: most examples below assume you have an alias or `ev` on your path.**

```bash
# show the location where your `ev` config will be stored
yarn ev config locate # using yarn
npx ev config locate # using npm
ev config locate # alias or binary on path


# show your entire ev config
ev config show

# add or update an existing comparison configuration
ev config 1password set test4 \
  --record test.record \
  --address my-org \
  --email example@email.com

# show a specific comparison configuration
ev config show test4
#{
#  "vault_type": "1password",
#  "name": "test4",
#  "address": "my-org",
#  "email": "example@email.com",
#  "vault": "My Vault",
#  "record": "test.record",
#  "template_path": "<path>",
#  "env_file_path": "<path>"
#}

# set the default template and environment file locations
ev config defaults \
  --template ./envs/dev.env \
  --env .env

# set defaults for the 1password configurations
ev config 1password defaults \
  --vault "My Vault" \
  --address my-org \
  --email email@example.com
```


## Attributions
This project started from the template [typescript-boilerplate](https://github.com/metachris/typescript-boilerplate/tree/v0.4.2), which is a fantastic asset. Thank you, metacris.
npm package: @jjpmann/gulp-inject-bacon
Description: Inject Bacon Ipsum into files/steams.
Author: Jerry Price
Latest version: 0.0.1

# [gulp](http://gulpjs.com)-inject-bacon 

Gulp plugin for [baconipsum](https://www.npmjs.com/package/baconipsum) in your html templates



## Install

```bash
npm install --save-dev gulp-inject-bacon
```

## Example

```javascript
var fileinclude = require('gulp-file-include');
var injectbacon = require('gulp-inject-bacon');

gulp.task('fileinclude', function() {
  gulp.src([html_build])
    .pipe(fileinclude({
      prefix: '@@',
      basepath: '@file'
    }))
    .pipe(injectbacon())
    .pipe(gulp.dest(html_output))
});
});
```

## More

Suggestions welcome


## License

MIT © [Jerry Price](https://github.com/jjpmann)
npm package: @jjpmann/node-version-checker
Description: Check node version against required versions.
Author: Jerry Price
Latest version: 0.0.2

# Node Version Checker

Check node version against required versions.


## Install

```bash
npm install --save-dev node-version-checker
```

## Example

```javascript
var nvc = require('../../git/nvc/index.js');  
nvc(5);
```

Output

```
------------------------------------------------------

Node version does not match, version 5 required.

------------------------------------------------------
````

## More

Suggestions welcome


## License

MIT © [Jerry Price](https://github.com/jjpmann)