open-index/open-npm huggingface dataset:
npm package: @fizmo/ember-cli-emblem
Description: An ember-cli addon for Emblem.js templates.
Latest version: 0.10.0

[![Travis CI](https://travis-ci.org/fizmo/ember-cli-emblem.svg?branch=master)](https://travis-ci.org/fizmo/ember-cli-emblem)
[![Dependencies Status](https://david-dm.org/fizmo/ember-cli-emblem/status.svg)](https://david-dm.org/fizmo/ember-cli-emblem)
[![devDependencies Status](https://david-dm.org/fizmo/ember-cli-emblem/dev-status.svg)](https://david-dm.org/fizmo/ember-cli-emblem?type=dev)

# Ember-cli-emblem

This is an ember-cli add-on that brings support for
[Emblem.js](http://emblemjs.com) templates.

This printer is based on version 0.9.1+ of Emblem. It compiles `.embl`,
`.emblem` and `.em` templates into Handlebars-syntax templates which
will then be compiled as standard `.hbs` templates by ember-cli.

## Compatibility

This add-on is currently tested with Ember 2.8 LTS, 2.12 LTS, as well
as the current release, beta, and canary profiles. The replacement
generators for component, route, and template are tested against
Node 4.x, 6.x, and 8.x.

## Installation

If you are using the `broccoli-emblem-compiler` it should be removed
before using this add-on: `npm uninstall --save-dev broccoli-emblem-compiler`.

* `ember install @fizmo/ember-cli-emblem`

## Blueprints

ember-cli-emblem supports blueprint generation for routes, components,
and templates. Use the `ember generate` command to add new Emblem templates.

## Options

ember-cli-emblem exposes a few instrumentation options for Emblem:

  - `blueprints: false` if true, will disable blueprint generation.  (default: false);
  - `quiet: false` if true, will quiet Emblem's deprecation notices.  (default: false)
  - `debugging: false`  if true, will output the handlebars output of Emblem to STDOUT. (default: false)

Simply add these to your `config/environment.js`:

```
ENV.emblemOptions {
  blueprints: false
}
```
npm package: @fizzer/croppie
Description: A simple javascript image cropper
Latest version: 2.6.8

# Croppie - A Javascript Image Cropper


## To Install
Bower: `bower install croppie`

Npm: `npm install croppie`

Download:
[croppie.js](croppie.js) & [croppie.css](croppie.css)

## Adding croppie to your site
```html
<link rel="stylesheet" href="croppie.css" />
<script src="croppie.js"></script>
```

## Documentation
[Documentation](http://foliotek.github.io/Croppie#documentation)

## Related Libraries
* [croppie-dart](https://gitlab.com/michel.werren/croppie-dart)
* [ngCroppie](https://github.com/allenRoyston/ngCroppie)
* [angular-croppie](https://github.com/lpsBetty/angular-croppie)
* [django-croppie](https://github.com/dima-kov/django-croppie)
* [vue-croppie](https://github.com/jofftiquez/vue-croppie)

## Contributing
First, thanks for contributing.  This project is difficult to maintain with one person.  Here's a "checklist" of things to remember when contributing to croppie.
* Don't forget to update the documentation.
* If you're adding a new option/event/method, try adding to an example on the documentation.  Or create a new example, if you feel the need.
* We don't have tests for Croppie :( (if you want to create tests I'd be forever grateful), so please try to test the functionality you're changing on the demo page.  I've tried to add as many use-cases as I can think of on there.  Compare the functionality in your branch to the one on the official page.  If they all still work, then great!

If you're looking for a simple server to load the demo page, I use https://github.com/tapio/live-server.

#### Minifying
`uglifyjs croppie.js -c -m -r '$,require,exports' -o croppie.min.js`

#### Releasing a new version
For the most part, you shouldn't worry about these steps unless you're the one handling the release.  Please don't bump the release and don't minify/uglify in a PR.  That just creates merge conflicts when merging.  Those steps will be performed when the release is created.
1. Bump version in croppie.js
2. Minify/Uglify
3. Commit
4. npm version [new version]
5. `git push && git push --tags`
6. `npm publish`
7. Draft a new release with new tag on https://github.com/Foliotek/Croppie/releases
8. Deploy to gh-pages `npm run deploy`
npm package: @fizzwiz/prism
Description: Abstract patterns for solving problems.
Author: Roberto Venditti
Latest version: 0.0.0-dev.3
Deprecated: ⚠️ Deprecated. Please use @fizzwiz/search instead: https://www.npmjs.com/package/@fizzwiz/search

# 🔺 @fizzwiz/prism

**Solve complex problems with reusable, foundational abstractions — locally or at scale.**

`@fizzwiz/prism` provides core problem-solving abstractions that help you explore solution spaces, whether ordinary or extraordinary. Patterns can run locally or tackle complex, even potentially infinite, problem domains spanning across machines.

---

## 🔹 Currently Supported Types

- **Run** — a locally executable, focused abstraction  
- **Search** — defines a solution as the result of exploring a potentially infinite space of candidates  
- **AsyncSearch** — a search spanning a space distributed across multiple machines  

> Learn more at [prism.blog.fizzwiz.cloud](https://prism.blog.fizzwiz.cloud) — explore the philosophy, concepts, and patterns behind the design.

---

## 🛠️ Installation

### Node.js (ES Modules)

```bash
npm install @fizzwiz/prism
```

```js
import { Run, Search, AsyncSearch } from '@fizzwiz/prism';
```

### Browser (via CDN)

```html
<script src="https://cdn.jsdelivr.net/npm/@fizzwiz/prism/dist/prism.bundle.js"></script>
<script>
  const search = new prism.Search();
</script>
```

The global `prism` object exposes all classes.

---

## 📘 Documentation

- 📗 **API Reference**: [fizzwiz.github.io/prism](https://fizzwiz.github.io/prism)  
  Detailed class methods, properties, and usage examples.

- 📘 **Concepts & Guides**: [fizzwiz-prism-js.blogspot.com](https://fizzwiz-prism-js.blogspot.com)  
  Tutorials, walkthroughs, and philosophy behind the abstractions.
npm package: @fizzwiz/search
Description: Declarative lazy search abstractions for exploring and solving complex computational problems, synchronously or asynchronously.
Author: Roberto Venditti
Latest version: 0.0.0-dev.1

# 🧘‍♂️ @fizzwiz/search

A lightweight JavaScript library for defining **declarative, lazy search algorithms**, both **synchronous** and **asynchronous**, with fluent, queue-driven iteration.

This library is ideal for exploring large or infinite search spaces efficiently and transparently, with full control over candidate generation, expansion, and concurrency.

---

## Features

* **Synchronous search** with `Search`
* **Asynchronous search** with `AsyncSearch` (parallel or distributed)
* Fluent, chainable API:

  * Define initial candidates via `from()`
  * Describe expansion logic via `through()`
  * Control iteration order with `via()`
  * Limit branching with `max()`
  * Control concurrency (async only) with `inParallel()`
* Fully lazy, iterable (or async iterable), suitable for memory-efficient algorithms
* Compatible with any queue strategy (BFS, DFS, priority queues, custom)
  
---

## 🧠 Guides & Concepts

Deep-dive into practical patterns, real-world use cases, and advanced techniques:

👉 https://search.blog.fizzwiz.cloud

---

## Installation

```bash
npm install @fizzwiz/search
```

---

## Usage

### Synchronous Search

```js
import { Search } from "@fizzwiz/search";
import { ArrayQueue } from "@fizzwiz/sorted";

const search = new Search()
  .from(1, 2, 3)
  .through(x => [x + 1, x + 2])
  .via(new ArrayQueue());

for (const candidate of search) {
  console.log(candidate);
}
```

### Asynchronous Search

```js
import { AsyncSearch } from "@fizzwiz/search";
import { ArrayQueue } from "@fizzwiz/sorted";

const asyncSearch = new AsyncSearch()
  .from(1, 2, 3)
  .through(async x => [x + 1, x + 2])
  .via(new ArrayQueue())
  .inParallel(4);

for await (const candidate of asyncSearch) {
  console.log(candidate);
}
```

---

## API

### `Search` (synchronous)

* `from(...starts)` — set initial candidates
* `through(fn)` — define search space expansion function
* `via(queue, max)` — set queue strategy and optional maximum queue size
* Iterable: use `for...of` to iterate candidates lazily

### `AsyncSearch` (asynchronous)

* `from(...starts)` — set initial candidates (can be async iterable or promise)
* `through(fn)` — define asynchronous expansion function
* `via(queue, max)` — set queue strategy
* `inParallel(cores)` — define concurrent expansion batch
* Async iterable: use `for await...of` to iterate candidates

---

## 🔗 Links

* 📚 [In-depth guides on the blog](https://search.blog.fizzwiz.cloud)
* 🌐 [Bundle version for browser execution (jsDelivr)](https://cdn.jsdelivr.net/gh/fizzwiz/search/dist/search.bundle.js)
* 💬 [GitHub Pages](https://fizzwiz.github.io/search/)
* 🐱 [GitHub Sources](https://github.com/fizzwiz/search)
npm package: @fizzy-finance/swap-core
Description: ⚒️ An SDK for building applications on top of Uniswap V3
Latest version: 3.1.0

# Uniswap SDK Core

[![Unit Tests](https://github.com/Uniswap/uniswap-sdk-core/workflows/Unit%20Tests/badge.svg)](https://github.com/Uniswap/uniswap-sdk-core/actions?query=workflow%3A%22Unit+Tests%22)
[![Lint](https://github.com/Uniswap/uniswap-sdk-core/workflows/Lint/badge.svg)](https://github.com/Uniswap/uniswap-sdk-core/actions?query=workflow%3ALint)
[![npm version](https://img.shields.io/npm/v/@uniswap/sdk-core/latest.svg)](https://www.npmjs.com/package/@uniswap/sdk-core/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/sdk-core/latest.svg)](https://bundlephobia.com/result?p=@uniswap/sdk-core@latest)

This code is shared across Uniswap TypeScript SDKs.
npm package: @fizzy-finance/v2-sdk
Description: 🛠 An SDK for building applications on top of Fizzy Swap
Latest version: 3.0.29

# Uniswap V2 SDK

[![Unit Tests](https://github.com/Uniswap/uniswap-v2-sdk/workflows/Unit%20Tests/badge.svg)](https://github.com/Uniswap/uniswap-v2-sdk/actions?query=workflow%3A%22Unit+Tests%22)
[![Lint](https://github.com/Uniswap/uniswap-v2-sdk/workflows/Lint/badge.svg)](https://github.com/Uniswap/uniswap-v2-sdk/actions?query=workflow%3ALint)
[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
[![npm version](https://img.shields.io/npm/v/@uniswap/v2-sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/v2-sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/v2-sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/v2-sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://uniswap.org/docs/v2/SDK/getting-started/).
npm package: @fizzy-finance/v3-sdk
Description: ⚒️ An SDK for building applications on top of Uniswap V3
Latest version: 3.5.8

# Alpha software

The latest version of the SDK is used in production in the Uniswap Interface,
but it is considered Alpha software and may contain bugs or change significantly between patch versions.
If you have questions about how to use the SDK, please reach out in the `#dev-chat` channel of the Discord.
Pull requests welcome!

# Uniswap V3 SDK

[![Unit Tests](https://github.com/Uniswap/uniswap-v3-sdk/workflows/Unit%20Tests/badge.svg)](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3A%22Unit+Tests%22)
[![Lint](https://github.com/Uniswap/uniswap-v3-sdk/workflows/Lint/badge.svg)](https://github.com/Uniswap/uniswap-v3-sdk/actions?query=workflow%3ALint)
[![npm version](https://img.shields.io/npm/v/@uniswap/v3-sdk/latest.svg)](https://www.npmjs.com/package/@uniswap/v3-sdk/v/latest)
[![npm bundle size (scoped version)](https://img.shields.io/bundlephobia/minzip/@uniswap/v3-sdk/latest.svg)](https://bundlephobia.com/result?p=@uniswap/v3-sdk@latest)

In-depth documentation on this SDK is available at [uniswap.org](https://docs.uniswap.org/).
npm package: @fizzygalacticus/chunky-promise
Description: Operate on arrays of data asynchronously and in chunks!
Author: Dustin L. Dodson
Latest version: 1.0.2

# chunky-promise

`chunky-promise` offers the ability to split up operations/function calls over data into chunks. For example, this is very useful if you need to make network/api requests for each entry in a large data set. This **can** be used to perform synchronous operations, but do keep in mind that `chunky-promise` does return a `Promise` object.

## Installation

`yarn add @fizzygalacticus/chunky-promise` || `npm i --save @fizzygalacticus/chunky-promise`

## Usage

`chunky-promise` accepts four arguments:
1. `arr`: the array to perform your operations over
2. `chunkSize`: your desired size of chunks to break `arr` into
3. `op`: function to operate on data. Has signature `(val, idx) => any`
4. `handler`: (optional) - handle results from `op` as you go, instead of after all have completed.

**note** if you specify a `handler` method, the resulting array from `chunky-promise` will be empty

### Without handler
```js
const chunkyPromise = require('@fizzygalacticus/chunky-promise');

const myData = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const res = await chunkyPromise(myData, 2, (val, idx) => ({ [val]: idx }));

console.log(res);
```

outputs:
```sh
[
    { '1': 0 },
    { '2': 1 },
    { '3': 2 },
    { '4': 3 },
    { '5': 4 },
    { '6': 5 },
    { '7': 6 },
    { '8': 7 },
    { '9': 8 },
    { '10': 9 },
]
```

### With handler

```js
const chunkyPromise = require('@fizzygalacticus/chunky-promise');

const myData = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const res = await chunkyPromise(myData, 2, (val, idx) => ({ [val]: idx }), console.log);

console.log(res); // empty array
```

outputs:
```sh
[ { '1': 0 }, { '2': 1 } ]
[ { '3': 2 }, { '4': 3 } ]
[ { '5': 4 }, { '6': 5 } ]
[ { '7': 6 }, { '8': 7 } ]
[ { '9': 8 }, { '10': 9 } ]
[]
```
npm package: @fizzygalacticus/colored-fancy-log
Description: fancy-log but with colors!
Author: Dustin L. Dodson
Latest version: 1.0.0

# colored-fancy-log

fancy-log but with colors!

Uses [fancy-log](https://www.npmjs.com/package/fancy-log) and [colors](https://www.npmjs.com/package/colors) to create time-stamped, colored, and (optionally) named loggers.

## Installation

Using `npm`:
```sh
npm i --save @fizzygalacticus/colored-fancy-log
```

Using `yarn`:
```sh
yarn add --save @fizzygalacticus/colored-fancy-log
```

## Usage

By default, colored-fancy-log exports a logger with no name to be used immediately:

```js
const logger = require('@fizzygalacticus/colored-fancy-log');

logger.success('Hello, world!');
```

Output:

![output-1](https://i.imgur.com/yOknIn2.png)

To name a logger:
```js
const { getLogger } = require('@fizzygalacticus/colored-fancy-log');
const logger = getLogger({ name: 'test-logger' });

logger.success('Hello, world!');
```

Output:

![output-2](https://i.imgur.com/jrQu7TO.png)

Don't like the default name <-> message separator? You can change that too!

```js
const { getLogger } = require('@fizzygalacticus/colored-fancy-log');
const logger = getLogger({ name: 'test-logger', separator: '=>' });

logger.success('Hello, world!');
```

Output:

![output-3](https://i.imgur.com/H98YhYp.png)

## Available Functions

| Name          | Output                                              |
| ------------- | --------------------------------------------------- |
| `log`         | ![log-example](https://i.imgur.com/eJqUO5X.png)     |
| `info`        | ![info-example](https://i.imgur.com/Nv7MmvD.png)    |
| `lame`        | ![lame-example](https://i.imgur.com/xJKeHVU.png)    |
| `success`     | ![success-example](https://i.imgur.com/lnFZCIb.png) |
| `warn`        | ![warn-example](https://i.imgur.com/vBV0XXj.png)    |
| `error`       | ![error-example](https://i.imgur.com/yUyrbws.png)   |
| `evil`        | ![evil-example](https://i.imgur.com/B8bjqKn.png)    |
| enable        | Sets logger to enabled                              |
| disable       | Sets logger to disabled (won't print anything)      |
| toggleEnabled | Toggles loggers `enabled` variable                  |
| setEnabled    | Sets loggers `enabled` variable                     |
npm package: @fizzygalacticus/is-promise
Description: Help determine if a value is a Promise.
Author: Dustin L. Dodson
Latest version: 1.0.1

# is-promise

Helps determine if a value is a Promise.

## Installation

`yarn add @fizzygalacticus/is-promise` || `npm i @fizzygalacticus/is-promise`

## Usage

`is-promise` returns an object with two values: `promise` and `uncertainty`. `promise` will be true if there is a great chance that the value being tested is a promise. `uncertainty` will be true if there is any uncertainty about whether or not the value is a promise.

```js
const isPromise = require('@fizzygalacticus/is-promise');

const Q = require('q');
const Bluebird = require('bluebird');
const RSVP = require('rsvp');
const FakePromise = require('promise');

const results = isPromise(new Promise(resolve => resolve())); // { promise: true, uncertainty: false }
const results = isPromise(new Q(resolve => resolve())); // { promise: true, uncertainty: true }
const results = isPromise(new Bluebird(resolve => resolve())); // { promise: true, uncertainty: true }
const results = isPromise(new FakePromise(resolve => resolve())); // { promise: true, uncertainty: true }
const results = isPromise(new RSVP.Promise(resolve => resolve())); // { promise: true, uncertainty: true }
```

## Notes

In order to be 100% certain that an object is a promise, you should stick to using native Node promises.
npm package: @fizzygalacticus/promise-or-not
Description: Perform an action on the result of a function, synchronously or asyncronously.
Author: Dustin L. Dodson
Latest version: 2.0.0

# promise-or-not

`promise-or-not` is a function decorator that can act as a middleman to perform operations on resulting data, even if the function initially returns a promise.

## Installation

`yarn add @fizzygalacticus/promise-or-not` || `npm i --save @fizzygalacticus/promise-or-not`

## Usage

**Parameters:**
* `fn` - The primary function you wish to run
* `onData` - The function to call when data is received
* `onError` - The function to call when an error occurrs
* `returnPromise` - Forces even synchronous functions to return a `Promise`. This can be useful in situations where you may want to make multiple calls to `promise-or-not` as I do in my [savethis](https://github.com/FizzyGalacticus/savethis) project.

For synchronous functions:
```js

const promiseOrNot = require('@fizzygalacticus/promise-or-not');

const mySyncFn = i => 'some return value ' + i;

const decorated = promiseOrNot(mySyncFn, val => console.log(val));

const val = decorated(1); // will print `1`
console.log(val) // `1`

```

For asynchronous functions:
```js

const promiseOrNot = require('@fizzygalacticus/promise-or-not');

const mySyncFn = i => Promise.resolve('some return value ' + i);

const decorated = promiseOrNot(mySyncFn, val => console.log(val));

decorated(1).then(console.log); // will print `1` twice

```

## Why?

This was initially written for my [trythis](https://github.com/FizzyGalacticus/trythis) library, which just prints the return value of a wrapped function (such as the example above). I then realized that this would be very handy to abstract away for other, potentially similar use cases.
npm package: @fizzygalacticus/savethis
Description: Save the result of anything!
Author: Dustin L. Dodson
Latest version: 1.0.0

# savethis

A util to help save the return value of a function with minimal effort. Very helpful when debugging, especially with lots of async operations in between.

## Installation

Using `npm`:
```sh
npm i --save-dev @fizzygalacticus/savethis
```

Using `yarn`:
```sh
yarn add --dev @fizzygalacticus/savethis
```

## Usage

`savethis` is a decorator that can be used on both asynchronous and synchronous functions:

**synchronous:**
```js
// Saves "hello, world!" to test.txt
const res = savethis(() => 'hello, world!', 'test.txt', {/* ...options */})(/* ...params */);
console.log(res); // "hello, world!"
```

**asynchronous:**
```js
// Saves "hello, world!" to test.txt
const res = await savethis(() => Promise.resolve('hello, world!'), 'test.txt', {/* ...options */})(/* ...params */);
console.log(res); // "hello, world!"
```

### Options
* `save` - a function to save the data, with the signature `(path, data) => any`. For original functions that are synchronous (don't return a `Promise`), this is `fs.writeFileSync`. Otherwise the default is a `promisify`'d `fs.writeFile`.
* `format` - a function to specify the formatting prior to write. Default is `data => JSON.stringify(data, null, 4)`.

**notes:**
* If your formatting function returns a `Promise`, everything will still function as it should, although if your original function does not return a `Promise`, you will need to take care to catch any errors or rejections from the formatter.
npm package: @fizzygalacticus/trythis
Description: Try anything and see what happens!
Author: Dustin L. Dodson
Latest version: 1.0.2

# trythis

A util to help trace errors

## Installation

Using `npm`:
```sh
npm i --save-dev @fizzygalacticus/trythis
```

Using `yarn`:
```sh
yarn add --dev @fizzygalacticus/trythis
```

## Usage

`trythis` can be used on both asynchronous and synchronous functions:

**synchronous:**
```js
trythis(() => `this shouldn't throw`)(/* ...params */);
trythis(() => {throw new Error('this should throw')})(/* ...params */);
```

output:
![sync-output](https://i.imgur.com/JMeuVAg.png)

**asynchronous:**
```js
trythis(() => Promise.resolve(`this shouldn't throw`))(/* ...params */);
trythis(() => Promise.reject('this should throw'))(/* ...params */);
```

output:
![async-output](https://i.imgur.com/1ni4Y2e.png)
npm package: @fjaasno/design
Description: Designkomponenter for fjaas.no.
Author: fjaasno
Latest version: 0.7.11
Deprecated: Not in use anymore

# Designkomponenter

Noen enkle designkomponenter for å starte med custom elements.

## Generelt rundt PWA

Trenger å installere følgende:

```
npm install workbox-precaching
npm install --save-dev workbox-cli
```

## fjaas-pwa

Gir en spesifikk dialog for om man vil oppdatere PWA-en eller ikke.
I første omgang er det kun en dialog, men på sikt ser jeg for meg at denne tar seg av alt rundt å snakke med SW i forbindelse med oppdatering.

# Bruk

Det er litt innfløkt, men jeg ser i første omgang for meg tre scenarioer:

- A) Kun TypeScript med Parcel eller lignende
- B) Bruk av Angular
- C) Laste ned via CDN

## A) I moderne nettlesere og ved bruk av bundlere

Bruk denne: https://stenciljs.com/docs/custom-elements.
Da kan man i koden enten velge kun de man vil bruke:

```
import { FjaasPwa } from '@fjaasno/design/dist/custom-elements';
customElements.define('fjaas-pwa', FjaasPwa);
```

eller alle på en gang:

```
import { defineCustomElements } from '@fjaasno/design/dist/custom-elements';
defineCustomElements();
```

## B) Ved bruk av rammeverk

Angular (https://stenciljs.com/docs/angular)

app.module.ts

```
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
...
@NgModule({
  ...
  schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
```

main.ts

```
import { defineCustomElements } from '@fjaasno/design/loader';
...
defineCustomElements();
```

## C) CDN

Direkte via CDN (https://stenciljs.com/docs/javascript)
En av disse (med eller uten eksplisitt versjon):

```
<script type="module" src="https://cdn.jsdelivr.net/npm/@fjaasno/design/dist/design/design.esm.js"></script>
<script nomodule="" src="https://cdn.jsdelivr.net/npm/@fjaasno/design/dist/design/design.js"></script>

<script type="module" src="https://cdn.jsdelivr.net/npm/@fjaasno/design@0.2.6/dist/design/design.esm.js"></script>
<script nomodule="" src="https://cdn.jsdelivr.net/npm/@fjaasno/design@0.2.6/dist/design/design.js"></script>
```

# Mer om PWA og Workbox

https://developers.google.com/web/tools/workbox/guides/precache-files
https://developers.google.com/web/fundamentals/primers/service-workers/lifecycle
https://felixgerschau.com/how-to-communicate-with-service-workers/
https://medium.com/runic-software/simple-guide-to-workbox-in-angular-197c25396e68

....
npm package: @fjaasno/eslint-config-fjaas
Description: Konfigurasjon av ESLint og Prettier for fjaas.no med mer.
Author: fjaasno
Latest version: 0.3.5
Deprecated: Not in use anymore

# eslint-config-fjaas

TODO: Sørge for at det blir publisert til npm ved bygg via GitHub Actions.

## Plain TypeScript-prosjekt

Installer avhengighetene som trengs:

```
npx install-peerdeps -D @fjaasno/eslint-config-fjaas
```

Konfigurer i package.json (eller .eslintrc.js etc):

```
"eslintConfig": {
    "extends": [
        "@fjaasno/eslint-config-fjaas"
    ]
},
```

TODO: Trengs ikke denne?

```
parserOptions: {
    tsconfigRootDir: __dirname,
},
```

Nyttige skript til package.json:

```
"lint": "eslint .",
"lint:fix": "eslint . --fix"
```

Må i .vscode/settings.json-fila til dette prisjektet, i hvert fall dersom formatOnSave er på som default for disse filene:

```
  "[javascript]": {
    "editor.formatOnSave": false
  },
  "[typescript]": {
    "editor.formatOnSave": false
  },
```

## Angular-prosjekt

Lag ny app på denne måten:
(se https://github.com/angular-eslint/angular-eslint for mer info, og hvordan migrere eksisterende prosjekter.)

```
ng new app --collection=@angular-eslint/schematics --strict --prefix=jos --routing --style=scss
```

Installer:

```
npx install-peerdeps -D @fjaasno/eslint-config-fjaas
npm i -D eslint-plugin-jasmine
```

Vi trenger sannsynligvis .eslintrc.js:

- Endre .eslintrc.json til .eslintrc.js.
- Legg til module.exports = i starten av fila.
- Legg .eslintrc.js til files.
- Legg tsconfigRootDir: \_\_dirname, til parserOptions.
- Legg til plugins: ['jasmine'], over extends.
- Legg til disse på toppen av extends: '@fjaasno/eslint-config-fjaas', 'plugin:jasmine/recommended',
- Legg til env: {browser: true, es2020: true, jasmine: true}, under root-raden.

.editorconfig kan slettes. Vi stoler på reglene til eslint og prettier.

## Kilder

Inspirert av https://github.com/wesbos/eslint-config-wesbos.

[link typescript-eslint getting started](https://github.com/typescript-eslint/typescript-eslint/blob/master/docs/getting-started/linting/README.md)

[link eslint-plugin-prettier and eslint-config-prettier together](https://stackoverflow.com/questions/44690308/whats-the-difference-between-prettier-eslint-eslint-plugin-prettier-and-eslint#:~:text=prettier%2Deslint%20%3A%20Runs%20prettier%20then,%2D%2Dfix%20on%20the%20code.&text=eslint%2Dconfig%2Dprettier%20%3A%20This,off%2C%20or%20special%20configurations):
"It's the recommended practice to let Prettier handle formatting and ESLint for non-formatting issues, prettier-eslint is not in the same direction as that practice, hence prettier-eslint is not recommended anymore. You can use eslint-plugin-prettier and eslint-config-prettier together."
npm package: @fjavierlh/notification-message
Description: Webcomponent notification-message following open-wc recommendations
Author: fjavierlh
Latest version: 1.0.4

# \<notification-message>

This webcomponent follows the [open-wc](https://github.com/open-wc/open-wc) recommendation.

## Installation
```bash
npm i notification-message
```

## Usage
```html
<script type="module">
  import 'notification-message/notification-message.js';
</script>

<notification-message></notification-message>
```

## Linting with ESLint, Prettier, and Types
To scan the project for linting errors, run
```bash
npm run lint
```

You can lint with ESLint and Prettier individually as well
```bash
npm run lint:eslint
```
```bash
npm run lint:prettier
```

To automatically fix many linting errors, run
```bash
npm run format
```

You can format using ESLint and Prettier individually as well
```bash
npm run format:eslint
```
```bash
npm run format:prettier
```

## Testing with Web Test Runner
To run the suite of Web Test Runner tests, run
```bash
npm run test
```

To run the tests in watch mode (for &lt;abbr title=&#34;test driven development&#34;&gt;TDD&lt;/abbr&gt;, for example), run

```bash
npm run test:watch
```

## Demoing with Storybook
To run a local instance of Storybook for your component, run
```bash
npm run storybook
```

To build a production version of Storybook, run
```bash
npm run storybook:build
```


## Tooling configs

For most of the tools, the configuration is in the `package.json` to reduce the amount of files in your project.

If you customize the configuration a lot, you can consider moving them to individual files.

## Local Demo with `web-dev-server`
```bash
npm start
```
To run a local development server that serves the basic demo located in `demo/index.html`
npm package: @fjbarrena/dtrack-cli
Description: A small CLI to upload BOM files to OWASP Dependency Track (https://dependencytrack.org/) tool using CI/CD pipelines
Author: Francisco Javier Barrena
Latest version: 1.0.12

# dtrack-cli

A tiny CLI to upload BOM files to [OWASP Dependency Track Tool](https://dependencytrack.org/)

## Installation

Fast and furious, just install it using npm

```
npm install @fjbarrena/dtrack-cli -g
```

## Usage

Fast and furious. Just execute the following command:

```
dtrack-cli --server https://yourDependencyTrackServer.com/ --bom-path bom.xml
           --api-key PUT_YOUR_KEY_HERE --project-name "LOL Great Name"
           --project-version latest --auto-create true
```

To see the help, just run

```
dtrack-cli
```

## Requirements

* Tested in Dependency Track v3.8.0
* An API Key with enough permissions
  * You can get it in Administration -> Teams
  * Automation Team recommended, with the following permissions:
    * BOM_UPLOAD
    * PROJECT_CREATION_UPLOAD

## Gitlab CI/CD example

### package.json based projects (NodeJS, Angular, React...)

```yaml
stages:
  - dtrack

dependency-check:
  stage: dtrack
  image: node:12.17
  before_script:
    - npm install -g @cyclonedx/bom
    - npm install -g @fjbarrena/dtrack-cli
  script:
    # Assuming your code is in root, if not just make a cd
    - npm install
    - cyclonedx-bom -o bom.xml
    - dtrack-cli --server ${DTRACK_HOST_URL} --bom-path bom.xml --api-key ${DTRACK_API_KEY} --project-name ${NAME} --project-version ${VERSION} --auto-create true
  allow_failure: true
  only:
    - master
```

### PyPi based projects

```yaml
stages:
  - dtrack
  
dependency-check:
  stage: dtrack
  image: python:3.6
  before_script:
    - apt update -y
    - apt install curl gnupg -y
    - curl -sL https://deb.nodesource.com/setup_12.x  | bash -
    - apt install nodejs -y
    - npm install -g @fjbarrena/dtrack-cli
    - node -v
    - pip install cyclonedx-bom
  script:
    # Assuming your code is in root, if not just make a cd
    - cyclonedx-py -i requirements.txt -o bom.xml
    - dtrack-cli --server ${DTRACK_HOST_URL} --bom-path bom.xml --api-key ${DTRACK_API_KEY} --project-name ${NAME} --project-version ${VERSION} --auto-create true
  allow_failure: true
  only:
    - master
```

### Maven based projects

```yaml
dependency-check-java:
  stage: sonar
  image: maven:3.6-openjdk-11
  before_script:
    - apt update -y
    - apt install curl gnupg -y
    - curl -sL https://deb.nodesource.com/setup_12.x  | bash -
    - apt install nodejs -y
    - npm install -g @fjbarrena/dtrack-cli
  script:
    # Assuming your code is in root, if not just make a cd
    - mvn clean install
    - mvn org.cyclonedx:cyclonedx-maven-plugin:makeBom
    - dtrack-cli --server ${DTRACK_HOST_URL} --bom-path target/bom.xml --api-key ${DTRACK_API_KEY} --project-name ${NAME} --project-version ${VERSION} --auto-create true
  allow_failure: true
  only:
    - master
```
npm package: @fjbo-net/merge-objects
Description: Merges properties of two different objects.
Author: Francisco Javier Becerra-Ortiz
Latest version: 0.2.0

# merge-objects
> Merges properties of two different objects.


## Install
Install with [npm](https://www.npmjs.com/):

```sh
$ npm install --save @fjbo-net/merge-objects
```


## Usage
```js
'use-strict';

// Let's suppose you have 2 objects:
let
originalObject = {
	make: 'VW',
	model: 'Bettle',
	color: 'blue',
	year: 2019,
	info: {
		odometer: 0,
		interior: 'black',
		sunroof: false,
	}
},
newValues = {
	make: 'Volkswagen',
	doors: 4,
	info: {
		sunroof: true,
		interior: 'Black/beige',
		packages: [
			'Premium Audio',
			'Keyless access with push-button start'
		]
	}
};

// To use merge-objects, you would have to:
// 1. Import it
const mergeObjects = require('@fjbo-net/merge-objects');

// 2. Call it
mergeObjects(
	// parameter: origin [plain object]
	newValues,
	// parameter: target [plain object]
	originalObject
);
// Will return:
//{
// 	make: 'Volkswagen',
//	model: 'Bettle',
//	color: 'blue',
//	year: 2019,
//	info:
//	{
//		odometer: 0,
//		interior: 'Black/beige',
//		sunroof: true,
//		packages: [
//			'Premium Audio',
//			'Keyless access with push-button start'
//		]
//	}
//}


mergeObjects(
	// parameter: origin [plain object]
	// Is the object that will be merged
	newValues,
	// parameter: target [plain object]
	// Is the object that will be returned,
	// with the contents of 'origin'
	originalObject,
	// parameter: addNewValues [boolean]
	// Indicates if properties that doesn't exist
	// will be added to the 'target' object.
	// Defaults to false for root properties,
	// but will be ALWAYS true for nested objects.
	true,
);
// Will return:
// {
// 	make: 'Volkswagen',
// 	model: 'Bettle',
// 	color: 'blue',
// 	year: 2019,
// 	info: {
// 		odometer: 0,
// 		interior: 'Black/beige',
// 		sunroof: true,
// 		packages: [
// 			'Premium Audio',
// 			'Keyless access with push-button start'
// 		]
// 	},
// 	doors: 4
// }
```


## About
### Author
**FJBO | Francisco Javier Becerra-Ortiz**

### License
Copyright © 2019, [FJBO](https://github.com/fjbo-net).
Released under the [MIT License](LICENSE).
npm package: @fjbo-net/string-extensions
Description: String extension methods.
Author: Francisco Javier Becerra-Ortiz
Latest version: 0.1.1

# string-extensions
> String extension methods.


## Install
Install with [npm](https://www.npmjs.com/):

```sh
$ npm install --save @fjbo-net/string-extensions
```


## Usage
Pro tip: [Read this guide and try @fjbo-net/string-extensions side by side in RunKit](https://npm.runkit.com/@fjbo-net/string-extensions)
```js
'use-strict';

// To use string-extensions, you would have to:
// 1. Import it
const ext = require('@fjbo-net/string-extensions');


// 2. Call the methods you want to use:
// 2.1: You can call the methods in a "static" fashion
console.log(
	ext.toCamelCase('New Programs Makers')
)

// 2.2: "Patch" (or polyfill) your run-time environment:
// Calling the 'patch' method will make extension methods
// available natively like "any string".toCamelCase()
ext.patch(
	// (optional) param: userConfig [plain object]
	// This parameter lets you configure this process...
	{
		// property: verbose [boolean]
		// This option will output information to the console,
		// i.e list the methods that were added to the string class.
		verbose: true,

		// property: methods [string array]
		// This options lets you whitelist the methods you actually
		// want or need.
		// ONLY these methods will become available in the string class.
		// But, passing an empty array is like not passing a list at all.
		methods: [
			'toCamelCase'
		]
	}
);

// Now you can call extension methods just like any other native method.
console.log(
	"Neutral Political Machine".toCamelCase(),
)
// => "neutralPoliticalMachine"

console.log(
	"Even weird !@#$!@ characters___get cl*eaned up *(&^)%$ 2".toCamelCase()
)
// => "evenWeirdCharactersGetClEanedUp2"


/*
	But wait, if you are feeling adventurous you can forget
	about everything above and just import the extensions
	and used them right away:

	// you could either skip or use a config object ;)
	require('@fjbo-net/string-extensions').patch();

	console.log(
		"Neutral Political Machine".toCamelCase(),
	)
*/

```


## About
### Author
**FJBO | Francisco Javier Becerra-Ortiz**

### License
Copyright © 2019, [FJBO](https://github.com/fjbo-net).
Released under the [MIT License](LICENSE).
npm package: @fjdr/react-diagrams-demo
Description: ![](./screenshot.png)
Author: thanhdv98
Latest version: 1.0.0

# Project STORM > React diagrams > Demo Project

![](./screenshot.png)

In this repo you will find a simple webpack-dev-server project
that shows how to get started with the library.

It contains an example of how to implement a custom node in both Vanilla ES6 as-well
as typescript (the recommended way).

Simply run `yarn start` which will also open your browser.
npm package: @fjeagle/redmine-api
Description: Redmine API library for Node and Browser
Author: FJEagle
Latest version: 0.1.0

# Redmine API
Use Redmine API in browsers and NodeJS

## Install
```sh
npm install @chymz/redmine-api
```

## Quick Sample
```js
import { RedmineAPI } from '@chymz/redmine-api';

const api = new RedmineAPI('https://domain.com', { login: 'user', password: 'pass' });
// or
const api = new RedmineAPI('https://domain.com', { key: 'your_api_key' });

// You can pass all ressources name
api.query('issues')
  .then(results =>  {
    // ...
  })
  .catch(err => {
    // ...
  });
```

## Docs
[See here](docs/README.md) for documentation

## Implemented
- [x]  API Requester class ([docs](docs/redmine-api.md))
- [x]  Issues ([docs](docs/issues.md))
- [x]  Projects ([docs](docs/projects.md))
- [x]  Time entries ([docs](docs/time_entries.md))
- [ ]  Users
- [ ]  Enumerations
- [ ]  Custom fields
- [ ]  Versions
- [ ]  Issue Relations
- [ ]  Issue Statuses
- [ ]  Issue Categories
- [ ]  Attachments
- [ ]  Trackers
- [ ]  Groups
- [ ]  Roles
- [ ]  News
- [ ]  Wiki Pages
- [ ]  Queries

## NodeJS & old browsers
You will need `fetch()` function to do requests on Redmine API. You can get a polyfill :
  - For NodeJS : https://www.npmjs.com/package/node-fetch
  - For old browsers : https://www.npmjs.com/package/whatwg-fetch

## License
See `LICENSE` file
npm package: @fjedi/database-client
Description: Wrapper around sequelize ORM with some fancy helpers for caching and full-data-tree sql-joins
Author: Alexander Radyushin
Latest version: 5.3.7

[![npm version](https://img.shields.io/npm/v/@fjedi/database-client.svg?style=flat-square)](https://www.npmjs.com/package/@fjedi/database-client)
[![npm downloads](https://img.shields.io/npm/dm/@fjedi/database-client.svg?style=flat-square)](https://www.npmjs.com/package/@fjedi/database-client)
npm package: @fjedi/react-yandex-metrika
Description: Yandex Metrika component for React
Author: Alexander Radyushin
Latest version: 2.3.2

react-yandex-metrika
======================

Adds the Yandex.Metrika script to your page and exposes the `ym` tracking
function as a module.

Inspired by and shamelessly copied from [react-google-analytics](https://github.com/hzdg/react-google-analytics).

Usage:

Use the initializer to add the script to your page somewhere:
```javascript
import { YMInitializer } from 'react-yandex-metrika';

class MyComponent extends React.Component {
  render() {
    return (
      <div>
        // SNIP
          <YMInitializer accounts={[987654321]} />
        // SNIP
      </div>
    );
  }
});
```

Please note that you need to initialize the tracker object only once.
Because of that, you should insert initializer to the place where it won't be remounted (that means at least outside of router scope).


You can create several identical trackers (that might be useful for domain-wise segmentation).
```javascript
<YMInitializer accounts={[98765, 4321]} />
```

You can also specify options for tracker (as described in [Yandex.Metrika documentation](https://help.yandex.ru/metrika/objects/creating-object.xml)):
```javascript
<YMInitializer accounts={[98765]} options={{defer: true}} />
```

Elsewhere, use the `ym` function:

```javascript
import ym from 'react-yandex-metrika';
ym('hit', '/cart');
ym('reachGoal', 'whateverGoal', {awesomeParameter: 42});
```

### Webvisor 2.0 support

See [#6](https://github.com/narkq/react-yandex-metrika/issues/6) for details.
```javascript
<YMInitializer accounts={[31337]} version="2" />
```

### Migration from 1.0

- Replace `import { Initializer }` to `import { YMInitializer }`.
- Remove `ym.init()` call. Pass arguments of `ym.init` as props to the `YMInitializer` component.
  Tracking will be initialized on `YMInitializer.componentDidMount`.
npm package: @fjedi/youtube-dl
Description: A simple Node.js wrapper for youtube-dl
Author: microlink.io
Latest version: 1.1.6

<div align="center">
  <img src="https://cdn.microlink.io/logo/banner.png"">
</div>

> A simple Node.js wrapper for [youtube-dl](https://github.com/ytdl-org/youtube-dl).

## Why

- Auto install the latest `youtube-dl` version available.
- Executes any command in a efficient way.
- Intuitive interface.

## Install

```bash
$ npm install youtube-dl-exec --save
```

## Usage

```js
const youtubedl = require('youtube-dl-exec')

youtubedl('https://example.com', {
  dumpJson: true,
  noWarnings: true,
  noCallHome: true,
  noCheckCertificate: true,
  preferFreeFormats: true,
  youtubeSkipDashManifest: true,
  referer: 'https://example.com'
})
  .then(output => console.log(output))
```

It's equivalent to:

```bash
$ youtube-dl https://example.com --dump-json --no-warnings --no-call-home --no-check-certificate --prefer-free-formats --youtube-skip-dash-manifest --referer=https://example.com
```

## API

### youtubedl(url, [flags], [options])

#### url

*Required*<br>
Type: `string`

The URL to target.

#### flags

Type: `object`

Any flag supported by `youtube-dl`.

#### options

Type: `object`

Any option provided here will passed to [execa#options](https://github.com/sindresorhus/execa#options).

## Environment variables

The environment variables are taken into account when you perform a `npm install` in a project that contains `youtube-dl-exec` dependency.

They setup the download configuration for getting the `youtube-dl` binary file. 

These variables can be

### YOUTUBE_DL_HOST

It determines the remote URL for getting the `youtube-dl` binary file.

The default URL is [ytdl-org/youtube-dl latest release](https://github.com/ytdl-org/youtube-dl/releases/latest).

### YOUTUBE_DL_DIR

It determines the folder where to put the binary file.

The default folder is `bin`.

### YOUTUBE_DL_FILENAME

It determines the binary filename.

The default binary file could be `youtube-dl` or `youtube-dl.exe`, depending of the [`YOUTUBE_DL_PLATFORM`](#youtube_dl_platform) value.

### YOUTUBE_DL_PLATFORM

It determines the architecture of the machine that will use the `youtube-dl` binary.

The default value will computed from `process.platform`, being `'unix'` or `'win32'`.

## License

**youtube-dl-exec** © [microlink.io](https://microlink.io), released under the [MIT](https://github.com/microlinkhq/youtube-dl-exec/blob/master/LICENSE.md) License.<br>
Authored and maintained by [Kiko Beats](https://kikobeats.com) with help from [contributors](https://github.com/microlinkhq/youtube-dl-exec/contributors).

> [microlink.io](https://microlink.io) · GitHub [microlink.io](https://github.com/microlinkhq) · Twitter [@microlinkhq](https://twitter.com/microlinkhq)