open-index/open-npm huggingface dataset:
npm package: @studio-otto/session-store
Description: Adds centralized data store and getters for shopify nuxt app
Author: Studio Otto
Latest version: 2.1.5

# Session Store
Shopify session store for Shopify Vue sites - Query methods and centralized store for products and cart

## Deploying to NPM
```
// Bump the version depending on change typy
$ npm version patch
$ npm version minor
$ npm version major

// Build
$ yarn build

// Push to NPM
$ npm publish --access public
```

## Install
Install package
```bash
yarn add @studio-otto/session-store
```

## Use

Probably going to tweak this, ran into some unexpected architecture with nuxt and it trying to register store already. If I update it will be soon and fairly minor, currently it just doesnt treat the store state arrays like registered vue arrays so you need to set that up in the app. [See collection page example implementation to see what I mean](https://github.com/studio-otto/shop-base-session-store/wiki/Example-collection-page-implementation). It is only really with products array and collections array on products module I think. If you dont state it as obervable, it will only update products on initial product page load, and the final. 

Inside app / vue shop

### Nuxt installation
in /store/index.js

```javascript
import { Modules } from 'session-store'

// These are default config overrides - totally optional
export const state = () => {
  return {
    domain: 'someshopname.myshopify.com',
    token: 'c0a00f9ce66bb85d8ba6759bfc9d37db'
  }
}

export const modules = Modules

```

thats it!

### Non-Nuxt installation
in app.js or w/e you are installing/mounting vue

```javascript
import { CreateStore } from 'session-store'

new Vue({
  el: '#someid',
  store: CreateStore(domain, token),
})
```

*[See wiki for examples and methods](https://github.com/studio-otto/shop-base-session-store/wiki/Methods)*

## License
MIT
npm package: @studio-otto/shop-base-components
Description: ![](https://cirro-misc.s3.amazonaws.com/Github%20Images/base-01.jpg)
Author: Studio Otto
Latest version: 2.6.3

![](https://cirro-misc.s3.amazonaws.com/Github%20Images/base-01.jpg)

## Installation

Install package
```bash
yarn add @studio-otto/shop-base-components
```

[NVM Page](https://www.npmjs.com/package/@studio-otto/shop-base-components)


## Developing
<details>
<summary>Publishing</summary>

- `npm version patch`
- `yarn build`
- `npm publish --access public`
</details>

## Components

[Documentation](https://github.com/studio-otto/shop-base-components/wiki)

## License
MIT
npm package: @studio-wawww/prettier-config
Description: Base prettier configuration for Wawww's projects
Author: WAWWW
Latest version: 1.1.0

# Prettier base configuration

## Installation

```bash
yarn add -D @studio-wawww/prettier-config
```

## Usage

Add it in your `package.json`

```bash
yarn add -D @studio-wawww/prettier-config
```
npm package: @studio-west/print
Description: Vue component for print end save document.
Author: Alexander Efimov
Latest version: 0.0.11

# Print Library

A Vue 3 library for printing HTML templates with data substitution and support for multiple output formats (HTML, DOC, PDF).

## Installation

```bash
npm install @studio-west/print
```

## Setup

### Global Installation (in your main.js or app entry point)

```javascript
import { createApp } from 'vue'
import App from './App.vue'
import print from '@studio-west/print'

const app = createApp(App)

// Make print function available globally
app.config.globalProperties.$print = print

app.mount()
```

### Local Installation (in individual components)

```javascript
import print from '@studio-west/print'

export default {
  methods: {
    handlePrint() {
      const template = '<h1>Hello {{name}}!</h1><p>This is a {{type}} document.</p>'
      const data = { name: 'World', type: 'test' }
      print(template, data, 'output.pdf')
    }
  }
}
```

## Function Parameters

The `print` function accepts three parameters:

- `template` (string): HTML template with optional placeholder variables
- `data` (object, array, string, or number): Data to substitute into the template
- `fileName` (string, optional): Output filename with extension to determine format

### Template Placeholders

The template supports two types of placeholders:
- Empty placeholders: `{{}}` - replaced with data in order
- Named placeholders: `{{variableName}}` - replaced with corresponding property from data object

### Supported Output Formats

- `.html` - Opens in browser for printing
- `.doc`/.`docx` - Downloads as Word document
- `.pdf` - Generates and downloads as PDF (requires html2pdf.js)

### Examples

#### Basic Usage
```javascript
const template = '<h1>{{title}}</h1><p>{{content}}</p>'
const data = { title: 'My Title', content: 'My Content' }
print(template, data, 'document.pdf')
```

#### Using Empty Placeholders
```javascript
const template = '<h1>{{}}</h1><p>{{}}</p>'
const data = ['Title', 'Content'] // Will replace placeholders in order
print(template, data, 'document.html')
```

#### Direct String/Number
```javascript
const template = '<h1>{{0}}</h1>' // Using index-based placeholder
const data = 'My Title'
print(template, data, 'document.docx')
```
npm package: @studio.lite/tiptap
Description: A rich-text editor for Vue.js
Latest version: 1.23.6

# tiptap
This is the core package of [tiptap](https://www.npmjs.com/package/tiptap).

[![](https://img.shields.io/npm/v/tiptap.svg?label=version)](https://www.npmjs.com/package/tiptap)
[![](https://img.shields.io/npm/dm/tiptap.svg)](https://npmcharts.com/compare/tiptap?minimal=true)
[![](https://img.shields.io/npm/l/tiptap.svg)](https://www.npmjs.com/package/tiptap)
[![](http://img.badgesize.io/https://unpkg.com/tiptap/dist/tiptap.min.js?compression=gzip&label=size&colorB=000000)](https://www.npmjs.com/package/tiptap)
npm package: @studio.lite/tiptap-commands
Description: Commands for tiptap
Latest version: 1.10.14

# tiptap-commands
This is a collection of commands for [tiptap](https://www.npmjs.com/package/tiptap).

[![](https://img.shields.io/npm/v/tiptap-commands.svg?label=version)](https://www.npmjs.com/package/tiptap-commands)
[![](https://img.shields.io/npm/dm/tiptap-commands.svg)](https://npmcharts.com/compare/tiptap-commands?minimal=true)
[![](https://img.shields.io/npm/l/tiptap-commands.svg)](https://www.npmjs.com/package/tiptap-commands)
[![](http://img.badgesize.io/https://unpkg.com/tiptap-commands/dist/commands.min.js?compression=gzip&label=size&colorB=000000)](https://www.npmjs.com/package/tiptap-commands)
npm package: @studio.lite/tiptap-extensions
Description: Extensions for tiptap
Latest version: 1.24.6

# tiptap-extensions
This is a collection of extensions for [tiptap](https://www.npmjs.com/package/tiptap).

[![](https://img.shields.io/npm/v/tiptap-extensions.svg?label=version)](https://www.npmjs.com/package/tiptap-extensions)
[![](https://img.shields.io/npm/dm/tiptap-extensions.svg)](https://npmcharts.com/compare/tiptap-extensions?minimal=true)
[![](https://img.shields.io/npm/l/tiptap-extensions.svg)](https://www.npmjs.com/package/tiptap-extensions)
[![](http://img.badgesize.io/https://unpkg.com/tiptap-extensions/dist/extensions.min.js?compression=gzip&label=size&colorB=000000)](https://www.npmjs.com/package/tiptap-extensions)
npm package: @studio.lite/tiptap-utils
Description: Utility functions for tiptap
Latest version: 1.5.11

# tiptap-utils
This is a collection of utility functions for [tiptap](https://www.npmjs.com/package/tiptap).

[![](https://img.shields.io/npm/v/tiptap-utils.svg?label=version)](https://www.npmjs.com/package/tiptap-utils)
[![](https://img.shields.io/npm/dm/tiptap-utils.svg)](https://npmcharts.com/compare/tiptap-utils?minimal=true)
[![](https://img.shields.io/npm/l/tiptap-utils.svg)](https://www.npmjs.com/package/tiptap-utils)
[![](http://img.badgesize.io/https://unpkg.com/tiptap-utils/dist/utils.min.js?compression=gzip&label=size&colorB=000000)](https://www.npmjs.com/package/tiptap-utils)
npm package: @studio/browser-stream
Description: Naive stream shim for smaller Browserify bundles
Author: Maximilian Antoni
Latest version: 1.0.0

# Studio Browser Stream

💧 Naive stream shim for smaller Browserify bundles.

## Why?

This library exists to make it possible to use [Studio Log][1] in browsers by
letting Browserify replace the node `stream` module with this implementation.
The default Browserify `stream` implementation adds 200+KB to the bundle.

__Note!__ This library is intentionally incompatible with the original node
`stream` module. It is only supposed to behave in the context of the [Studio
Log][1] modules.

## Usage

Add this section to your `package.json`:

```json
{
  "browser": {
    "stream": "@studio/browser-stream"
  }
}
```

## Install

```bash
❯ npm i @studio/browser-stream
```

## API

- `Writable`
- `PassThrough`
- `Transform`

## Related modules

- 👻 [Studio Log][1] is a tiny streaming ndJSON logger.
- 🎩 [Studio Log Format][2] pretty prints Studio Log streams.
- 📦 [Studio Changes][3] is used to create the changelog for this module.

## License

MIT

<div align="center">Made with ❤️ on 🌍</div>

[1]: https://github.com/javascript-studio/studio-log
[2]: https://github.com/javascript-studio/studio-log-format
[3]: https://github.com/javascript-studio/studio-changes
npm package: @studio/changes
Description: Generate a changelog as part of the npm version command
Author: Maximilian Antoni
Latest version: 3.0.0

<h1 align="center">
  Studio Changes
</h1>
<p align="center">
  📦 Generate a changelog as part of the <a href="https://docs.npmjs.com/cli/version">npm version command</a>
</p>
<p align="center">
  <a href="https://www.npmjs.com/package/@studio/changes">
    <img src="https://img.shields.io/npm/v/@studio/changes.svg" alt="npm Version">
  </a>
  <a href="https://semver.org">
    <img src="https://img.shields.io/:semver-%E2%9C%93-blue.svg" alt="SemVer">
  </a>
  <a href="https://github.com/javascript-studio/studio-changes/actions">
    <img src="https://github.com/javascript-studio/studio-changes/workflows/Build/badge.svg" alt="Build Status">
  </a>
  <a href="https://opensource.org/licenses/MIT">
    <img src="https://img.shields.io/badge/License-MIT-brightgreen.svg" alt="License">
  </a>
</p>

## Usage

- Use `npm version [patch|minor|major]` to create a release
- Your editor will open with a generated `CHANGES.md` file
- When you're done writing the release notes, save and close the editor to
  continue
- To abort the release, remove the heading with the new version number

## Install

```bash
❯ npm install @studio/changes --save-dev
```

## Configure

```bash
❯ npx changes --init
```

This will add the following to your `package.json`:

```json
{
  "scripts": {
    "preversion": "npm test",
    "version": "changes",
    "postversion": "git push --follow-tags && npm publish"
  }
}
```

## Options

- `--help`, `-h`: Display a help message.
- `--commits`, `-c`: Generate links to commits using the given URL as base. If
  no URL is given it defaults to `${homepage}/commit` using the homepage
  configured in the `package.json`.
- `--footer`: Generate a footer with the git author and release date. The
  author name is taken from `$GIT_AUTHOR_NAME` and `$GIT_AUTHOR_EMAIL` is used
  to find the authors GitHub profile page.
- `--file`, `-f`: Specify the name of the changelog file. Defaults to
  `CHANGES.md`.
- `--init`: Add version lifecycle scripts to `package.json`. Can be combined
  with `--file` and `--commits` to configure the `changes` invocation.
- `--tag`: Use a custom git tag, supports simple replacement of `package.json`
  fields. Defaults to `v${version}`.

Configure your preferred editor with the `$EDITOR` environment variable.

## Preview next release

Preview the release notes for the next release by running:

```bash
❯ npx changes
```

![](https://javascript.studio/assets/changes-1.0.gif)

## License

MIT

<p align="center">Made with ❤️ on 🌍<p>

[1]: https://medium.com/@maybekatz/introducing-npx-an-npm-package-runner-55f7d4bd282b
npm package: @studio/editor
Description: Launch $EDITOR in your program
Author: James Halliday
Latest version: 1.1.1

# Studio Editor

📝  Launch `$EDITOR` in your program.

> A fork of [substack/node-editor](https://github.com/substack/node-editor).

# Usage

```js
const editor = require('@studio/editor');
editor('beep.json', function (code, sig) {
  console.log('finished editing with code ' + code);
});
```

# API

```js
const editor = require('@studio/editor')
```

- `editor(file, opts={}, cb)`: Launch the `$EDITOR` (or `opts.editor`) for
  `file`. When the editor exits, `cb(code, sig)` fires.

## Install

With [npm](http://npmjs.org) do:

```
npm install editor
```

# License

MIT
npm package: @studio/emojilog
Description: A CLI to pretty print the Studio Log ndjson with emoji
Author: Maximilian Antoni
Latest version: 1.0.2

<h1 align="center">
  Studio Emojilog
</h1>
<p align="center">
  🌈 A pretty printer for the Studio Log format with emoji ✨
</p>
<p align="center">
  <a href="https://www.npmjs.com/package/@studio/emojilog">
    <img src="https://img.shields.io/npm/v/@studio/emojilog.svg" alt="npm Version">
  </a>
  <a href="https://semver.org">
    <img src="https://img.shields.io/:semver-%E2%9C%93-blue.svg" alt="SemVer">
  </a>
  <a href="https://travis-ci.org/javascript-studio/studio-emojilog">
    <img src="https://img.shields.io/travis/javascript-studio/studio-emojilog/master.svg" alt="Build Status">
  </a>
  <a href="https://opensource.org/licenses/MIT">
    <img src="https://img.shields.io/badge/License-MIT-brightgreen.svg" alt="License">
  </a>
</p>

![](https://github.com/javascript-studio/studio-emojilog/raw/master/emojilog.png)

## Features

- A command line tool to pretty print [Studio Log][1] ndjson.
- [Fancy formats][2] with emoji for log file reading pleasure.
- Map stack traces back to original sources with source maps.

## Usage

Assuming you have the following ndjson in a file called `logs.json`:

```json
{"ts":1486630378584,"ns":"Server","topic":"launch","msg":"My Service","data":{"port":433}}
```

Send the logs to the `emojilog` command for pretty printing:

```bash
❯ cat logs.json | emojilog
09:52:58 🚀 Server My Service port=433
```

## Install

```bash
❯ npm i -g @studio/emojilog
```

## CLI Options

- `--format` or `-f` set the formatter to use. Defaults to "fancy".
- `--no-ts` hide timestamps
- `--no-topic` hide topics
- `--no-ns` hide namespaces
- `--no-data` hide data
- `--no-stack` hide stacks
- `--stack message` only show the error message
- `--stack peek` show the message and the first line of the trace (default)
- `--stack full` show the message and the full trace
- `--stack` same as `--stack full`
- `--map` use given source maps file to map stack traces

## Related modules

- 👻 [Studio Log][1] logs ndjson to an output stream.
- 🎩 [Studio Log Format][2] pretty print Studio Log streams.
- ❎ [Studio Log X][3] x-out confidential data in log entries.
- 📦 [Studio Changes][4] is used to create the changelog for this module.

## License

MIT

<div align="center">Made with ❤️ on 🌍</div>

[1]: https://github.com/javascript-studio/studio-log
[2]: https://github.com/javascript-studio/studio-log-format
[3]: https://github.com/javascript-studio/studio-log-x
[4]: https://github.com/javascript-studio/studio-changes
npm package: @studio/eslint-config
Description: The JavaScript Studio sharable eslint config
Author: Maximilian Antoni
Latest version: 9.0.1

# JavaScript Studio ESLint Config

The [sharable eslint config][docs] for all JavaScript Studio projects.

## Install

```bash
❯ npm i @studio/eslint-config -D
```

## Usage

Configure in `eslint.config.js`:

```js
import studio_eslint_config from '@studio/eslint-config';

export default [
  ...studio_eslint_config,
  {
    /* Project specific overrides */
  }
];
```

This configuration works great with [`@studio/tsconfig`][tsconfig].

**Pro tip™:** Check out [eslint_d][] for faster editor integration.

## License

MIT

<div align="center">Made with ❤️ on 🌍</div>

[docs]: http://eslint.org/docs/developer-guide/shareable-configs
[tsconfig]: https://github.com/javascript-studio/tsconfig
[eslint_d]: https://www.npmjs.com/package/eslint_d
npm package: @studio/gateway
Description: JavaScript Studio Gateway
Author: Maximilian Antoni
Latest version: 3.0.0

# Studio Gateway

A custom [Swagger][] server and compiler with [AWS Lambda
and mock integration][aws-int], for local API Gateway testing.

## Features

- Request parameters, header & query mappings
- Request body models
- Request-/Response Velocity templates and JSON Path queries
- Response mappings with regular expressions
- Response headers
- AWS Lambda integration
- AWS Mock integration
- Swagger `$ref` to external files - compiles to single AWS compatible file

## Usage

Assuming a `swagger.json` file in the current directory:

```js
const Gateway = require('@studio/gateway');
const Lambda = require('@studio/lambda');

const lambda = Lambda.create();
const gateway = Gateway.create();
gateway.on('lambda', lambda.invoke);
gateway.listen(1337);
```

## API

- `gateway = Gateway.create([options])`: Returns a new gateway server
  for the given options.
  - `swagger_file`: The swagger file to read. Defaults to `swagger.json`.
  - `swagger_env`: The [dotenv][] config to read.
  - `stage`: The stage name to use. Defaults to "local".
  - `stageVariables`: The stage variables to use. Default to an empty object.
- `gateway.listen(port[, callback])`: Bind the server to the given port.

## Events

- `lambda(name, event, context, callback)`: When a Lambda integration should be
  invoked. See [@studio/lambda][] for a custom Lambda execution environment.

## Swagger command

This module ships with a `swagger` command to compile a `swagger.json` file with
references to other files into a single AWS compatible file.

Use in npm scripts like this:

```json
{
  "scripts": {
    "swagger:prod": "swagger -o target/swagger-prod.json"
  }
}
```

The `swagger` optionally loads the [dotenv][] module and replaces environment
`${variables}`.

These options are supported:

- `-f, --file`: Sets the name of the swagger file. Defaults to `swagger.json`.
- `-e, --env`: Sets the path to a `dotenv` config file.
- `-o, --outfile`: Defines the output file to write to. If not specified, the
  result is printed to standard out.

Note that all environment variables can be used. When using npm scripts as
shown above, you can also do things like `${npm_package_version}`.

[Swagger]: http://swagger.io
[aws-int]: http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-swagger-extensions.html
[@studio/lambda]: https://github.com/javascript-studio/studio-lambda
[dotenv]: https://www.npmjs.com/package/dotenv
npm package: @studio/log-format
Description: Pretty print Studio Log streams
Author: Maximilian Antoni
Latest version: 1.0.0

# Studio Log Format

🎩 Transform streams to format Studio Log streams

> This module also works in the browser using a [naive `stream` shim][7] for
> small Browserify bundles.

## Usage

```js
const FancyFormat = require('@studio/log-format/fancy');

require('@studio/log')
  .pipe(new FancyFormat())
  .pipe(process.stdout);
```

## Install

```bash
❯ npm i @studio/log-format
```

## API

### Transform Streams

- `@studio/log-format/basic`: Basic formatting with ISO dates and no colors.
- `@studio/log-format/fancy`: Colored output with localized dates. This is the
  default formatter when using the `emojilog` CLI.

Some advanced formatting is applied by naming conventions on top level
properties of the `data` object.

- `ts` or prefix `ts_` formats a timestamp.
- `ms` or prefix `ms_` formats a millisecond value.
- `bytes` or prefix `bytes_` formats a byte value.

These options can be passed to the bundled format transforms:

- `ts: false` hide timestamps
- `topic: false` hide topics
- `ns: false` hide namespaces
- `data: false` hide data
- `stack: style` with these stack styles:
    - `false`: hide the error entirely
    - `message` only show the error message
    - `peek` show the message and the first line of the trace (default)
    - `full` show the message and the full trace

The `stack` option is also used to format the `"cause"`, if present.

### Writable Streams

- `@studio/log-format/console`: Console logger, making use of the `console.log`
  default formatting. This format has no options.

## Custom Format Transforms

You can also write your own format transforms by implementing a [node transform
streams][5] in `writableObjectMode`. Here is an example transform
implementation, similar to the [ndjson transform][6] for Studio Log:

```js
const { Transform } = require('stream');

const ndjson = new Transform({
  writableObjectMode: true,

  transform(entry, enc, callback) {
    const str = JSON.stringify(entry);
    callback(null, `${str}\n`);
  }
});
```

## Related modules

- 👻 [Studio Log][1] logs ndjson to an output stream
- 🏷 [Studio Log Topics][2] defines the topics used by Studio Log
- 🌈 [Studio Emojilog][3] is a CLI to pretty print the Studio Log ndjson with
  emoji
- 📦 [Studio Changes][4] is used to create the changelog for this module.

## License

MIT

<div align="center">Made with ❤️ on 🌍</div>

[1]: https://github.com/javascript-studio/studio-log
[2]: https://github.com/javascript-studio/studio-log-topics
[3]: https://github.com/javascript-studio/studio-emojilog
[4]: https://github.com/javascript-studio/studio-changes
[5]: https://nodejs.org/api/stream.html#stream_implementing_a_transform_stream
[6]: https://github.com/javascript-studio/studio-ndjson
[7]: https://github.com/javascript-studio/studio-browser-stream
npm package: @studio/log-topics
Description: The topics used by Studio Log
Author: Maximilian Antoni
Latest version: 1.0.0

# Studio Log Topics

🏷 The topics used by [Studio Log][1].

## Usage

```js
const topics = require('@studio/log-topics');

console.log(topics.broadcase); // Prints 📣
```

## Install

```bash
❯ npm i @studio/log-topics
```

## Topics

Instead of log levels, [Studio Log][1] uses a set of topics to categorize,
format and filter logs. Unlike log levels, topics are not ordered by severity.

These topics are available:

- ✅ = `ok`
- ⚠️ = `warn`
- 🐛 = `issue`
- 🚨 = `error`
- 🙈 = `ignore`
- 🔺 = `input`
- 🔻 = `output`
- 📤 = `send`
- 📥 = `receive`
- 📡 = `fetch`
- 🏁 = `finish`
- 🚀 = `launch`
- ⛔️ = `terminate`
- ✨ = `spawn`
- 📣 = `broadcast`
- 💾 = `disk`
- ⏱  = `timing`
- 💰 = `money`
- 🔢 = `numbers`
- 👻 = `wtf`

## Related modules

- 👻 [Studio Log][1] logs ndjson to an output stream
- 🎩 [Studio Log Format][2] pretty print Studio Log nsjson
- 🌈 [Studio Emojilog][3] is a CLI to pretty print the Studio Log ndjson with emoji
- 📦 [Studio Changes][4] is used to create the changelog for this module.

## License

MIT

<div align="center">Made with ❤️ on 🌍</div>

[1]: https://github.com/javascript-studio/studio-log
[2]: https://github.com/javascript-studio/studio-log-format
[3]: https://github.com/javascript-studio/studio-emojilog
[4]: https://github.com/javascript-studio/studio-changes
npm package: @studio/log-x
Description: x-out confidential data in log entries
Author: Maximilian Antoni
Latest version: 1.3.1

# Studio Log X

❎ X-out confidential data in log entries of a [Studio Log][1] stream.

## Usage

```js
const logger = require('@studio/log').out(process.stdout);
const logX = require('@studio/log-x');

const log = logger('app');
log.filter(logX('connection.password'));

log.input('db', { connection: { login: 'admin', password: 'secret' } });
```

The above produces this log output:

```json
{"ts":1486630378584,"ns":"app","topic":"input","msg":"db","data":{
  "connection":{"login":"admin","password":"·····"}}}
```

Data objects are copied before modification to make it safe to pass object
references as log data.

## Install

```bash
❯ npm i @studio/log-x
```

## API

- `x(path...)`: Returns a transform stream in object mode that filters the
  properties at the given paths.
- `x(map)`: Maps topic names to filters. The special `*` topic is used if no
  matching topic filter was specified.
- `x.ns(ns, path...)`: Like `x(path...)`, but only for the specified namespace.
- `x.ns(ns, map)`: Like `x(map)`, but only for the specified namespace.
- `x.all(transform...)`: Combine the given x-out transforms.


```js
// x(map)
logX({
  input: ['connection.user', 'connection.password'],
  '*': ['token']
});

// x.ns(ns, path...)
logX.ns('Login', 'request.user', 'request.password');
```

## Supported notations

- `key`: Property access.
- `key.path`: Property path access.
- `items[0]`: Array index access.
- `items[':a']`: Quoted property access.
- `item.*`: All values in object.
- `items[*]`: All entries in array.
- `item.*.key`: Property access in each value of object.
- `items[*].key`: Property access in each entry of array.

## Related modules

- 👻 [Studio Log][1] logs ndjson to an output stream
- 📦 [Studio Changes][2] is used to create the changelog for this module.

## License

MIT

<div align="center">Made with ❤️ on 🌍</div>

[1]: https://github.com/javascript-studio/studio-log
[2]: https://github.com/javascript-studio/studio-changes
npm package: @studio/ndjson
Description: Transforms to parse and stringify ndjson
Author: Maximilian Antoni
Latest version: 2.1.0

# Studio ndjson

☯️ Transforms to parse and stringify [ndjson][1].

> This module also works in the browser using a [naive `stream` shim][4] for
> small Browserify bundles.

## Usage

To stringify an object stream into ndjson:

```js
const StringifyTransform = require('@studio/ndjson/stringify');

object_stream.pipe(new StringifyTransform()).pipe(process.stdout);
```

To parse ndjson into an object stream:

```js
const ParseTransform = require('@studio/ndjson/parse');

process.stdin.pipe(new ParseTransform()).pipe(object_stream);
```

## Install

```bash
❯ npm i @studio/ndjson
```

## API

Require the transform you need:

- `@studio/ndjson/stringify`: Exports the `StringifyTransform` class which
  reads objects and writes strings.
- `@studio/ndjson/parse`: Exports the `ParseTransform` class which reads
  strings and writes objects.

The module main exports `StringifyTransform` and `ParseTransform` if you need
both:

```js
const { StringifyTransform, ParseTransform } = require('@studio/ndjson');
```

### ParseTransform options

The `ParseTransform` constructor accepts an `options` object with these
properties:

- `loose`: Whether to ignore data before the first `{` in each line.
- `loose_out`: A stream to receive data that was found before the first `{` in
  each line. Implies `loose`.

### Error handling

If `JSON.parse` or `JSON.stringify` throw an error, the transform emits an
`error` event with the error object having a `code` property with
`ERR_JSON_PARSE` or `ERR_JSON_STRINGIFY`. For parse errors, the `line` property
on the error is the string that could not be parsed.

## Related modules

- 👻 [Studio Log][2]: This module was refactored out of the logger for
  [JavaScript Studio][3].
- 💧 [Studio Browser Stream][4] is a naive `stream` shim for small Browserify
  bundles.
- 📦 [Studio Changes][5] is used to create the changelog for this module.

## License

MIT

<div align="center">Made with ❤️ on 🌍</div>

[1]: http://ndjson.org/
[2]: https://github.com/javascript-studio/studio-log
[3]: https://javascript.studio
[4]: https://github.com/javascript-studio/studio-browser-stream
[5]: https://github.com/javascript-studio/studio-changes
npm package: @studio/related-tests
Description: Run related tests with lint-staged
Author: Maximilian Antoni
Latest version: 0.2.0

# Studio Related Tests

🎓 Run related tests with `lint-staged`.

> Runs a command with all tests for staged files named `${filename}.test.js`,
> `${filename}-test.js`, `${filename}_anything.test.js`,
> `${filename}-anything.test.js` or `${filename}.anything.test.js`.

## Setup

This assumes you have [husky][] and [lint-staged][] installed.

```bash
npm i @studio/related-tests -D
```

**lint-staged.config.js**

```js
const withRelatedTests = require('@studio/related-tests');

module.exports = {
  '*.js': withRelatedTests('mocha')
};
```

## Tip

To run the same test command, configure a `test:files` script and call
`withRelatedTests('npm run test:files')`:

```json
{
  "scripts": {
    "test": "npm run test:files -- './{,!(node_modules)/**}/*.test.js'",
    "test:files": "mocha --require test/hooks.js"
  }
}
```

[husky]: https://github.com/typicode/husky
[lint-staged]: https://github.com/okonet/lint-staged
npm package: @studio/tsconfig
Description: The JavaScript Studio sharable tsconfig
Author: Maximilian Antoni
Latest version: 1.3.0

# JavaScript Studio tsconfig.json

> Using the TypeScript compiler with JSDoc

This configuration is supposed to be used with [`@studio/eslint-config`][1].

## Usage:

`tsconfig.json`

```json
{
  "extends": "@studio/tsconfig",
  "include": ["**/*.js"],
  "exclude": ["node_modules"]
}
```

## License

MIT

<div align="center">Made with ❤️ on 🌍</div>

[1]: https://github.com/javascript-studio/eslint-config