+8
.changeset/README.md
+8
.changeset/README.md
···
1
+
# Changesets
2
+
3
+
Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4
+
with multi-package repos, or single-package repos to help you version and publish your code. You can
5
+
find the full documentation for it [in our repository](https://github.com/changesets/changesets)
6
+
7
+
We have a quick list of common questions to get you started engaging with this project in
8
+
[our documentation](https://github.com/changesets/changesets/blob/master/docs/common-questions.md)
+16
.changeset/config.json
+16
.changeset/config.json
···
1
+
{
2
+
"$schema": "https://unpkg.com/@changesets/config@0.3.0/schema.json",
3
+
"changelog": "../scripts/changelog.js",
4
+
"commit": false,
5
+
"access": "public",
6
+
"baseBranch": "main",
7
+
"updateInternalDependencies": "minor",
8
+
"snapshot": {
9
+
"prereleaseTemplate": "{tag}-{commit}",
10
+
"useCalculatedVersion": true
11
+
},
12
+
"___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
13
+
"onlyUpdatePeerDependentsWhenOutOfRange": true,
14
+
"updateInternalDependents": "out-of-range"
15
+
}
16
+
}
+3
.editorconfig
+3
.editorconfig
+42
.github/ISSUE_TEMPLATE/RFC.md
+42
.github/ISSUE_TEMPLATE/RFC.md
···
1
+
---
2
+
name: 'RFC'
3
+
about: Propose an enhancement / feature and start a discussion
4
+
title: 'RFC: Your Proposal'
5
+
labels: "future \U0001F52E"
6
+
---
7
+
8
+
<!--
9
+
🚨 RFCs are for proposed changes (not bugs or questions)
10
+
Specifically they are whenever you'd like to see new features
11
+
being added, or enable new use-cases.
12
+
13
+
Please open a Bug Report for issues/bugs, and use GitHub Discussions
14
+
or the Discord channel for questions instead.
15
+
-->
16
+
17
+
## Summary
18
+
19
+
<!--
20
+
Describe in a couple of words *what* you're proposing.
21
+
If relevant, include *why* this should be addressed now.
22
+
The problem should be clearly stated and the solution
23
+
should be summarised.
24
+
-->
25
+
26
+
## Proposed Solution
27
+
28
+
<!--
29
+
Explain the solution you're proposing in detail.
30
+
*How* will this change be implemented, and how does it work?
31
+
-->
32
+
33
+
## Requirements
34
+
35
+
<!--
36
+
This section is *optional*.
37
+
But if your proposed solution has multiple ways
38
+
of being implemented, you don't want to state how
39
+
it may be implemented, or you don't know yet how
40
+
it will be implemented, then:
41
+
*List* what the implementation needs to achieve to fulfil this RFC;
42
+
-->
+46
.github/ISSUE_TEMPLATE/bug_report.yaml
+46
.github/ISSUE_TEMPLATE/bug_report.yaml
···
1
+
name: "\U0001F41E Bug report"
2
+
description: Report an issue with graphql.web
3
+
labels: []
4
+
body:
5
+
- type: markdown
6
+
attributes:
7
+
value: |
8
+
Thanks for taking the time to fill out this bug report!
9
+
- type: markdown
10
+
attributes:
11
+
value: |
12
+
Thanks for taking the time to fill out this bug report!
13
+
- type: textarea
14
+
id: bug-description
15
+
attributes:
16
+
label: Describe the bug
17
+
description: Please describe your bug clearly and concisely.
18
+
placeholder: Bug description
19
+
validations:
20
+
required: true
21
+
- type: input
22
+
id: reproduction
23
+
attributes:
24
+
label: Reproduction
25
+
description: Please provide a reproduction link, e.g. to a sandbox
26
+
placeholder: Reproduction
27
+
validations:
28
+
required: true
29
+
- type: textarea
30
+
id: version
31
+
attributes:
32
+
label: Package version
33
+
description: The versions of the relevant urql packages you are using
34
+
placeholder: "wonka@6.2.5"
35
+
validations:
36
+
required: true
37
+
- type: checkboxes
38
+
id: checkboxes
39
+
attributes:
40
+
label: Validations
41
+
description: Before submitting the issue, please make sure you do the following
42
+
options:
43
+
- label: I can confirm that this is a bug report, and not a feature request, RFC, question, or discussion, for which GitHub Discussions should be used
44
+
required: true
45
+
- label: Follow our [Code of Conduct](https://github.com/0no-co/graphql.web/blob/main/CODE_OF_CONDUCT.md)
46
+
required: true
+8
.github/ISSUE_TEMPLATE/config.yml
+8
.github/ISSUE_TEMPLATE/config.yml
···
1
+
blank_issues_enabled: true
2
+
contact_links:
3
+
- name: Ask a question
4
+
url: https://github.com/@0no-co/wonka/discussions
5
+
about: Ask questions and discuss with other community members
6
+
- name: Join the Discord
7
+
url: https://discord.gg/3EYgqrYJFS
8
+
about: Chat with maintainers and other community members
+22
.github/PULL_REQUEST_TEMPLATE.md
+22
.github/PULL_REQUEST_TEMPLATE.md
···
1
+
<!--
2
+
Thanks for opening a pull request! We appreciate your dedication and help!
3
+
Before submitting your pull request, please make sure to read our CONTRIBUTING guide.
4
+
5
+
The best contribution is always a PR, but please make sure to open an issue or discuss
6
+
your changes first, if you’re looking to submit a larger PR.
7
+
8
+
If this PR is already related to an issue, please reference it like so:
9
+
Resolves #123
10
+
-->
11
+
12
+
## Summary
13
+
14
+
<!-- What's the motivation of this change? What does it solve? -->
15
+
16
+
## Set of changes
17
+
18
+
<!--
19
+
Roughly list the changes you've made and which packages are affected.
20
+
Leave some notes on what may be noteworthy files you've changed.
21
+
And lastly, please let us know if you think this is a breaking change.
22
+
-->
+45
.github/workflows/ci.yml
+45
.github/workflows/ci.yml
···
1
+
name: CI
2
+
3
+
on:
4
+
pull_request:
5
+
pull_request_review:
6
+
types: [submitted, edited]
7
+
branches: changeset-release/main
8
+
9
+
jobs:
10
+
check:
11
+
name: Checks
12
+
runs-on: ubuntu-latest
13
+
timeout-minutes: 10
14
+
steps:
15
+
- name: Checkout Repo
16
+
uses: actions/checkout@v3
17
+
with:
18
+
fetch-depth: 0
19
+
20
+
- name: Setup pnpm
21
+
uses: pnpm/action-setup@v3
22
+
with:
23
+
version: 9
24
+
run_install: false
25
+
26
+
- name: Setup Node
27
+
uses: actions/setup-node@v4
28
+
with:
29
+
node-version: 22
30
+
cache: 'pnpm'
31
+
32
+
- name: Install Dependencies
33
+
run: pnpm install --frozen-lockfile --prefer-offline
34
+
35
+
- name: TypeScript
36
+
run: pnpm run check
37
+
38
+
- name: Linting
39
+
run: pnpm run lint
40
+
41
+
- name: Unit Tests
42
+
run: pnpm run test
43
+
44
+
- name: Build
45
+
run: pnpm run build
+26
.github/workflows/mirror.yml
+26
.github/workflows/mirror.yml
···
1
+
# Mirrors to https://tangled.sh/@kitten.sh (knot.kitten.sh)
2
+
name: Mirror (Git Backup)
3
+
on:
4
+
push:
5
+
branches:
6
+
- main
7
+
jobs:
8
+
mirror:
9
+
runs-on: ubuntu-latest
10
+
steps:
11
+
- name: Checkout repository
12
+
uses: actions/checkout@v4
13
+
with:
14
+
fetch-depth: 0
15
+
fetch-tags: true
16
+
- name: Mirror
17
+
env:
18
+
MIRROR_SSH_KEY: ${{ secrets.MIRROR_SSH_KEY }}
19
+
GIT_SSH_COMMAND: 'ssh -o StrictHostKeyChecking=yes'
20
+
run: |
21
+
mkdir -p ~/.ssh
22
+
echo "$MIRROR_SSH_KEY" > ~/.ssh/id_rsa
23
+
chmod 600 ~/.ssh/id_rsa
24
+
ssh-keyscan -H knot.kitten.sh >> ~/.ssh/known_hosts
25
+
git remote add mirror "git@knot.kitten.sh:kitten.sh/${GITHUB_REPOSITORY#*/}"
26
+
git push --mirror mirror
+56
.github/workflows/release.yml
+56
.github/workflows/release.yml
···
1
+
name: Release
2
+
on:
3
+
push:
4
+
branches:
5
+
- main
6
+
jobs:
7
+
release:
8
+
name: Release
9
+
runs-on: ubuntu-20.04
10
+
timeout-minutes: 20
11
+
permissions:
12
+
contents: write
13
+
id-token: write
14
+
issues: write
15
+
repository-projects: write
16
+
deployments: write
17
+
packages: write
18
+
pull-requests: write
19
+
steps:
20
+
- name: Checkout Repo
21
+
uses: actions/checkout@v3
22
+
with:
23
+
fetch-depth: 0
24
+
25
+
- name: Setup pnpm
26
+
uses: pnpm/action-setup@v3
27
+
with:
28
+
version: 9
29
+
run_install: false
30
+
31
+
- name: Setup Node
32
+
uses: actions/setup-node@v4
33
+
with:
34
+
node-version: 22
35
+
cache: 'pnpm'
36
+
37
+
- name: Install Dependencies
38
+
run: pnpm install --frozen-lockfile --prefer-offline
39
+
40
+
- name: PR or Publish
41
+
id: changesets
42
+
uses: changesets/action@v1.5.3
43
+
with:
44
+
version: pnpm changeset:version
45
+
publish: pnpm changeset:publish
46
+
env:
47
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
48
+
49
+
- name: Publish Prerelease
50
+
if: steps.changesets.outputs.published != 'true'
51
+
env:
52
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
53
+
run: |
54
+
git reset --hard origin/main
55
+
pnpm changeset version --no-git-tag --snapshot canary
56
+
pnpm changeset publish --no-git-tag --snapshot canary --tag canary
+8
-36
.gitignore
+8
-36
.gitignore
···
1
-
*.exe
2
-
*.obj
3
-
*.out
4
-
*.compile
5
-
*.native
6
-
*.byte
7
-
*.cmo
8
-
*.annot
9
-
*.cmi
10
-
*.cmx
11
-
*.cmt
12
-
*.cmti
13
-
*.cma
14
-
*.a
15
-
*.cmxa
16
-
*.obj
17
-
*~
18
-
*.annot
19
-
*.cmj
20
-
*.bak
21
-
lib/bs
22
-
*.mlast
23
-
*.mliast
24
-
.vscode
25
-
.merlin
26
-
.bsb.lock
27
-
28
-
yarn-error.log
1
+
/.idea
2
+
/.vscode
3
+
**/node_modules
4
+
*.log
5
+
.rts2_cache*
6
+
.husky
29
7
dist/
30
-
node_modules/
31
-
lib/
32
-
src/**/*.js
33
-
__tests__/**/*.js
34
-
coverage/
35
-
36
-
!src/index.js
37
-
!src/pipe.js
8
+
package-lock.json
9
+
.DS_Store
-8
.jest.coverage.json
-8
.jest.coverage.json
-23
.terser.config.json
-23
.terser.config.json
···
1
-
{
2
-
"keep_fnames": true,
3
-
"ie8": false,
4
-
"compress": {
5
-
"pure_getters": true,
6
-
"toplevel": true,
7
-
"booleans_as_integers": false,
8
-
"keep_fnames": true,
9
-
"keep_fargs": true,
10
-
"if_return": false,
11
-
"ie8": false,
12
-
"sequences": false,
13
-
"loops": false,
14
-
"conditionals": false,
15
-
"join_vars": false
16
-
},
17
-
"mangle": false,
18
-
"output": {
19
-
"beautify": true,
20
-
"braces": true,
21
-
"indent_level": 2
22
-
}
23
-
}
-18
.travis.yml
-18
.travis.yml
···
1
-
dist: trusty
2
-
language: node_js
3
-
node_js:
4
-
- "10"
5
-
sudo: false
6
-
branches:
7
-
only:
8
-
- master
9
-
notifications:
10
-
email:
11
-
on_success: change
12
-
on_failure: always
13
-
cache: yarn
14
-
script:
15
-
- yarn run build
16
-
- yarn run coverage
17
-
- cat coverage/lcov.info | node_modules/.bin/coveralls || echo "Coveralls upload failed"
18
-
- yarn run bundlesize
+102
CHANGELOG.md
+102
CHANGELOG.md
···
1
+
# wonka
2
+
3
+
## 6.3.5
4
+
5
+
### Patch Changes
6
+
7
+
- Exclude `sourcesContent` from published sourcemaps
8
+
Submitted by [@kitten](https://github.com/kitten) (See [`68e608f`](https://github.com/0no-co/wonka/commit/68e608f46244e82d41c952ecfa1d7f0096e168f6))
9
+
10
+
## 6.3.4
11
+
12
+
### Patch Changes
13
+
14
+
- Add missing `Symbol.observable` global declaration back to typings
15
+
Submitted by [@kitten](https://github.com/kitten) (See [#168](https://github.com/0no-co/wonka/pull/168))
16
+
17
+
## 6.3.3
18
+
19
+
### Patch Changes
20
+
21
+
- Improve compatibility of `fromAsyncIterable` and `toAsyncIterable`. The `toAsyncIterable` will now output an object that's both an `AsyncIterator` and an `AsyncIterable`. Both helpers will now use a polyfill for `Symbol.asyncIterator` to improve compatibility with the Hermes engine and Babel transpilation
22
+
Submitted by [@kitten](https://github.com/kitten) (See [#165](https://github.com/0no-co/wonka/pull/165))
23
+
24
+
## 6.3.2
25
+
26
+
### Patch Changes
27
+
28
+
- Publish with npm provenance
29
+
Submitted by [@kitten](https://github.com/kitten) (See [#161](https://github.com/0no-co/wonka/pull/161))
30
+
31
+
## 6.3.1
32
+
33
+
### Patch Changes
34
+
35
+
- ⚠️ Fix missing `declare` keyword on internal ambient enums
36
+
Submitted by [@kitten](https://github.com/kitten) (See [#159](https://github.com/0no-co/wonka/pull/159))
37
+
38
+
## 6.3.0
39
+
40
+
### Minor Changes
41
+
42
+
- Add `addOne` argument to `takeWhile`, allowing an additional value to be issued
43
+
Submitted by [@kitten](https://github.com/kitten) (See [#156](https://github.com/0no-co/wonka/pull/156))
44
+
45
+
### Patch Changes
46
+
47
+
- Convert `Push<T>` and `Start<T>` signals to `{ tag, 0: value }` objects, which are sufficiently backwards compatible and result in slightly faster execution in v8
48
+
Submitted by [@kitten](https://github.com/kitten) (See [#155](https://github.com/0no-co/wonka/pull/155))
49
+
50
+
## 6.2.6
51
+
52
+
### Patch Changes
53
+
54
+
- ⚠️ Fix missing source contents in Wonka sourcemaps
55
+
Submitted by [@kitten](https://github.com/kitten) (See [`56d9708`](https://github.com/0no-co/wonka/commit/56d970861424fddd403262bf85d7e1e3572b15e2))
56
+
- ⚠️ Fix internal `SignalKind` and `TalkbackKind` enums not compiling away
57
+
Submitted by [@kitten](https://github.com/kitten) (See [#154](https://github.com/0no-co/wonka/pull/154))
58
+
59
+
## 6.2.5
60
+
61
+
### Patch Changes
62
+
63
+
- Make `closed: boolean` on `ObservableSubscription`s a required field to comply with the Observable proposal's type spec
64
+
Submitted by [@naporin0624](https://github.com/naporin0624) (See [#151](https://github.com/0no-co/wonka/pull/151))
65
+
66
+
## 6.2.4
67
+
68
+
### Patch Changes
69
+
70
+
- Add missing overload definition for `filter`, which allows types to be narrowed, e.g. by specifying a type predicate return type
71
+
Submitted by [@kitten](https://github.com/kitten) (See [#149](https://github.com/0no-co/wonka/pull/149))
72
+
73
+
## 6.2.3
74
+
75
+
### Patch Changes
76
+
77
+
- ⚠️ Fix overload of `pipe` type not being applied in bundled `d.ts` file, by [@kitten](https://github.com/kitten) (See [#144](https://github.com/0no-co/wonka/pull/144))
78
+
79
+
## 6.2.2
80
+
81
+
### Patch Changes
82
+
83
+
- ⚠️ Fix missing `Symbol.observable` typings and remove `const enum` exports, which aren't usable in isolated modules, by [@kitten](https://github.com/kitten) (See [#141](https://github.com/0no-co/wonka/pull/141))
84
+
85
+
## 6.2.1
86
+
87
+
### Patch Changes
88
+
89
+
- ⚠️ Fix accidental addition of `postinstall` script rather than `prepare` script, by [@kitten](https://github.com/kitten) (See [#138](https://github.com/0no-co/wonka/pull/138))
90
+
91
+
## 6.2.0
92
+
93
+
### Minor Changes
94
+
95
+
- Implement `toAsyncIterable`, converting a Wonka source to a JS Async Iterable, by [@kitten](https://github.com/kitten) (See [#133](https://github.com/0no-co/wonka/pull/133))
96
+
- Implement `d.ts` bundling. Only a single `wonka.d.ts` typings file will now be available to TypeScript, by [@kitten](https://github.com/kitten) (See [#135](https://github.com/0no-co/wonka/pull/135))
97
+
- Add extensive TSDoc documentation for all `wonka` internals and exports. This will replace the documentation and give consumers more guidance on each of the library's extensive utilities, by [@kitten](https://github.com/kitten) (See [#136](https://github.com/0no-co/wonka/pull/136))
98
+
99
+
### Patch Changes
100
+
101
+
- ⚠️ Fix promise timing by adding missing `Promise.resolve()` tick to `toPromise` sink function, by [@kitten](https://github.com/kitten) (See [#131](https://github.com/0no-co/wonka/pull/131))
102
+
- ⚠️ Fix implementation of Observable spec as such that Observable.subscribe(onNext, onError, onComplete) becomes valid, by [@kitten](https://github.com/kitten) (See [#132](https://github.com/0no-co/wonka/pull/132))
+163
CONTRIBUTING.md
+163
CONTRIBUTING.md
···
1
+
# Development
2
+
3
+
Thanks for contributing! We want to ensure that `wonka` evolves
4
+
and fulfills its idea of being a tiny & capable push & pull stream library!
5
+
6
+
## How to contribute?
7
+
8
+
We follow fairly standard but lenient rules around pull requests and issues.
9
+
Please pick a title that describes your change briefly, optionally in the imperative
10
+
mood if possible.
11
+
12
+
If you have an idea for a feature or want to fix a bug, consider opening an issue
13
+
first. We're also happy to discuss and help you open a PR and get your changes
14
+
in!
15
+
16
+
- If you have a question, try [creating a GitHub Discussions thread.](https://github.com/0no-co/wonka/discussions/new/choose)
17
+
- If you think you've found a bug, [open a new issue.](https://github.com/0no-co/wonka/issues/new)
18
+
- or, if you found a bug you'd like to fix, [open a PR.](https://github.com/0no-co/wonka/compare)
19
+
- If you'd like to propose a change [open an RFC issue.](https://github.com/0no-co/wonka/issues/new?labels=future+%F0%9F%94%AE&template=RFC.md&title=RFC%3A+Your+Proposal) You can read more about the RFC process [below](#how-do-i-propose-changes).
20
+
21
+
### What are the issue conventions?
22
+
23
+
There are **no strict conventions**, but we do have two templates in place that will fit most
24
+
issues, since questions and other discussion start on GitHub Discussions. The bug template is fairly
25
+
standard and the rule of thumb is to try to explain **what you expected** and **what you got
26
+
instead.** Following this makes it very clear whether it's a known behavior, an unexpected issue,
27
+
or an undocumented quirk.
28
+
29
+
### How do I propose changes?
30
+
31
+
We follow an **RFC proposal process**. This allows anyone to propose a new feature or a change, and
32
+
allows us to communicate our current planned features or changes, so any technical discussion,
33
+
progress, or upcoming changes are always **documented transparently.** You can [find the RFC
34
+
template](https://github.com/0no-co/wonka/issues/new/choose) in our issue creator.
35
+
36
+
### What are the PR conventions?
37
+
38
+
This also comes with **no strict conventions**. We only ask you to follow the PR template we have
39
+
in place more strictly here than the templates for issues, since it asks you to list a summary
40
+
(maybe even with a short explanation) and a list of technical changes.
41
+
42
+
If you're **resolving** an issue please don't forget to add `Resolve #123` to the description so that
43
+
it's automatically linked, so that there's no ambiguity and which issue is being addressed (if any)
44
+
45
+
You'll find that a comment by the "Changeset" bot may pop up. If you don't know what a **changeset**
46
+
is and why it's asking you to document your changes, read on at ["How do I document a change for the
47
+
changelog"](#how-do-i-document-a-change-for-the-changelog)
48
+
49
+
We also typically **name** our PRs with a slightly descriptive title, e.g. `feat: Title`.
50
+
51
+
## How do I set up the project?
52
+
53
+
Luckily it's not hard to get started. You can install dependencie
54
+
[using `pnpm`](https://pnpm.io/installation#using-corepack).
55
+
Please don't use `npm` or `yarn` to respect the lockfile.
56
+
57
+
```sh
58
+
pnpm install
59
+
```
60
+
61
+
There are multiple commands you can run in the root folder to test your changes:
62
+
63
+
```sh
64
+
# TypeScript checks:
65
+
pnpm run check
66
+
67
+
# Linting (prettier & eslint):
68
+
pnpm run lint
69
+
70
+
# Unit Tests:
71
+
pnpm run test
72
+
73
+
# Builds:
74
+
pnpm run build
75
+
```
76
+
77
+
## How do I test my changes?
78
+
79
+
It's always good practice to run the tests when making changes. If you're unsure which packages
80
+
may be affected by your new tests or changes you may run `pnpm test` in the root of
81
+
the repository.
82
+
83
+
If your editor is not set up with type checks you may also want to run `pnpm run check` on your
84
+
changes.
85
+
86
+
Additionally you can head to any example in the `examples/` folder
87
+
and run them. There you'll also need to install their dependencies as they're isolated projects,
88
+
without a lockfile and without linking to packages in the monorepos.
89
+
All examples are started using the `package.json`'s `start` script.
90
+
91
+
## How do I lint my code?
92
+
93
+
We ensure consistency in this codebase using `eslint` and `prettier`.
94
+
They are run on a `precommit` hook, so if something's off they'll try
95
+
to automatically fix up your code, or display an error.
96
+
97
+
If you have them set up in your editor, even better!
98
+
99
+
## How do I document a change for the changelog?
100
+
101
+
This project uses [changesets](https://github.com/atlassian/changesets). This means that for
102
+
every PR there must be documentation for what has been changed and which package is affected.
103
+
104
+
You can document a change by running `changeset`, which will ask you which packages
105
+
have changed and whether the change is major/minor/patch. It will then ask you to write
106
+
a change entry as markdown.
107
+
108
+
```sh
109
+
# In the root of the urql repository call:
110
+
pnpm changeset
111
+
```
112
+
113
+
This will create a new "changeset file" in the `.changeset` folder, which you should commit and
114
+
push, so that it's added to your PR.
115
+
This will eventually end up in the package's `CHANGELOG.md` file when we do a release.
116
+
117
+
You won't need to add a changeset if you're simply making "non-visible" changes to the docs or other
118
+
files that aren't published to the npm registry.
119
+
120
+
[Read more about adding a `changeset` here.](https://github.com/atlassian/changesets/blob/master/docs/adding-a-changeset.md#i-am-in-a-multi-package-repository-a-mono-repo)
121
+
122
+
## How do I release new versions of our packages?
123
+
124
+
Hold up, that's **automated**! Since we use `changeset` to document our changes, which determines what
125
+
goes into the changelog and what kind of version bump a change should make, you can also use the
126
+
tool to check what's currently posed to change after a release batch using: `pnpm changeset status`.
127
+
128
+
We have a [GitHub Actions workflow](./.github/workflow/release.yml) which is triggered whenever new
129
+
changes are merged. It will always open a **"Version Packages" PR** which is kept up-to-date. This PR
130
+
documents all changes that are made and will show in its description what all new changelogs are
131
+
going to contain for their new entries.
132
+
133
+
Once a "Version Packages" PR is approved by a contributor and merged, the action will automatically
134
+
take care of creating the release, publishing all updated packages to the npm registry, and creating
135
+
appropriate tags on GitHub too.
136
+
137
+
This process is automated, but the changelog should be checked for errors.
138
+
139
+
As to **when** to merge the automated PR and publish? Maybe not after every change. Typically there
140
+
are two release batches: hotfixes and release batches. We expect that a hotfix for a single package
141
+
should go out as quickly as possible if it negatively affects users. For **release batches**
142
+
however, it's common to assume that if one change is made to a package that more will follow in the
143
+
same week. So waiting for **a day or two** when other changes are expected will make sense to keep the
144
+
fatigue as low as possible for downstream maintainers.
145
+
146
+
## How do I upgrade all dependencies?
147
+
148
+
It may be a good idea to keep all dependencies on this repository **up-to-date** every now and
149
+
then. Typically we do this by running `pnpm update --interactive --latest` and checking one-by-one
150
+
which dependencies will need to be bumped. In case of any security issues it may make sense to
151
+
just run `pnpm update [package]`.
152
+
153
+
While this is rare with `pnpm`, upgrading some transitive dependencies may accidentally duplicate
154
+
them if two packages depend on different compatible version ranges. This can be fixed by running:
155
+
156
+
```sh
157
+
pnpm dedupe
158
+
pnpm install
159
+
```
160
+
161
+
It's common to then **create a PR** (with a changeset documenting the packages that need to reflect
162
+
new changes if any `dependencies` have changed) with the name of
163
+
"(chore) - Upgrade direct and transitive dependencies" or something similar.
+1
-1
LICENSE.md
+1
-1
LICENSE.md
+31
-106
README.md
+31
-106
README.md
···
1
1
# Wonka
2
2
3
-
A fast push & pull stream library for Reason, loosely following the [callbag spec](https://github.com/callbag/callbag)
3
+
A tiny but capable push & pull stream library for TypeScript and Flow,
4
+
loosely following the [callbag spec](https://github.com/callbag/callbag)
5
+
6
+
> **NOTE:** The currently released version v6 is only compatible now with TypeScript, Flow, and JavaScript.
7
+
> If you're looking for Reason/OCaml/esy/dune support, please check v5, and if you're looking for the legacy version
8
+
> of this library check v4.
4
9
5
-
[](https://travis-ci.org/kitten/wonka)
6
-
[](https://coveralls.io/github/kitten/wonka?branch=master)
7
-
[](https://www.npmjs.com/package/wonka)
8
-
[](https://www.npmjs.com/package/wonka)
10
+
<br>
11
+
<a href="https://npmjs.com/package/wonka">
12
+
<img alt="NPM Version" src="https://img.shields.io/npm/v/wonka.svg" />
13
+
</a>
14
+
<a href="https://npmjs.com/package/wonka">
15
+
<img alt="License" src="https://img.shields.io/npm/l/wonka.svg" />
16
+
</a>
17
+
<a href="https://coveralls.io/github/kitten/wonka?branch=master">
18
+
<img src="https://coveralls.io/repos/github/kitten/wonka/badge.svg?branch=master" alt="Test Coverage" />
19
+
</a>
20
+
<a href="https://bundlephobia.com/result?p=wonka">
21
+
<img alt="Minified gzip size" src="https://img.shields.io/bundlephobia/minzip/wonka.svg?label=gzip%20size" />
22
+
</a>
23
+
<br>
9
24
10
25
> “There’s no earthly way of knowing<br>
11
26
> Which direction we are going<br>
···
16
31
17
32

18
33
19
-
* [What is `Wonka`](#what-is-wonka)
20
-
* [Why it exists](#why-it-exists)
21
-
* [Installation](#installation)
22
-
* [Getting Started](#getting-started)
23
-
* [Documentation (In Progress)](#documentation)
34
+
Wonka is a lightweight iterable and observable library loosely based on
35
+
the [callbag spec](https://github.com/callbag/callbag). It exposes a set of helpers to create streams,
36
+
which are sources of multiple values, which allow you to create, transform
37
+
and consume event streams or iterable sets of data.
24
38
25
-
## What is `Wonka`
39
+
## [Documentation](https://wonka.kitten.sh/)
26
40
27
-
`Wonka` is a library for lightweight observables and iterables loosely based on the [callbag spec](https://github.com/callbag/callbag).
28
-
It exposes a set of helpers to create and transform sources and output sinks, meaning it helps you to turn an event source or an
29
-
iterable set of data into streams, and manipulate these streams.
30
-
31
-
## Why it exists
32
-
33
-
Reason has been becoming increasingly popular, but it's missing a good pattern for streams that feels native to the language.
34
-
The functional nature of callbags make them a perfect starting point to fix this, and to introduce a reactive programming
35
-
pattern to a language that is well suited for it.
36
-
37
-
Hence `Wonka` is a library that aims to make complex streams of data easy to deal with.
38
-
39
-
## Installation
40
-
41
-
Install the library first: `yarn add wonka` or `npm install --save wonka`,
41
+
**See the documentation at [wonka.kitten.sh](https://wonka.kitten.sh)** for more information about using `wonka`!
42
42
43
-
Then add `wonka` to `bs-dependencies` in your `bsconfig.json` file like so:
43
+
- [Introduction](https://wonka.kitten.sh/)
44
+
- [**Getting started**](https://wonka.kitten.sh/getting-started)
45
+
- [Basics](https://wonka.kitten.sh/basics/)
46
+
- [API Reference](https://wonka.kitten.sh/api/)
44
47
45
-
```diff
46
-
{
47
-
"name": "<your name>",
48
-
"version": "0.1.0",
49
-
"sources": ["src"],
50
-
"bsc-flags": ["-bs-super-errors"],
51
-
"bs-dependencies": [
52
-
+ "wonka"
53
-
]
54
-
}
55
-
```
56
-
57
-
## Getting Started
58
-
59
-
Writing your first stream is very easy! Let's suppose you would like to create a stream from a list, filter out some values,
60
-
then map over the remaining ones, and lastly iterate over the final values.
61
-
62
-
This can be done with a few operators that might remind you of functions you would also call on iterables.
63
-
64
-
```reason
65
-
let example = [1, 2, 3, 4, 5, 6];
66
-
67
-
Wonka.fromList(example)
68
-
|> Wonka.filter(x => x mod 2 === 0)
69
-
|> Wonka.map(x => x * 2)
70
-
|> Wonka.forEach(x => print_endline(string_of_int(x)));
71
-
72
-
/* prints: 4, 8, 12 */
73
-
```
74
-
75
-
To explain what's going on:
76
-
77
-
- `fromList` creates a pullable source with values from the list
78
-
- `filter` only lets even values through
79
-
- `map` multiplies the values by `2`
80
-
- `forEach` pulls values from the resulting source and prints them
81
-
82
-
As you can see, all helpers that we've used are exposed on the `Wonka` module.
83
-
But if we would like to use JavaScript-based APIs, then we need to use the `WonkaJs` module.
84
-
85
-
Let's look at the same example, but instead of a list we will use an `interval` stream.
86
-
This stream will output ascending numbers starting from `0` indefinitely.
87
-
88
-
We will code the same example as before but we'd like the `interval` to push
89
-
a new number every `50ms` and to stop after seven values.
90
-
91
-
```reason
92
-
WonkaJs.interval(50)
93
-
|> Wonka.take(7)
94
-
|> Wonka.filter(x => x mod 2 === 0)
95
-
|> Wonka.map(x => x * 2)
96
-
|> Wonka.forEach(x => print_endline(string_of_int(x)));
97
-
98
-
/* prints: 4, 8, 12 */
99
-
```
100
-
101
-
The last three functions stay the same, but we are now using `interval` as our source.
102
-
This is a listenable source, meaning that it pushes values downwards when it sees fit.
103
-
And the `take` operator tells our source to stop sending values after having received seven
104
-
values.
105
-
106
-
And already you have mastered all the basics of `Wonka` and learned about a couple of its operators!
107
-
Go, you! :tada:
108
-
109
-
## Documentation
110
-
111
-
I am currently still working on getting some documentation up and running. Those will contain:
112
-
113
-
- The API, i.e. a list of all helpers
114
-
- Examples
115
-
- Usage Guides & Recipes
116
-
- Developer Guides (How to write a source/operator/sink)
117
-
- Modified Callbag spec
118
-
119
-
Stay tuned and read the signature files in the meantime please:
120
-
121
-
- [wonka.rei](./src/wonka.rei)
122
-
- [wonkaJs.rei](./src/wonka.rei)
123
-
48
+
The raw markdown files can be found [in this repository in the `docs` folder](https://github.com/kitten/wonka/tree/master/docs).
-1412
__tests__/wonka_test.re
-1412
__tests__/wonka_test.re
···
1
-
open Jest;
2
-
open Wonka_types;
3
-
4
-
let it = test;
5
-
6
-
describe("source factories", () => {
7
-
describe("fromList", () => {
8
-
open Expect;
9
-
open! Expect.Operators;
10
-
11
-
it("sends list items to a puller sink", () => {
12
-
let source = Wonka.fromList([10, 20, 30]);
13
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
14
-
let signals = [||];
15
-
16
-
source((.signal) => {
17
-
switch (signal) {
18
-
| Start(x) => talkback := x;
19
-
| Push(_) => ignore(Js.Array.push(signal, signals));
20
-
| End => ignore(Js.Array.push(signal, signals))
21
-
};
22
-
});
23
-
24
-
talkback^(.Pull);
25
-
talkback^(.Pull);
26
-
talkback^(.Pull);
27
-
talkback^(.Pull);
28
-
29
-
expect(signals) == [| Push(10), Push(20), Push(30), End |];
30
-
});
31
-
});
32
-
33
-
describe("fromArray", () => {
34
-
open Expect;
35
-
open! Expect.Operators;
36
-
37
-
it("sends array items to a puller sink", () => {
38
-
let source = Wonka.fromArray([| 10, 20, 30 |]);
39
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
40
-
let signals = ref([||]);
41
-
42
-
source((.signal) => {
43
-
switch (signal) {
44
-
| Start(x) => {
45
-
talkback := x;
46
-
x(.Pull);
47
-
}
48
-
| Push(_) => {
49
-
signals := Array.append(signals^, [|signal|]);
50
-
talkback^(.Pull);
51
-
}
52
-
| End => signals := Array.append(signals^, [|signal|]);
53
-
};
54
-
});
55
-
56
-
expect(signals^) == [| Push(10), Push(20), Push(30), End |];
57
-
});
58
-
59
-
it("does not blow up the stack when iterating something huge", () => {
60
-
let arr = Array.make(100000, 123);
61
-
let source = Wonka.fromArray(arr);
62
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
63
-
let values = [||];
64
-
65
-
source((.signal) => {
66
-
switch (signal) {
67
-
| Start(x) => {
68
-
talkback := x;
69
-
x(.Pull);
70
-
}
71
-
| Push(x) => {
72
-
ignore(Js.Array.push(x, values));
73
-
talkback^(.Pull);
74
-
}
75
-
| End => ()
76
-
};
77
-
});
78
-
79
-
expect(Array.length(values)) == Array.length(arr);
80
-
});
81
-
});
82
-
83
-
describe("fromValue", () => {
84
-
open Expect;
85
-
open! Expect.Operators;
86
-
87
-
it("sends a single item to a puller sink", () => {
88
-
let source = Wonka.fromValue(123);
89
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
90
-
let signals = [||];
91
-
92
-
source((.signal) => {
93
-
switch (signal) {
94
-
| Start(x) => talkback := x;
95
-
| Push(_) => ignore(Js.Array.push(signal, signals));
96
-
| End => ignore(Js.Array.push(signal, signals))
97
-
};
98
-
});
99
-
100
-
talkback^(.Pull);
101
-
talkback^(.Pull);
102
-
talkback^(.Pull); /* one extra to check whether no signal comes back after it has ended */
103
-
104
-
expect(signals) == [| Push(123), End |];
105
-
});
106
-
});
107
-
108
-
describe("empty", () => {
109
-
open Expect;
110
-
open! Expect.Operators;
111
-
112
-
it("ends immediately", () => {
113
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
114
-
let signals = [||];
115
-
116
-
Wonka.empty((.signal) => {
117
-
switch (signal) {
118
-
| Start(x) => talkback := x;
119
-
| _ => ignore(Js.Array.push(signal, signals))
120
-
};
121
-
});
122
-
123
-
let _signals = Array.copy(signals);
124
-
125
-
talkback^(.Pull);
126
-
talkback^(.Pull);
127
-
128
-
expect((_signals, signals)) == ([| End |], [| End |]);
129
-
});
130
-
});
131
-
132
-
describe("never", () => {
133
-
open Expect;
134
-
open! Expect.Operators;
135
-
136
-
it("does not end", () => {
137
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
138
-
let ended = ref(false);
139
-
140
-
Wonka.never((.signal) => {
141
-
switch (signal) {
142
-
| Start(x) => talkback := x;
143
-
| End => ended := true
144
-
| _ => ()
145
-
};
146
-
});
147
-
148
-
talkback^(.Pull);
149
-
talkback^(.Pull);
150
-
151
-
expect(ended^) === false;
152
-
});
153
-
});
154
-
});
155
-
156
-
describe("operator factories", () => {
157
-
describe("map", () => {
158
-
open Expect;
159
-
160
-
it("maps all emissions of a source", () => {
161
-
let num = ref(1);
162
-
let nums = [||];
163
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
164
-
165
-
Wonka.map((._) => {
166
-
let res = num^;
167
-
num := num^ + 1;
168
-
res
169
-
}, sink => {
170
-
sink(.Start((.signal) => {
171
-
switch (signal) {
172
-
| Pull => sink(.Push(1));
173
-
| _ => ()
174
-
}
175
-
}));
176
-
}, (.signal) => {
177
-
switch (signal) {
178
-
| Start(x) => {
179
-
talkback := x;
180
-
x(.Pull);
181
-
}
182
-
| Push(x) when num^ < 6 => {
183
-
ignore(Js.Array.push(x, nums));
184
-
talkback^(.Pull);
185
-
}
186
-
| _ => ()
187
-
}
188
-
});
189
-
190
-
expect(nums) |> toEqual([|1, 2, 3, 4|])
191
-
});
192
-
193
-
testPromise("follows the spec for listenables", () => {
194
-
Wonka_thelpers.testWithListenable(Wonka.map((.x) => x))
195
-
|> Js.Promise.then_(x => {
196
-
expect(x)
197
-
|> toEqual(([||], [| Push(1), Push(2), End |]))
198
-
|> Js.Promise.resolve
199
-
})
200
-
});
201
-
202
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
203
-
let end_: talkbackT = Close;
204
-
205
-
Wonka_thelpers.testTalkbackEnd(Wonka.map((.x) => x))
206
-
|> Js.Promise.then_(x => {
207
-
expect(x)
208
-
|> toEqual(([| end_ |], [| Push(1) |]))
209
-
|> Js.Promise.resolve
210
-
})
211
-
});
212
-
});
213
-
214
-
describe("filter", () => {
215
-
open Expect;
216
-
217
-
it("filters emissions according to a predicate", () => {
218
-
let i = ref(1);
219
-
let nums = [||];
220
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
221
-
222
-
Wonka.filter((.x) => x mod 2 === 0, sink => {
223
-
sink(.Start((.signal) => {
224
-
switch (signal) {
225
-
| Pull => {
226
-
let num = i^;
227
-
i := i^ + 1;
228
-
sink(.Push(num));
229
-
}
230
-
| _ => ()
231
-
}
232
-
}));
233
-
}, (.signal) => {
234
-
switch (signal) {
235
-
| Start(x) => {
236
-
talkback := x;
237
-
x(.Pull);
238
-
}
239
-
| Push(x) when x < 6 => {
240
-
ignore(Js.Array.push(x, nums));
241
-
talkback^(.Pull);
242
-
}
243
-
| _ => ()
244
-
}
245
-
});
246
-
247
-
expect(nums) |> toEqual([|2, 4|])
248
-
});
249
-
250
-
testPromise("follows the spec for listenables", () => {
251
-
Wonka_thelpers.testWithListenable(Wonka.filter((._) => true))
252
-
|> Js.Promise.then_(x => {
253
-
expect(x)
254
-
|> toEqual(([||], [| Push(1), Push(2), End |]))
255
-
|> Js.Promise.resolve
256
-
})
257
-
});
258
-
259
-
testPromise("follows the spec for listenables when filtering", () => {
260
-
Wonka_thelpers.testWithListenable(Wonka.filter((._) => false))
261
-
|> Js.Promise.then_(x => {
262
-
expect(x)
263
-
|> toEqual(([| Pull, Pull |], [| End |]))
264
-
|> Js.Promise.resolve
265
-
})
266
-
});
267
-
268
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
269
-
let end_: talkbackT = Close;
270
-
271
-
Wonka_thelpers.testTalkbackEnd(Wonka.filter((._) => true))
272
-
|> Js.Promise.then_(x => {
273
-
expect(x)
274
-
|> toEqual(([| end_ |], [| Push(1) |]))
275
-
|> Js.Promise.resolve
276
-
})
277
-
});
278
-
});
279
-
280
-
describe("scan", () => {
281
-
open Expect;
282
-
283
-
it("folds emissions using an initial seed value", () => {
284
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
285
-
let num = ref(1);
286
-
287
-
let source = Wonka.scan((.acc, x) => acc + x, 0, sink => sink(.Start((.signal) => {
288
-
switch (signal) {
289
-
| Pull => {
290
-
let i = num^;
291
-
if (i <= 3) {
292
-
num := num^ + 1;
293
-
sink(.Push(i));
294
-
} else {
295
-
sink(.End);
296
-
}
297
-
}
298
-
| _ => ()
299
-
}
300
-
})));
301
-
302
-
let res = [||];
303
-
304
-
source((.signal) => {
305
-
switch (signal) {
306
-
| Start(x) => talkback := x
307
-
| _ => ignore(Js.Array.push(signal, res))
308
-
}
309
-
});
310
-
311
-
talkback^(.Pull);
312
-
talkback^(.Pull);
313
-
talkback^(.Pull);
314
-
talkback^(.Pull);
315
-
expect(res) |> toEqual([| Push(1), Push(3), Push(6), End |]);
316
-
});
317
-
318
-
testPromise("follows the spec for listenables", () => {
319
-
Wonka_thelpers.testWithListenable(Wonka.scan((._, x) => x, 0))
320
-
|> Js.Promise.then_(x => {
321
-
expect(x)
322
-
|> toEqual(([||], [| Push(1), Push(2), End |]))
323
-
|> Js.Promise.resolve
324
-
})
325
-
});
326
-
327
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
328
-
let end_: talkbackT = Close;
329
-
330
-
Wonka_thelpers.testTalkbackEnd(Wonka.scan((._, x) => x, 0))
331
-
|> Js.Promise.then_(x => {
332
-
expect(x)
333
-
|> toEqual(([| end_ |], [| Push(1) |]))
334
-
|> Js.Promise.resolve
335
-
})
336
-
});
337
-
});
338
-
339
-
describe("merge", () => {
340
-
open Expect;
341
-
open! Expect.Operators;
342
-
343
-
it("merges different sources into a single one", () => {
344
-
let a = Wonka.fromList([1, 2, 3]);
345
-
let b = Wonka.fromList([4, 5, 6]);
346
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
347
-
let signals = [||];
348
-
let source = Wonka.merge([| a, b |]);
349
-
350
-
source((.signal) => {
351
-
switch (signal) {
352
-
| Start(x) => {
353
-
talkback := x;
354
-
x(.Pull);
355
-
}
356
-
| Push(_) => {
357
-
ignore(Js.Array.push(signal, signals));
358
-
talkback^(.Pull);
359
-
}
360
-
| End => ignore(Js.Array.push(signal, signals))
361
-
};
362
-
});
363
-
364
-
expect(signals) == [| Push(1), Push(2), Push(3), Push(4), Push(5), Push(6), End |];
365
-
});
366
-
367
-
testPromise("follows the spec for listenables", () => {
368
-
Wonka_thelpers.testWithListenable(source => Wonka.merge([|source|]))
369
-
|> Js.Promise.then_(x => {
370
-
expect(x)
371
-
|> toEqual(([| Pull, Pull, Pull |], [| Push(1), Push(2), End |]))
372
-
|> Js.Promise.resolve
373
-
})
374
-
});
375
-
376
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
377
-
Wonka_thelpers.testTalkbackEnd(source => Wonka.merge([|source|]))
378
-
|> Js.Promise.then_(x => {
379
-
expect(x)
380
-
|> toEqual(([| Pull, Pull, Close |], [| Push(1) |]))
381
-
|> Js.Promise.resolve
382
-
})
383
-
});
384
-
});
385
-
386
-
describe("concat", () => {
387
-
open Expect;
388
-
open! Expect.Operators;
389
-
390
-
it("concatenates different sources into a single one", () => {
391
-
let a = Wonka.fromList([1, 2, 3]);
392
-
let b = Wonka.fromList([4, 5, 6]);
393
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
394
-
let signals = [||];
395
-
let source = Wonka.concat([| a, b |]);
396
-
397
-
source((.signal) => {
398
-
switch (signal) {
399
-
| Start(x) => {
400
-
talkback := x;
401
-
x(.Pull);
402
-
}
403
-
| Push(_) => {
404
-
ignore(Js.Array.push(signal, signals));
405
-
talkback^(.Pull);
406
-
}
407
-
| End => ignore(Js.Array.push(signal, signals))
408
-
};
409
-
});
410
-
411
-
expect(signals) == [| Push(1), Push(2), Push(3), Push(4), Push(5), Push(6), End |];
412
-
});
413
-
414
-
testPromise("follows the spec for listenables", () => {
415
-
Wonka_thelpers.testWithListenable(source => Wonka.concat([|source|]))
416
-
|> Js.Promise.then_(x => {
417
-
expect(x)
418
-
|> toEqual(([| Pull, Pull, Pull |], [| Push(1), Push(2), End |]))
419
-
|> Js.Promise.resolve
420
-
})
421
-
});
422
-
423
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
424
-
Wonka_thelpers.testTalkbackEnd(source => Wonka.concat([|source|]))
425
-
|> Js.Promise.then_(x => {
426
-
expect(x)
427
-
|> toEqual(([| Pull, Pull, Close |], [| Push(1) |]))
428
-
|> Js.Promise.resolve
429
-
})
430
-
});
431
-
});
432
-
433
-
describe("share", () => {
434
-
open Expect;
435
-
436
-
it("shares an underlying source with all sinks", () => {
437
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
438
-
let aborterTb = ref((._: Wonka_types.talkbackT) => ());
439
-
let num = ref(1);
440
-
let nums = [||];
441
-
442
-
let source = Wonka.share(sink => {
443
-
sink(.Start((.signal) => {
444
-
switch (signal) {
445
-
| Pull => {
446
-
let i = num^;
447
-
if (i <= 2) {
448
-
num := num^ + 1;
449
-
sink(.Push(i));
450
-
} else {
451
-
sink(.End);
452
-
}
453
-
}
454
-
| _ => ()
455
-
}
456
-
}));
457
-
});
458
-
459
-
source((.signal) => {
460
-
switch (signal) {
461
-
| Start(x) => talkback := x
462
-
| _ => ignore(Js.Array.push(signal, nums))
463
-
}
464
-
});
465
-
466
-
source((.signal) => {
467
-
switch (signal) {
468
-
| Start(_) => ()
469
-
| _ => ignore(Js.Array.push(signal, nums))
470
-
}
471
-
});
472
-
473
-
source((.signal) => {
474
-
switch (signal) {
475
-
| Start(tb) => aborterTb := tb
476
-
| _ => {
477
-
ignore(Js.Array.push(signal, nums));
478
-
aborterTb^(.Close);
479
-
}
480
-
}
481
-
});
482
-
483
-
talkback^(.Pull);
484
-
let numsA = Array.copy(nums);
485
-
talkback^(.Pull);
486
-
talkback^(.Pull);
487
-
talkback^(.Pull);
488
-
expect((numsA, nums)) |> toEqual(([| Push(1), Push(1), Push(1) |], [| Push(1), Push(1), Push(1), Push(2), Push(2), End, End |]));
489
-
});
490
-
491
-
testPromise("follows the spec for listenables", () => {
492
-
Wonka_thelpers.testWithListenable(Wonka.share)
493
-
|> Js.Promise.then_(x => {
494
-
expect(x)
495
-
|> toEqual(([||], [| Push(1), Push(2), End |]))
496
-
|> Js.Promise.resolve
497
-
})
498
-
});
499
-
500
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
501
-
let end_: talkbackT = Close;
502
-
503
-
Wonka_thelpers.testTalkbackEnd(Wonka.share)
504
-
|> Js.Promise.then_(x => {
505
-
expect(x)
506
-
|> toEqual(([| end_ |], [| Push(1) |]))
507
-
|> Js.Promise.resolve
508
-
})
509
-
});
510
-
});
511
-
512
-
describe("combine", () => {
513
-
open Expect;
514
-
515
-
it("combines the latest values of two sources", () => {
516
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
517
-
518
-
let makeSource = (factor: int) => {
519
-
let num = ref(1);
520
-
521
-
sink => {
522
-
sink(.Start((.signal) => {
523
-
switch (signal) {
524
-
| Pull => {
525
-
if (num^ <= 2) {
526
-
let i = num^ * factor;
527
-
num := num^ + 1;
528
-
sink(.Push(i));
529
-
} else {
530
-
sink(.End);
531
-
}
532
-
}
533
-
| _ => ()
534
-
}
535
-
}));
536
-
}
537
-
};
538
-
539
-
let sourceA = makeSource(1);
540
-
let sourceB = makeSource(2);
541
-
let source = Wonka.combine(sourceA, sourceB);
542
-
let res = [||];
543
-
544
-
source((.signal) => {
545
-
switch (signal) {
546
-
| Start(x) => talkback := x
547
-
| _ => ignore(Js.Array.push(signal, res))
548
-
}
549
-
});
550
-
551
-
talkback^(.Pull);
552
-
talkback^(.Pull);
553
-
talkback^(.Pull);
554
-
talkback^(.Pull);
555
-
expect(res) |> toEqual([| Push((1, 2)), Push((2, 2)), Push((2, 4)), End |]);
556
-
});
557
-
558
-
testPromise("follows the spec for listenables", () => {
559
-
Wonka_thelpers.testWithListenable(source => {
560
-
let shared = Wonka.share(source);
561
-
Wonka.combine(shared, shared)
562
-
})
563
-
|> Js.Promise.then_(x => {
564
-
expect(x)
565
-
|> toEqual(([||], [| Push((1, 1)), Push((2, 1)), Push((2, 2)), End |]))
566
-
|> Js.Promise.resolve
567
-
})
568
-
});
569
-
570
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
571
-
let end_: talkbackT = Close;
572
-
573
-
Wonka_thelpers.testTalkbackEnd(source => {
574
-
let shared = Wonka.share(source);
575
-
Wonka.combine(shared, shared)
576
-
})
577
-
|> Js.Promise.then_(x => {
578
-
expect(x)
579
-
|> toEqual(([| end_ |], [| Push((1, 1)) |]))
580
-
|> Js.Promise.resolve
581
-
})
582
-
});
583
-
});
584
-
585
-
describe("take", () => {
586
-
open Expect;
587
-
588
-
it("only lets a maximum number of values through", () => {
589
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
590
-
let num = ref(1);
591
-
592
-
let source = Wonka.take(2, sink => sink(.Start((.signal) => {
593
-
switch (signal) {
594
-
| Pull => {
595
-
let i = num^;
596
-
num := num^ + 1;
597
-
sink(.Push(i));
598
-
}
599
-
| _ => ()
600
-
}
601
-
})));
602
-
603
-
let res = [||];
604
-
605
-
source((.signal) => {
606
-
switch (signal) {
607
-
| Start(x) => talkback := x
608
-
| _ => ignore(Js.Array.push(signal, res))
609
-
}
610
-
});
611
-
612
-
talkback^(.Pull);
613
-
talkback^(.Pull);
614
-
talkback^(.Pull);
615
-
talkback^(.Pull);
616
-
expect(res) |> toEqual([| Push(1), Push(2), End |]);
617
-
});
618
-
619
-
it("accepts the end of the source when max number of emissions is not reached", () => {
620
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
621
-
let num = ref(1);
622
-
623
-
let source = Wonka.take(2, sink => sink(.Start((.signal) => {
624
-
switch (signal) {
625
-
| Pull => {
626
-
let i = num^;
627
-
if (i < 2) {
628
-
num := num^ + 1;
629
-
sink(.Push(i));
630
-
} else {
631
-
sink(.End);
632
-
}
633
-
}
634
-
| _ => ()
635
-
}
636
-
})));
637
-
638
-
let res = [||];
639
-
640
-
source((.signal) => {
641
-
switch (signal) {
642
-
| Start(x) => talkback := x
643
-
| _ => ignore(Js.Array.push(signal, res))
644
-
}
645
-
});
646
-
647
-
talkback^(.Pull);
648
-
talkback^(.Pull);
649
-
talkback^(.Pull);
650
-
expect(res) |> toEqual([| Push(1), End |]);
651
-
});
652
-
653
-
testPromise("follows the spec for listenables", () => {
654
-
Wonka_thelpers.testWithListenable(Wonka.take(10))
655
-
|> Js.Promise.then_(x => {
656
-
expect(x)
657
-
|> toEqual(([||], [| Push(1), Push(2), End |]))
658
-
|> Js.Promise.resolve
659
-
})
660
-
});
661
-
662
-
testPromise("follows the spec for listenables when ending the source", () => {
663
-
let end_: talkbackT = Close;
664
-
665
-
Wonka_thelpers.testWithListenable(Wonka.take(1))
666
-
|> Js.Promise.then_(x => {
667
-
expect(x)
668
-
|> toEqual(([| end_ |], [| Push(1), End |]))
669
-
|> Js.Promise.resolve
670
-
})
671
-
});
672
-
673
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
674
-
let end_: talkbackT = Close;
675
-
676
-
Wonka_thelpers.testTalkbackEnd(Wonka.take(10))
677
-
|> Js.Promise.then_(x => {
678
-
expect(x)
679
-
|> toEqual(([| end_ |], [| Push(1) |]))
680
-
|> Js.Promise.resolve
681
-
})
682
-
});
683
-
});
684
-
685
-
describe("takeLast", () => {
686
-
open Expect;
687
-
688
-
it("only lets the last n values through on an entirely new source", () => {
689
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
690
-
let num = ref(1);
691
-
692
-
let source = Wonka.takeLast(2, sink => sink(.Start((.signal) => {
693
-
switch (signal) {
694
-
| Pull when num^ <= 4 => {
695
-
let i = num^;
696
-
num := num^ + 1;
697
-
sink(.Push(i));
698
-
}
699
-
| Pull => sink(.End)
700
-
| _ => ()
701
-
}
702
-
})));
703
-
704
-
let res = [||];
705
-
706
-
source((.signal) => {
707
-
switch (signal) {
708
-
| Start(x) => talkback := x
709
-
| _ => ignore(Js.Array.push(signal, res))
710
-
}
711
-
});
712
-
713
-
talkback^(.Pull);
714
-
talkback^(.Pull);
715
-
talkback^(.Pull);
716
-
expect(res) |> toEqual([| Push(3), Push(4), End |]);
717
-
});
718
-
719
-
testPromise("follows the spec for listenables", () => {
720
-
Wonka_thelpers.testWithListenable(Wonka.takeLast(10))
721
-
|> Js.Promise.then_(x => {
722
-
expect(x)
723
-
|> toEqual(([| Pull, Pull, Pull |], [| /* empty since the source is a pullable */ |]))
724
-
|> Js.Promise.resolve
725
-
})
726
-
});
727
-
728
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
729
-
Wonka_thelpers.testTalkbackEnd(Wonka.takeLast(10))
730
-
|> Js.Promise.then_(x => {
731
-
expect(x)
732
-
|> toEqual(([| Pull, Pull |], [| |]))
733
-
|> Js.Promise.resolve
734
-
})
735
-
});
736
-
});
737
-
738
-
describe("takeWhile", () => {
739
-
open Expect;
740
-
741
-
it("only lets the last n values through on an entirely new source", () => {
742
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
743
-
let num = ref(1);
744
-
745
-
let source = Wonka.takeWhile((.x) => x <= 2, sink => sink(.Start((.signal) => {
746
-
switch (signal) {
747
-
| Pull => {
748
-
let i = num^;
749
-
num := num^ + 1;
750
-
sink(.Push(i));
751
-
}
752
-
| _ => ()
753
-
}
754
-
})));
755
-
756
-
let res = [||];
757
-
758
-
source((.signal) => {
759
-
switch (signal) {
760
-
| Start(x) => talkback := x
761
-
| _ => ignore(Js.Array.push(signal, res))
762
-
}
763
-
});
764
-
765
-
talkback^(.Pull);
766
-
talkback^(.Pull);
767
-
talkback^(.Pull);
768
-
talkback^(.Pull);
769
-
770
-
expect(res) |> toEqual([| Push(1), Push(2), End |]);
771
-
});
772
-
773
-
it("accepts the end of the source when max number of emissions is not reached", () => {
774
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
775
-
let num = ref(1);
776
-
777
-
let source = Wonka.takeWhile((.x) => x <= 5, sink => sink(.Start((.signal) => {
778
-
switch (signal) {
779
-
| Pull => {
780
-
let i = num^;
781
-
if (i < 2) {
782
-
num := num^ + 1;
783
-
sink(.Push(i));
784
-
} else {
785
-
sink(.End);
786
-
}
787
-
}
788
-
| _ => ()
789
-
}
790
-
})));
791
-
792
-
let res = [||];
793
-
794
-
source((.signal) => {
795
-
switch (signal) {
796
-
| Start(x) => talkback := x
797
-
| _ => ignore(Js.Array.push(signal, res))
798
-
}
799
-
});
800
-
801
-
talkback^(.Pull);
802
-
talkback^(.Pull);
803
-
talkback^(.Pull);
804
-
805
-
expect(res) |> toEqual([| Push(1), End |]);
806
-
});
807
-
808
-
testPromise("follows the spec for listenables", () => {
809
-
Wonka_thelpers.testWithListenable(Wonka.takeWhile((._) => true))
810
-
|> Js.Promise.then_(x => {
811
-
expect(x)
812
-
|> toEqual(([||], [| Push(1), Push(2), End |]))
813
-
|> Js.Promise.resolve
814
-
})
815
-
});
816
-
817
-
testPromise("follows the spec for listenables when ending the source", () => {
818
-
let end_: talkbackT = Close;
819
-
820
-
Wonka_thelpers.testWithListenable(Wonka.takeWhile((._) => false))
821
-
|> Js.Promise.then_(x => {
822
-
expect(x)
823
-
|> toEqual(([| end_ |], [| End |]))
824
-
|> Js.Promise.resolve
825
-
})
826
-
});
827
-
828
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
829
-
let end_: talkbackT = Close;
830
-
831
-
Wonka_thelpers.testTalkbackEnd(Wonka.takeWhile((._) => true))
832
-
|> Js.Promise.then_(x => {
833
-
expect(x)
834
-
|> toEqual(([| end_ |], [| Push(1) |]))
835
-
|> Js.Promise.resolve
836
-
})
837
-
});
838
-
});
839
-
840
-
describe("takeUntil", () => {
841
-
open Expect;
842
-
843
-
it("only lets the last n values through on an entirely new source", () => {
844
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
845
-
let notify = ref((_: Wonka_types.talkbackT) => ());
846
-
let num = ref(1);
847
-
848
-
let notifier = sink => {
849
-
notify := signal => switch (signal) {
850
-
| Pull => sink(.Push(0));
851
-
| _ => ()
852
-
};
853
-
854
-
sink(.Start(Wonka_helpers.talkbackPlaceholder));
855
-
};
856
-
857
-
let source = Wonka.takeUntil(notifier, sink => sink(.Start((.signal) => {
858
-
switch (signal) {
859
-
| Pull when num^ <= 4 => {
860
-
let i = num^;
861
-
if (i === 3) notify^(Pull);
862
-
num := num^ + 1;
863
-
sink(.Push(i));
864
-
}
865
-
| _ => ()
866
-
}
867
-
})));
868
-
869
-
let res = [||];
870
-
871
-
source((.signal) => {
872
-
switch (signal) {
873
-
| Start(x) => talkback := x
874
-
| _ => ignore(Js.Array.push(signal, res))
875
-
}
876
-
});
877
-
878
-
talkback^(.Pull);
879
-
talkback^(.Pull);
880
-
talkback^(.Pull);
881
-
talkback^(.Pull);
882
-
883
-
expect(res) |> toEqual([| Push(1), Push(2), End |]);
884
-
});
885
-
886
-
it("accepts the end of the source when max number of emissions is not reached", () => {
887
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
888
-
let num = ref(1);
889
-
let notifier = sink => sink(.Start(Wonka_helpers.talkbackPlaceholder));
890
-
891
-
let source = Wonka.takeUntil(notifier, sink => sink(.Start((.signal) => {
892
-
switch (signal) {
893
-
| Pull => {
894
-
let i = num^;
895
-
if (num^ <= 2) {
896
-
num := num^ + 1;
897
-
sink(.Push(i));
898
-
} else {
899
-
sink(.End);
900
-
}
901
-
}
902
-
| _ => ()
903
-
}
904
-
})));
905
-
906
-
let res = [||];
907
-
908
-
source((.signal) => {
909
-
switch (signal) {
910
-
| Start(x) => talkback := x
911
-
| _ => ignore(Js.Array.push(signal, res))
912
-
}
913
-
});
914
-
915
-
talkback^(.Pull);
916
-
talkback^(.Pull);
917
-
talkback^(.Pull);
918
-
talkback^(.Pull);
919
-
920
-
expect(res) |> toEqual([| Push(1), Push(2), End |]);
921
-
});
922
-
923
-
testPromise("follows the spec for listenables", () => {
924
-
Wonka_thelpers.testWithListenable(Wonka.takeUntil(Wonka.never))
925
-
|> Js.Promise.then_(x => {
926
-
expect(x)
927
-
|> toEqual(([||], [| Push(1), Push(2), End |]))
928
-
|> Js.Promise.resolve
929
-
})
930
-
});
931
-
932
-
testPromise("follows the spec for listenables when ending the source", () => {
933
-
let end_: talkbackT = Close;
934
-
935
-
Wonka_thelpers.testWithListenable(Wonka.takeUntil(Wonka.fromValue(0)))
936
-
|> Js.Promise.then_(x => {
937
-
expect(x)
938
-
|> toEqual(([| end_ |], [| End |]))
939
-
|> Js.Promise.resolve
940
-
})
941
-
});
942
-
943
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
944
-
let end_: talkbackT = Close;
945
-
946
-
Wonka_thelpers.testTalkbackEnd(Wonka.takeUntil(Wonka.never))
947
-
|> Js.Promise.then_(x => {
948
-
expect(x)
949
-
|> toEqual(([| end_ |], [| Push(1) |]))
950
-
|> Js.Promise.resolve
951
-
})
952
-
});
953
-
});
954
-
955
-
describe("skip", () => {
956
-
open Expect;
957
-
958
-
it("only lets values through after a number of values have been filtered out", () => {
959
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
960
-
let num = ref(1);
961
-
962
-
let source = Wonka.skip(2, sink => sink(.Start((.signal) => {
963
-
switch (signal) {
964
-
| Pull when num^ <= 4 => {
965
-
let i = num^;
966
-
num := num^ + 1;
967
-
sink(.Push(i));
968
-
}
969
-
| Pull => sink(.End)
970
-
| _ => ()
971
-
}
972
-
})));
973
-
974
-
let res = [||];
975
-
976
-
source((.signal) => {
977
-
switch (signal) {
978
-
| Start(x) => talkback := x
979
-
| _ => ignore(Js.Array.push(signal, res))
980
-
}
981
-
});
982
-
983
-
talkback^(.Pull);
984
-
talkback^(.Pull);
985
-
talkback^(.Pull);
986
-
expect(res) |> toEqual([| Push(3), Push(4), End |]);
987
-
});
988
-
989
-
testPromise("follows the spec for listenables", () => {
990
-
Wonka_thelpers.testWithListenable(Wonka.skip(0))
991
-
|> Js.Promise.then_(x => {
992
-
expect(x)
993
-
|> toEqual(([||], [| Push(1), Push(2), End |]))
994
-
|> Js.Promise.resolve
995
-
})
996
-
});
997
-
998
-
testPromise("follows the spec for listenables when skipping the source", () => {
999
-
Wonka_thelpers.testWithListenable(Wonka.skip(10))
1000
-
|> Js.Promise.then_(x => {
1001
-
expect(x)
1002
-
|> toEqual(([| Pull, Pull |], [| End |]))
1003
-
|> Js.Promise.resolve
1004
-
})
1005
-
});
1006
-
1007
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
1008
-
let end_: talkbackT = Close;
1009
-
1010
-
Wonka_thelpers.testTalkbackEnd(Wonka.skip(10))
1011
-
|> Js.Promise.then_(x => {
1012
-
expect(x)
1013
-
|> toEqual(([| Pull, end_ |], [| |]))
1014
-
|> Js.Promise.resolve
1015
-
})
1016
-
});
1017
-
});
1018
-
1019
-
describe("skipWhile", () => {
1020
-
open Expect;
1021
-
1022
-
it("only lets values through after the predicate returned false, including the first such value", () => {
1023
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
1024
-
let num = ref(1);
1025
-
1026
-
let source = Wonka.skipWhile((.x) => x <= 2, sink => sink(.Start((.signal) => {
1027
-
switch (signal) {
1028
-
| Pull when num^ <= 4 => {
1029
-
let i = num^;
1030
-
num := num^ + 1;
1031
-
sink(.Push(i));
1032
-
}
1033
-
| Pull => sink(.End)
1034
-
| _ => ()
1035
-
}
1036
-
})));
1037
-
1038
-
let res = [||];
1039
-
1040
-
source((.signal) => {
1041
-
switch (signal) {
1042
-
| Start(x) => talkback := x
1043
-
| _ => ignore(Js.Array.push(signal, res))
1044
-
}
1045
-
});
1046
-
1047
-
talkback^(.Pull);
1048
-
talkback^(.Pull);
1049
-
talkback^(.Pull);
1050
-
expect(res) |> toEqual([| Push(3), Push(4), End |]);
1051
-
});
1052
-
1053
-
testPromise("follows the spec for listenables", () => {
1054
-
Wonka_thelpers.testWithListenable(Wonka.skipWhile((._) => false))
1055
-
|> Js.Promise.then_(x => {
1056
-
expect(x)
1057
-
|> toEqual(([||], [| Push(1), Push(2), End |]))
1058
-
|> Js.Promise.resolve
1059
-
})
1060
-
});
1061
-
1062
-
testPromise("follows the spec for listenables when skipping the source", () => {
1063
-
Wonka_thelpers.testWithListenable(Wonka.skipWhile((._) => true))
1064
-
|> Js.Promise.then_(x => {
1065
-
expect(x)
1066
-
|> toEqual(([| Pull, Pull |], [| End |]))
1067
-
|> Js.Promise.resolve
1068
-
})
1069
-
});
1070
-
1071
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
1072
-
let end_: talkbackT = Close;
1073
-
1074
-
Wonka_thelpers.testTalkbackEnd(Wonka.skipWhile((._) => false))
1075
-
|> Js.Promise.then_(x => {
1076
-
expect(x)
1077
-
|> toEqual(([| end_ |], [| Push(1) |]))
1078
-
|> Js.Promise.resolve
1079
-
})
1080
-
});
1081
-
});
1082
-
1083
-
describe("skipUntil", () => {
1084
-
open Expect;
1085
-
1086
-
it("only lets values through after the notifier emits a value", () => {
1087
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
1088
-
let notify = ref((_: Wonka_types.talkbackT) => ());
1089
-
let num = ref(1);
1090
-
1091
-
let notifier = sink => {
1092
-
notify := signal => switch (signal) {
1093
-
| Pull => sink(.Push(0));
1094
-
| _ => ()
1095
-
};
1096
-
1097
-
sink(.Start(Wonka_helpers.talkbackPlaceholder));
1098
-
};
1099
-
1100
-
let source = Wonka.skipUntil(notifier, (sink) => sink(.Start((.signal) => {
1101
-
switch (signal) {
1102
-
| Pull when num^ <= 4 => {
1103
-
let i = num^;
1104
-
if (i === 3) notify^(Pull);
1105
-
num := num^ + 1;
1106
-
sink(.Push(i));
1107
-
}
1108
-
| Pull => sink(.End)
1109
-
| _ => ()
1110
-
}
1111
-
})));
1112
-
1113
-
let res = [||];
1114
-
1115
-
source((.signal) => {
1116
-
switch (signal) {
1117
-
| Start(x) => talkback := x
1118
-
| _ => ignore(Js.Array.push(signal, res))
1119
-
}
1120
-
});
1121
-
1122
-
talkback^(.Pull);
1123
-
talkback^(.Pull);
1124
-
talkback^(.Pull);
1125
-
talkback^(.Pull);
1126
-
1127
-
expect(res) |> toEqual([| Push(3), Push(4), End |]);
1128
-
});
1129
-
1130
-
it("accepts the end of the source when max number of emissions is not reached", () => {
1131
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
1132
-
let num = ref(1);
1133
-
let notifier = sink => sink(.Start(Wonka_helpers.talkbackPlaceholder));
1134
-
1135
-
let source = Wonka.skipUntil(notifier, (sink) => sink(.Start((.signal) => {
1136
-
switch (signal) {
1137
-
| Pull => {
1138
-
let i = num^;
1139
-
if (i < 2) {
1140
-
num := num^ + 1;
1141
-
sink(.Push(i));
1142
-
} else {
1143
-
sink(.End);
1144
-
}
1145
-
}
1146
-
| _ => ()
1147
-
}
1148
-
})));
1149
-
1150
-
let res = [||];
1151
-
1152
-
source((.signal) => {
1153
-
switch (signal) {
1154
-
| Start(x) => talkback := x
1155
-
| _ => ignore(Js.Array.push(signal, res))
1156
-
}
1157
-
});
1158
-
1159
-
talkback^(.Pull);
1160
-
talkback^(.Pull);
1161
-
talkback^(.Pull);
1162
-
1163
-
expect(res) |> toEqual([| End |]);
1164
-
});
1165
-
1166
-
testPromise("follows the spec for listenables", () => {
1167
-
Wonka_thelpers.testWithListenable(Wonka.skipUntil(Wonka.never))
1168
-
|> Js.Promise.then_(x => {
1169
-
expect(x)
1170
-
|> toEqual(([| Pull, Pull, Pull |], [| End |]))
1171
-
|> Js.Promise.resolve
1172
-
})
1173
-
});
1174
-
1175
-
testPromise("follows the spec for listenables when skipping the source", () => {
1176
-
Wonka_thelpers.testWithListenable(Wonka.skipUntil(Wonka.fromValue(0)))
1177
-
|> Js.Promise.then_(x => {
1178
-
expect(x)
1179
-
|> toEqual(([| Pull |], [| Push(1), Push(2), End |]))
1180
-
|> Js.Promise.resolve
1181
-
})
1182
-
});
1183
-
1184
-
testPromise("ends itself and source when its talkback receives the End signal", () => {
1185
-
let end_: talkbackT = Close;
1186
-
1187
-
Wonka_thelpers.testTalkbackEnd(Wonka.skipUntil(Wonka.fromValue(0)))
1188
-
|> Js.Promise.then_(x => {
1189
-
expect(x)
1190
-
|> toEqual(([| Pull, end_ |], [| Push(1) |]))
1191
-
|> Js.Promise.resolve
1192
-
})
1193
-
});
1194
-
});
1195
-
1196
-
describe("flatten", () => {
1197
-
open Expect;
1198
-
1199
-
it("merges the result of multiple pullables into its source", () => {
1200
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
1201
-
let source = Wonka.fromList([ Wonka.fromList([ 1, 2 ]), Wonka.fromList([ 1, 2 ]) ])
1202
-
|> Wonka.flatten;
1203
-
1204
-
let res = [||];
1205
-
1206
-
source((.signal) => {
1207
-
switch (signal) {
1208
-
| Start(x) => talkback := x
1209
-
| _ => ignore(Js.Array.push(signal, res))
1210
-
}
1211
-
});
1212
-
1213
-
talkback^(.Pull);
1214
-
talkback^(.Pull);
1215
-
talkback^(.Pull);
1216
-
talkback^(.Pull);
1217
-
talkback^(.Pull);
1218
-
expect(res) |> toEqual([| Push(1), Push(2), Push(1), Push(2), End |]);
1219
-
});
1220
-
});
1221
-
});
1222
-
1223
-
describe("sink factories", () => {
1224
-
describe("forEach", () => {
1225
-
open Expect;
1226
-
1227
-
it("calls a function for each emission of the passed source", () => {
1228
-
let i = ref(0);
1229
-
let nums = [||];
1230
-
1231
-
let source = sink => {
1232
-
sink(.Start((.signal) => {
1233
-
switch (signal) {
1234
-
| Pull when i^ < 4 => {
1235
-
let num = i^;
1236
-
i := i^ + 1;
1237
-
sink(.Push(num));
1238
-
}
1239
-
| Pull => sink(.End)
1240
-
| _ => ()
1241
-
}
1242
-
}));
1243
-
};
1244
-
1245
-
Wonka.forEach((.x) => ignore(Js.Array.push(x, nums)), source);
1246
-
expect(nums) |> toEqual([| 0, 1, 2, 3 |])
1247
-
});
1248
-
});
1249
-
1250
-
describe("subscribe", () => {
1251
-
open Expect;
1252
-
1253
-
it("calls a function for each emission of the passed source and stops when unsubscribed", () => {
1254
-
let i = ref(0);
1255
-
let nums = [||];
1256
-
let push = ref(() => ());
1257
-
1258
-
let source = sink => {
1259
-
push := () => {
1260
-
let num = i^;
1261
-
i := i^ + 1;
1262
-
sink(.Push(num));
1263
-
};
1264
-
1265
-
sink(.Start(Wonka_helpers.talkbackPlaceholder));
1266
-
};
1267
-
1268
-
let { unsubscribe } = Wonka.subscribe((.x) => ignore(Js.Array.push(x, nums)), source);
1269
-
1270
-
push^();
1271
-
push^();
1272
-
unsubscribe();
1273
-
push^();
1274
-
push^();
1275
-
1276
-
expect(nums) |> toEqual([| 0, 1 |])
1277
-
});
1278
-
});
1279
-
});
1280
-
1281
-
describe("chains (integration)", () => {
1282
-
open Expect;
1283
-
1284
-
it("fromArray, map, forEach", () => {
1285
-
let input = Array.mapi((i, _) => i, Array.make(1000, 1));
1286
-
let output = Array.map(x => string_of_int(x));
1287
-
let actual = [||];
1288
-
1289
-
input
1290
-
|> Wonka.fromArray
1291
-
|> Wonka.map((.x) => string_of_int(x))
1292
-
|> Wonka.forEach((.x) => ignore(Js.Array.push(x, actual)));
1293
-
1294
-
expect(output) |> toEqual(output)
1295
-
});
1296
-
});
1297
-
1298
-
describe("subject", () => {
1299
-
open Expect;
1300
-
open! Expect.Operators;
1301
-
1302
-
it("sends values passed to .next to puller sinks", () => {
1303
-
let signals = [||];
1304
-
1305
-
let subject = Wonka.makeSubject();
1306
-
1307
-
subject.source((.signal) =>
1308
-
switch (signal) {
1309
-
| Start(_) => ignore()
1310
-
| Push(_) => ignore(Js.Array.push(signal, signals))
1311
-
| End => ignore(Js.Array.push(signal, signals))
1312
-
}
1313
-
);
1314
-
1315
-
subject.next(10);
1316
-
subject.next(20);
1317
-
subject.next(30);
1318
-
subject.next(40);
1319
-
subject.complete();
1320
-
1321
-
expect(signals) == [|Push(10), Push(20), Push(30), Push(40), End|];
1322
-
});
1323
-
1324
-
it("handles multiple sinks", () => {
1325
-
let talkback = ref((._: Wonka_types.talkbackT) => ());
1326
-
let signalsOne = [||];
1327
-
let signalsTwo = [||];
1328
-
1329
-
let subject = Wonka.makeSubject();
1330
-
1331
-
subject.source((.signal) =>
1332
-
switch (signal) {
1333
-
| Start(x) => talkback := x
1334
-
| Push(_) => ignore(Js.Array.push(signal, signalsOne))
1335
-
| End => ignore(Js.Array.push(signal, signalsOne))
1336
-
}
1337
-
);
1338
-
1339
-
subject.source((.signal) =>
1340
-
switch (signal) {
1341
-
| Start(_) => ignore()
1342
-
| Push(_) => ignore(Js.Array.push(signal, signalsTwo))
1343
-
| End => ignore(Js.Array.push(signal, signalsTwo))
1344
-
}
1345
-
);
1346
-
1347
-
subject.next(10);
1348
-
subject.next(20);
1349
-
subject.next(30);
1350
-
1351
-
talkback^(.Close);
1352
-
1353
-
subject.next(40);
1354
-
subject.next(50);
1355
-
1356
-
subject.complete();
1357
-
1358
-
expect((signalsOne, signalsTwo))
1359
-
== (
1360
-
[|Push(10), Push(20), Push(30)|],
1361
-
[|Push(10), Push(20), Push(30), Push(40), Push(50), End|],
1362
-
);
1363
-
});
1364
-
1365
-
it("handles multiple sinks that subscribe and close at different times", () => {
1366
-
let talkbackOne = ref((._: Wonka_types.talkbackT) => ());
1367
-
let talkbackTwo = ref((._: Wonka_types.talkbackT) => ());
1368
-
let signalsOne = [||];
1369
-
let signalsTwo = [||];
1370
-
1371
-
let subject = Wonka.makeSubject();
1372
-
1373
-
subject.next(10);
1374
-
subject.next(20);
1375
-
1376
-
subject.source((.signal) =>
1377
-
switch (signal) {
1378
-
| Start(x) => talkbackOne := x
1379
-
| Push(_) => ignore(Js.Array.push(signal, signalsOne))
1380
-
| End => ignore(Js.Array.push(signal, signalsOne))
1381
-
}
1382
-
);
1383
-
1384
-
subject.next(30);
1385
-
1386
-
subject.source((.signal) =>
1387
-
switch (signal) {
1388
-
| Start(x) => talkbackTwo := x
1389
-
| Push(_) => ignore(Js.Array.push(signal, signalsTwo))
1390
-
| End => ignore(Js.Array.push(signal, signalsTwo))
1391
-
}
1392
-
);
1393
-
1394
-
subject.next(40);
1395
-
subject.next(50);
1396
-
1397
-
talkbackTwo^(.Close);
1398
-
1399
-
subject.next(60);
1400
-
1401
-
talkbackOne^(.Close);
1402
-
1403
-
subject.next(70);
1404
-
subject.complete();
1405
-
1406
-
expect((signalsOne, signalsTwo))
1407
-
== (
1408
-
[|Push(30), Push(40), Push(50), Push(60)|],
1409
-
[|Push(40), Push(50)|],
1410
-
);
1411
-
});
1412
-
});
-62
__tests__/wonka_thelpers.re
-62
__tests__/wonka_thelpers.re
···
1
-
open Wonka_types;
2
-
3
-
let testWithListenable = operator => {
4
-
let sink = ref((._: signalT(int)) => ());
5
-
let signals = [||];
6
-
let source = x => {
7
-
sink := x;
8
-
x(.Start((.signal) => {
9
-
ignore(Js.Array.push(signal, signals))
10
-
}));
11
-
};
12
-
13
-
let talkback = ref((._: talkbackT) => ());
14
-
let res = [||];
15
-
operator(source)((.signal) => {
16
-
switch (signal) {
17
-
| Start(x) => talkback := x
18
-
| _ => ignore(Js.Array.push(signal, res))
19
-
}
20
-
});
21
-
22
-
Js.Promise.make((~resolve, ~reject as _) => {
23
-
sink^(.Push(1));
24
-
ignore(Js.Global.setTimeout(() => {
25
-
sink^(.Push(2));
26
-
ignore(Js.Global.setTimeout(() => {
27
-
sink^(.End);
28
-
ignore(Js.Global.setTimeout(() => {
29
-
resolve(.(signals, res));
30
-
}, 0));
31
-
}, 0));
32
-
}, 0));
33
-
})
34
-
};
35
-
36
-
let testTalkbackEnd = operator => {
37
-
let sink = ref((._: signalT(int)) => ());
38
-
let signals: array(talkbackT) = [||];
39
-
let source = x => {
40
-
x(.Start((.signal) => ignore(Js.Array.push(signal, signals))));
41
-
sink := x;
42
-
};
43
-
44
-
let talkback = ref((._: talkbackT) => ());
45
-
let res = [||];
46
-
operator(source)((.signal) => {
47
-
switch (signal) {
48
-
| Start(x) => talkback := x
49
-
| _ => ignore(Js.Array.push(signal, res))
50
-
}
51
-
});
52
-
53
-
Js.Promise.make((~resolve, ~reject as _) => {
54
-
sink^(.Push(1));
55
-
ignore(Js.Global.setTimeout(() => {
56
-
talkback^(.Close);
57
-
ignore(Js.Global.setTimeout(() => {
58
-
resolve(.(signals, res));
59
-
}, 0));
60
-
}, 0));
61
-
})
62
-
};
-46
bsconfig.json
-46
bsconfig.json
···
1
-
{
2
-
"name": "wonka",
3
-
"version": "0.1.0",
4
-
"bsc-flags": ["-bs-super-errors", "-bs-no-version-header"],
5
-
"refmt": 3,
6
-
"package-specs": [
7
-
{
8
-
"module": "commonjs"
9
-
},
10
-
{
11
-
"module": "es6",
12
-
"in-source": true
13
-
}
14
-
],
15
-
"sources": [
16
-
{
17
-
"dir": "src",
18
-
"subdirs": [
19
-
{
20
-
"dir": "operators"
21
-
},
22
-
{
23
-
"dir": "sources"
24
-
},
25
-
{
26
-
"dir": "sinks"
27
-
},
28
-
{
29
-
"dir": "web",
30
-
"backend": ["js"]
31
-
}
32
-
]
33
-
},
34
-
{
35
-
"dir": "__tests__",
36
-
"type": "dev"
37
-
}
38
-
],
39
-
"bs-dependencies" : [
40
-
"bs-rebel"
41
-
],
42
-
"bs-dev-dependencies": [
43
-
"@glennsl/bs-jest"
44
-
],
45
-
"namespace": false
46
-
}
+21
docs/api/index.md
+21
docs/api/index.md
···
1
+
---
2
+
title: API Reference
3
+
order: 4
4
+
---
5
+
6
+
Wonka, in essence, can be used to create sources, to transform sources with operators,
7
+
and to consume values from a source with sinks.
8
+
9
+
Looking at the type definition for what a sink is, it's just a function that can be
10
+
called with a signal, which is either `Start`, `Push`, or `End`.
11
+
Building on that, a source is just a function
12
+
that takes a sink and calls it with signals over time. And lastly an operator is
13
+
a function that accepts a source, alongside some options most of the time, and returns
14
+
a new source.
15
+
16
+
Wonka comes with plenty of sources, operators, and sinks built in. This section
17
+
describes these and explains what they can be used for.
18
+
19
+
- [Sources](./sources.md) — learn the Wonka source APIs
20
+
- [Operators](./operators.md) — learn the Wonka operator APIs
21
+
- [Sinks](./sinks.md) — learn the Wonka sink APIs
+553
docs/api/operators.md
+553
docs/api/operators.md
···
1
+
---
2
+
title: Operators
3
+
order: 1
4
+
---
5
+
6
+
Operators in Wonka allow you to transform values from a source before they are sent to a sink. Wonka has the following operators.
7
+
8
+
## buffer
9
+
10
+
Buffers emissions from an outer source and emits a buffer array of items every time an
11
+
inner source (notifier) emits.
12
+
13
+
This operator can be used to group values into a arrays on a source. The emitted values will
14
+
be sent when a notifier fires and will be arrays of all items before the notification event.
15
+
16
+
In combination with `interval` this can be used to group values in chunks regularly.
17
+
18
+
```typescript
19
+
import { pipe, interval, buffer, take, subscribe } from 'wonka';
20
+
21
+
pipe(
22
+
interval(50),
23
+
buffer(interval(100)),
24
+
take(2),
25
+
subscribe((buffer) => {
26
+
buffer.forEach((x) => console.log(x));
27
+
console.log(';');
28
+
})
29
+
); // Prints 1 2; 2 3 to the console.
30
+
```
31
+
32
+
## combine
33
+
34
+
`combine` two sources together to a single source. The emitted value will be a combination of the two sources, with all values from the first source being emitted with the first value of the second source _before_ values of the second source are emitted.
35
+
36
+
```typescript
37
+
import { fromArray, pipe, combine, subscribe } from 'wonka';
38
+
39
+
const sourceOne = fromArray([1, 2, 3]);
40
+
const sourceTwo = fromArray([4, 5, 6]);
41
+
42
+
pipe(
43
+
combine(sourceOne, sourceTwo),
44
+
subscribe(([valOne, valTwo]) => {
45
+
console.log(valOne + valTwo);
46
+
})
47
+
); // Prints 56789 (1+4, 2+4, 3+4, 3+5, 3+6) to the console.
48
+
```
49
+
50
+
## concat
51
+
52
+
`concat` will combine two sources together, subscribing to the next source after the previous source completes.
53
+
54
+
```typescript
55
+
import { fromArray, pipe, concat, subscribe } from 'wonka';
56
+
57
+
const sourceOne = fromArray([1, 2, 3]);
58
+
const sourceTwo = fromArray([6, 5, 4]);
59
+
60
+
pipe(
61
+
concat([sourceOne, sourceTwo]),
62
+
subscribe((val) => console.log(val))
63
+
); // Prints 1 2 3 6 5 4 to the console.
64
+
```
65
+
66
+
## concatAll
67
+
68
+
`concatAll` will combine all sources emitted on an outer source together, subscribing to the
69
+
next source after the previous source completes.
70
+
71
+
It's very similar to `concat`, but instead accepts a source of sources as an input.
72
+
73
+
```typescript
74
+
import { pipe, fromArray, concatAll, subscribe } from 'wonka';
75
+
76
+
const sourceOne = fromArray([1, 2, 3]);
77
+
const sourceTwo = fromArray([6, 5, 4]);
78
+
79
+
pipe(
80
+
fromArray([sourceOne, sourceTwo]),
81
+
concatAll,
82
+
subscribe((val) => console.log(val))
83
+
); // Prints 1 2 3 6 5 4 to the console.
84
+
```
85
+
86
+
## concatMap
87
+
88
+
`concatMap` allows you to map values of an outer source to an inner source. The sink will not dispatch the `Pull` signal until the previous value has been emitted. This is in contrast to `mergeMap`, which will dispatch the `Pull` signal for new values even if the previous value has not yet been emitted.
89
+
90
+
```typescript
91
+
import { fromArray, pipe, concatMap, delay, fromValue, subscribe } from 'wonka';
92
+
93
+
const source = fromArray([1, 2, 3, 4, 5, 6]);
94
+
95
+
pipe(
96
+
source,
97
+
concatMap((val) => {
98
+
return pipe(fromValue(val), delay(val * 1000));
99
+
}),
100
+
subscribe((val) => console.log(val))
101
+
);
102
+
```
103
+
104
+
## delay
105
+
106
+
`delay` delays all emitted values of a source by the given amount of milliseconds.
107
+
108
+
```typescript
109
+
import { pipe, fromArray, delay, subscribe } from 'wonka';
110
+
111
+
pipe(
112
+
fromArray([1, 2]),
113
+
delay(10)
114
+
subscribe(val => console.log(val))
115
+
);
116
+
// waits 10ms then prints 1, waits 10ms then prints 2, waits 10ms then ends
117
+
```
118
+
119
+
## debounce
120
+
121
+
`debounce` doesn't emit values of a source until no values have been emitted after
122
+
a given amount of milliseconds. Once this threshold of silence has been reached, the
123
+
last value that has been received will be emitted.
124
+
125
+
```typescript
126
+
import { pipe, interval, take, fromValue, concat, debounce, subscribe } from 'wonka';
127
+
128
+
const sourceA = pipe(interval(10), take(5));
129
+
const sourceB = fromValue(1);
130
+
131
+
pipe(
132
+
concat([sourceA, sourceB])
133
+
debounce(() => 20),
134
+
subscribe(val => console.log(val))
135
+
);
136
+
137
+
// The five values from sourceA will be omitted
138
+
// After these values and after 20ms `1` will be logged
139
+
```
140
+
141
+
## filter
142
+
143
+
`filter` will remove values from a source by passing them through an iteratee that returns a `bool`.
144
+
145
+
```typescript
146
+
import { fromArray, filter, subscribe } from 'wonka';
147
+
148
+
const isEven = (n) => n % 2 === 0;
149
+
150
+
pipe(
151
+
fromArray([1, 2, 3, 4, 5, 6]),
152
+
filter(isEven),
153
+
subscribe((val) => console.log(val))
154
+
);
155
+
156
+
// Prints 246 to the console.
157
+
```
158
+
159
+
## map
160
+
161
+
`map` will transform values from a source by passing them through an iteratee that returns a new value.
162
+
163
+
```typescript
164
+
import { fromArray, pipe, map, subscribe } from 'wonka';
165
+
166
+
const square = (n) => n * n;
167
+
168
+
pipe(
169
+
fromArray([1, 2, 3, 4, 5, 6]),
170
+
map(square),
171
+
subscribe((val) => console.log(val))
172
+
);
173
+
174
+
// Prints 1 4 9 16 25 36 to the console.
175
+
```
176
+
177
+
## merge
178
+
179
+
`merge` merges an array of sources together into a single source. It subscribes
180
+
to all sources that it's passed and emits all their values on the output source.
181
+
182
+
```typescript
183
+
import { fromArray, pipe, merge, subscribe } from 'wonka';
184
+
185
+
const sourceOne = fromArray([1, 2, 3]);
186
+
const sourceTwo = fromArray([4, 5, 6]);
187
+
188
+
pipe(
189
+
merge(sourceOne, sourceTwo),
190
+
subscribe((val) => console.log(val))
191
+
); // Prints 1 2 3 4 5 6 to the console.
192
+
```
193
+
194
+
## mergeAll
195
+
196
+
`mergeAll` will merge all sources emitted on an outer source into a single one.
197
+
It's very similar to `merge`, but instead accepts a source of sources as an input.
198
+
199
+
> _Note:_ This operator is also exported as `flatten` which is just an alias for `mergeAll`
200
+
201
+
```typescript
202
+
import { pipe, fromArray, mergeAll, subscribe } from 'wonka';
203
+
204
+
const sourceOne = fromArray([1, 2, 3]);
205
+
const sourceTwo = fromArray([4, 5, 6]);
206
+
207
+
pipe(
208
+
fromArray([sourceOne, sourceTwo]),
209
+
mergeAll,
210
+
subscribe((val) => console.log(val))
211
+
); // Prints 1 2 3 4 5 6 to the console.
212
+
```
213
+
214
+
## mergeMap
215
+
216
+
`mergeMap` allows you to map values of an outer source to an inner source.
217
+
This allows you to create nested sources for each emitted value, which will
218
+
all be merged into a single source, like with `mergeAll`.
219
+
220
+
Unlike `concatMap` all inner sources will be subscribed to at the same time
221
+
and all their values will be emitted on the output source as they come in.
222
+
223
+
```typescript
224
+
import { pipe, fromArray, mergeMap, subscribe } from 'wonka';
225
+
226
+
pipe(
227
+
fromArray([1, 2]),
228
+
mergeMap((x) => fromArray([x - 1, x])),
229
+
subscribe((val) => console.log(val))
230
+
); // Prints 0 1 1 2 to the console.
231
+
```
232
+
233
+
## onEnd
234
+
235
+
Run a callback when the `End` signal has been sent to the sink by the source, whether by way of the talkback passing the `End` signal or the source being exhausted of values.
236
+
237
+
```typescript
238
+
import { fromPromise, pipe, concat, onEnd, subscribe } from 'wonka';
239
+
240
+
const promiseOne = new Promise((resolve) => {
241
+
setTimeout(() => {
242
+
resolve('ResolveOne');
243
+
}, 1000);
244
+
});
245
+
const promiseTwo = new Promise((resolve) => {
246
+
setTimeout(() => {
247
+
resolve('ResolveTwo');
248
+
}, 2000);
249
+
});
250
+
251
+
const sourceOne = fromPromise(promiseOne);
252
+
const sourceTwo = fromPromise(promiseTwo);
253
+
254
+
pipe(
255
+
concat([sourceOne, sourceTwo]),
256
+
onEnd(() => console.log('onEnd')),
257
+
subscribe((val) => console.log(val))
258
+
);
259
+
260
+
// Logs ResolveOne after one second, then ResolveTwo after an additional second, then onEnd immediately.
261
+
```
262
+
263
+
## onPush
264
+
265
+
Run a callback on each `Push` signal sent to the sink by the source.
266
+
267
+
> _Note:_ This operator is also exported as `tap` which is just an alias for `onPush`
268
+
269
+
```typescript
270
+
import { fromArray, pipe, onPush, subscribe } from 'wonka';
271
+
272
+
pipe(
273
+
fromArray([1, 2, 3, 4, 5, 6]),
274
+
onPush((val) => console.log(`Push ${val}`)),
275
+
subscribe((val) => console.log(val))
276
+
); // Prints Push 1 1 Push 2 2 Push 3 3 Push 4 4 Push 5 5 Push 6 6 to the console.
277
+
```
278
+
279
+
## onStart
280
+
281
+
Run a callback when the `Start` signal is sent to the sink by the source.
282
+
283
+
```typescript
284
+
import { pipe, onStart, fromPromise, subscribe } from 'wonka';
285
+
286
+
const promise = new Promise((resolve) => {
287
+
setTimeout(() => {
288
+
resolve('Resolve');
289
+
}, 1000);
290
+
});
291
+
292
+
pipe(
293
+
fromPromise(promise),
294
+
onStart(() => console.log('onStart')),
295
+
subscribe((val) => console.log(val))
296
+
);
297
+
298
+
// Logs onStart to the console, pauses for one second to allow the timeout to finish,
299
+
// then logs "Resolve" to the console.
300
+
```
301
+
302
+
## sample
303
+
304
+
`sample` emits the previously emitted value from an outer source every time
305
+
an inner source (notifier) emits.
306
+
307
+
In combination with `interval` it can be used to get values from a noisy source
308
+
more regularly.
309
+
310
+
```typescript
311
+
import { pipe, interval, sample, take, subscribe } from 'wonka';
312
+
313
+
pipe(
314
+
interval(10),
315
+
sample(interval(100)),
316
+
take(2),
317
+
subscribe((x) => console.log(x))
318
+
); // Prints 10 20 to the console.
319
+
```
320
+
321
+
## scan
322
+
323
+
Accumulate emitted values of a source in a accumulator, similar to JavaScript `reduce`.
324
+
325
+
```typescript
326
+
import { fromArray, pipe, scan, subscribe } from 'wonka';
327
+
328
+
pipe(
329
+
fromArray([1, 2, 3, 4, 5, 6]),
330
+
scan((acc, val) => acc + val, 0),
331
+
subscribe((val) => console.log(val))
332
+
);
333
+
334
+
// Prints 1 3 6 10 15 21 to the console.
335
+
```
336
+
337
+
## share
338
+
339
+
`share` ensures that all subscriptions to the underlying source are shared.
340
+
341
+
By default Wonka's sources are lazy. They only instantiate themselves and begin
342
+
emitting signals when they're being subscribed to, since they're also immutable.
343
+
This means that when a source is used in multiple places, their underlying subscription
344
+
is not shared. Instead, the entire chain of sources and operators will be instantiated
345
+
separately every time.
346
+
347
+
The `share` operator prevents this by creating an output source that will reuse a single
348
+
subscription to the parent source, which will be unsubscribed from when no sinks are
349
+
listening to it anymore.
350
+
351
+
This is especially useful if you introduce side-effects to your sources,
352
+
for instance with `onStart`.
353
+
354
+
```typescript
355
+
import { pipe, never, onStart, share, publish } from 'wonka';
356
+
357
+
const source = pipe(
358
+
never
359
+
onStart(() => console.log('start')),
360
+
share
361
+
);
362
+
363
+
// Without share this would print "start" twice:
364
+
publish(source);
365
+
publish(source);
366
+
```
367
+
368
+
## skip
369
+
370
+
`skip` the specified number of emissions from the source.
371
+
372
+
```typescript
373
+
import { fromArray, pipe, skip, subscribe } from 'wonka';
374
+
375
+
pipe(
376
+
fromArray([1, 2, 3, 4, 5, 6]),
377
+
skip(2),
378
+
subscribe((val) => console.log(val))
379
+
);
380
+
```
381
+
382
+
## skipUntil
383
+
384
+
Skip emissions from an outer source until an inner source (notifier) emits.
385
+
386
+
```typescript
387
+
import { interval, pipe, skipUntil, subscribe } from 'wonka';
388
+
389
+
const source = interval(100);
390
+
const notifier = interval(500);
391
+
392
+
pipe(
393
+
source,
394
+
skipUntil(notifier),
395
+
subscribe((val) => console.log(val))
396
+
);
397
+
398
+
// Skips all values emitted by source (0, 1, 2, 3) until notifier emits at 500ms.
399
+
// Then logs 4 5 6 7 8 9 10... to the console every 500ms.
400
+
```
401
+
402
+
## skipWhile
403
+
404
+
Skip values emitted from the source while they return `true` for the provided predicate function.
405
+
406
+
```typescript
407
+
import { fromArray, pipe, skipWhile, subscribe } from 'wonka';
408
+
409
+
pipe(
410
+
fromArray([1, 2, 3, 4, 5, 6]),
411
+
skipWhile((val) => val < 5),
412
+
subscribe((val) => console.log(val))
413
+
);
414
+
415
+
// Prints 5 6 to the console, as 1 2 3 4 all return true for the predicate function.
416
+
```
417
+
418
+
## switchMap
419
+
420
+
`switchMap` allows you to map values of an outer source to an inner source.
421
+
The inner source's values will be emitted on the returned output source. If
422
+
a new inner source is returned, because the outer source emitted a new value
423
+
before the previous inner source completed, the inner source is closed and unsubscribed
424
+
from.
425
+
426
+
This is similar to `concatMap` but instead of waiting for the last inner source to complete
427
+
before emitting values from the next, `switchMap` just cancels the previous inner source.
428
+
429
+
```typescript
430
+
import { pipe, interval, switchMap, take, subscribe } from 'wonka';
431
+
432
+
pipe(
433
+
interval(50),
434
+
// The inner interval is cancelled after its first value every time
435
+
switchMap((value) => interval(40)),
436
+
take(3),
437
+
subscribe((x) => console.log(x))
438
+
); // Prints 1 2 3 to the console
439
+
```
440
+
441
+
## switchAll
442
+
443
+
`switchAll` will combined sources emitted on an outer source together, subscribing
444
+
to only one source at a time, and cancelling the previous inner source, when it hasn't
445
+
ended while the next inner source is created.
446
+
447
+
It's very similar to `switchMap`, but instead accepts a source of sources.
448
+
449
+
```typescript
450
+
import { pipe, interval, map, switchAll, take, subscribe } from 'wonka';
451
+
452
+
pipe(
453
+
interval(50),
454
+
map(() => interval(40)),
455
+
switchAll,
456
+
take(3),
457
+
subscribe((x) => console.log(x))
458
+
); // Prints 1 2 3 to the console
459
+
```
460
+
461
+
These examples are practically identical to the `switchMap` examples, but note
462
+
that `map` was used instead of using `switchMap` directly. This is because combining
463
+
`map` with a subsequent `switchAll` is the same as using `switchMap`.
464
+
465
+
## take
466
+
467
+
`take` only a specified number of emissions from the source before completing. `take` is the opposite of `skip`.
468
+
469
+
```typescript
470
+
import { fromArray, pipe, take, subscribe } from 'wonka';
471
+
472
+
pipe(
473
+
fromArray([1, 2, 3, 4, 5, 6]),
474
+
take(3),
475
+
subscribe((val) => console.log(val))
476
+
);
477
+
478
+
// Prints 1 2 3 to the console.
479
+
```
480
+
481
+
## takeLast
482
+
483
+
`takeLast` will take only the last n emissions from the source.
484
+
485
+
```typescript
486
+
import { fromArray, pipe, takeLast, subscribe } from 'wonka';
487
+
488
+
pipe(
489
+
fromArray([1, 2, 3, 4, 5, 6]),
490
+
takeLast(3),
491
+
subscribe((val) => console.log(val))
492
+
);
493
+
494
+
// Prints 4 5 6 to the console.
495
+
```
496
+
497
+
## takeUntil
498
+
499
+
Take emissions from an outer source until an inner source (notifier) emits.
500
+
501
+
```typescript
502
+
import { interval, pipe, takeUntil, subscribe } from 'wonka';
503
+
504
+
const source = interval(100);
505
+
const notifier = interval(500);
506
+
507
+
pipe(
508
+
source,
509
+
takeUntil(notifier),
510
+
subscribe((val) => console.log(val))
511
+
);
512
+
513
+
// Pauses 100ms, prints 0, pauses 100ms, prints 1, pauses 100ms, prints 2, pauses 100ms,
514
+
// prints 3, pauses 100, then completes (notifier emits).
515
+
```
516
+
517
+
## takeWhile
518
+
519
+
Take emissions from the stream while they return `true` for the provided predicate function. If the first emission does not return `true`, no values will be `Push`ed to the sink.
520
+
521
+
```typescript
522
+
import { pipe, fromArray, takeWhile, subscribe } from 'wonka';
523
+
524
+
const source = fromArray([1, 2, 3, 4, 5, 6]);
525
+
526
+
pipe(
527
+
source,
528
+
takeWhile((val) => val < 5),
529
+
subscribe((val) => console.log(val))
530
+
);
531
+
532
+
// Prints 1 2 3 4 to the console.
533
+
```
534
+
535
+
## throttle
536
+
537
+
`throttle` emits values of a source, but after each value it will omit all values for
538
+
the given amount of milliseconds. It enforces a time of silence after each value it
539
+
receives and skips values while the silence is still ongoing.
540
+
541
+
This is very similar to `debounce` but instead of waiting for leading time before a
542
+
value it waits for trailing time after a value.
543
+
544
+
```typescript
545
+
import { pipe, interval, throttle, take, subscribe } from 'wonka';
546
+
547
+
pipe(
548
+
interval(10),
549
+
throttle(() => 50)
550
+
take(2),
551
+
subscribe(val => console.log(val))
552
+
); // Outputs 0 6 to the console.
553
+
```
+145
docs/api/sinks.md
+145
docs/api/sinks.md
···
1
+
---
2
+
title: Sinks
3
+
order: 2
4
+
---
5
+
6
+
A sink in Wonka expects to be delivered data. A `sink` communicates with a source via the "talkback" function provided by the source. Wonka has the following `sink` operators.
7
+
8
+
## subscribe
9
+
10
+
`subscribe` accepts a callback function to execute when data is received from the source, in addition to the source itself.
11
+
12
+
```typescript
13
+
import { pipe, fromArray, subscribe } from 'wonka';
14
+
15
+
pipe(
16
+
fromArray([1, 2, 3]),
17
+
subscribe((x) => console.log(x))
18
+
); // Prints 123 to the console.
19
+
```
20
+
21
+
`subscribe` also returns a "subscription" type, which can be used to
22
+
unsubscribe from the source. This allows you to cancel a source and stop receiving
23
+
new incoming values.
24
+
25
+
```typescript
26
+
import { pipe, subscribe } from 'wonka';
27
+
28
+
const { unsubscribe } = pipe(
29
+
source,
30
+
subscribe((x) => console.log(x));
31
+
);
32
+
33
+
unsubscribe();
34
+
```
35
+
36
+
## forEach
37
+
38
+
`forEach` works the same as `subscribe` but doesn't return a subscription.
39
+
It will just call the passed callback for each incoming value.
40
+
41
+
```typescript
42
+
import { pipe, fromArray, forEach } from 'wonka';
43
+
44
+
pipe(
45
+
fromArray([1, 2, 3]),
46
+
forEach((x) => console.log(x))
47
+
); // Returns undefined; Prints 123 to the console.
48
+
```
49
+
50
+
## publish
51
+
52
+
`publish` subscribes to a source, like `subscribe` does, but doesn't accept
53
+
a callback function. It's useful for side-effects, where the values are already being
54
+
used as part of the stream itself.
55
+
56
+
In this example we're using [`onPush`](./operators.md#onpush) to pass a callback to react to incoming
57
+
values instead.
58
+
59
+
```typescript
60
+
import { pipe, fromArray, onPush, publish } from 'wonka';
61
+
62
+
pipe(
63
+
fromArray([1, 2, 3]),
64
+
onPush((x) => console.log(x)),
65
+
publish
66
+
); // Prints 123 to the console.
67
+
```
68
+
69
+
## toArray
70
+
71
+
`toArray` returns an array, which contains all values from a pull source.
72
+
This sink is primarily intended for synchronous pull streams. Passing it
73
+
an asynchronous push streams may result in an empty array being returned.
74
+
75
+
If you're passing an asynchronous push stream `toArray` will cancel it
76
+
before it returns an array.
77
+
78
+
> _Note:_ If you're using this sink, make sure that your input source streams
79
+
> the values you're collecting partly or fully synchronously.
80
+
81
+
```typescript
82
+
import { pipe, fromArray, map, toArray } from 'wonka';
83
+
84
+
pipe(
85
+
fromArray([1, 2, 3]),
86
+
map((x) => x * 2),
87
+
toArray
88
+
); // Returns [2, 4, 6]
89
+
```
90
+
91
+
## toPromise
92
+
93
+
`toPromise` returns a promise, which resolves on the last value of a source.
94
+
95
+
```typescript
96
+
import { pipe, fromArray, toPromise } from 'wonka';
97
+
98
+
const promise = pipe(fromArray([1, 2, 3]), toPromise);
99
+
100
+
promise.then((x) => console.log(x));
101
+
// Prints 3 to the console.
102
+
```
103
+
104
+
If you have a source that doesn't complete and are looking to resolve on the first
105
+
value instead of the last, you may have to apply `take(1)` to your source.
106
+
107
+
## toObservable
108
+
109
+
`toObservable` returns a [spec-compliant JS Observable](https://github.com/tc39/proposal-observable), which emits the same
110
+
values as a source.
111
+
112
+
As per the specification, the Observable is annotated using `Symbol.observable`.
113
+
114
+
```typescript
115
+
import { pipe, fromArray, toObservable } from 'wonka';
116
+
117
+
const observable = pipe(fromArray([1, 2, 3]), toObservable);
118
+
119
+
observable.subscribe({
120
+
next: (value) => console.log(value),
121
+
complete: () => {},
122
+
error: () => {},
123
+
}); // Prints 1 2 3 to the console.
124
+
```
125
+
126
+
## toCallbag
127
+
128
+
`toCallbag` returns a [spec-compliant JS Callbag](https://github.com/callbag/callbag), which emits the same signals
129
+
as a Wonka source.
130
+
131
+
Since Wonka's sources are very similar to callbags and only diverge from the specification
132
+
minimally, Callbags map to Wonka's sources very closely and `toCallbag` only creates a thin
133
+
wrapper which is mostly concerned with converting between the type signatures.
134
+
135
+
```typescript
136
+
import { pipe, fromArray, toCallbag } from 'wonka';
137
+
138
+
// This example uses the callbag-iterate package for illustrative purposes
139
+
import callbagIterate from 'callbag-iterate';
140
+
141
+
const callbag = pipe(fromArray([1, 2, 3]), toCallbag);
142
+
143
+
callbagIterate((value) => console.log(value))(callbag);
144
+
// Prints 1 2 3 to the console.
145
+
```
+209
docs/api/sources.md
+209
docs/api/sources.md
···
1
+
---
2
+
title: Sources
3
+
order: 0
4
+
---
5
+
6
+
A "source" in Wonka is a provider of data. It provides data to a "sink" when the "sink" requests it. This is called a pull signal and for synchronous sources no time will pass between the sink pulling a new value and a source sending it. For asynchronous sources, the source may either ignore pull signals and just push values or send one some time after the pull signal.
7
+
8
+
## fromArray
9
+
10
+
`fromArray` transforms an array into a source, emitting each item synchronously.
11
+
12
+
```typescript
13
+
import { fromArray } from 'wonka';
14
+
fromArray([1, 2, 3]);
15
+
```
16
+
17
+
## fromValue
18
+
19
+
`fromValue` takes a single value and creates a source that emits the value and
20
+
completes immediately afterwards.
21
+
22
+
```typescript
23
+
import { fromValue } from 'wonka';
24
+
fromValue(1);
25
+
```
26
+
27
+
## make
28
+
29
+
`make` can be used to create an arbitrary source. It allows you to make a source
30
+
from any other data.
31
+
It accepts a function that receives an "observer" and should return a teardown
32
+
function. It's very similar to creating an [Observable in `zen-observable`](https://github.com/zenparsing/zen-observable#new-observablesubscribe).
33
+
34
+
The function you pass to `make` is called lazily when a sink subscribes to the
35
+
source you're creating. The first argument `observer` is a tuple with two methods:
36
+
37
+
- `next(value)` emits a value on the sink
38
+
- `complete()` ends the source and completes the sink
39
+
40
+
The subscriber function also needs to return a `teardown` function. This function
41
+
is called when either `complete()` is called and the source ends, or if the source
42
+
is being cancelled, since the sink unsubscribed.
43
+
44
+
In this example we create a source that waits for a promise to resolve and emits
45
+
values from the array of that promise.
46
+
47
+
```typescript
48
+
import { make } from 'wonka';
49
+
50
+
const waitForArray = () => Promise.resolve([1, 2, 3]);
51
+
52
+
const source = make((observer) => {
53
+
const { next, complete } = observer;
54
+
let cancelled = false;
55
+
56
+
waitForArray().then((arr) => {
57
+
if (!cancelled) {
58
+
arr.forEach(next);
59
+
complete();
60
+
}
61
+
});
62
+
63
+
return () => {
64
+
cancelled = true;
65
+
};
66
+
});
67
+
```
68
+
69
+
## makeSubject
70
+
71
+
`makeSubject` can be used to create a subject. This is similar to [`make`](#make) without
72
+
having to define a source function. Instead a subject is a tuple of a source and
73
+
the observer's `next` and `complete` functions combined.
74
+
75
+
A subject can be very useful as a full event emitter. It allows you to pass a source
76
+
around but also have access to the observer functions to emit events away from
77
+
the source itself.
78
+
79
+
```typescript
80
+
import { makeSubject } from 'wonka';
81
+
const subject = makeSubject();
82
+
const { source, next, complete } = subject;
83
+
84
+
/* This will push the values synchronously to any subscribers of source */
85
+
next(1);
86
+
next(2);
87
+
next(complete);
88
+
```
89
+
90
+
## fromDomEvent
91
+
92
+
`fromDomEvent` will turn a DOM event into a Wonka source, emitting the DOM events
93
+
on the source whenever the DOM emits them on the passed element.
94
+
95
+
```typescript
96
+
import { pipe, fromDomEvent, subscribe } from 'wonka';
97
+
98
+
const element = document.getElementById('root');
99
+
100
+
pipe(
101
+
fromDomEvent(element, 'click'),
102
+
subscribe((e) => console.log(e))
103
+
);
104
+
```
105
+
106
+
## fromPromise
107
+
108
+
`fromPromise` transforms a promise into a source, emitting the promisified value on
109
+
the source once it resolves.
110
+
111
+
```typescript
112
+
import { pipe, fromPromise, subscribe } from 'wonka';
113
+
114
+
const promise = Promise.resolve(1); // Just an example promise
115
+
116
+
pipe(
117
+
fromPromise(promise),
118
+
subscribe((e) => console.log(e))
119
+
); // Prints 1 to the console.
120
+
```
121
+
122
+
## fromObservable
123
+
124
+
`fromObservable` transforms a [spec-compliant JS Observable](https://github.com/tc39/proposal-observable) into a source.
125
+
The resulting source will behave exactly the same as the Observable that it was
126
+
passed, so it will start, end, and push values identically.
127
+
128
+
```typescript
129
+
import { pipe, fromObservable, subscribe } from 'wonka';
130
+
131
+
// This example uses zen-observable for illustrative purposes
132
+
import Observable from 'zen-observable';
133
+
134
+
const observable = Observable.from([1, 2, 3]);
135
+
136
+
pipe(
137
+
fromObservable(observable),
138
+
subscribe((e) => console.log(e))
139
+
); // Prints 1 2 3 to the console
140
+
```
141
+
142
+
## fromCallbag
143
+
144
+
`fromCallbag` transforms a [spec-compliant JS Callbag](https://github.com/callbag/callbag) into a source.
145
+
146
+
Since Wonka's sources are very similar to callbags and only diverge from the specification
147
+
minimally, Callbags map to Wonka's sources very closely and the `fromCallbag` wrapper
148
+
is very thin and mostly concerned with converting between the type signatures.
149
+
150
+
```typescript
151
+
import { pipe, fromCallbag, subscribe } from 'wonka';
152
+
153
+
// This example uses the callbag-from-iter package for illustrative purposes
154
+
import callbagFromArray from 'callbag-from-iter';
155
+
156
+
const callbag = callbagFromArray([1, 2, 3]);
157
+
158
+
pipe(
159
+
fromCallbag(callbag),
160
+
subscribe((e) => console.log(e))
161
+
); // Prints 1 2 3 to the console.
162
+
```
163
+
164
+
## interval
165
+
166
+
`interval` creates a source that emits values after the given amount of milliseconds.
167
+
Internally it uses `setInterval` to accomplish this.
168
+
169
+
```typescript
170
+
import { pipe, interval, subscribe } from 'wonka';
171
+
172
+
pipe(
173
+
interval(50),
174
+
subscribe((e) => console.log(e))
175
+
); // Prints 0 1 2... to the console.
176
+
// The incrementing number is logged every 50ms
177
+
```
178
+
179
+
## empty
180
+
181
+
This is a source that doesn't emit any values when subscribed to and
182
+
immediately completes.
183
+
184
+
```typescript
185
+
import { pipe, empty, forEach } from 'wonka';
186
+
187
+
pipe(
188
+
empty,
189
+
forEach((value) => {
190
+
/* This will never be called */
191
+
})
192
+
);
193
+
```
194
+
195
+
## never
196
+
197
+
This is source is similar to [`empty`](#empty).
198
+
It doesn't emit any values but also never completes.
199
+
200
+
```typescript
201
+
import { pipe, never, forEach } from 'wonka';
202
+
203
+
pipe(
204
+
never,
205
+
forEach((value) => {
206
+
/* This will never be called */
207
+
})
208
+
);
209
+
```
+129
docs/basics/architecture.md
+129
docs/basics/architecture.md
···
1
+
---
2
+
title: Architecture
3
+
order: 1
4
+
---
5
+
6
+
It may be useful to understand how Wonka's sources work internally
7
+
if you want to write a new operator from scratch or contribute to it.
8
+
9
+
This section explains how Wonka works internally and how it differs from
10
+
the callbag specification.
11
+
12
+
## Just Functions
13
+
14
+
Internally Wonka only uses functions with rather simple signatures to
15
+
make its streams work.
16
+
17
+
We have sinks on one end, which need to receive values, and sources
18
+
on the other, which need to send values.
19
+
The sink is therefore just a function that we call with values over time.
20
+
This is called a "push" signal.
21
+
22
+
Because a sink has a start, incoming values, and an end, there are three
23
+
signals that a sink can receive: `Start`, `Push`, and `End`.
24
+
25
+
```typescript
26
+
type Start = { tag: 0 }; // & [TalkbackFn]
27
+
type Push<T> = { tag: 1 } & [T];
28
+
type End = 0;
29
+
30
+
type Signal<T> = Start | Push<T> | End;
31
+
32
+
type Sink<T> = (signal: Signal<T>) => void;
33
+
```
34
+
35
+
As shown, the sink is just a function accepting a signal as its argument.
36
+
37
+
When the stream starts then the sink is called with `Start`,
38
+
Then for every incoming, new value it's called with `Push<T>`,
39
+
and when the stream ends it's finally called with `End`.
40
+
41
+
Since we want a source to send these values to the sink, the source is
42
+
also just a function and it accepts a sink as its argument.
43
+
44
+
```typescript
45
+
type Source<T> = (sink: Sink<T>) => void;
46
+
```
47
+
48
+
This is completely sufficient to represent simple "push" streams, where
49
+
values are pushed from the source to the sink. They essentially flow from
50
+
the "top" to the "bottom".
51
+
52
+
Operators are just functions that transform a source. They take a
53
+
source and some number of arguments and return a new source.
54
+
Internally they may also create a new sink function that wraps the
55
+
sink that their source will be called with.
56
+
57
+
The type signature of an operator with no other arguments is thus:
58
+
59
+
```typescript
60
+
type Operator<In, Out> = (source: Source<In>) => Source<Out>;
61
+
/* which is the same as: */
62
+
type Operator<In, Out> = (source: Source<In>) => (sink: Sink<Out>) => void;
63
+
```
64
+
65
+
## Adding Callbacks
66
+
67
+
To complete this pattern we're still missing a single piece: callbacks!
68
+
69
+
Previously, we've looked at how sources are functions that accept sinks, which
70
+
in turn are functions accepting a signal. What we're now missing is what makes
71
+
Wonka's streams also work as iterables.
72
+
73
+
We'd also like to be able to _cancel_ streams, so that we can interrupt
74
+
them and not receive any more values.
75
+
76
+
We can achieve this by passing a callback function on when a stream starts.
77
+
In Wonka, a sink's `Start` signal also carries a callback that is used to communicate
78
+
back to the source, making these "talkback signals" flow from the bottom to the top.
79
+
80
+
```typescript
81
+
const enum TalkbackKind {
82
+
Pull = 0,
83
+
Close = 1,
84
+
}
85
+
86
+
type TalkbackFn = (signal: TalkbackKind) => void;
87
+
type Start = { tag: 0 } & [TalkbackFn];
88
+
```
89
+
90
+
This is like the previous `Signal<T>` definition, but the `Start` signal has the
91
+
callback definition now. The callback accepts one of two signals: `Pull` or `Close`.
92
+
93
+
`Close` is a signal that will cancel the stream. It tells the source to stop sending
94
+
new values.
95
+
96
+
The `Pull` signal is a signal that asks the source to send the next value. This is
97
+
especially useful to represent iterables. In practice a user would never send this
98
+
signal explicitly, but sinks would send the signal automatically after receiving the
99
+
previous value from the stream.
100
+
101
+
In asynchronous streams the `Pull` signal is of course a no-op. It won't do
102
+
anything since we can't ask for asynchronous values.
103
+
104
+
## Comparison to Callbags
105
+
106
+
This is the full pattern of Wonka's streams and it's a little different from callbags.
107
+
These changes have been made to make Wonka's streams typesafe. But there's
108
+
also a small omission that makes Wonka's streams easier to explain.
109
+
110
+
In Callbags, sources don't just accept sinks as their only argument. In fact, in
111
+
callbags the source would also receive three different signals. This can be useful
112
+
to represent "subjects".
113
+
114
+
A subject is a sink and source combined. It can be used to dispatch values imperatively,
115
+
like an event dispatcher.
116
+
117
+
In Wonka there's a separate type for subjects however, since this reduces the
118
+
complexity of its streams a lot:
119
+
120
+
```reason
121
+
interface Subject<T> {
122
+
next(value: T): void;
123
+
complete(): void;
124
+
source: Source<T>;
125
+
}
126
+
```
127
+
128
+
Hence in Wonka a subject is simply a wrapper around a source and a `next` and `complete`
129
+
method.
+66
docs/basics/background.md
+66
docs/basics/background.md
···
1
+
---
2
+
title: Background
3
+
order: 0
4
+
---
5
+
6
+
In a lot of daily tasks in programming we come across patterns where
7
+
we deal with lists of values. In JavaScript we'd reach to arrays to
8
+
collect them, and luckily there are plenty of methods built-in
9
+
to modify such an array, such as `map`, `filter` and `reduce`.
10
+
11
+
Things become more complex when we're dealing with lists that
12
+
are infinite. In such a case we may reach to iterables. We could
13
+
expect an iterable that continuously outputs numbers, counting up
14
+
infinitely, or rather until it reaches the maximum integer.
15
+
16
+
When we're dealing with asynchronous lists of values things also
17
+
become more complex. We're often confronted with event streams,
18
+
where events or even regular values come in over time.
19
+
20
+
In either case what we're dealing with are essentially [immutable,
21
+
asynchronous iterables](https://medium.com/@andrestaltz/2-minute-introduction-to-rx-24c8ca793877).
22
+
23
+
Wonka is a library to provide a primitive to solve these problems and
24
+
is both an iterable programming library _and_ a reactive stream programming
25
+
library.
26
+
27
+
It can be compared to observables and iterables in one library, but is
28
+
based on and essentially a ["callbag" library](https://staltz.com/why-we-need-callbags.html).
29
+
30
+
## Sources, Operators, and Sinks
31
+
32
+
When we're thinking of solving problems with streams, it's always
33
+
a good idea to look at how we're solving problems with arrays.
34
+
35
+
Since Wonka's streams are an entirely new primitive, Wonka has to provide
36
+
all utilities that you as a developer may need to work with them.
37
+
Specifically we have to make sure that it's easy to _create_, _transform_,
38
+
and _consume_ these streams.
39
+
40
+
If we compare these utilities to arrays, _creating_ an array is similar to
41
+
creating a stream. So Wonka has utilities such as [`fromArray`](../api/sources.md#fromArray) to
42
+
create a new source.
43
+
44
+
A **source** is what we call a stream in Wonka. This is because it
45
+
doesn't strictly follow the definition or specification of observables nor
46
+
iterables. So we're calling them **sources** since they're just a **source**
47
+
of values over time.
48
+
49
+
Next we would like to _transform_ sources to make them useful.
50
+
Like with arrays we may want to map, filter, and reduce them,
51
+
so Wonka has **operators** like [`filter`](../api/operators.md#filter) and [`map`](../api/operators.md#map).
52
+
But since Wonka is like a toolkit, it comes with a lot more utilities than
53
+
just that.
54
+
55
+
In general, **operators** will accept some arguments and a source
56
+
and output a new, transformed source.
57
+
58
+
Lastly, the sources we create wouldn't be of much use if we weren't
59
+
able to _consume_ them. This is similar to using `forEach` on an
60
+
array to iterate over its values. Wonka has a [`subscribe`](../api/sinks.md#subscribe) function which
61
+
works similarly to how an observable's subscribe method may work.
62
+
This is because Wonka's sources are entirely cancellable.
63
+
64
+
To summarise, Wonka's streams are _sources_ of values, which
65
+
can be transformed using _operators_, which create new _sources_.
66
+
If we want to consume a _source_ we use a _sink_.
+12
docs/basics/index.md
+12
docs/basics/index.md
···
1
+
---
2
+
title: Basics
3
+
order: 3
4
+
---
5
+
6
+
Wonka introduces a new primitive for streams.
7
+
This part of the documentation explains both the motivation
8
+
behind creating and using a new stream primitive and how these
9
+
work internally in Wonka.
10
+
11
+
- [Background](./background.md) — learn what streams are
12
+
- [Architecture](./architecture.md) — learn how Wonka's streams work internally
+136
docs/getting-started.md
+136
docs/getting-started.md
···
1
+
---
2
+
title: Getting Started
3
+
order: 1
4
+
---
5
+
6
+
This page will explain how to install the Wonka package and
7
+
its basic usage and helper functions.
8
+
9
+
## Installation
10
+
11
+
The `wonka` package from `npm` is all you need to install to use
12
+
Wonka. The process is the same with `yarn` and `esy`.
13
+
14
+
```bash
15
+
yarn add wonka
16
+
# or with npm:
17
+
npm install --save wonka
18
+
# or with esy:
19
+
esy add wonka
20
+
```
21
+
22
+
For **JavaScript projects**, the package contains both CommonJS and
23
+
ES Modules bundles. For Flow and TypeScript the package also contains
24
+
typings files already, so if you're using either you're already done and
25
+
ready to go.
26
+
27
+
If you're using **BuckleScript** or `bs-native` you will need to add `"wonka"`
28
+
to your `bs-dependencies` in your `bsconfig.json` configuration file:
29
+
30
+
```diff
31
+
{
32
+
"name": "<some_name>",
33
+
"version": "0.1.0",
34
+
"sources": ["src"],
35
+
"bsc-flags": ["-bs-super-errors"],
36
+
"bs-dependencies": [
37
+
+ "wonka"
38
+
]
39
+
}
40
+
```
41
+
42
+
If you're using **Dune** and **Esy** you will need to add `wonka` to
43
+
your `libraries` entry in the respective `dune` configuration file:
44
+
45
+
```diff
46
+
(library
47
+
(name some_name)
48
+
(public_name some_name)
49
+
+ (libraries wonka)
50
+
)
51
+
```
52
+
53
+
## Usage with JavaScript
54
+
55
+
In most cases you'll simply import or require `wonka` and use its exposed
56
+
methods and utilities. In both CommonJS and ES Modules the Wonka package
57
+
simply exposes all its utilities.
58
+
59
+
```js
60
+
// With CommonJS
61
+
const { fromArray } = require('wonka');
62
+
// With ES Modules
63
+
import { fromArray } from 'wonka';
64
+
```
65
+
66
+
There are also some special operators in Wonka that will only be exposed in
67
+
Web/JavaScript environments, like `fromPromise`, `toPromise`,
68
+
or `fromEvent`, or even `debounce` and `throttle`.
69
+
In TypeScript and Flow the typings also expose all types.
70
+
71
+
There's also a special utility in JavaScript environments to replace the pipeline
72
+
operator. This function is called `pipe` and simply calls functions that it's
73
+
being passed in order with the previous return value.
74
+
75
+
```js
76
+
import { pipe } from 'wonka';
77
+
78
+
const output = pipe(
79
+
'test',
80
+
(x) => x + ' this',
81
+
(x) => x.toUpperCase()
82
+
);
83
+
84
+
output; // "TEST THIS"
85
+
```
86
+
87
+
As shown above, the `pipe` function takes the first argument and passes it
88
+
in order to the other function arguments. The return value of one function will
89
+
be passed on to the next function.
90
+
91
+
In TypeScript and Flow the `pipe` function is also typed to handle all generics
92
+
in Wonka utilities correctly. Using it will ensure that most of the time you won't
93
+
have to specify the types of any generics manually.
94
+
95
+
If you're using Babel and the [pipeline proposal plugin](https://babeljs.io/docs/en/babel-plugin-proposal-pipeline-operator), you can just use
96
+
the pipeline operator to do the same and not use the `pipe` helper.
97
+
98
+
## Usage with Reason
99
+
100
+
Everything in the Wonka package is exposed under a single module called `Wonka`.
101
+
This module also contains `Wonka.Types`, which contains all internal types of the Wonka
102
+
library, but you will typically not need it.
103
+
104
+
In `BuckleScript` when you're compiling to JavaScript you will also have access to
105
+
more utilities like `fromPromise`, `toPromise`, `fromEvent`, or even `debounce` and `throttle`.
106
+
These utilities are missing in native compilation, like Dune or `bsb-native`, since they're
107
+
relying on JavaScript APIs like Promises, `window.addEventListener`, and `setTimeout`.
108
+
109
+
When using Wonka you'd simply either open the module and use its utilities or just
110
+
access them from the `Wonka` module:
111
+
112
+
```reason
113
+
Wonka.fromValue("test")
114
+
|> Wonka.map((.x) => x ++ " this")
115
+
|> Wonka.forEach((.x) => print_endline(x));
116
+
```
117
+
118
+
It's worth noting that most callbacks in Wonka need to be explicitly uncurried, since
119
+
this will help them compile cleanly to JavaScript.
120
+
121
+
## Interoperability
122
+
123
+
In JavaScript environments, Wonka comes with several utilities that make it easier
124
+
to interoperate with JavaScript primitives and other libraries:
125
+
126
+
- [`fromPromise`](./api/sources.md#frompromise) & [`toPromise`](./api/sinks.md#topromise) can be used to interoperate with Promises
127
+
- [`fromObservable`](./api/sources.md#fromobservable) & [`toObservable`](./api/sinks.md#toobservable) can be used to interoperate with spec-compliant Observables
128
+
- [`fromCallbag`](./api/sources.md#fromcallbag) & [`toCallbag`](./api/sinks.md#tocallbag) can be used to interoperate with spec-compliant Callbags
129
+
130
+
Furthermore there are a couple of operators that only work in JavaScript environments
131
+
since they need timing primitives, like `setTimeout` and `setInterval`:
132
+
133
+
- [`delay`](./api/operators.md#delay)
134
+
- [`debounce`](./api/operators.md#debounce)
135
+
- [`throttle`](./api/operators.md#throttle)
136
+
- [`interval`](./api/sources.md#interval)
+42
docs/index.md
+42
docs/index.md
···
1
+
---
2
+
title: Introduction
3
+
order: 0
4
+
---
5
+
6
+
Wonka is a lightweight iterable and observable library loosely based on
7
+
the [callbag spec](https://github.com/callbag/callbag). It exposes a set of helpers to create streams,
8
+
which are sources of multiple values, which allow you to create, transform
9
+
and consume event streams or iterable sets of data.
10
+
11
+
## What it is
12
+
13
+
Wonka is a library for streams _and_ iterables that behaves predictably
14
+
and can be used for many problems where you're dealing with streams of
15
+
values, asynchronous or not.
16
+
17
+
It's similar to [RxJS](https://github.com/ReactiveX/rxjs) in that it enables asynchronous programming with
18
+
observable streams, with an API that looks like functional programming on
19
+
iterables, but it's also similar to [IxJS](https://github.com/ReactiveX/IxJS) since Wonka streams will run
20
+
synchronously if an iterable source runs synchronously.
21
+
22
+
It also comes with many operators that users from [RxJS](https://github.com/ReactiveX/rxjs) will be used to.
23
+
24
+
## Reason Support
25
+
26
+
Wonka used to be written in [Reason](https://reasonml.github.io/),, a dialect of OCaml, and was usable
27
+
for native development and compileable with [BuckleScript](https://bucklescript.github.io).
28
+
Out of the box it supported usage with BuckleScript, `bs-native`, Dune, and Esy.
29
+
30
+
If you're looking for the legacy version that supported this, you may want to install v4 or v5 rather
31
+
than v6 onwards, which converted the project to TypeScript.
32
+
33
+
## About the docs
34
+
35
+
As mentioned in the prior section, Wonka supports not one but a couple of
36
+
environments and languages. To accommodate for this, most of the docs
37
+
are written with examples and sections for TypeScript and Reason.
38
+
39
+
We don't provide examples in most parts of the docs for Flow and OCaml because
40
+
their respective usage is almost identical to TypeScript and Reason, so for
41
+
the most part the examples mostly deal with the differences between a
42
+
TypeScript and a Reason project.
+127
docs/migration.md
+127
docs/migration.md
···
1
+
---
2
+
title: Migration
3
+
order: 2
4
+
---
5
+
6
+
This page lists breaking changes and migration guides for
7
+
various major releases of Wonka.
8
+
9
+
## v6.0.0
10
+
11
+
In `v6.0.0` of Wonka, we've migrated fully to TypeScript.
12
+
If you're using this project with Reason or OCaml before, we're sorry for
13
+
the inconvenience. However, v4 and v5-rc will remain usable for these
14
+
platforms and languages.
15
+
16
+
The internal API and data structures of Wonka haven't changed in `v6.0.0`
17
+
compared to the prior releases and are based on `v4.0.14`. This means that
18
+
from a TypeScript, Flow, and JS perspective, `v6.0.0` is backwards compatible
19
+
and continues to function as before.
20
+
21
+
However, the `fromList` API has been removed so far, and we reserve ourselves
22
+
room to make more breaking changes were behaviour before was broken.
23
+
24
+
We're also dropping IE11 support and are now bundling against an ES2015 target.
25
+
26
+
## v4.0.0
27
+
28
+
In `v4.0.0` of Wonka, we've migrated to BuckleScript v7 and
29
+
`genType` for automatic type generation for TypeScript. The
30
+
Flow types are derived from the automatic types and are generated
31
+
by `flowgen`.
32
+
33
+
This may mean that `bsb-native` and Dune/Esy builds are temporarily
34
+
broken, as they haven't been tested yet. If so, they will be fixed
35
+
in a future minor release. Please stick with `v3.2.2` if you're having
36
+
trouble.
37
+
38
+
This release has no breaking changes for Reason/OCaml in terms of
39
+
API changes. You can use the library exactly as you have before.
40
+
41
+
**For TypeScript and Flow some APIs have changed**.
42
+
43
+
### New TypeScript and Flow typings
44
+
45
+
The type for `Subscription`, `Observer`, and `Subject` have changed.
46
+
These used to be exposed as tuples (fixed-size arrays) in the past,
47
+
but are now compiled to objects, due to the upgrade to BuckleScript v7.
48
+
49
+
If you're using `subscribe`, `makeSubject`, or `make` you will have
50
+
to change some of your types. If you don't, you won't have to update
51
+
any of your code and can even mix Wonka `v4.0.0` with `v3.2.2` in the
52
+
same bundle.
53
+
54
+
The `Subscription` type has changed from `[() => void]` to
55
+
`{ unsubscribe: (_: void) => void }`:
56
+
57
+
```ts
58
+
import { subscribe } from 'wonka';
59
+
60
+
// Before:
61
+
const [unsubscribe] = subscribe(source);
62
+
// After:
63
+
const { unsubscribe } = subscribe(source);
64
+
```
65
+
66
+
The `Observer` type has changed similarly, so you'll have to
67
+
update your code if you're using `make`:
68
+
69
+
```ts
70
+
import { make } from 'wonka';
71
+
72
+
// Before:
73
+
const source = make(([next, complete]) => /* ... */);
74
+
// After:
75
+
const source = make(({ next, complete }) => /* ... */);
76
+
```
77
+
78
+
And lastly the `Subject` type has changed as well, so update
79
+
your usage of `makeSubject`:
80
+
81
+
```ts
82
+
import { makeSubject } from 'wonka';
83
+
84
+
// Before:
85
+
const [source, next, complete] = makeSubject();
86
+
// After:
87
+
const { source, next, complete } = makeSubject();
88
+
```
89
+
90
+
### Improvements
91
+
92
+
The test suite has been rewritten from scratch to improve our
93
+
testing of some tricky edge cases. In most cases operators have
94
+
been updated to behave more nicely and closer to the spec and
95
+
as expected. This is especially true if you're using synchronous
96
+
sources or iterables a lot.
97
+
98
+
Wonka has reached a much higher test coverage and operators like
99
+
`merge` and `switchMap` will now behave as expected with synchronous
100
+
sources.
101
+
102
+
This is the list of operators that have changed. If your code has
103
+
been working before, you _shouldn't see any different behaviour_.
104
+
The changed operators will simply have received bugfixes and will
105
+
behave more predictably (and hopefully correctly) in certain edge cases!
106
+
107
+
- [`buffer`](./api/operators.md#buffer)
108
+
- [`combine`](./api/operators.md#combine)
109
+
- [`debounce`](./api/operators.md#debounce)
110
+
- [`delay`](./api/operators.md#delay)
111
+
- [`sample`](./api/operators.md#sample)
112
+
- [`skipUntil`](./api/operators.md#skipuntil)
113
+
- [`take`](./api/operators.md#take)
114
+
- [`takeLast`](./api/operators.md#takelast)
115
+
- [`takeWhile`](./api/operators.md#takewhile)
116
+
- [`switchMap`](./api/operators.md#switchmap)
117
+
- [`mergeMap`](./api/operators.md#mergemap)
118
+
- [`concatMap`](./api/operators.md#concatmap)
119
+
- [`switchAll`](./api/operators.md#switchall)
120
+
- [`mergeAll`](./api/operators.md#mergeall)
121
+
- [`concatAll`](./api/operators.md#concatall)
122
+
- [`merge`](./api/operators.md#merge)
123
+
- [`concat`](./api/operators.md#concat)
124
+
125
+
The `take` operator is the only one that has been changed to fix
126
+
a notable new usage case. It can now accept a maximum of `0` or below,
127
+
to close the source immediately.
+89
-58
package.json
+89
-58
package.json
···
1
1
{
2
2
"name": "wonka",
3
-
"version": "1.4.2",
4
-
"author": "Phil Pluckthun <phil@kitten.sh>",
5
-
"source": "./src/index.js",
6
-
"main": "./dist/wonka.js",
7
-
"module": "./dist/wonka.es.js",
8
-
"jsnext:main": "./dist/wonka.es.js",
9
-
"types": "./src/index.d.ts",
3
+
"description": "A tiny but capable push & pull stream library for TypeScript and Flow",
4
+
"version": "6.3.5",
5
+
"author": "0no.co <hi@0no.co>",
6
+
"source": "./src/index.ts",
7
+
"main": "./dist/wonka",
8
+
"module": "./dist/wonka.mjs",
9
+
"types": "./dist/wonka.d.ts",
10
+
"exports": {
11
+
".": {
12
+
"types": "./dist/wonka.d.ts",
13
+
"import": "./dist/wonka.mjs",
14
+
"require": "./dist/wonka.js",
15
+
"source": "./src/index.ts"
16
+
},
17
+
"./package.json": "./package.json"
18
+
},
19
+
"sideEffects": false,
10
20
"files": [
11
21
"src",
12
-
"lib/js",
13
22
"dist",
14
23
"docs/*.md",
15
-
"*.md",
16
-
"bsconfig.json"
24
+
"index.js.flow",
25
+
"*.md"
17
26
],
18
-
"scripts": {
19
-
"clean": "bsb -clean-world",
20
-
"build": "bsb -make-world",
21
-
"watch": "bsb -make-world -w",
22
-
"test": "jest",
23
-
"coverage": "jest -c ./.jest.coverage.json --coverage",
24
-
"test:watch": "jest --watch",
25
-
"terser:es": "terser --config-file .terser.config.json --module -o ./dist/wonka.es.js ./dist/wonka.es.js",
26
-
"terser:cjs": "terser --config-file .terser.config.json -o ./dist/wonka.js ./dist/wonka.js",
27
-
"terser": "run-p terser:es terser:cjs",
28
-
"prettier": "prettier --write ./dist/*.js",
29
-
"prebundle": "rimraf ./dist",
30
-
"bundle": "microbundle --external none --no-compress --no-sourcemap --format es,cjs",
31
-
"postbundle": "run-s terser prettier",
32
-
"prebundlesize": "run-s bundle",
33
-
"bundlesize": "bundlesize",
34
-
"prepublishOnly": "run-s clean build bundle test"
35
-
},
36
27
"keywords": [
37
28
"wonka",
38
-
"reason",
39
-
"bucklescript",
29
+
"typescript",
30
+
"events",
40
31
"callbag",
41
32
"callback",
42
33
"observable",
43
34
"iterable",
44
35
"stream"
45
36
],
46
-
"repository": "https://github.com/kitten/wonka",
47
-
"homepage": "https://github.com/kitten/wonka",
48
-
"bugs": "https://github.com/kitten/wonka/issues",
49
-
"license": "MIT",
50
-
"dependencies": {
51
-
"bs-rebel": "^0.2.3"
37
+
"scripts": {
38
+
"test": "vitest run",
39
+
"check": "tsc",
40
+
"lint": "eslint --ext=js,ts .",
41
+
"build": "rollup -c scripts/rollup.config.mjs",
42
+
"clean": "rimraf dist node_modules/.cache",
43
+
"prepublishOnly": "run-s clean build check test",
44
+
"prepare": "node ./scripts/prepare.js",
45
+
"changeset:version": "changeset version && pnpm install --lockfile-only",
46
+
"changeset:publish": "changeset publish"
52
47
},
53
-
"devDependencies": {
54
-
"@glennsl/bs-jest": "^0.4.6",
55
-
"bs-platform": "^4.0.17",
56
-
"bundlesize": "^0.17.0",
57
-
"coveralls": "^3.0.0",
58
-
"microbundle": "^0.9.0",
59
-
"npm-run-all": "^4.1.5",
60
-
"prettier": "^1.15.3",
61
-
"rimraf": "^2.6.3",
62
-
"terser": "^3.14.1"
48
+
"repository": "https://github.com/0no-co/wonka",
49
+
"bugs": {
50
+
"url": "https://github.com/0no-co/wonka/issues"
63
51
},
52
+
"license": "MIT",
64
53
"prettier": {
54
+
"singleQuote": true,
55
+
"tabWidth": 2,
65
56
"printWidth": 100
66
57
},
67
-
"jest": {
68
-
"moduleFileExtensions": [
69
-
"js"
70
-
],
71
-
"testMatch": [
72
-
"**/lib/js/__tests__/*_test.js"
58
+
"lint-staged": {
59
+
"*.{ts,js}": "eslint -c scripts/eslint-preset.js --fix",
60
+
"*.json": "prettier --write",
61
+
"*.md": "prettier --write"
62
+
},
63
+
"husky": {
64
+
"hooks": {
65
+
"pre-commit": "lint-staged --quiet --relative"
66
+
}
67
+
},
68
+
"eslintConfig": {
69
+
"root": true,
70
+
"extends": [
71
+
"./scripts/eslint-preset.js"
73
72
]
74
73
},
75
-
"bundlesize": [
76
-
{
77
-
"path": "./dist/wonka.es.js",
78
-
"maxSize": "9 kB"
79
-
}
80
-
]
74
+
"publishConfig": {
75
+
"provenance": true
76
+
},
77
+
"devDependencies": {
78
+
"@changesets/cli": "^2.29.6",
79
+
"@changesets/get-github-info": "^0.6.0",
80
+
"@rollup/plugin-buble": "^1.0.1",
81
+
"@rollup/plugin-commonjs": "^23.0.3",
82
+
"@rollup/plugin-node-resolve": "^15.0.1",
83
+
"@rollup/plugin-sucrase": "^5.0.1",
84
+
"@rollup/plugin-terser": "^0.1.0",
85
+
"@rollup/pluginutils": "^5.0.2",
86
+
"@types/zen-observable": "^0.8.3",
87
+
"@typescript-eslint/eslint-plugin": "^5.45.0",
88
+
"@typescript-eslint/parser": "^5.45.0",
89
+
"callbag-from-iter": "^1.3.0",
90
+
"callbag-iterate": "^1.0.0",
91
+
"callbag-take": "^1.5.0",
92
+
"dotenv": "^16.0.3",
93
+
"eslint": "^8.29.0",
94
+
"eslint-config-prettier": "^8.5.0",
95
+
"eslint-plugin-prettier": "^4.2.1",
96
+
"eslint-plugin-tsdoc": "^0.2.17",
97
+
"flowgen": "^1.21.0",
98
+
"glob": "^8.0.3",
99
+
"husky-v4": "^4.3.8",
100
+
"lint-staged": "^13.0.4",
101
+
"npm-run-all": "^4.1.5",
102
+
"prettier": "^2.8.0",
103
+
"rimraf": "^3.0.2",
104
+
"rollup": "^3.5.1",
105
+
"rollup-plugin-cjs-check": "^1.0.1",
106
+
"rollup-plugin-dts": "^5.1.1",
107
+
"tslib": "^2.4.1",
108
+
"typescript": "^4.9.5",
109
+
"vitest": "^1.2.2",
110
+
"zen-observable": "^0.10.0"
111
+
}
81
112
}
+18
perf/package.json
+18
perf/package.json
···
1
+
{
2
+
"name": "@wonka/perf",
3
+
"private": true,
4
+
"version": "1.0.0",
5
+
"main": "suite.js",
6
+
"license": "MIT",
7
+
"scripts": {
8
+
"start": "benchr suite.js"
9
+
},
10
+
"devDependencies": {
11
+
"benchr": "^4.3.0"
12
+
},
13
+
"dependencies": {
14
+
"wonka-v4": "npm:wonka@^4.0.0",
15
+
"most": "^1.7.3",
16
+
"rxjs": "^6.3.3"
17
+
}
18
+
}
+222
perf/pnpm-lock.yaml
+222
perf/pnpm-lock.yaml
···
1
+
lockfileVersion: 5.4
2
+
3
+
specifiers:
4
+
benchr: ^4.3.0
5
+
most: ^1.7.3
6
+
rxjs: ^6.3.3
7
+
wonka-v4: npm:wonka@^4.0.0
8
+
9
+
dependencies:
10
+
most: 1.9.0
11
+
rxjs: 6.6.7
12
+
wonka-v4: /wonka/4.0.15
13
+
14
+
devDependencies:
15
+
benchr: 4.3.0
16
+
17
+
packages:
18
+
19
+
/@most/multicast/1.3.0_most@1.9.0:
20
+
resolution: {integrity: sha512-DWH8AShgp5bXn+auGzf5tzPxvpmEvQJd0CNsApOci1LDF4eAEcnw4HQOr2Jaa+L92NbDYFKBSXxll+i7r1ikvw==}
21
+
peerDependencies:
22
+
most: ^1.0.1
23
+
dependencies:
24
+
'@most/prelude': 1.8.0
25
+
most: 1.9.0
26
+
dev: false
27
+
28
+
/@most/prelude/1.8.0:
29
+
resolution: {integrity: sha512-t1CcURpZzfmBA6fEWwqmCqeNzWAj1w2WqEmCk/2yXMe/p8Ut000wFmVKMy8A1Rl9VVxZEZ5nBHd/pU0dR4bv/w==}
30
+
dev: false
31
+
32
+
/ansi-regex/5.0.1:
33
+
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
34
+
engines: {node: '>=8'}
35
+
dev: true
36
+
37
+
/ansi-styles/3.2.1:
38
+
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
39
+
engines: {node: '>=4'}
40
+
dependencies:
41
+
color-convert: 1.9.3
42
+
dev: true
43
+
44
+
/benchmark/2.1.4:
45
+
resolution: {integrity: sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==}
46
+
dependencies:
47
+
lodash: 4.17.21
48
+
platform: 1.3.6
49
+
dev: true
50
+
51
+
/benchr/4.3.0:
52
+
resolution: {integrity: sha512-ZOJkEOLOI4vyf34fnUSmh+xvg8P86cmVfyORBgIJHLfXMuvrfkMsUEThMaJND406KGCigtBO6sMjExGbp+WeLw==}
53
+
engines: {node: '>=6.0.0'}
54
+
hasBin: true
55
+
dependencies:
56
+
benchmark: 2.1.4
57
+
chalk: 2.4.2
58
+
docopt: 0.6.2
59
+
easy-table: 1.2.0
60
+
require-all: 2.2.0
61
+
dev: true
62
+
63
+
/chalk/2.4.2:
64
+
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
65
+
engines: {node: '>=4'}
66
+
dependencies:
67
+
ansi-styles: 3.2.1
68
+
escape-string-regexp: 1.0.5
69
+
supports-color: 5.5.0
70
+
dev: true
71
+
72
+
/clone/1.0.4:
73
+
resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
74
+
engines: {node: '>=0.8'}
75
+
dev: true
76
+
optional: true
77
+
78
+
/color-convert/1.9.3:
79
+
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
80
+
dependencies:
81
+
color-name: 1.1.3
82
+
dev: true
83
+
84
+
/color-name/1.1.3:
85
+
resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
86
+
dev: true
87
+
88
+
/defaults/1.0.4:
89
+
resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
90
+
dependencies:
91
+
clone: 1.0.4
92
+
dev: true
93
+
optional: true
94
+
95
+
/define-properties/1.1.4:
96
+
resolution: {integrity: sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==}
97
+
engines: {node: '>= 0.4'}
98
+
dependencies:
99
+
has-property-descriptors: 1.0.0
100
+
object-keys: 1.1.1
101
+
dev: false
102
+
103
+
/docopt/0.6.2:
104
+
resolution: {integrity: sha512-NqTbaYeE4gA/wU1hdKFdU+AFahpDOpgGLzHP42k6H6DKExJd0A55KEVWYhL9FEmHmgeLvEU2vuKXDuU+4yToOw==}
105
+
engines: {node: '>=0.10.0'}
106
+
dev: true
107
+
108
+
/easy-table/1.2.0:
109
+
resolution: {integrity: sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==}
110
+
dependencies:
111
+
ansi-regex: 5.0.1
112
+
optionalDependencies:
113
+
wcwidth: 1.0.1
114
+
dev: true
115
+
116
+
/escape-string-regexp/1.0.5:
117
+
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
118
+
engines: {node: '>=0.8.0'}
119
+
dev: true
120
+
121
+
/function-bind/1.1.1:
122
+
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
123
+
dev: false
124
+
125
+
/get-intrinsic/1.1.3:
126
+
resolution: {integrity: sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==}
127
+
dependencies:
128
+
function-bind: 1.1.1
129
+
has: 1.0.3
130
+
has-symbols: 1.0.3
131
+
dev: false
132
+
133
+
/globalthis/1.0.3:
134
+
resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
135
+
engines: {node: '>= 0.4'}
136
+
dependencies:
137
+
define-properties: 1.1.4
138
+
dev: false
139
+
140
+
/has-flag/3.0.0:
141
+
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
142
+
engines: {node: '>=4'}
143
+
dev: true
144
+
145
+
/has-property-descriptors/1.0.0:
146
+
resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
147
+
dependencies:
148
+
get-intrinsic: 1.1.3
149
+
dev: false
150
+
151
+
/has-symbols/1.0.3:
152
+
resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
153
+
engines: {node: '>= 0.4'}
154
+
dev: false
155
+
156
+
/has/1.0.3:
157
+
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
158
+
engines: {node: '>= 0.4.0'}
159
+
dependencies:
160
+
function-bind: 1.1.1
161
+
dev: false
162
+
163
+
/lodash/4.17.21:
164
+
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
165
+
dev: true
166
+
167
+
/most/1.9.0:
168
+
resolution: {integrity: sha512-M7yHMcMGaclzEL6eg8Yh8PlAsaWfL/oSThF4+ZuWKM5CKXcbzmLh+qESwgZFzMKHJ+iVJwb28yFvDEOobI653w==}
169
+
dependencies:
170
+
'@most/multicast': 1.3.0_most@1.9.0
171
+
'@most/prelude': 1.8.0
172
+
globalthis: 1.0.3
173
+
symbol-observable: 2.0.3
174
+
dev: false
175
+
176
+
/object-keys/1.1.1:
177
+
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
178
+
engines: {node: '>= 0.4'}
179
+
dev: false
180
+
181
+
/platform/1.3.6:
182
+
resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==}
183
+
dev: true
184
+
185
+
/require-all/2.2.0:
186
+
resolution: {integrity: sha512-YWj/WNCxs+KxppuN3j11Ztqzl8MI/oWj4ERwEwgJ5gsHzWi8OAK7FepPu8MLv/Rn8Pov6aPdpRkaoO2Tb6m+zQ==}
187
+
dev: true
188
+
189
+
/rxjs/6.6.7:
190
+
resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==}
191
+
engines: {npm: '>=2.0.0'}
192
+
dependencies:
193
+
tslib: 1.14.1
194
+
dev: false
195
+
196
+
/supports-color/5.5.0:
197
+
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
198
+
engines: {node: '>=4'}
199
+
dependencies:
200
+
has-flag: 3.0.0
201
+
dev: true
202
+
203
+
/symbol-observable/2.0.3:
204
+
resolution: {integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==}
205
+
engines: {node: '>=0.10'}
206
+
dev: false
207
+
208
+
/tslib/1.14.1:
209
+
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
210
+
dev: false
211
+
212
+
/wcwidth/1.0.1:
213
+
resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
214
+
requiresBuild: true
215
+
dependencies:
216
+
defaults: 1.0.4
217
+
dev: true
218
+
optional: true
219
+
220
+
/wonka/4.0.15:
221
+
resolution: {integrity: sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==}
222
+
dev: false
+45
perf/suite.js
+45
perf/suite.js
···
1
+
const Wonka = require('..');
2
+
const Wonka4 = require('wonka-v4');
3
+
const Rx = require('rxjs');
4
+
const RxOperators = require('rxjs/operators');
5
+
const most = require('most');
6
+
7
+
const input = [1, 2, 3, 4, 5, 6, 7, 8, 9];
8
+
9
+
suite('Promisified map, filter, scan, last', () => {
10
+
benchmark('Wonka', () => {
11
+
return Wonka.pipe(
12
+
Wonka.fromArray(input),
13
+
Wonka.map(x => x * 2),
14
+
Wonka.filter(x => x > 4),
15
+
Wonka.scan((acc, x) => acc + x, 0),
16
+
Wonka.toPromise
17
+
);
18
+
});
19
+
20
+
benchmark('Wonka v4', () => {
21
+
return Wonka4.pipe(
22
+
Wonka4.fromArray(input),
23
+
Wonka4.map(x => x * 2),
24
+
Wonka4.filter(x => x > 4),
25
+
Wonka4.scan((acc, x) => acc + x, 0),
26
+
Wonka4.toPromise
27
+
);
28
+
});
29
+
30
+
benchmark('RxJS', () => {
31
+
return Rx.from(input).pipe(
32
+
RxOperators.map(x => x * 2),
33
+
RxOperators.filter(x => x > 4),
34
+
RxOperators.scan((acc, x) => acc + x, 0)
35
+
).toPromise();
36
+
});
37
+
38
+
benchmark('most', () => {
39
+
return most.from(input)
40
+
.map(x => x * 2)
41
+
.filter(x => x > 4)
42
+
.scan((acc, x) => acc + x, 0)
43
+
.thru(s => s.reduce((_, x) => x))
44
+
});
45
+
});
+5110
pnpm-lock.yaml
+5110
pnpm-lock.yaml
···
1
+
lockfileVersion: '9.0'
2
+
3
+
settings:
4
+
autoInstallPeers: true
5
+
excludeLinksFromLockfile: false
6
+
7
+
importers:
8
+
9
+
.:
10
+
devDependencies:
11
+
'@changesets/cli':
12
+
specifier: ^2.29.6
13
+
version: 2.29.6(@types/node@22.13.9)
14
+
'@changesets/get-github-info':
15
+
specifier: ^0.6.0
16
+
version: 0.6.0
17
+
'@rollup/plugin-buble':
18
+
specifier: ^1.0.1
19
+
version: 1.0.3(rollup@3.29.5)
20
+
'@rollup/plugin-commonjs':
21
+
specifier: ^23.0.3
22
+
version: 23.0.7(rollup@3.29.5)
23
+
'@rollup/plugin-node-resolve':
24
+
specifier: ^15.0.1
25
+
version: 15.3.1(rollup@3.29.5)
26
+
'@rollup/plugin-sucrase':
27
+
specifier: ^5.0.1
28
+
version: 5.0.2(rollup@3.29.5)
29
+
'@rollup/plugin-terser':
30
+
specifier: ^0.1.0
31
+
version: 0.1.0(rollup@3.29.5)
32
+
'@rollup/pluginutils':
33
+
specifier: ^5.0.2
34
+
version: 5.1.4(rollup@3.29.5)
35
+
'@types/zen-observable':
36
+
specifier: ^0.8.3
37
+
version: 0.8.7
38
+
'@typescript-eslint/eslint-plugin':
39
+
specifier: ^5.45.0
40
+
version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)
41
+
'@typescript-eslint/parser':
42
+
specifier: ^5.45.0
43
+
version: 5.62.0(eslint@8.57.1)(typescript@4.9.5)
44
+
callbag-from-iter:
45
+
specifier: ^1.3.0
46
+
version: 1.3.0
47
+
callbag-iterate:
48
+
specifier: ^1.0.0
49
+
version: 1.0.0
50
+
callbag-take:
51
+
specifier: ^1.5.0
52
+
version: 1.5.0
53
+
dotenv:
54
+
specifier: ^16.0.3
55
+
version: 16.4.7
56
+
eslint:
57
+
specifier: ^8.29.0
58
+
version: 8.57.1
59
+
eslint-config-prettier:
60
+
specifier: ^8.5.0
61
+
version: 8.10.0(eslint@8.57.1)
62
+
eslint-plugin-prettier:
63
+
specifier: ^4.2.1
64
+
version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.8)
65
+
eslint-plugin-tsdoc:
66
+
specifier: ^0.2.17
67
+
version: 0.2.17
68
+
flowgen:
69
+
specifier: ^1.21.0
70
+
version: 1.21.0
71
+
glob:
72
+
specifier: ^8.0.3
73
+
version: 8.1.0
74
+
husky-v4:
75
+
specifier: ^4.3.8
76
+
version: 4.3.8
77
+
lint-staged:
78
+
specifier: ^13.0.4
79
+
version: 13.3.0(enquirer@2.4.1)
80
+
npm-run-all:
81
+
specifier: ^4.1.5
82
+
version: 4.1.5
83
+
prettier:
84
+
specifier: ^2.8.0
85
+
version: 2.8.8
86
+
rimraf:
87
+
specifier: ^3.0.2
88
+
version: 3.0.2
89
+
rollup:
90
+
specifier: ^3.5.1
91
+
version: 3.29.5
92
+
rollup-plugin-cjs-check:
93
+
specifier: ^1.0.1
94
+
version: 1.0.3(rollup@3.29.5)
95
+
rollup-plugin-dts:
96
+
specifier: ^5.1.1
97
+
version: 5.3.1(rollup@3.29.5)(typescript@4.9.5)
98
+
tslib:
99
+
specifier: ^2.4.1
100
+
version: 2.8.1
101
+
typescript:
102
+
specifier: ^4.9.5
103
+
version: 4.9.5
104
+
vitest:
105
+
specifier: ^1.2.2
106
+
version: 1.6.1(@types/node@22.13.9)(terser@5.39.0)
107
+
zen-observable:
108
+
specifier: ^0.10.0
109
+
version: 0.10.0
110
+
111
+
packages:
112
+
113
+
'@babel/code-frame@7.26.2':
114
+
resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
115
+
engines: {node: '>=6.9.0'}
116
+
117
+
'@babel/helper-validator-identifier@7.25.9':
118
+
resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
119
+
engines: {node: '>=6.9.0'}
120
+
121
+
'@babel/highlight@7.25.9':
122
+
resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==}
123
+
engines: {node: '>=6.9.0'}
124
+
125
+
'@babel/runtime@7.26.9':
126
+
resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==}
127
+
engines: {node: '>=6.9.0'}
128
+
129
+
'@changesets/apply-release-plan@7.0.12':
130
+
resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==}
131
+
132
+
'@changesets/assemble-release-plan@6.0.9':
133
+
resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==}
134
+
135
+
'@changesets/changelog-git@0.2.1':
136
+
resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==}
137
+
138
+
'@changesets/cli@2.29.6':
139
+
resolution: {integrity: sha512-6qCcVsIG1KQLhpQ5zE8N0PckIx4+9QlHK3z6/lwKnw7Tir71Bjw8BeOZaxA/4Jt00pcgCnCSWZnyuZf5Il05QQ==}
140
+
hasBin: true
141
+
142
+
'@changesets/config@3.1.1':
143
+
resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==}
144
+
145
+
'@changesets/errors@0.2.0':
146
+
resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==}
147
+
148
+
'@changesets/get-dependents-graph@2.1.3':
149
+
resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==}
150
+
151
+
'@changesets/get-github-info@0.6.0':
152
+
resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==}
153
+
154
+
'@changesets/get-release-plan@4.0.13':
155
+
resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==}
156
+
157
+
'@changesets/get-version-range-type@0.4.0':
158
+
resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==}
159
+
160
+
'@changesets/git@3.0.4':
161
+
resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==}
162
+
163
+
'@changesets/logger@0.1.1':
164
+
resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==}
165
+
166
+
'@changesets/parse@0.4.1':
167
+
resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==}
168
+
169
+
'@changesets/pre@2.0.2':
170
+
resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==}
171
+
172
+
'@changesets/read@0.6.5':
173
+
resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==}
174
+
175
+
'@changesets/should-skip-package@0.1.2':
176
+
resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==}
177
+
178
+
'@changesets/types@4.1.0':
179
+
resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==}
180
+
181
+
'@changesets/types@6.1.0':
182
+
resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==}
183
+
184
+
'@changesets/write@0.4.0':
185
+
resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==}
186
+
187
+
'@esbuild/aix-ppc64@0.21.5':
188
+
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
189
+
engines: {node: '>=12'}
190
+
cpu: [ppc64]
191
+
os: [aix]
192
+
193
+
'@esbuild/android-arm64@0.21.5':
194
+
resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
195
+
engines: {node: '>=12'}
196
+
cpu: [arm64]
197
+
os: [android]
198
+
199
+
'@esbuild/android-arm@0.21.5':
200
+
resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
201
+
engines: {node: '>=12'}
202
+
cpu: [arm]
203
+
os: [android]
204
+
205
+
'@esbuild/android-x64@0.21.5':
206
+
resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
207
+
engines: {node: '>=12'}
208
+
cpu: [x64]
209
+
os: [android]
210
+
211
+
'@esbuild/darwin-arm64@0.21.5':
212
+
resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
213
+
engines: {node: '>=12'}
214
+
cpu: [arm64]
215
+
os: [darwin]
216
+
217
+
'@esbuild/darwin-x64@0.21.5':
218
+
resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
219
+
engines: {node: '>=12'}
220
+
cpu: [x64]
221
+
os: [darwin]
222
+
223
+
'@esbuild/freebsd-arm64@0.21.5':
224
+
resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
225
+
engines: {node: '>=12'}
226
+
cpu: [arm64]
227
+
os: [freebsd]
228
+
229
+
'@esbuild/freebsd-x64@0.21.5':
230
+
resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
231
+
engines: {node: '>=12'}
232
+
cpu: [x64]
233
+
os: [freebsd]
234
+
235
+
'@esbuild/linux-arm64@0.21.5':
236
+
resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
237
+
engines: {node: '>=12'}
238
+
cpu: [arm64]
239
+
os: [linux]
240
+
241
+
'@esbuild/linux-arm@0.21.5':
242
+
resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
243
+
engines: {node: '>=12'}
244
+
cpu: [arm]
245
+
os: [linux]
246
+
247
+
'@esbuild/linux-ia32@0.21.5':
248
+
resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
249
+
engines: {node: '>=12'}
250
+
cpu: [ia32]
251
+
os: [linux]
252
+
253
+
'@esbuild/linux-loong64@0.21.5':
254
+
resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
255
+
engines: {node: '>=12'}
256
+
cpu: [loong64]
257
+
os: [linux]
258
+
259
+
'@esbuild/linux-mips64el@0.21.5':
260
+
resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
261
+
engines: {node: '>=12'}
262
+
cpu: [mips64el]
263
+
os: [linux]
264
+
265
+
'@esbuild/linux-ppc64@0.21.5':
266
+
resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
267
+
engines: {node: '>=12'}
268
+
cpu: [ppc64]
269
+
os: [linux]
270
+
271
+
'@esbuild/linux-riscv64@0.21.5':
272
+
resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
273
+
engines: {node: '>=12'}
274
+
cpu: [riscv64]
275
+
os: [linux]
276
+
277
+
'@esbuild/linux-s390x@0.21.5':
278
+
resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
279
+
engines: {node: '>=12'}
280
+
cpu: [s390x]
281
+
os: [linux]
282
+
283
+
'@esbuild/linux-x64@0.21.5':
284
+
resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
285
+
engines: {node: '>=12'}
286
+
cpu: [x64]
287
+
os: [linux]
288
+
289
+
'@esbuild/netbsd-x64@0.21.5':
290
+
resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
291
+
engines: {node: '>=12'}
292
+
cpu: [x64]
293
+
os: [netbsd]
294
+
295
+
'@esbuild/openbsd-x64@0.21.5':
296
+
resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
297
+
engines: {node: '>=12'}
298
+
cpu: [x64]
299
+
os: [openbsd]
300
+
301
+
'@esbuild/sunos-x64@0.21.5':
302
+
resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
303
+
engines: {node: '>=12'}
304
+
cpu: [x64]
305
+
os: [sunos]
306
+
307
+
'@esbuild/win32-arm64@0.21.5':
308
+
resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
309
+
engines: {node: '>=12'}
310
+
cpu: [arm64]
311
+
os: [win32]
312
+
313
+
'@esbuild/win32-ia32@0.21.5':
314
+
resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
315
+
engines: {node: '>=12'}
316
+
cpu: [ia32]
317
+
os: [win32]
318
+
319
+
'@esbuild/win32-x64@0.21.5':
320
+
resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
321
+
engines: {node: '>=12'}
322
+
cpu: [x64]
323
+
os: [win32]
324
+
325
+
'@eslint-community/eslint-utils@4.4.1':
326
+
resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==}
327
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
328
+
peerDependencies:
329
+
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
330
+
331
+
'@eslint-community/regexpp@4.12.1':
332
+
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
333
+
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
334
+
335
+
'@eslint/eslintrc@2.1.4':
336
+
resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
337
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
338
+
339
+
'@eslint/js@8.57.1':
340
+
resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
341
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
342
+
343
+
'@humanwhocodes/config-array@0.13.0':
344
+
resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
345
+
engines: {node: '>=10.10.0'}
346
+
deprecated: Use @eslint/config-array instead
347
+
348
+
'@humanwhocodes/module-importer@1.0.1':
349
+
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
350
+
engines: {node: '>=12.22'}
351
+
352
+
'@humanwhocodes/object-schema@2.0.3':
353
+
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
354
+
deprecated: Use @eslint/object-schema instead
355
+
356
+
'@inquirer/external-editor@1.0.1':
357
+
resolution: {integrity: sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==}
358
+
engines: {node: '>=18'}
359
+
peerDependencies:
360
+
'@types/node': '>=18'
361
+
peerDependenciesMeta:
362
+
'@types/node':
363
+
optional: true
364
+
365
+
'@isaacs/cliui@8.0.2':
366
+
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
367
+
engines: {node: '>=12'}
368
+
369
+
'@jest/schemas@29.6.3':
370
+
resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
371
+
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
372
+
373
+
'@jridgewell/gen-mapping@0.3.8':
374
+
resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
375
+
engines: {node: '>=6.0.0'}
376
+
377
+
'@jridgewell/resolve-uri@3.1.2':
378
+
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
379
+
engines: {node: '>=6.0.0'}
380
+
381
+
'@jridgewell/set-array@1.2.1':
382
+
resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
383
+
engines: {node: '>=6.0.0'}
384
+
385
+
'@jridgewell/source-map@0.3.6':
386
+
resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==}
387
+
388
+
'@jridgewell/sourcemap-codec@1.5.0':
389
+
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
390
+
391
+
'@jridgewell/trace-mapping@0.3.25':
392
+
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
393
+
394
+
'@manypkg/find-root@1.1.0':
395
+
resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
396
+
397
+
'@manypkg/get-packages@1.1.3':
398
+
resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==}
399
+
400
+
'@microsoft/tsdoc-config@0.16.2':
401
+
resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==}
402
+
403
+
'@microsoft/tsdoc@0.14.2':
404
+
resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==}
405
+
406
+
'@nodelib/fs.scandir@2.1.5':
407
+
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
408
+
engines: {node: '>= 8'}
409
+
410
+
'@nodelib/fs.stat@2.0.5':
411
+
resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
412
+
engines: {node: '>= 8'}
413
+
414
+
'@nodelib/fs.walk@1.2.8':
415
+
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
416
+
engines: {node: '>= 8'}
417
+
418
+
'@pkgjs/parseargs@0.11.0':
419
+
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
420
+
engines: {node: '>=14'}
421
+
422
+
'@rollup/plugin-buble@1.0.3':
423
+
resolution: {integrity: sha512-QYD9BKkJoof0FdCFeSYYhF6/Y8e0Mnf+098xGgmWOFJ4UPHlWujjqOYeVwEm2hJPOmlR5k7HPUdAjqtOWhN64Q==}
424
+
engines: {node: '>=14.0.0'}
425
+
peerDependencies:
426
+
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
427
+
peerDependenciesMeta:
428
+
rollup:
429
+
optional: true
430
+
431
+
'@rollup/plugin-commonjs@23.0.7':
432
+
resolution: {integrity: sha512-hsSD5Qzyuat/swzrExGG5l7EuIlPhwTsT7KwKbSCQzIcJWjRxiimi/0tyMYY2bByitNb3i1p+6JWEDGa0NvT0Q==}
433
+
engines: {node: '>=14.0.0'}
434
+
peerDependencies:
435
+
rollup: ^2.68.0||^3.0.0
436
+
peerDependenciesMeta:
437
+
rollup:
438
+
optional: true
439
+
440
+
'@rollup/plugin-node-resolve@15.3.1':
441
+
resolution: {integrity: sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==}
442
+
engines: {node: '>=14.0.0'}
443
+
peerDependencies:
444
+
rollup: ^2.78.0||^3.0.0||^4.0.0
445
+
peerDependenciesMeta:
446
+
rollup:
447
+
optional: true
448
+
449
+
'@rollup/plugin-sucrase@5.0.2':
450
+
resolution: {integrity: sha512-4MhIVH9Dy2Hwose1/x5QMs0XF7yn9jDd/yozHqzdIrMWIolgFpGnrnVhQkqTaK1RALY/fpyrEKmwH/04vr1THA==}
451
+
engines: {node: '>=14.0.0'}
452
+
peerDependencies:
453
+
rollup: ^2.53.1||^3.0.0||^4.0.0
454
+
peerDependenciesMeta:
455
+
rollup:
456
+
optional: true
457
+
458
+
'@rollup/plugin-terser@0.1.0':
459
+
resolution: {integrity: sha512-N2KK+qUfHX2hBzVzM41UWGLrEmcjVC37spC8R3c9mt3oEDFKh3N2e12/lLp9aVSt86veR0TQiCNQXrm8C6aiUQ==}
460
+
engines: {node: '>=14.0.0'}
461
+
peerDependencies:
462
+
rollup: ^2.x || ^3.x
463
+
peerDependenciesMeta:
464
+
rollup:
465
+
optional: true
466
+
467
+
'@rollup/pluginutils@5.1.4':
468
+
resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==}
469
+
engines: {node: '>=14.0.0'}
470
+
peerDependencies:
471
+
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
472
+
peerDependenciesMeta:
473
+
rollup:
474
+
optional: true
475
+
476
+
'@rollup/rollup-android-arm-eabi@4.34.9':
477
+
resolution: {integrity: sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==}
478
+
cpu: [arm]
479
+
os: [android]
480
+
481
+
'@rollup/rollup-android-arm64@4.34.9':
482
+
resolution: {integrity: sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==}
483
+
cpu: [arm64]
484
+
os: [android]
485
+
486
+
'@rollup/rollup-darwin-arm64@4.34.9':
487
+
resolution: {integrity: sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==}
488
+
cpu: [arm64]
489
+
os: [darwin]
490
+
491
+
'@rollup/rollup-darwin-x64@4.34.9':
492
+
resolution: {integrity: sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==}
493
+
cpu: [x64]
494
+
os: [darwin]
495
+
496
+
'@rollup/rollup-freebsd-arm64@4.34.9':
497
+
resolution: {integrity: sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==}
498
+
cpu: [arm64]
499
+
os: [freebsd]
500
+
501
+
'@rollup/rollup-freebsd-x64@4.34.9':
502
+
resolution: {integrity: sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==}
503
+
cpu: [x64]
504
+
os: [freebsd]
505
+
506
+
'@rollup/rollup-linux-arm-gnueabihf@4.34.9':
507
+
resolution: {integrity: sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==}
508
+
cpu: [arm]
509
+
os: [linux]
510
+
511
+
'@rollup/rollup-linux-arm-musleabihf@4.34.9':
512
+
resolution: {integrity: sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==}
513
+
cpu: [arm]
514
+
os: [linux]
515
+
516
+
'@rollup/rollup-linux-arm64-gnu@4.34.9':
517
+
resolution: {integrity: sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==}
518
+
cpu: [arm64]
519
+
os: [linux]
520
+
521
+
'@rollup/rollup-linux-arm64-musl@4.34.9':
522
+
resolution: {integrity: sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==}
523
+
cpu: [arm64]
524
+
os: [linux]
525
+
526
+
'@rollup/rollup-linux-loongarch64-gnu@4.34.9':
527
+
resolution: {integrity: sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==}
528
+
cpu: [loong64]
529
+
os: [linux]
530
+
531
+
'@rollup/rollup-linux-powerpc64le-gnu@4.34.9':
532
+
resolution: {integrity: sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==}
533
+
cpu: [ppc64]
534
+
os: [linux]
535
+
536
+
'@rollup/rollup-linux-riscv64-gnu@4.34.9':
537
+
resolution: {integrity: sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==}
538
+
cpu: [riscv64]
539
+
os: [linux]
540
+
541
+
'@rollup/rollup-linux-s390x-gnu@4.34.9':
542
+
resolution: {integrity: sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==}
543
+
cpu: [s390x]
544
+
os: [linux]
545
+
546
+
'@rollup/rollup-linux-x64-gnu@4.34.9':
547
+
resolution: {integrity: sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==}
548
+
cpu: [x64]
549
+
os: [linux]
550
+
551
+
'@rollup/rollup-linux-x64-musl@4.34.9':
552
+
resolution: {integrity: sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==}
553
+
cpu: [x64]
554
+
os: [linux]
555
+
556
+
'@rollup/rollup-win32-arm64-msvc@4.34.9':
557
+
resolution: {integrity: sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==}
558
+
cpu: [arm64]
559
+
os: [win32]
560
+
561
+
'@rollup/rollup-win32-ia32-msvc@4.34.9':
562
+
resolution: {integrity: sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==}
563
+
cpu: [ia32]
564
+
os: [win32]
565
+
566
+
'@rollup/rollup-win32-x64-msvc@4.34.9':
567
+
resolution: {integrity: sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==}
568
+
cpu: [x64]
569
+
os: [win32]
570
+
571
+
'@sinclair/typebox@0.27.8':
572
+
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
573
+
574
+
'@types/buble@0.19.2':
575
+
resolution: {integrity: sha512-uUD8zIfXMKThmFkahTXDGI3CthFH1kMg2dOm3KLi4GlC5cbARA64bEcUMbbWdWdE73eoc/iBB9PiTMqH0dNS2Q==}
576
+
577
+
'@types/estree@1.0.6':
578
+
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
579
+
580
+
'@types/json-schema@7.0.15':
581
+
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
582
+
583
+
'@types/node@12.20.55':
584
+
resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
585
+
586
+
'@types/node@22.13.9':
587
+
resolution: {integrity: sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==}
588
+
589
+
'@types/parse-json@4.0.2':
590
+
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
591
+
592
+
'@types/resolve@1.20.2':
593
+
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
594
+
595
+
'@types/semver@7.5.8':
596
+
resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
597
+
598
+
'@types/zen-observable@0.8.7':
599
+
resolution: {integrity: sha512-LKzNTjj+2j09wAo/vvVjzgw5qckJJzhdGgWHW7j69QIGdq/KnZrMAMIHQiWGl3Ccflh5/CudBAntTPYdprPltA==}
600
+
601
+
'@typescript-eslint/eslint-plugin@5.62.0':
602
+
resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
603
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
604
+
peerDependencies:
605
+
'@typescript-eslint/parser': ^5.0.0
606
+
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
607
+
typescript: '*'
608
+
peerDependenciesMeta:
609
+
typescript:
610
+
optional: true
611
+
612
+
'@typescript-eslint/parser@5.62.0':
613
+
resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
614
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
615
+
peerDependencies:
616
+
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
617
+
typescript: '*'
618
+
peerDependenciesMeta:
619
+
typescript:
620
+
optional: true
621
+
622
+
'@typescript-eslint/scope-manager@5.62.0':
623
+
resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
624
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
625
+
626
+
'@typescript-eslint/type-utils@5.62.0':
627
+
resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
628
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
629
+
peerDependencies:
630
+
eslint: '*'
631
+
typescript: '*'
632
+
peerDependenciesMeta:
633
+
typescript:
634
+
optional: true
635
+
636
+
'@typescript-eslint/types@5.62.0':
637
+
resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
638
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
639
+
640
+
'@typescript-eslint/typescript-estree@5.62.0':
641
+
resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
642
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
643
+
peerDependencies:
644
+
typescript: '*'
645
+
peerDependenciesMeta:
646
+
typescript:
647
+
optional: true
648
+
649
+
'@typescript-eslint/utils@5.62.0':
650
+
resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
651
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
652
+
peerDependencies:
653
+
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
654
+
655
+
'@typescript-eslint/visitor-keys@5.62.0':
656
+
resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
657
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
658
+
659
+
'@ungap/structured-clone@1.3.0':
660
+
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
661
+
662
+
'@vitest/expect@1.6.1':
663
+
resolution: {integrity: sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==}
664
+
665
+
'@vitest/runner@1.6.1':
666
+
resolution: {integrity: sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==}
667
+
668
+
'@vitest/snapshot@1.6.1':
669
+
resolution: {integrity: sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==}
670
+
671
+
'@vitest/spy@1.6.1':
672
+
resolution: {integrity: sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==}
673
+
674
+
'@vitest/utils@1.6.1':
675
+
resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==}
676
+
677
+
acorn-dynamic-import@4.0.0:
678
+
resolution: {integrity: sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==}
679
+
deprecated: This is probably built in to whatever tool you're using. If you still need it... idk
680
+
peerDependencies:
681
+
acorn: ^6.0.0
682
+
683
+
acorn-jsx@5.3.2:
684
+
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
685
+
peerDependencies:
686
+
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
687
+
688
+
acorn-walk@8.3.4:
689
+
resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
690
+
engines: {node: '>=0.4.0'}
691
+
692
+
acorn@6.4.2:
693
+
resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==}
694
+
engines: {node: '>=0.4.0'}
695
+
hasBin: true
696
+
697
+
acorn@8.14.0:
698
+
resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
699
+
engines: {node: '>=0.4.0'}
700
+
hasBin: true
701
+
702
+
ajv@6.12.6:
703
+
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
704
+
705
+
ansi-colors@4.1.3:
706
+
resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
707
+
engines: {node: '>=6'}
708
+
709
+
ansi-escapes@5.0.0:
710
+
resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==}
711
+
engines: {node: '>=12'}
712
+
713
+
ansi-regex@5.0.1:
714
+
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
715
+
engines: {node: '>=8'}
716
+
717
+
ansi-regex@6.1.0:
718
+
resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
719
+
engines: {node: '>=12'}
720
+
721
+
ansi-styles@3.2.1:
722
+
resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
723
+
engines: {node: '>=4'}
724
+
725
+
ansi-styles@4.3.0:
726
+
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
727
+
engines: {node: '>=8'}
728
+
729
+
ansi-styles@5.2.0:
730
+
resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
731
+
engines: {node: '>=10'}
732
+
733
+
ansi-styles@6.2.1:
734
+
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
735
+
engines: {node: '>=12'}
736
+
737
+
any-promise@1.3.0:
738
+
resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
739
+
740
+
argparse@1.0.10:
741
+
resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
742
+
743
+
argparse@2.0.1:
744
+
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
745
+
746
+
array-buffer-byte-length@1.0.2:
747
+
resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
748
+
engines: {node: '>= 0.4'}
749
+
750
+
array-union@2.1.0:
751
+
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
752
+
engines: {node: '>=8'}
753
+
754
+
arraybuffer.prototype.slice@1.0.4:
755
+
resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
756
+
engines: {node: '>= 0.4'}
757
+
758
+
assertion-error@1.1.0:
759
+
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
760
+
761
+
async-function@1.0.0:
762
+
resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
763
+
engines: {node: '>= 0.4'}
764
+
765
+
available-typed-arrays@1.0.7:
766
+
resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
767
+
engines: {node: '>= 0.4'}
768
+
769
+
balanced-match@1.0.2:
770
+
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
771
+
772
+
better-path-resolve@1.0.0:
773
+
resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
774
+
engines: {node: '>=4'}
775
+
776
+
brace-expansion@1.1.11:
777
+
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
778
+
779
+
brace-expansion@2.0.1:
780
+
resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
781
+
782
+
braces@3.0.3:
783
+
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
784
+
engines: {node: '>=8'}
785
+
786
+
buble@0.20.0:
787
+
resolution: {integrity: sha512-/1gnaMQE8xvd5qsNBl+iTuyjJ9XxeaVxAMF86dQ4EyxFJOZtsgOS8Ra+7WHgZTam5IFDtt4BguN0sH0tVTKrOw==}
788
+
hasBin: true
789
+
790
+
buffer-from@1.1.2:
791
+
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
792
+
793
+
cac@6.7.14:
794
+
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
795
+
engines: {node: '>=8'}
796
+
797
+
call-bind-apply-helpers@1.0.2:
798
+
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
799
+
engines: {node: '>= 0.4'}
800
+
801
+
call-bind@1.0.8:
802
+
resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
803
+
engines: {node: '>= 0.4'}
804
+
805
+
call-bound@1.0.4:
806
+
resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
807
+
engines: {node: '>= 0.4'}
808
+
809
+
callbag-from-iter@1.3.0:
810
+
resolution: {integrity: sha512-iBc6O6DYDWQBjlOZzdU/SbJofK0pN3TjNWC4fDIQePBk5FWCZKVll/coXiVU6gpwbBaS0Om/d/PVbVK8Ki17Ew==}
811
+
812
+
callbag-iterate@1.0.0:
813
+
resolution: {integrity: sha512-bynCbDuqGZkj1mXAhGr8jMf8Vhifps+G+pF3xlcz3jcaZLNXHghVjValnJtBTg2N74cyl347UzagJ8niJpyF6Q==}
814
+
815
+
callbag-take@1.5.0:
816
+
resolution: {integrity: sha512-8aOxp+gzfVQtDe+tk9PhKbC9QR9Vap4KFA0xccUiXFK9VjIS0fSt/Yi454viPpMhJkhRcx1BsjyF34Cj57W89A==}
817
+
818
+
callbag@1.5.1:
819
+
resolution: {integrity: sha512-FGpkXYZ018Wpeevhsp7R2iABZuDamg54TaObKI48JBNGzMlkb9bRwS54eR0sgFksQpspsCan4iaaVbAbxm9MIg==}
820
+
821
+
callsites@3.1.0:
822
+
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
823
+
engines: {node: '>=6'}
824
+
825
+
chai@4.5.0:
826
+
resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
827
+
engines: {node: '>=4'}
828
+
829
+
chalk@2.4.2:
830
+
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
831
+
engines: {node: '>=4'}
832
+
833
+
chalk@4.1.2:
834
+
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
835
+
engines: {node: '>=10'}
836
+
837
+
chalk@5.3.0:
838
+
resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
839
+
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
840
+
841
+
chardet@2.1.0:
842
+
resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==}
843
+
844
+
check-error@1.0.3:
845
+
resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
846
+
847
+
ci-info@2.0.0:
848
+
resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
849
+
850
+
ci-info@3.9.0:
851
+
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
852
+
engines: {node: '>=8'}
853
+
854
+
cjs-module-lexer@1.4.3:
855
+
resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
856
+
857
+
cli-cursor@4.0.0:
858
+
resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
859
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
860
+
861
+
cli-truncate@3.1.0:
862
+
resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==}
863
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
864
+
865
+
color-convert@1.9.3:
866
+
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
867
+
868
+
color-convert@2.0.1:
869
+
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
870
+
engines: {node: '>=7.0.0'}
871
+
872
+
color-name@1.1.3:
873
+
resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
874
+
875
+
color-name@1.1.4:
876
+
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
877
+
878
+
colorette@2.0.20:
879
+
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
880
+
881
+
commander@11.0.0:
882
+
resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==}
883
+
engines: {node: '>=16'}
884
+
885
+
commander@2.20.3:
886
+
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
887
+
888
+
commander@4.1.1:
889
+
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
890
+
engines: {node: '>= 6'}
891
+
892
+
commander@6.2.1:
893
+
resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
894
+
engines: {node: '>= 6'}
895
+
896
+
commondir@1.0.1:
897
+
resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
898
+
899
+
compare-versions@3.6.0:
900
+
resolution: {integrity: sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==}
901
+
902
+
concat-map@0.0.1:
903
+
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
904
+
905
+
confbox@0.1.8:
906
+
resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
907
+
908
+
cosmiconfig@7.1.0:
909
+
resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
910
+
engines: {node: '>=10'}
911
+
912
+
cross-spawn@6.0.6:
913
+
resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==}
914
+
engines: {node: '>=4.8'}
915
+
916
+
cross-spawn@7.0.6:
917
+
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
918
+
engines: {node: '>= 8'}
919
+
920
+
data-view-buffer@1.0.2:
921
+
resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
922
+
engines: {node: '>= 0.4'}
923
+
924
+
data-view-byte-length@1.0.2:
925
+
resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
926
+
engines: {node: '>= 0.4'}
927
+
928
+
data-view-byte-offset@1.0.1:
929
+
resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
930
+
engines: {node: '>= 0.4'}
931
+
932
+
dataloader@1.4.0:
933
+
resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==}
934
+
935
+
debug@4.3.4:
936
+
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
937
+
engines: {node: '>=6.0'}
938
+
peerDependencies:
939
+
supports-color: '*'
940
+
peerDependenciesMeta:
941
+
supports-color:
942
+
optional: true
943
+
944
+
debug@4.4.0:
945
+
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
946
+
engines: {node: '>=6.0'}
947
+
peerDependencies:
948
+
supports-color: '*'
949
+
peerDependenciesMeta:
950
+
supports-color:
951
+
optional: true
952
+
953
+
deep-eql@4.1.4:
954
+
resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
955
+
engines: {node: '>=6'}
956
+
957
+
deep-is@0.1.4:
958
+
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
959
+
960
+
deepmerge@4.3.1:
961
+
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
962
+
engines: {node: '>=0.10.0'}
963
+
964
+
define-data-property@1.1.4:
965
+
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
966
+
engines: {node: '>= 0.4'}
967
+
968
+
define-properties@1.2.1:
969
+
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
970
+
engines: {node: '>= 0.4'}
971
+
972
+
detect-indent@6.1.0:
973
+
resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
974
+
engines: {node: '>=8'}
975
+
976
+
diff-sequences@29.6.3:
977
+
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
978
+
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
979
+
980
+
dir-glob@3.0.1:
981
+
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
982
+
engines: {node: '>=8'}
983
+
984
+
doctrine@3.0.0:
985
+
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
986
+
engines: {node: '>=6.0.0'}
987
+
988
+
dotenv@16.4.7:
989
+
resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==}
990
+
engines: {node: '>=12'}
991
+
992
+
dunder-proto@1.0.1:
993
+
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
994
+
engines: {node: '>= 0.4'}
995
+
996
+
eastasianwidth@0.2.0:
997
+
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
998
+
999
+
emoji-regex@8.0.0:
1000
+
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
1001
+
1002
+
emoji-regex@9.2.2:
1003
+
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
1004
+
1005
+
enquirer@2.4.1:
1006
+
resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
1007
+
engines: {node: '>=8.6'}
1008
+
1009
+
error-ex@1.3.2:
1010
+
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
1011
+
1012
+
es-abstract@1.23.9:
1013
+
resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==}
1014
+
engines: {node: '>= 0.4'}
1015
+
1016
+
es-define-property@1.0.1:
1017
+
resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
1018
+
engines: {node: '>= 0.4'}
1019
+
1020
+
es-errors@1.3.0:
1021
+
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
1022
+
engines: {node: '>= 0.4'}
1023
+
1024
+
es-object-atoms@1.1.1:
1025
+
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
1026
+
engines: {node: '>= 0.4'}
1027
+
1028
+
es-set-tostringtag@2.1.0:
1029
+
resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
1030
+
engines: {node: '>= 0.4'}
1031
+
1032
+
es-to-primitive@1.3.0:
1033
+
resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
1034
+
engines: {node: '>= 0.4'}
1035
+
1036
+
esbuild@0.21.5:
1037
+
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
1038
+
engines: {node: '>=12'}
1039
+
hasBin: true
1040
+
1041
+
escape-string-regexp@1.0.5:
1042
+
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
1043
+
engines: {node: '>=0.8.0'}
1044
+
1045
+
escape-string-regexp@4.0.0:
1046
+
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
1047
+
engines: {node: '>=10'}
1048
+
1049
+
eslint-config-prettier@8.10.0:
1050
+
resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==}
1051
+
hasBin: true
1052
+
peerDependencies:
1053
+
eslint: '>=7.0.0'
1054
+
1055
+
eslint-plugin-prettier@4.2.1:
1056
+
resolution: {integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==}
1057
+
engines: {node: '>=12.0.0'}
1058
+
peerDependencies:
1059
+
eslint: '>=7.28.0'
1060
+
eslint-config-prettier: '*'
1061
+
prettier: '>=2.0.0'
1062
+
peerDependenciesMeta:
1063
+
eslint-config-prettier:
1064
+
optional: true
1065
+
1066
+
eslint-plugin-tsdoc@0.2.17:
1067
+
resolution: {integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==}
1068
+
1069
+
eslint-scope@5.1.1:
1070
+
resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
1071
+
engines: {node: '>=8.0.0'}
1072
+
1073
+
eslint-scope@7.2.2:
1074
+
resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
1075
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1076
+
1077
+
eslint-visitor-keys@3.4.3:
1078
+
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
1079
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1080
+
1081
+
eslint@8.57.1:
1082
+
resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
1083
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1084
+
deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
1085
+
hasBin: true
1086
+
1087
+
espree@9.6.1:
1088
+
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
1089
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1090
+
1091
+
esprima@4.0.1:
1092
+
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
1093
+
engines: {node: '>=4'}
1094
+
hasBin: true
1095
+
1096
+
esquery@1.6.0:
1097
+
resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
1098
+
engines: {node: '>=0.10'}
1099
+
1100
+
esrecurse@4.3.0:
1101
+
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
1102
+
engines: {node: '>=4.0'}
1103
+
1104
+
estraverse@4.3.0:
1105
+
resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
1106
+
engines: {node: '>=4.0'}
1107
+
1108
+
estraverse@5.3.0:
1109
+
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
1110
+
engines: {node: '>=4.0'}
1111
+
1112
+
estree-walker@2.0.2:
1113
+
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
1114
+
1115
+
estree-walker@3.0.3:
1116
+
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
1117
+
1118
+
esutils@2.0.3:
1119
+
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
1120
+
engines: {node: '>=0.10.0'}
1121
+
1122
+
eventemitter3@5.0.1:
1123
+
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
1124
+
1125
+
execa@7.2.0:
1126
+
resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==}
1127
+
engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0}
1128
+
1129
+
execa@8.0.1:
1130
+
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
1131
+
engines: {node: '>=16.17'}
1132
+
1133
+
extendable-error@0.1.7:
1134
+
resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==}
1135
+
1136
+
fast-deep-equal@3.1.3:
1137
+
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
1138
+
1139
+
fast-diff@1.3.0:
1140
+
resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
1141
+
1142
+
fast-glob@3.3.3:
1143
+
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
1144
+
engines: {node: '>=8.6.0'}
1145
+
1146
+
fast-json-stable-stringify@2.1.0:
1147
+
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
1148
+
1149
+
fast-levenshtein@2.0.6:
1150
+
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
1151
+
1152
+
fastq@1.19.1:
1153
+
resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
1154
+
1155
+
file-entry-cache@6.0.1:
1156
+
resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
1157
+
engines: {node: ^10.12.0 || >=12.0.0}
1158
+
1159
+
fill-range@7.1.1:
1160
+
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
1161
+
engines: {node: '>=8'}
1162
+
1163
+
find-up@4.1.0:
1164
+
resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
1165
+
engines: {node: '>=8'}
1166
+
1167
+
find-up@5.0.0:
1168
+
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
1169
+
engines: {node: '>=10'}
1170
+
1171
+
find-versions@4.0.0:
1172
+
resolution: {integrity: sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==}
1173
+
engines: {node: '>=10'}
1174
+
1175
+
flat-cache@3.2.0:
1176
+
resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
1177
+
engines: {node: ^10.12.0 || >=12.0.0}
1178
+
1179
+
flatted@3.3.3:
1180
+
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
1181
+
1182
+
flowgen@1.21.0:
1183
+
resolution: {integrity: sha512-pFNFFyMLRmW6njhOIm5TrbGUDTv64aujmys2KrkRE2NYD8sXwJUyicQRwU5SPRBRJnFSD/FNlnHo2NnHI5eJSw==}
1184
+
hasBin: true
1185
+
1186
+
for-each@0.3.5:
1187
+
resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
1188
+
engines: {node: '>= 0.4'}
1189
+
1190
+
foreground-child@3.3.1:
1191
+
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
1192
+
engines: {node: '>=14'}
1193
+
1194
+
fs-extra@7.0.1:
1195
+
resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
1196
+
engines: {node: '>=6 <7 || >=8'}
1197
+
1198
+
fs-extra@8.1.0:
1199
+
resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
1200
+
engines: {node: '>=6 <7 || >=8'}
1201
+
1202
+
fs.realpath@1.0.0:
1203
+
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
1204
+
1205
+
fsevents@2.3.3:
1206
+
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
1207
+
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
1208
+
os: [darwin]
1209
+
1210
+
function-bind@1.1.2:
1211
+
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
1212
+
1213
+
function.prototype.name@1.1.8:
1214
+
resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
1215
+
engines: {node: '>= 0.4'}
1216
+
1217
+
functions-have-names@1.2.3:
1218
+
resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
1219
+
1220
+
get-func-name@2.0.2:
1221
+
resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
1222
+
1223
+
get-intrinsic@1.3.0:
1224
+
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
1225
+
engines: {node: '>= 0.4'}
1226
+
1227
+
get-proto@1.0.1:
1228
+
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
1229
+
engines: {node: '>= 0.4'}
1230
+
1231
+
get-stream@6.0.1:
1232
+
resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
1233
+
engines: {node: '>=10'}
1234
+
1235
+
get-stream@8.0.1:
1236
+
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
1237
+
engines: {node: '>=16'}
1238
+
1239
+
get-symbol-description@1.1.0:
1240
+
resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
1241
+
engines: {node: '>= 0.4'}
1242
+
1243
+
glob-parent@5.1.2:
1244
+
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
1245
+
engines: {node: '>= 6'}
1246
+
1247
+
glob-parent@6.0.2:
1248
+
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
1249
+
engines: {node: '>=10.13.0'}
1250
+
1251
+
glob@10.4.5:
1252
+
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
1253
+
hasBin: true
1254
+
1255
+
glob@7.2.3:
1256
+
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
1257
+
deprecated: Glob versions prior to v9 are no longer supported
1258
+
1259
+
glob@8.1.0:
1260
+
resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==}
1261
+
engines: {node: '>=12'}
1262
+
deprecated: Glob versions prior to v9 are no longer supported
1263
+
1264
+
globals@13.24.0:
1265
+
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
1266
+
engines: {node: '>=8'}
1267
+
1268
+
globalthis@1.0.4:
1269
+
resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
1270
+
engines: {node: '>= 0.4'}
1271
+
1272
+
globby@11.1.0:
1273
+
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
1274
+
engines: {node: '>=10'}
1275
+
1276
+
gopd@1.2.0:
1277
+
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
1278
+
engines: {node: '>= 0.4'}
1279
+
1280
+
graceful-fs@4.2.11:
1281
+
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
1282
+
1283
+
graphemer@1.4.0:
1284
+
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
1285
+
1286
+
has-bigints@1.1.0:
1287
+
resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
1288
+
engines: {node: '>= 0.4'}
1289
+
1290
+
has-flag@3.0.0:
1291
+
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
1292
+
engines: {node: '>=4'}
1293
+
1294
+
has-flag@4.0.0:
1295
+
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
1296
+
engines: {node: '>=8'}
1297
+
1298
+
has-property-descriptors@1.0.2:
1299
+
resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
1300
+
1301
+
has-proto@1.2.0:
1302
+
resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
1303
+
engines: {node: '>= 0.4'}
1304
+
1305
+
has-symbols@1.1.0:
1306
+
resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
1307
+
engines: {node: '>= 0.4'}
1308
+
1309
+
has-tostringtag@1.0.2:
1310
+
resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
1311
+
engines: {node: '>= 0.4'}
1312
+
1313
+
hasown@2.0.2:
1314
+
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
1315
+
engines: {node: '>= 0.4'}
1316
+
1317
+
hosted-git-info@2.8.9:
1318
+
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
1319
+
1320
+
human-id@4.1.1:
1321
+
resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==}
1322
+
hasBin: true
1323
+
1324
+
human-signals@4.3.1:
1325
+
resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==}
1326
+
engines: {node: '>=14.18.0'}
1327
+
1328
+
human-signals@5.0.0:
1329
+
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
1330
+
engines: {node: '>=16.17.0'}
1331
+
1332
+
husky-v4@4.3.8:
1333
+
resolution: {integrity: sha512-M7A9u/t6BnT/qbDzKb7SdXhr8qLTGTkqZL6YLDDM20jfCdmpIMEuO384LvYXSBcgv50oIgNWI/IaO3g4A4ShjA==}
1334
+
engines: {node: '>=10'}
1335
+
hasBin: true
1336
+
1337
+
iconv-lite@0.6.3:
1338
+
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
1339
+
engines: {node: '>=0.10.0'}
1340
+
1341
+
ignore@5.3.2:
1342
+
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
1343
+
engines: {node: '>= 4'}
1344
+
1345
+
import-fresh@3.3.1:
1346
+
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
1347
+
engines: {node: '>=6'}
1348
+
1349
+
imurmurhash@0.1.4:
1350
+
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
1351
+
engines: {node: '>=0.8.19'}
1352
+
1353
+
inflight@1.0.6:
1354
+
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
1355
+
deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
1356
+
1357
+
inherits@2.0.4:
1358
+
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
1359
+
1360
+
internal-slot@1.1.0:
1361
+
resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
1362
+
engines: {node: '>= 0.4'}
1363
+
1364
+
interpret@1.4.0:
1365
+
resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==}
1366
+
engines: {node: '>= 0.10'}
1367
+
1368
+
is-array-buffer@3.0.5:
1369
+
resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
1370
+
engines: {node: '>= 0.4'}
1371
+
1372
+
is-arrayish@0.2.1:
1373
+
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
1374
+
1375
+
is-async-function@2.1.1:
1376
+
resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
1377
+
engines: {node: '>= 0.4'}
1378
+
1379
+
is-bigint@1.1.0:
1380
+
resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
1381
+
engines: {node: '>= 0.4'}
1382
+
1383
+
is-boolean-object@1.2.2:
1384
+
resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
1385
+
engines: {node: '>= 0.4'}
1386
+
1387
+
is-callable@1.2.7:
1388
+
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
1389
+
engines: {node: '>= 0.4'}
1390
+
1391
+
is-core-module@2.16.1:
1392
+
resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
1393
+
engines: {node: '>= 0.4'}
1394
+
1395
+
is-data-view@1.0.2:
1396
+
resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
1397
+
engines: {node: '>= 0.4'}
1398
+
1399
+
is-date-object@1.1.0:
1400
+
resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
1401
+
engines: {node: '>= 0.4'}
1402
+
1403
+
is-extglob@2.1.1:
1404
+
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1405
+
engines: {node: '>=0.10.0'}
1406
+
1407
+
is-finalizationregistry@1.1.1:
1408
+
resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
1409
+
engines: {node: '>= 0.4'}
1410
+
1411
+
is-fullwidth-code-point@3.0.0:
1412
+
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
1413
+
engines: {node: '>=8'}
1414
+
1415
+
is-fullwidth-code-point@4.0.0:
1416
+
resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
1417
+
engines: {node: '>=12'}
1418
+
1419
+
is-generator-function@1.1.0:
1420
+
resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
1421
+
engines: {node: '>= 0.4'}
1422
+
1423
+
is-glob@4.0.3:
1424
+
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1425
+
engines: {node: '>=0.10.0'}
1426
+
1427
+
is-map@2.0.3:
1428
+
resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
1429
+
engines: {node: '>= 0.4'}
1430
+
1431
+
is-module@1.0.0:
1432
+
resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
1433
+
1434
+
is-number-object@1.1.1:
1435
+
resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
1436
+
engines: {node: '>= 0.4'}
1437
+
1438
+
is-number@7.0.0:
1439
+
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1440
+
engines: {node: '>=0.12.0'}
1441
+
1442
+
is-path-inside@3.0.3:
1443
+
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
1444
+
engines: {node: '>=8'}
1445
+
1446
+
is-reference@1.2.1:
1447
+
resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
1448
+
1449
+
is-regex@1.2.1:
1450
+
resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
1451
+
engines: {node: '>= 0.4'}
1452
+
1453
+
is-set@2.0.3:
1454
+
resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
1455
+
engines: {node: '>= 0.4'}
1456
+
1457
+
is-shared-array-buffer@1.0.4:
1458
+
resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
1459
+
engines: {node: '>= 0.4'}
1460
+
1461
+
is-stream@3.0.0:
1462
+
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
1463
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1464
+
1465
+
is-string@1.1.1:
1466
+
resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
1467
+
engines: {node: '>= 0.4'}
1468
+
1469
+
is-subdir@1.2.0:
1470
+
resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==}
1471
+
engines: {node: '>=4'}
1472
+
1473
+
is-symbol@1.1.1:
1474
+
resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
1475
+
engines: {node: '>= 0.4'}
1476
+
1477
+
is-typed-array@1.1.15:
1478
+
resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
1479
+
engines: {node: '>= 0.4'}
1480
+
1481
+
is-weakmap@2.0.2:
1482
+
resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
1483
+
engines: {node: '>= 0.4'}
1484
+
1485
+
is-weakref@1.1.1:
1486
+
resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
1487
+
engines: {node: '>= 0.4'}
1488
+
1489
+
is-weakset@2.0.4:
1490
+
resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
1491
+
engines: {node: '>= 0.4'}
1492
+
1493
+
is-windows@1.0.2:
1494
+
resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
1495
+
engines: {node: '>=0.10.0'}
1496
+
1497
+
isarray@2.0.5:
1498
+
resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
1499
+
1500
+
isexe@2.0.0:
1501
+
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1502
+
1503
+
jackspeak@3.4.3:
1504
+
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
1505
+
1506
+
jju@1.4.0:
1507
+
resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
1508
+
1509
+
js-tokens@4.0.0:
1510
+
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
1511
+
1512
+
js-tokens@9.0.1:
1513
+
resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
1514
+
1515
+
js-yaml@3.14.1:
1516
+
resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
1517
+
hasBin: true
1518
+
1519
+
js-yaml@4.1.0:
1520
+
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
1521
+
hasBin: true
1522
+
1523
+
jsesc@0.5.0:
1524
+
resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==}
1525
+
hasBin: true
1526
+
1527
+
json-buffer@3.0.1:
1528
+
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
1529
+
1530
+
json-parse-better-errors@1.0.2:
1531
+
resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
1532
+
1533
+
json-parse-even-better-errors@2.3.1:
1534
+
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
1535
+
1536
+
json-schema-traverse@0.4.1:
1537
+
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
1538
+
1539
+
json-stable-stringify-without-jsonify@1.0.1:
1540
+
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
1541
+
1542
+
jsonfile@4.0.0:
1543
+
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
1544
+
1545
+
keyv@4.5.4:
1546
+
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
1547
+
1548
+
levn@0.4.1:
1549
+
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
1550
+
engines: {node: '>= 0.8.0'}
1551
+
1552
+
lilconfig@2.1.0:
1553
+
resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
1554
+
engines: {node: '>=10'}
1555
+
1556
+
lines-and-columns@1.2.4:
1557
+
resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1558
+
1559
+
lint-staged@13.3.0:
1560
+
resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==}
1561
+
engines: {node: ^16.14.0 || >=18.0.0}
1562
+
hasBin: true
1563
+
1564
+
listr2@6.6.1:
1565
+
resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==}
1566
+
engines: {node: '>=16.0.0'}
1567
+
peerDependencies:
1568
+
enquirer: '>= 2.3.0 < 3'
1569
+
peerDependenciesMeta:
1570
+
enquirer:
1571
+
optional: true
1572
+
1573
+
load-json-file@4.0.0:
1574
+
resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==}
1575
+
engines: {node: '>=4'}
1576
+
1577
+
local-pkg@0.5.1:
1578
+
resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==}
1579
+
engines: {node: '>=14'}
1580
+
1581
+
locate-path@5.0.0:
1582
+
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
1583
+
engines: {node: '>=8'}
1584
+
1585
+
locate-path@6.0.0:
1586
+
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
1587
+
engines: {node: '>=10'}
1588
+
1589
+
lodash.merge@4.6.2:
1590
+
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
1591
+
1592
+
lodash.startcase@4.4.0:
1593
+
resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
1594
+
1595
+
lodash@4.17.21:
1596
+
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
1597
+
1598
+
log-update@5.0.1:
1599
+
resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==}
1600
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1601
+
1602
+
loupe@2.3.7:
1603
+
resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
1604
+
1605
+
lru-cache@10.4.3:
1606
+
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
1607
+
1608
+
magic-string@0.25.9:
1609
+
resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
1610
+
1611
+
magic-string@0.27.0:
1612
+
resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
1613
+
engines: {node: '>=12'}
1614
+
1615
+
magic-string@0.30.17:
1616
+
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
1617
+
1618
+
math-intrinsics@1.1.0:
1619
+
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
1620
+
engines: {node: '>= 0.4'}
1621
+
1622
+
memorystream@0.3.1:
1623
+
resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
1624
+
engines: {node: '>= 0.10.0'}
1625
+
1626
+
merge-stream@2.0.0:
1627
+
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
1628
+
1629
+
merge2@1.4.1:
1630
+
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1631
+
engines: {node: '>= 8'}
1632
+
1633
+
micromatch@4.0.5:
1634
+
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1635
+
engines: {node: '>=8.6'}
1636
+
1637
+
micromatch@4.0.8:
1638
+
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
1639
+
engines: {node: '>=8.6'}
1640
+
1641
+
mimic-fn@2.1.0:
1642
+
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
1643
+
engines: {node: '>=6'}
1644
+
1645
+
mimic-fn@4.0.0:
1646
+
resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
1647
+
engines: {node: '>=12'}
1648
+
1649
+
minimatch@3.1.2:
1650
+
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1651
+
1652
+
minimatch@5.1.6:
1653
+
resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==}
1654
+
engines: {node: '>=10'}
1655
+
1656
+
minimatch@9.0.5:
1657
+
resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
1658
+
engines: {node: '>=16 || 14 >=14.17'}
1659
+
1660
+
minimist@1.2.8:
1661
+
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
1662
+
1663
+
minipass@7.1.2:
1664
+
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
1665
+
engines: {node: '>=16 || 14 >=14.17'}
1666
+
1667
+
mlly@1.7.4:
1668
+
resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
1669
+
1670
+
mri@1.2.0:
1671
+
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
1672
+
engines: {node: '>=4'}
1673
+
1674
+
ms@2.1.2:
1675
+
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
1676
+
1677
+
ms@2.1.3:
1678
+
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
1679
+
1680
+
mz@2.7.0:
1681
+
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
1682
+
1683
+
nanoid@3.3.8:
1684
+
resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
1685
+
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1686
+
hasBin: true
1687
+
1688
+
natural-compare-lite@1.4.0:
1689
+
resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
1690
+
1691
+
natural-compare@1.4.0:
1692
+
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
1693
+
1694
+
nice-try@1.0.5:
1695
+
resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
1696
+
1697
+
node-fetch@2.7.0:
1698
+
resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
1699
+
engines: {node: 4.x || >=6.0.0}
1700
+
peerDependencies:
1701
+
encoding: ^0.1.0
1702
+
peerDependenciesMeta:
1703
+
encoding:
1704
+
optional: true
1705
+
1706
+
normalize-package-data@2.5.0:
1707
+
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
1708
+
1709
+
npm-run-all@4.1.5:
1710
+
resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==}
1711
+
engines: {node: '>= 4'}
1712
+
hasBin: true
1713
+
1714
+
npm-run-path@5.3.0:
1715
+
resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
1716
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1717
+
1718
+
object-assign@4.1.1:
1719
+
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1720
+
engines: {node: '>=0.10.0'}
1721
+
1722
+
object-inspect@1.13.4:
1723
+
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
1724
+
engines: {node: '>= 0.4'}
1725
+
1726
+
object-keys@1.1.1:
1727
+
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1728
+
engines: {node: '>= 0.4'}
1729
+
1730
+
object.assign@4.1.7:
1731
+
resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
1732
+
engines: {node: '>= 0.4'}
1733
+
1734
+
once@1.4.0:
1735
+
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1736
+
1737
+
onetime@5.1.2:
1738
+
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
1739
+
engines: {node: '>=6'}
1740
+
1741
+
onetime@6.0.0:
1742
+
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
1743
+
engines: {node: '>=12'}
1744
+
1745
+
opencollective-postinstall@2.0.3:
1746
+
resolution: {integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==}
1747
+
hasBin: true
1748
+
1749
+
optionator@0.9.4:
1750
+
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
1751
+
engines: {node: '>= 0.8.0'}
1752
+
1753
+
outdent@0.5.0:
1754
+
resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==}
1755
+
1756
+
own-keys@1.0.1:
1757
+
resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
1758
+
engines: {node: '>= 0.4'}
1759
+
1760
+
p-filter@2.1.0:
1761
+
resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
1762
+
engines: {node: '>=8'}
1763
+
1764
+
p-limit@2.3.0:
1765
+
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
1766
+
engines: {node: '>=6'}
1767
+
1768
+
p-limit@3.1.0:
1769
+
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
1770
+
engines: {node: '>=10'}
1771
+
1772
+
p-limit@5.0.0:
1773
+
resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==}
1774
+
engines: {node: '>=18'}
1775
+
1776
+
p-locate@4.1.0:
1777
+
resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
1778
+
engines: {node: '>=8'}
1779
+
1780
+
p-locate@5.0.0:
1781
+
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
1782
+
engines: {node: '>=10'}
1783
+
1784
+
p-map@2.1.0:
1785
+
resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
1786
+
engines: {node: '>=6'}
1787
+
1788
+
p-try@2.2.0:
1789
+
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
1790
+
engines: {node: '>=6'}
1791
+
1792
+
package-json-from-dist@1.0.1:
1793
+
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
1794
+
1795
+
package-manager-detector@0.2.11:
1796
+
resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==}
1797
+
1798
+
parent-module@1.0.1:
1799
+
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1800
+
engines: {node: '>=6'}
1801
+
1802
+
parse-json@4.0.0:
1803
+
resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
1804
+
engines: {node: '>=4'}
1805
+
1806
+
parse-json@5.2.0:
1807
+
resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
1808
+
engines: {node: '>=8'}
1809
+
1810
+
path-exists@4.0.0:
1811
+
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1812
+
engines: {node: '>=8'}
1813
+
1814
+
path-is-absolute@1.0.1:
1815
+
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1816
+
engines: {node: '>=0.10.0'}
1817
+
1818
+
path-key@2.0.1:
1819
+
resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
1820
+
engines: {node: '>=4'}
1821
+
1822
+
path-key@3.1.1:
1823
+
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1824
+
engines: {node: '>=8'}
1825
+
1826
+
path-key@4.0.0:
1827
+
resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
1828
+
engines: {node: '>=12'}
1829
+
1830
+
path-parse@1.0.7:
1831
+
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1832
+
1833
+
path-scurry@1.11.1:
1834
+
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
1835
+
engines: {node: '>=16 || 14 >=14.18'}
1836
+
1837
+
path-type@3.0.0:
1838
+
resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
1839
+
engines: {node: '>=4'}
1840
+
1841
+
path-type@4.0.0:
1842
+
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1843
+
engines: {node: '>=8'}
1844
+
1845
+
pathe@1.1.2:
1846
+
resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
1847
+
1848
+
pathe@2.0.3:
1849
+
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
1850
+
1851
+
pathval@1.1.1:
1852
+
resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
1853
+
1854
+
picocolors@1.1.1:
1855
+
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
1856
+
1857
+
picomatch@2.3.1:
1858
+
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1859
+
engines: {node: '>=8.6'}
1860
+
1861
+
picomatch@4.0.2:
1862
+
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
1863
+
engines: {node: '>=12'}
1864
+
1865
+
pidtree@0.3.1:
1866
+
resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==}
1867
+
engines: {node: '>=0.10'}
1868
+
hasBin: true
1869
+
1870
+
pidtree@0.6.0:
1871
+
resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
1872
+
engines: {node: '>=0.10'}
1873
+
hasBin: true
1874
+
1875
+
pify@3.0.0:
1876
+
resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
1877
+
engines: {node: '>=4'}
1878
+
1879
+
pify@4.0.1:
1880
+
resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
1881
+
engines: {node: '>=6'}
1882
+
1883
+
pirates@4.0.6:
1884
+
resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
1885
+
engines: {node: '>= 6'}
1886
+
1887
+
pkg-dir@5.0.0:
1888
+
resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==}
1889
+
engines: {node: '>=10'}
1890
+
1891
+
pkg-types@1.3.1:
1892
+
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
1893
+
1894
+
please-upgrade-node@3.2.0:
1895
+
resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==}
1896
+
1897
+
possible-typed-array-names@1.1.0:
1898
+
resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
1899
+
engines: {node: '>= 0.4'}
1900
+
1901
+
postcss@8.5.3:
1902
+
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
1903
+
engines: {node: ^10 || ^12 || >=14}
1904
+
1905
+
prelude-ls@1.2.1:
1906
+
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
1907
+
engines: {node: '>= 0.8.0'}
1908
+
1909
+
prettier-linter-helpers@1.0.0:
1910
+
resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==}
1911
+
engines: {node: '>=6.0.0'}
1912
+
1913
+
prettier@2.8.8:
1914
+
resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
1915
+
engines: {node: '>=10.13.0'}
1916
+
hasBin: true
1917
+
1918
+
pretty-format@29.7.0:
1919
+
resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
1920
+
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
1921
+
1922
+
punycode@2.3.1:
1923
+
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
1924
+
engines: {node: '>=6'}
1925
+
1926
+
quansync@0.2.8:
1927
+
resolution: {integrity: sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==}
1928
+
1929
+
queue-microtask@1.2.3:
1930
+
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1931
+
1932
+
react-is@18.3.1:
1933
+
resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
1934
+
1935
+
read-pkg@3.0.0:
1936
+
resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==}
1937
+
engines: {node: '>=4'}
1938
+
1939
+
read-yaml-file@1.1.0:
1940
+
resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
1941
+
engines: {node: '>=6'}
1942
+
1943
+
rechoir@0.6.2:
1944
+
resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==}
1945
+
engines: {node: '>= 0.10'}
1946
+
1947
+
reflect.getprototypeof@1.0.10:
1948
+
resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
1949
+
engines: {node: '>= 0.4'}
1950
+
1951
+
regenerate-unicode-properties@8.2.0:
1952
+
resolution: {integrity: sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==}
1953
+
engines: {node: '>=4'}
1954
+
1955
+
regenerate@1.4.2:
1956
+
resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==}
1957
+
1958
+
regenerator-runtime@0.14.1:
1959
+
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
1960
+
1961
+
regexp.prototype.flags@1.5.4:
1962
+
resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
1963
+
engines: {node: '>= 0.4'}
1964
+
1965
+
regexpu-core@4.5.4:
1966
+
resolution: {integrity: sha512-BtizvGtFQKGPUcTy56o3nk1bGRp4SZOTYrDtGNlqCQufptV5IkkLN6Emw+yunAJjzf+C9FQFtvq7IoA3+oMYHQ==}
1967
+
engines: {node: '>=4'}
1968
+
1969
+
regjsgen@0.5.2:
1970
+
resolution: {integrity: sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==}
1971
+
1972
+
regjsparser@0.6.9:
1973
+
resolution: {integrity: sha512-ZqbNRz1SNjLAiYuwY0zoXW8Ne675IX5q+YHioAGbCw4X96Mjl2+dcX9B2ciaeyYjViDAfvIjFpQjJgLttTEERQ==}
1974
+
hasBin: true
1975
+
1976
+
resolve-from@4.0.0:
1977
+
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1978
+
engines: {node: '>=4'}
1979
+
1980
+
resolve-from@5.0.0:
1981
+
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
1982
+
engines: {node: '>=8'}
1983
+
1984
+
resolve@1.19.0:
1985
+
resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==}
1986
+
1987
+
resolve@1.22.10:
1988
+
resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
1989
+
engines: {node: '>= 0.4'}
1990
+
hasBin: true
1991
+
1992
+
restore-cursor@4.0.0:
1993
+
resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
1994
+
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
1995
+
1996
+
reusify@1.1.0:
1997
+
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
1998
+
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1999
+
2000
+
rfdc@1.4.1:
2001
+
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
2002
+
2003
+
rimraf@3.0.2:
2004
+
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
2005
+
deprecated: Rimraf versions prior to v4 are no longer supported
2006
+
hasBin: true
2007
+
2008
+
rollup-plugin-cjs-check@1.0.3:
2009
+
resolution: {integrity: sha512-l8Gn8fm0YsAUuCVPmJ9CjwX5D98xyjc7iBlKfik5RGgXrV35nBwKCb+xbsK2oMrWMIRdLWsfyVUBM153e2zvYg==}
2010
+
engines: {node: '>=14.0.0'}
2011
+
peerDependencies:
2012
+
rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0
2013
+
2014
+
rollup-plugin-dts@5.3.1:
2015
+
resolution: {integrity: sha512-gusMi+Z4gY/JaEQeXnB0RUdU82h1kF0WYzCWgVmV4p3hWXqelaKuCvcJawfeg+EKn2T1Ie+YWF2OiN1/L8bTVg==}
2016
+
engines: {node: '>=v14.21.3'}
2017
+
peerDependencies:
2018
+
rollup: ^3.0
2019
+
typescript: ^4.1 || ^5.0
2020
+
2021
+
rollup@3.29.5:
2022
+
resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==}
2023
+
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
2024
+
hasBin: true
2025
+
2026
+
rollup@4.34.9:
2027
+
resolution: {integrity: sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==}
2028
+
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
2029
+
hasBin: true
2030
+
2031
+
run-parallel@1.2.0:
2032
+
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
2033
+
2034
+
safe-array-concat@1.1.3:
2035
+
resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
2036
+
engines: {node: '>=0.4'}
2037
+
2038
+
safe-push-apply@1.0.0:
2039
+
resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
2040
+
engines: {node: '>= 0.4'}
2041
+
2042
+
safe-regex-test@1.1.0:
2043
+
resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
2044
+
engines: {node: '>= 0.4'}
2045
+
2046
+
safer-buffer@2.1.2:
2047
+
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
2048
+
2049
+
semver-compare@1.0.0:
2050
+
resolution: {integrity: sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==}
2051
+
2052
+
semver-regex@3.1.4:
2053
+
resolution: {integrity: sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==}
2054
+
engines: {node: '>=8'}
2055
+
2056
+
semver@5.7.2:
2057
+
resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
2058
+
hasBin: true
2059
+
2060
+
semver@7.7.1:
2061
+
resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
2062
+
engines: {node: '>=10'}
2063
+
hasBin: true
2064
+
2065
+
set-function-length@1.2.2:
2066
+
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
2067
+
engines: {node: '>= 0.4'}
2068
+
2069
+
set-function-name@2.0.2:
2070
+
resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
2071
+
engines: {node: '>= 0.4'}
2072
+
2073
+
set-proto@1.0.0:
2074
+
resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
2075
+
engines: {node: '>= 0.4'}
2076
+
2077
+
shebang-command@1.2.0:
2078
+
resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
2079
+
engines: {node: '>=0.10.0'}
2080
+
2081
+
shebang-command@2.0.0:
2082
+
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
2083
+
engines: {node: '>=8'}
2084
+
2085
+
shebang-regex@1.0.0:
2086
+
resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
2087
+
engines: {node: '>=0.10.0'}
2088
+
2089
+
shebang-regex@3.0.0:
2090
+
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
2091
+
engines: {node: '>=8'}
2092
+
2093
+
shell-quote@1.8.2:
2094
+
resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==}
2095
+
engines: {node: '>= 0.4'}
2096
+
2097
+
shelljs@0.8.5:
2098
+
resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==}
2099
+
engines: {node: '>=4'}
2100
+
hasBin: true
2101
+
2102
+
side-channel-list@1.0.0:
2103
+
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
2104
+
engines: {node: '>= 0.4'}
2105
+
2106
+
side-channel-map@1.0.1:
2107
+
resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
2108
+
engines: {node: '>= 0.4'}
2109
+
2110
+
side-channel-weakmap@1.0.2:
2111
+
resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
2112
+
engines: {node: '>= 0.4'}
2113
+
2114
+
side-channel@1.1.0:
2115
+
resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
2116
+
engines: {node: '>= 0.4'}
2117
+
2118
+
siginfo@2.0.0:
2119
+
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
2120
+
2121
+
signal-exit@3.0.7:
2122
+
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
2123
+
2124
+
signal-exit@4.1.0:
2125
+
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
2126
+
engines: {node: '>=14'}
2127
+
2128
+
slash@3.0.0:
2129
+
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
2130
+
engines: {node: '>=8'}
2131
+
2132
+
slice-ansi@5.0.0:
2133
+
resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
2134
+
engines: {node: '>=12'}
2135
+
2136
+
source-map-js@1.2.1:
2137
+
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
2138
+
engines: {node: '>=0.10.0'}
2139
+
2140
+
source-map-support@0.5.21:
2141
+
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
2142
+
2143
+
source-map@0.6.1:
2144
+
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
2145
+
engines: {node: '>=0.10.0'}
2146
+
2147
+
sourcemap-codec@1.4.8:
2148
+
resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
2149
+
deprecated: Please use @jridgewell/sourcemap-codec instead
2150
+
2151
+
spawndamnit@3.0.1:
2152
+
resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==}
2153
+
2154
+
spdx-correct@3.2.0:
2155
+
resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
2156
+
2157
+
spdx-exceptions@2.5.0:
2158
+
resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
2159
+
2160
+
spdx-expression-parse@3.0.1:
2161
+
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
2162
+
2163
+
spdx-license-ids@3.0.21:
2164
+
resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==}
2165
+
2166
+
sprintf-js@1.0.3:
2167
+
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
2168
+
2169
+
stackback@0.0.2:
2170
+
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
2171
+
2172
+
std-env@3.8.1:
2173
+
resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==}
2174
+
2175
+
string-argv@0.3.2:
2176
+
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
2177
+
engines: {node: '>=0.6.19'}
2178
+
2179
+
string-width@4.2.3:
2180
+
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
2181
+
engines: {node: '>=8'}
2182
+
2183
+
string-width@5.1.2:
2184
+
resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
2185
+
engines: {node: '>=12'}
2186
+
2187
+
string.prototype.padend@3.1.6:
2188
+
resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==}
2189
+
engines: {node: '>= 0.4'}
2190
+
2191
+
string.prototype.trim@1.2.10:
2192
+
resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
2193
+
engines: {node: '>= 0.4'}
2194
+
2195
+
string.prototype.trimend@1.0.9:
2196
+
resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
2197
+
engines: {node: '>= 0.4'}
2198
+
2199
+
string.prototype.trimstart@1.0.8:
2200
+
resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
2201
+
engines: {node: '>= 0.4'}
2202
+
2203
+
strip-ansi@6.0.1:
2204
+
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
2205
+
engines: {node: '>=8'}
2206
+
2207
+
strip-ansi@7.1.0:
2208
+
resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
2209
+
engines: {node: '>=12'}
2210
+
2211
+
strip-bom@3.0.0:
2212
+
resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
2213
+
engines: {node: '>=4'}
2214
+
2215
+
strip-final-newline@3.0.0:
2216
+
resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
2217
+
engines: {node: '>=12'}
2218
+
2219
+
strip-json-comments@3.1.1:
2220
+
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
2221
+
engines: {node: '>=8'}
2222
+
2223
+
strip-literal@2.1.1:
2224
+
resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==}
2225
+
2226
+
sucrase@3.35.0:
2227
+
resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
2228
+
engines: {node: '>=16 || 14 >=14.17'}
2229
+
hasBin: true
2230
+
2231
+
supports-color@5.5.0:
2232
+
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
2233
+
engines: {node: '>=4'}
2234
+
2235
+
supports-color@7.2.0:
2236
+
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
2237
+
engines: {node: '>=8'}
2238
+
2239
+
supports-preserve-symlinks-flag@1.0.0:
2240
+
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
2241
+
engines: {node: '>= 0.4'}
2242
+
2243
+
term-size@2.2.1:
2244
+
resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
2245
+
engines: {node: '>=8'}
2246
+
2247
+
terser@5.39.0:
2248
+
resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==}
2249
+
engines: {node: '>=10'}
2250
+
hasBin: true
2251
+
2252
+
text-table@0.2.0:
2253
+
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
2254
+
2255
+
thenify-all@1.6.0:
2256
+
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
2257
+
engines: {node: '>=0.8'}
2258
+
2259
+
thenify@3.3.1:
2260
+
resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
2261
+
2262
+
tinybench@2.9.0:
2263
+
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
2264
+
2265
+
tinypool@0.8.4:
2266
+
resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==}
2267
+
engines: {node: '>=14.0.0'}
2268
+
2269
+
tinyspy@2.2.1:
2270
+
resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==}
2271
+
engines: {node: '>=14.0.0'}
2272
+
2273
+
to-regex-range@5.0.1:
2274
+
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
2275
+
engines: {node: '>=8.0'}
2276
+
2277
+
tr46@0.0.3:
2278
+
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
2279
+
2280
+
ts-interface-checker@0.1.13:
2281
+
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
2282
+
2283
+
tslib@1.14.1:
2284
+
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
2285
+
2286
+
tslib@2.8.1:
2287
+
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
2288
+
2289
+
tsutils@3.21.0:
2290
+
resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
2291
+
engines: {node: '>= 6'}
2292
+
peerDependencies:
2293
+
typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
2294
+
2295
+
type-check@0.4.0:
2296
+
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
2297
+
engines: {node: '>= 0.8.0'}
2298
+
2299
+
type-detect@4.1.0:
2300
+
resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
2301
+
engines: {node: '>=4'}
2302
+
2303
+
type-fest@0.20.2:
2304
+
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
2305
+
engines: {node: '>=10'}
2306
+
2307
+
type-fest@1.4.0:
2308
+
resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==}
2309
+
engines: {node: '>=10'}
2310
+
2311
+
typed-array-buffer@1.0.3:
2312
+
resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
2313
+
engines: {node: '>= 0.4'}
2314
+
2315
+
typed-array-byte-length@1.0.3:
2316
+
resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
2317
+
engines: {node: '>= 0.4'}
2318
+
2319
+
typed-array-byte-offset@1.0.4:
2320
+
resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
2321
+
engines: {node: '>= 0.4'}
2322
+
2323
+
typed-array-length@1.0.7:
2324
+
resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
2325
+
engines: {node: '>= 0.4'}
2326
+
2327
+
typescript-compiler@1.4.1-2:
2328
+
resolution: {integrity: sha512-EMopKmoAEJqA4XXRFGOb7eSBhmQMbBahW6P1Koayeatp0b4AW2q/bBqYWkpG7QVQc9HGQUiS4trx2ZHcnAaZUg==}
2329
+
2330
+
typescript@4.4.4:
2331
+
resolution: {integrity: sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==}
2332
+
engines: {node: '>=4.2.0'}
2333
+
hasBin: true
2334
+
2335
+
typescript@4.9.5:
2336
+
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
2337
+
engines: {node: '>=4.2.0'}
2338
+
hasBin: true
2339
+
2340
+
ufo@1.5.4:
2341
+
resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
2342
+
2343
+
unbox-primitive@1.1.0:
2344
+
resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
2345
+
engines: {node: '>= 0.4'}
2346
+
2347
+
undici-types@6.20.0:
2348
+
resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
2349
+
2350
+
unicode-canonical-property-names-ecmascript@1.0.4:
2351
+
resolution: {integrity: sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==}
2352
+
engines: {node: '>=4'}
2353
+
2354
+
unicode-match-property-ecmascript@1.0.4:
2355
+
resolution: {integrity: sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==}
2356
+
engines: {node: '>=4'}
2357
+
2358
+
unicode-match-property-value-ecmascript@1.2.0:
2359
+
resolution: {integrity: sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==}
2360
+
engines: {node: '>=4'}
2361
+
2362
+
unicode-property-aliases-ecmascript@1.1.0:
2363
+
resolution: {integrity: sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==}
2364
+
engines: {node: '>=4'}
2365
+
2366
+
universalify@0.1.2:
2367
+
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
2368
+
engines: {node: '>= 4.0.0'}
2369
+
2370
+
uri-js@4.4.1:
2371
+
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
2372
+
2373
+
validate-npm-package-license@3.0.4:
2374
+
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
2375
+
2376
+
vite-node@1.6.1:
2377
+
resolution: {integrity: sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==}
2378
+
engines: {node: ^18.0.0 || >=20.0.0}
2379
+
hasBin: true
2380
+
2381
+
vite@5.4.14:
2382
+
resolution: {integrity: sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==}
2383
+
engines: {node: ^18.0.0 || >=20.0.0}
2384
+
hasBin: true
2385
+
peerDependencies:
2386
+
'@types/node': ^18.0.0 || >=20.0.0
2387
+
less: '*'
2388
+
lightningcss: ^1.21.0
2389
+
sass: '*'
2390
+
sass-embedded: '*'
2391
+
stylus: '*'
2392
+
sugarss: '*'
2393
+
terser: ^5.4.0
2394
+
peerDependenciesMeta:
2395
+
'@types/node':
2396
+
optional: true
2397
+
less:
2398
+
optional: true
2399
+
lightningcss:
2400
+
optional: true
2401
+
sass:
2402
+
optional: true
2403
+
sass-embedded:
2404
+
optional: true
2405
+
stylus:
2406
+
optional: true
2407
+
sugarss:
2408
+
optional: true
2409
+
terser:
2410
+
optional: true
2411
+
2412
+
vitest@1.6.1:
2413
+
resolution: {integrity: sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==}
2414
+
engines: {node: ^18.0.0 || >=20.0.0}
2415
+
hasBin: true
2416
+
peerDependencies:
2417
+
'@edge-runtime/vm': '*'
2418
+
'@types/node': ^18.0.0 || >=20.0.0
2419
+
'@vitest/browser': 1.6.1
2420
+
'@vitest/ui': 1.6.1
2421
+
happy-dom: '*'
2422
+
jsdom: '*'
2423
+
peerDependenciesMeta:
2424
+
'@edge-runtime/vm':
2425
+
optional: true
2426
+
'@types/node':
2427
+
optional: true
2428
+
'@vitest/browser':
2429
+
optional: true
2430
+
'@vitest/ui':
2431
+
optional: true
2432
+
happy-dom:
2433
+
optional: true
2434
+
jsdom:
2435
+
optional: true
2436
+
2437
+
webidl-conversions@3.0.1:
2438
+
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
2439
+
2440
+
whatwg-url@5.0.0:
2441
+
resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
2442
+
2443
+
which-boxed-primitive@1.1.1:
2444
+
resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
2445
+
engines: {node: '>= 0.4'}
2446
+
2447
+
which-builtin-type@1.2.1:
2448
+
resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
2449
+
engines: {node: '>= 0.4'}
2450
+
2451
+
which-collection@1.0.2:
2452
+
resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
2453
+
engines: {node: '>= 0.4'}
2454
+
2455
+
which-pm-runs@1.1.0:
2456
+
resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==}
2457
+
engines: {node: '>=4'}
2458
+
2459
+
which-typed-array@1.1.18:
2460
+
resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==}
2461
+
engines: {node: '>= 0.4'}
2462
+
2463
+
which@1.3.1:
2464
+
resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
2465
+
hasBin: true
2466
+
2467
+
which@2.0.2:
2468
+
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
2469
+
engines: {node: '>= 8'}
2470
+
hasBin: true
2471
+
2472
+
why-is-node-running@2.3.0:
2473
+
resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
2474
+
engines: {node: '>=8'}
2475
+
hasBin: true
2476
+
2477
+
word-wrap@1.2.5:
2478
+
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
2479
+
engines: {node: '>=0.10.0'}
2480
+
2481
+
wrap-ansi@7.0.0:
2482
+
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
2483
+
engines: {node: '>=10'}
2484
+
2485
+
wrap-ansi@8.1.0:
2486
+
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
2487
+
engines: {node: '>=12'}
2488
+
2489
+
wrappy@1.0.2:
2490
+
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
2491
+
2492
+
yaml@1.10.2:
2493
+
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
2494
+
engines: {node: '>= 6'}
2495
+
2496
+
yaml@2.3.1:
2497
+
resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==}
2498
+
engines: {node: '>= 14'}
2499
+
2500
+
yocto-queue@0.1.0:
2501
+
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
2502
+
engines: {node: '>=10'}
2503
+
2504
+
yocto-queue@1.1.1:
2505
+
resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==}
2506
+
engines: {node: '>=12.20'}
2507
+
2508
+
zen-observable@0.10.0:
2509
+
resolution: {integrity: sha512-iI3lT0iojZhKwT5DaFy2Ce42n3yFcLdFyOh01G7H0flMY60P8MJuVFEoJoNwXlmAyQ45GrjL6AcZmmlv8A5rbw==}
2510
+
2511
+
snapshots:
2512
+
2513
+
'@babel/code-frame@7.26.2':
2514
+
dependencies:
2515
+
'@babel/helper-validator-identifier': 7.25.9
2516
+
js-tokens: 4.0.0
2517
+
picocolors: 1.1.1
2518
+
2519
+
'@babel/helper-validator-identifier@7.25.9': {}
2520
+
2521
+
'@babel/highlight@7.25.9':
2522
+
dependencies:
2523
+
'@babel/helper-validator-identifier': 7.25.9
2524
+
chalk: 2.4.2
2525
+
js-tokens: 4.0.0
2526
+
picocolors: 1.1.1
2527
+
2528
+
'@babel/runtime@7.26.9':
2529
+
dependencies:
2530
+
regenerator-runtime: 0.14.1
2531
+
2532
+
'@changesets/apply-release-plan@7.0.12':
2533
+
dependencies:
2534
+
'@changesets/config': 3.1.1
2535
+
'@changesets/get-version-range-type': 0.4.0
2536
+
'@changesets/git': 3.0.4
2537
+
'@changesets/should-skip-package': 0.1.2
2538
+
'@changesets/types': 6.1.0
2539
+
'@manypkg/get-packages': 1.1.3
2540
+
detect-indent: 6.1.0
2541
+
fs-extra: 7.0.1
2542
+
lodash.startcase: 4.4.0
2543
+
outdent: 0.5.0
2544
+
prettier: 2.8.8
2545
+
resolve-from: 5.0.0
2546
+
semver: 7.7.1
2547
+
2548
+
'@changesets/assemble-release-plan@6.0.9':
2549
+
dependencies:
2550
+
'@changesets/errors': 0.2.0
2551
+
'@changesets/get-dependents-graph': 2.1.3
2552
+
'@changesets/should-skip-package': 0.1.2
2553
+
'@changesets/types': 6.1.0
2554
+
'@manypkg/get-packages': 1.1.3
2555
+
semver: 7.7.1
2556
+
2557
+
'@changesets/changelog-git@0.2.1':
2558
+
dependencies:
2559
+
'@changesets/types': 6.1.0
2560
+
2561
+
'@changesets/cli@2.29.6(@types/node@22.13.9)':
2562
+
dependencies:
2563
+
'@changesets/apply-release-plan': 7.0.12
2564
+
'@changesets/assemble-release-plan': 6.0.9
2565
+
'@changesets/changelog-git': 0.2.1
2566
+
'@changesets/config': 3.1.1
2567
+
'@changesets/errors': 0.2.0
2568
+
'@changesets/get-dependents-graph': 2.1.3
2569
+
'@changesets/get-release-plan': 4.0.13
2570
+
'@changesets/git': 3.0.4
2571
+
'@changesets/logger': 0.1.1
2572
+
'@changesets/pre': 2.0.2
2573
+
'@changesets/read': 0.6.5
2574
+
'@changesets/should-skip-package': 0.1.2
2575
+
'@changesets/types': 6.1.0
2576
+
'@changesets/write': 0.4.0
2577
+
'@inquirer/external-editor': 1.0.1(@types/node@22.13.9)
2578
+
'@manypkg/get-packages': 1.1.3
2579
+
ansi-colors: 4.1.3
2580
+
ci-info: 3.9.0
2581
+
enquirer: 2.4.1
2582
+
fs-extra: 7.0.1
2583
+
mri: 1.2.0
2584
+
p-limit: 2.3.0
2585
+
package-manager-detector: 0.2.11
2586
+
picocolors: 1.1.1
2587
+
resolve-from: 5.0.0
2588
+
semver: 7.7.1
2589
+
spawndamnit: 3.0.1
2590
+
term-size: 2.2.1
2591
+
transitivePeerDependencies:
2592
+
- '@types/node'
2593
+
2594
+
'@changesets/config@3.1.1':
2595
+
dependencies:
2596
+
'@changesets/errors': 0.2.0
2597
+
'@changesets/get-dependents-graph': 2.1.3
2598
+
'@changesets/logger': 0.1.1
2599
+
'@changesets/types': 6.1.0
2600
+
'@manypkg/get-packages': 1.1.3
2601
+
fs-extra: 7.0.1
2602
+
micromatch: 4.0.8
2603
+
2604
+
'@changesets/errors@0.2.0':
2605
+
dependencies:
2606
+
extendable-error: 0.1.7
2607
+
2608
+
'@changesets/get-dependents-graph@2.1.3':
2609
+
dependencies:
2610
+
'@changesets/types': 6.1.0
2611
+
'@manypkg/get-packages': 1.1.3
2612
+
picocolors: 1.1.1
2613
+
semver: 7.7.1
2614
+
2615
+
'@changesets/get-github-info@0.6.0':
2616
+
dependencies:
2617
+
dataloader: 1.4.0
2618
+
node-fetch: 2.7.0
2619
+
transitivePeerDependencies:
2620
+
- encoding
2621
+
2622
+
'@changesets/get-release-plan@4.0.13':
2623
+
dependencies:
2624
+
'@changesets/assemble-release-plan': 6.0.9
2625
+
'@changesets/config': 3.1.1
2626
+
'@changesets/pre': 2.0.2
2627
+
'@changesets/read': 0.6.5
2628
+
'@changesets/types': 6.1.0
2629
+
'@manypkg/get-packages': 1.1.3
2630
+
2631
+
'@changesets/get-version-range-type@0.4.0': {}
2632
+
2633
+
'@changesets/git@3.0.4':
2634
+
dependencies:
2635
+
'@changesets/errors': 0.2.0
2636
+
'@manypkg/get-packages': 1.1.3
2637
+
is-subdir: 1.2.0
2638
+
micromatch: 4.0.8
2639
+
spawndamnit: 3.0.1
2640
+
2641
+
'@changesets/logger@0.1.1':
2642
+
dependencies:
2643
+
picocolors: 1.1.1
2644
+
2645
+
'@changesets/parse@0.4.1':
2646
+
dependencies:
2647
+
'@changesets/types': 6.1.0
2648
+
js-yaml: 3.14.1
2649
+
2650
+
'@changesets/pre@2.0.2':
2651
+
dependencies:
2652
+
'@changesets/errors': 0.2.0
2653
+
'@changesets/types': 6.1.0
2654
+
'@manypkg/get-packages': 1.1.3
2655
+
fs-extra: 7.0.1
2656
+
2657
+
'@changesets/read@0.6.5':
2658
+
dependencies:
2659
+
'@changesets/git': 3.0.4
2660
+
'@changesets/logger': 0.1.1
2661
+
'@changesets/parse': 0.4.1
2662
+
'@changesets/types': 6.1.0
2663
+
fs-extra: 7.0.1
2664
+
p-filter: 2.1.0
2665
+
picocolors: 1.1.1
2666
+
2667
+
'@changesets/should-skip-package@0.1.2':
2668
+
dependencies:
2669
+
'@changesets/types': 6.1.0
2670
+
'@manypkg/get-packages': 1.1.3
2671
+
2672
+
'@changesets/types@4.1.0': {}
2673
+
2674
+
'@changesets/types@6.1.0': {}
2675
+
2676
+
'@changesets/write@0.4.0':
2677
+
dependencies:
2678
+
'@changesets/types': 6.1.0
2679
+
fs-extra: 7.0.1
2680
+
human-id: 4.1.1
2681
+
prettier: 2.8.8
2682
+
2683
+
'@esbuild/aix-ppc64@0.21.5':
2684
+
optional: true
2685
+
2686
+
'@esbuild/android-arm64@0.21.5':
2687
+
optional: true
2688
+
2689
+
'@esbuild/android-arm@0.21.5':
2690
+
optional: true
2691
+
2692
+
'@esbuild/android-x64@0.21.5':
2693
+
optional: true
2694
+
2695
+
'@esbuild/darwin-arm64@0.21.5':
2696
+
optional: true
2697
+
2698
+
'@esbuild/darwin-x64@0.21.5':
2699
+
optional: true
2700
+
2701
+
'@esbuild/freebsd-arm64@0.21.5':
2702
+
optional: true
2703
+
2704
+
'@esbuild/freebsd-x64@0.21.5':
2705
+
optional: true
2706
+
2707
+
'@esbuild/linux-arm64@0.21.5':
2708
+
optional: true
2709
+
2710
+
'@esbuild/linux-arm@0.21.5':
2711
+
optional: true
2712
+
2713
+
'@esbuild/linux-ia32@0.21.5':
2714
+
optional: true
2715
+
2716
+
'@esbuild/linux-loong64@0.21.5':
2717
+
optional: true
2718
+
2719
+
'@esbuild/linux-mips64el@0.21.5':
2720
+
optional: true
2721
+
2722
+
'@esbuild/linux-ppc64@0.21.5':
2723
+
optional: true
2724
+
2725
+
'@esbuild/linux-riscv64@0.21.5':
2726
+
optional: true
2727
+
2728
+
'@esbuild/linux-s390x@0.21.5':
2729
+
optional: true
2730
+
2731
+
'@esbuild/linux-x64@0.21.5':
2732
+
optional: true
2733
+
2734
+
'@esbuild/netbsd-x64@0.21.5':
2735
+
optional: true
2736
+
2737
+
'@esbuild/openbsd-x64@0.21.5':
2738
+
optional: true
2739
+
2740
+
'@esbuild/sunos-x64@0.21.5':
2741
+
optional: true
2742
+
2743
+
'@esbuild/win32-arm64@0.21.5':
2744
+
optional: true
2745
+
2746
+
'@esbuild/win32-ia32@0.21.5':
2747
+
optional: true
2748
+
2749
+
'@esbuild/win32-x64@0.21.5':
2750
+
optional: true
2751
+
2752
+
'@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)':
2753
+
dependencies:
2754
+
eslint: 8.57.1
2755
+
eslint-visitor-keys: 3.4.3
2756
+
2757
+
'@eslint-community/regexpp@4.12.1': {}
2758
+
2759
+
'@eslint/eslintrc@2.1.4':
2760
+
dependencies:
2761
+
ajv: 6.12.6
2762
+
debug: 4.4.0
2763
+
espree: 9.6.1
2764
+
globals: 13.24.0
2765
+
ignore: 5.3.2
2766
+
import-fresh: 3.3.1
2767
+
js-yaml: 4.1.0
2768
+
minimatch: 3.1.2
2769
+
strip-json-comments: 3.1.1
2770
+
transitivePeerDependencies:
2771
+
- supports-color
2772
+
2773
+
'@eslint/js@8.57.1': {}
2774
+
2775
+
'@humanwhocodes/config-array@0.13.0':
2776
+
dependencies:
2777
+
'@humanwhocodes/object-schema': 2.0.3
2778
+
debug: 4.4.0
2779
+
minimatch: 3.1.2
2780
+
transitivePeerDependencies:
2781
+
- supports-color
2782
+
2783
+
'@humanwhocodes/module-importer@1.0.1': {}
2784
+
2785
+
'@humanwhocodes/object-schema@2.0.3': {}
2786
+
2787
+
'@inquirer/external-editor@1.0.1(@types/node@22.13.9)':
2788
+
dependencies:
2789
+
chardet: 2.1.0
2790
+
iconv-lite: 0.6.3
2791
+
optionalDependencies:
2792
+
'@types/node': 22.13.9
2793
+
2794
+
'@isaacs/cliui@8.0.2':
2795
+
dependencies:
2796
+
string-width: 5.1.2
2797
+
string-width-cjs: string-width@4.2.3
2798
+
strip-ansi: 7.1.0
2799
+
strip-ansi-cjs: strip-ansi@6.0.1
2800
+
wrap-ansi: 8.1.0
2801
+
wrap-ansi-cjs: wrap-ansi@7.0.0
2802
+
2803
+
'@jest/schemas@29.6.3':
2804
+
dependencies:
2805
+
'@sinclair/typebox': 0.27.8
2806
+
2807
+
'@jridgewell/gen-mapping@0.3.8':
2808
+
dependencies:
2809
+
'@jridgewell/set-array': 1.2.1
2810
+
'@jridgewell/sourcemap-codec': 1.5.0
2811
+
'@jridgewell/trace-mapping': 0.3.25
2812
+
2813
+
'@jridgewell/resolve-uri@3.1.2': {}
2814
+
2815
+
'@jridgewell/set-array@1.2.1': {}
2816
+
2817
+
'@jridgewell/source-map@0.3.6':
2818
+
dependencies:
2819
+
'@jridgewell/gen-mapping': 0.3.8
2820
+
'@jridgewell/trace-mapping': 0.3.25
2821
+
2822
+
'@jridgewell/sourcemap-codec@1.5.0': {}
2823
+
2824
+
'@jridgewell/trace-mapping@0.3.25':
2825
+
dependencies:
2826
+
'@jridgewell/resolve-uri': 3.1.2
2827
+
'@jridgewell/sourcemap-codec': 1.5.0
2828
+
2829
+
'@manypkg/find-root@1.1.0':
2830
+
dependencies:
2831
+
'@babel/runtime': 7.26.9
2832
+
'@types/node': 12.20.55
2833
+
find-up: 4.1.0
2834
+
fs-extra: 8.1.0
2835
+
2836
+
'@manypkg/get-packages@1.1.3':
2837
+
dependencies:
2838
+
'@babel/runtime': 7.26.9
2839
+
'@changesets/types': 4.1.0
2840
+
'@manypkg/find-root': 1.1.0
2841
+
fs-extra: 8.1.0
2842
+
globby: 11.1.0
2843
+
read-yaml-file: 1.1.0
2844
+
2845
+
'@microsoft/tsdoc-config@0.16.2':
2846
+
dependencies:
2847
+
'@microsoft/tsdoc': 0.14.2
2848
+
ajv: 6.12.6
2849
+
jju: 1.4.0
2850
+
resolve: 1.19.0
2851
+
2852
+
'@microsoft/tsdoc@0.14.2': {}
2853
+
2854
+
'@nodelib/fs.scandir@2.1.5':
2855
+
dependencies:
2856
+
'@nodelib/fs.stat': 2.0.5
2857
+
run-parallel: 1.2.0
2858
+
2859
+
'@nodelib/fs.stat@2.0.5': {}
2860
+
2861
+
'@nodelib/fs.walk@1.2.8':
2862
+
dependencies:
2863
+
'@nodelib/fs.scandir': 2.1.5
2864
+
fastq: 1.19.1
2865
+
2866
+
'@pkgjs/parseargs@0.11.0':
2867
+
optional: true
2868
+
2869
+
'@rollup/plugin-buble@1.0.3(rollup@3.29.5)':
2870
+
dependencies:
2871
+
'@rollup/pluginutils': 5.1.4(rollup@3.29.5)
2872
+
'@types/buble': 0.19.2
2873
+
buble: 0.20.0
2874
+
optionalDependencies:
2875
+
rollup: 3.29.5
2876
+
2877
+
'@rollup/plugin-commonjs@23.0.7(rollup@3.29.5)':
2878
+
dependencies:
2879
+
'@rollup/pluginutils': 5.1.4(rollup@3.29.5)
2880
+
commondir: 1.0.1
2881
+
estree-walker: 2.0.2
2882
+
glob: 8.1.0
2883
+
is-reference: 1.2.1
2884
+
magic-string: 0.27.0
2885
+
optionalDependencies:
2886
+
rollup: 3.29.5
2887
+
2888
+
'@rollup/plugin-node-resolve@15.3.1(rollup@3.29.5)':
2889
+
dependencies:
2890
+
'@rollup/pluginutils': 5.1.4(rollup@3.29.5)
2891
+
'@types/resolve': 1.20.2
2892
+
deepmerge: 4.3.1
2893
+
is-module: 1.0.0
2894
+
resolve: 1.22.10
2895
+
optionalDependencies:
2896
+
rollup: 3.29.5
2897
+
2898
+
'@rollup/plugin-sucrase@5.0.2(rollup@3.29.5)':
2899
+
dependencies:
2900
+
'@rollup/pluginutils': 5.1.4(rollup@3.29.5)
2901
+
sucrase: 3.35.0
2902
+
optionalDependencies:
2903
+
rollup: 3.29.5
2904
+
2905
+
'@rollup/plugin-terser@0.1.0(rollup@3.29.5)':
2906
+
dependencies:
2907
+
terser: 5.39.0
2908
+
optionalDependencies:
2909
+
rollup: 3.29.5
2910
+
2911
+
'@rollup/pluginutils@5.1.4(rollup@3.29.5)':
2912
+
dependencies:
2913
+
'@types/estree': 1.0.6
2914
+
estree-walker: 2.0.2
2915
+
picomatch: 4.0.2
2916
+
optionalDependencies:
2917
+
rollup: 3.29.5
2918
+
2919
+
'@rollup/rollup-android-arm-eabi@4.34.9':
2920
+
optional: true
2921
+
2922
+
'@rollup/rollup-android-arm64@4.34.9':
2923
+
optional: true
2924
+
2925
+
'@rollup/rollup-darwin-arm64@4.34.9':
2926
+
optional: true
2927
+
2928
+
'@rollup/rollup-darwin-x64@4.34.9':
2929
+
optional: true
2930
+
2931
+
'@rollup/rollup-freebsd-arm64@4.34.9':
2932
+
optional: true
2933
+
2934
+
'@rollup/rollup-freebsd-x64@4.34.9':
2935
+
optional: true
2936
+
2937
+
'@rollup/rollup-linux-arm-gnueabihf@4.34.9':
2938
+
optional: true
2939
+
2940
+
'@rollup/rollup-linux-arm-musleabihf@4.34.9':
2941
+
optional: true
2942
+
2943
+
'@rollup/rollup-linux-arm64-gnu@4.34.9':
2944
+
optional: true
2945
+
2946
+
'@rollup/rollup-linux-arm64-musl@4.34.9':
2947
+
optional: true
2948
+
2949
+
'@rollup/rollup-linux-loongarch64-gnu@4.34.9':
2950
+
optional: true
2951
+
2952
+
'@rollup/rollup-linux-powerpc64le-gnu@4.34.9':
2953
+
optional: true
2954
+
2955
+
'@rollup/rollup-linux-riscv64-gnu@4.34.9':
2956
+
optional: true
2957
+
2958
+
'@rollup/rollup-linux-s390x-gnu@4.34.9':
2959
+
optional: true
2960
+
2961
+
'@rollup/rollup-linux-x64-gnu@4.34.9':
2962
+
optional: true
2963
+
2964
+
'@rollup/rollup-linux-x64-musl@4.34.9':
2965
+
optional: true
2966
+
2967
+
'@rollup/rollup-win32-arm64-msvc@4.34.9':
2968
+
optional: true
2969
+
2970
+
'@rollup/rollup-win32-ia32-msvc@4.34.9':
2971
+
optional: true
2972
+
2973
+
'@rollup/rollup-win32-x64-msvc@4.34.9':
2974
+
optional: true
2975
+
2976
+
'@sinclair/typebox@0.27.8': {}
2977
+
2978
+
'@types/buble@0.19.2':
2979
+
dependencies:
2980
+
magic-string: 0.25.9
2981
+
2982
+
'@types/estree@1.0.6': {}
2983
+
2984
+
'@types/json-schema@7.0.15': {}
2985
+
2986
+
'@types/node@12.20.55': {}
2987
+
2988
+
'@types/node@22.13.9':
2989
+
dependencies:
2990
+
undici-types: 6.20.0
2991
+
optional: true
2992
+
2993
+
'@types/parse-json@4.0.2': {}
2994
+
2995
+
'@types/resolve@1.20.2': {}
2996
+
2997
+
'@types/semver@7.5.8': {}
2998
+
2999
+
'@types/zen-observable@0.8.7': {}
3000
+
3001
+
'@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)':
3002
+
dependencies:
3003
+
'@eslint-community/regexpp': 4.12.1
3004
+
'@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
3005
+
'@typescript-eslint/scope-manager': 5.62.0
3006
+
'@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
3007
+
'@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
3008
+
debug: 4.4.0
3009
+
eslint: 8.57.1
3010
+
graphemer: 1.4.0
3011
+
ignore: 5.3.2
3012
+
natural-compare-lite: 1.4.0
3013
+
semver: 7.7.1
3014
+
tsutils: 3.21.0(typescript@4.9.5)
3015
+
optionalDependencies:
3016
+
typescript: 4.9.5
3017
+
transitivePeerDependencies:
3018
+
- supports-color
3019
+
3020
+
'@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5)':
3021
+
dependencies:
3022
+
'@typescript-eslint/scope-manager': 5.62.0
3023
+
'@typescript-eslint/types': 5.62.0
3024
+
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
3025
+
debug: 4.4.0
3026
+
eslint: 8.57.1
3027
+
optionalDependencies:
3028
+
typescript: 4.9.5
3029
+
transitivePeerDependencies:
3030
+
- supports-color
3031
+
3032
+
'@typescript-eslint/scope-manager@5.62.0':
3033
+
dependencies:
3034
+
'@typescript-eslint/types': 5.62.0
3035
+
'@typescript-eslint/visitor-keys': 5.62.0
3036
+
3037
+
'@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@4.9.5)':
3038
+
dependencies:
3039
+
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
3040
+
'@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
3041
+
debug: 4.4.0
3042
+
eslint: 8.57.1
3043
+
tsutils: 3.21.0(typescript@4.9.5)
3044
+
optionalDependencies:
3045
+
typescript: 4.9.5
3046
+
transitivePeerDependencies:
3047
+
- supports-color
3048
+
3049
+
'@typescript-eslint/types@5.62.0': {}
3050
+
3051
+
'@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)':
3052
+
dependencies:
3053
+
'@typescript-eslint/types': 5.62.0
3054
+
'@typescript-eslint/visitor-keys': 5.62.0
3055
+
debug: 4.4.0
3056
+
globby: 11.1.0
3057
+
is-glob: 4.0.3
3058
+
semver: 7.7.1
3059
+
tsutils: 3.21.0(typescript@4.9.5)
3060
+
optionalDependencies:
3061
+
typescript: 4.9.5
3062
+
transitivePeerDependencies:
3063
+
- supports-color
3064
+
3065
+
'@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@4.9.5)':
3066
+
dependencies:
3067
+
'@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1)
3068
+
'@types/json-schema': 7.0.15
3069
+
'@types/semver': 7.5.8
3070
+
'@typescript-eslint/scope-manager': 5.62.0
3071
+
'@typescript-eslint/types': 5.62.0
3072
+
'@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
3073
+
eslint: 8.57.1
3074
+
eslint-scope: 5.1.1
3075
+
semver: 7.7.1
3076
+
transitivePeerDependencies:
3077
+
- supports-color
3078
+
- typescript
3079
+
3080
+
'@typescript-eslint/visitor-keys@5.62.0':
3081
+
dependencies:
3082
+
'@typescript-eslint/types': 5.62.0
3083
+
eslint-visitor-keys: 3.4.3
3084
+
3085
+
'@ungap/structured-clone@1.3.0': {}
3086
+
3087
+
'@vitest/expect@1.6.1':
3088
+
dependencies:
3089
+
'@vitest/spy': 1.6.1
3090
+
'@vitest/utils': 1.6.1
3091
+
chai: 4.5.0
3092
+
3093
+
'@vitest/runner@1.6.1':
3094
+
dependencies:
3095
+
'@vitest/utils': 1.6.1
3096
+
p-limit: 5.0.0
3097
+
pathe: 1.1.2
3098
+
3099
+
'@vitest/snapshot@1.6.1':
3100
+
dependencies:
3101
+
magic-string: 0.30.17
3102
+
pathe: 1.1.2
3103
+
pretty-format: 29.7.0
3104
+
3105
+
'@vitest/spy@1.6.1':
3106
+
dependencies:
3107
+
tinyspy: 2.2.1
3108
+
3109
+
'@vitest/utils@1.6.1':
3110
+
dependencies:
3111
+
diff-sequences: 29.6.3
3112
+
estree-walker: 3.0.3
3113
+
loupe: 2.3.7
3114
+
pretty-format: 29.7.0
3115
+
3116
+
acorn-dynamic-import@4.0.0(acorn@6.4.2):
3117
+
dependencies:
3118
+
acorn: 6.4.2
3119
+
3120
+
acorn-jsx@5.3.2(acorn@6.4.2):
3121
+
dependencies:
3122
+
acorn: 6.4.2
3123
+
3124
+
acorn-jsx@5.3.2(acorn@8.14.0):
3125
+
dependencies:
3126
+
acorn: 8.14.0
3127
+
3128
+
acorn-walk@8.3.4:
3129
+
dependencies:
3130
+
acorn: 8.14.0
3131
+
3132
+
acorn@6.4.2: {}
3133
+
3134
+
acorn@8.14.0: {}
3135
+
3136
+
ajv@6.12.6:
3137
+
dependencies:
3138
+
fast-deep-equal: 3.1.3
3139
+
fast-json-stable-stringify: 2.1.0
3140
+
json-schema-traverse: 0.4.1
3141
+
uri-js: 4.4.1
3142
+
3143
+
ansi-colors@4.1.3: {}
3144
+
3145
+
ansi-escapes@5.0.0:
3146
+
dependencies:
3147
+
type-fest: 1.4.0
3148
+
3149
+
ansi-regex@5.0.1: {}
3150
+
3151
+
ansi-regex@6.1.0: {}
3152
+
3153
+
ansi-styles@3.2.1:
3154
+
dependencies:
3155
+
color-convert: 1.9.3
3156
+
3157
+
ansi-styles@4.3.0:
3158
+
dependencies:
3159
+
color-convert: 2.0.1
3160
+
3161
+
ansi-styles@5.2.0: {}
3162
+
3163
+
ansi-styles@6.2.1: {}
3164
+
3165
+
any-promise@1.3.0: {}
3166
+
3167
+
argparse@1.0.10:
3168
+
dependencies:
3169
+
sprintf-js: 1.0.3
3170
+
3171
+
argparse@2.0.1: {}
3172
+
3173
+
array-buffer-byte-length@1.0.2:
3174
+
dependencies:
3175
+
call-bound: 1.0.4
3176
+
is-array-buffer: 3.0.5
3177
+
3178
+
array-union@2.1.0: {}
3179
+
3180
+
arraybuffer.prototype.slice@1.0.4:
3181
+
dependencies:
3182
+
array-buffer-byte-length: 1.0.2
3183
+
call-bind: 1.0.8
3184
+
define-properties: 1.2.1
3185
+
es-abstract: 1.23.9
3186
+
es-errors: 1.3.0
3187
+
get-intrinsic: 1.3.0
3188
+
is-array-buffer: 3.0.5
3189
+
3190
+
assertion-error@1.1.0: {}
3191
+
3192
+
async-function@1.0.0: {}
3193
+
3194
+
available-typed-arrays@1.0.7:
3195
+
dependencies:
3196
+
possible-typed-array-names: 1.1.0
3197
+
3198
+
balanced-match@1.0.2: {}
3199
+
3200
+
better-path-resolve@1.0.0:
3201
+
dependencies:
3202
+
is-windows: 1.0.2
3203
+
3204
+
brace-expansion@1.1.11:
3205
+
dependencies:
3206
+
balanced-match: 1.0.2
3207
+
concat-map: 0.0.1
3208
+
3209
+
brace-expansion@2.0.1:
3210
+
dependencies:
3211
+
balanced-match: 1.0.2
3212
+
3213
+
braces@3.0.3:
3214
+
dependencies:
3215
+
fill-range: 7.1.1
3216
+
3217
+
buble@0.20.0:
3218
+
dependencies:
3219
+
acorn: 6.4.2
3220
+
acorn-dynamic-import: 4.0.0(acorn@6.4.2)
3221
+
acorn-jsx: 5.3.2(acorn@6.4.2)
3222
+
chalk: 2.4.2
3223
+
magic-string: 0.25.9
3224
+
minimist: 1.2.8
3225
+
regexpu-core: 4.5.4
3226
+
3227
+
buffer-from@1.1.2: {}
3228
+
3229
+
cac@6.7.14: {}
3230
+
3231
+
call-bind-apply-helpers@1.0.2:
3232
+
dependencies:
3233
+
es-errors: 1.3.0
3234
+
function-bind: 1.1.2
3235
+
3236
+
call-bind@1.0.8:
3237
+
dependencies:
3238
+
call-bind-apply-helpers: 1.0.2
3239
+
es-define-property: 1.0.1
3240
+
get-intrinsic: 1.3.0
3241
+
set-function-length: 1.2.2
3242
+
3243
+
call-bound@1.0.4:
3244
+
dependencies:
3245
+
call-bind-apply-helpers: 1.0.2
3246
+
get-intrinsic: 1.3.0
3247
+
3248
+
callbag-from-iter@1.3.0:
3249
+
dependencies:
3250
+
callbag: 1.5.1
3251
+
3252
+
callbag-iterate@1.0.0: {}
3253
+
3254
+
callbag-take@1.5.0:
3255
+
dependencies:
3256
+
callbag: 1.5.1
3257
+
3258
+
callbag@1.5.1: {}
3259
+
3260
+
callsites@3.1.0: {}
3261
+
3262
+
chai@4.5.0:
3263
+
dependencies:
3264
+
assertion-error: 1.1.0
3265
+
check-error: 1.0.3
3266
+
deep-eql: 4.1.4
3267
+
get-func-name: 2.0.2
3268
+
loupe: 2.3.7
3269
+
pathval: 1.1.1
3270
+
type-detect: 4.1.0
3271
+
3272
+
chalk@2.4.2:
3273
+
dependencies:
3274
+
ansi-styles: 3.2.1
3275
+
escape-string-regexp: 1.0.5
3276
+
supports-color: 5.5.0
3277
+
3278
+
chalk@4.1.2:
3279
+
dependencies:
3280
+
ansi-styles: 4.3.0
3281
+
supports-color: 7.2.0
3282
+
3283
+
chalk@5.3.0: {}
3284
+
3285
+
chardet@2.1.0: {}
3286
+
3287
+
check-error@1.0.3:
3288
+
dependencies:
3289
+
get-func-name: 2.0.2
3290
+
3291
+
ci-info@2.0.0: {}
3292
+
3293
+
ci-info@3.9.0: {}
3294
+
3295
+
cjs-module-lexer@1.4.3: {}
3296
+
3297
+
cli-cursor@4.0.0:
3298
+
dependencies:
3299
+
restore-cursor: 4.0.0
3300
+
3301
+
cli-truncate@3.1.0:
3302
+
dependencies:
3303
+
slice-ansi: 5.0.0
3304
+
string-width: 5.1.2
3305
+
3306
+
color-convert@1.9.3:
3307
+
dependencies:
3308
+
color-name: 1.1.3
3309
+
3310
+
color-convert@2.0.1:
3311
+
dependencies:
3312
+
color-name: 1.1.4
3313
+
3314
+
color-name@1.1.3: {}
3315
+
3316
+
color-name@1.1.4: {}
3317
+
3318
+
colorette@2.0.20: {}
3319
+
3320
+
commander@11.0.0: {}
3321
+
3322
+
commander@2.20.3: {}
3323
+
3324
+
commander@4.1.1: {}
3325
+
3326
+
commander@6.2.1: {}
3327
+
3328
+
commondir@1.0.1: {}
3329
+
3330
+
compare-versions@3.6.0: {}
3331
+
3332
+
concat-map@0.0.1: {}
3333
+
3334
+
confbox@0.1.8: {}
3335
+
3336
+
cosmiconfig@7.1.0:
3337
+
dependencies:
3338
+
'@types/parse-json': 4.0.2
3339
+
import-fresh: 3.3.1
3340
+
parse-json: 5.2.0
3341
+
path-type: 4.0.0
3342
+
yaml: 1.10.2
3343
+
3344
+
cross-spawn@6.0.6:
3345
+
dependencies:
3346
+
nice-try: 1.0.5
3347
+
path-key: 2.0.1
3348
+
semver: 5.7.2
3349
+
shebang-command: 1.2.0
3350
+
which: 1.3.1
3351
+
3352
+
cross-spawn@7.0.6:
3353
+
dependencies:
3354
+
path-key: 3.1.1
3355
+
shebang-command: 2.0.0
3356
+
which: 2.0.2
3357
+
3358
+
data-view-buffer@1.0.2:
3359
+
dependencies:
3360
+
call-bound: 1.0.4
3361
+
es-errors: 1.3.0
3362
+
is-data-view: 1.0.2
3363
+
3364
+
data-view-byte-length@1.0.2:
3365
+
dependencies:
3366
+
call-bound: 1.0.4
3367
+
es-errors: 1.3.0
3368
+
is-data-view: 1.0.2
3369
+
3370
+
data-view-byte-offset@1.0.1:
3371
+
dependencies:
3372
+
call-bound: 1.0.4
3373
+
es-errors: 1.3.0
3374
+
is-data-view: 1.0.2
3375
+
3376
+
dataloader@1.4.0: {}
3377
+
3378
+
debug@4.3.4:
3379
+
dependencies:
3380
+
ms: 2.1.2
3381
+
3382
+
debug@4.4.0:
3383
+
dependencies:
3384
+
ms: 2.1.3
3385
+
3386
+
deep-eql@4.1.4:
3387
+
dependencies:
3388
+
type-detect: 4.1.0
3389
+
3390
+
deep-is@0.1.4: {}
3391
+
3392
+
deepmerge@4.3.1: {}
3393
+
3394
+
define-data-property@1.1.4:
3395
+
dependencies:
3396
+
es-define-property: 1.0.1
3397
+
es-errors: 1.3.0
3398
+
gopd: 1.2.0
3399
+
3400
+
define-properties@1.2.1:
3401
+
dependencies:
3402
+
define-data-property: 1.1.4
3403
+
has-property-descriptors: 1.0.2
3404
+
object-keys: 1.1.1
3405
+
3406
+
detect-indent@6.1.0: {}
3407
+
3408
+
diff-sequences@29.6.3: {}
3409
+
3410
+
dir-glob@3.0.1:
3411
+
dependencies:
3412
+
path-type: 4.0.0
3413
+
3414
+
doctrine@3.0.0:
3415
+
dependencies:
3416
+
esutils: 2.0.3
3417
+
3418
+
dotenv@16.4.7: {}
3419
+
3420
+
dunder-proto@1.0.1:
3421
+
dependencies:
3422
+
call-bind-apply-helpers: 1.0.2
3423
+
es-errors: 1.3.0
3424
+
gopd: 1.2.0
3425
+
3426
+
eastasianwidth@0.2.0: {}
3427
+
3428
+
emoji-regex@8.0.0: {}
3429
+
3430
+
emoji-regex@9.2.2: {}
3431
+
3432
+
enquirer@2.4.1:
3433
+
dependencies:
3434
+
ansi-colors: 4.1.3
3435
+
strip-ansi: 6.0.1
3436
+
3437
+
error-ex@1.3.2:
3438
+
dependencies:
3439
+
is-arrayish: 0.2.1
3440
+
3441
+
es-abstract@1.23.9:
3442
+
dependencies:
3443
+
array-buffer-byte-length: 1.0.2
3444
+
arraybuffer.prototype.slice: 1.0.4
3445
+
available-typed-arrays: 1.0.7
3446
+
call-bind: 1.0.8
3447
+
call-bound: 1.0.4
3448
+
data-view-buffer: 1.0.2
3449
+
data-view-byte-length: 1.0.2
3450
+
data-view-byte-offset: 1.0.1
3451
+
es-define-property: 1.0.1
3452
+
es-errors: 1.3.0
3453
+
es-object-atoms: 1.1.1
3454
+
es-set-tostringtag: 2.1.0
3455
+
es-to-primitive: 1.3.0
3456
+
function.prototype.name: 1.1.8
3457
+
get-intrinsic: 1.3.0
3458
+
get-proto: 1.0.1
3459
+
get-symbol-description: 1.1.0
3460
+
globalthis: 1.0.4
3461
+
gopd: 1.2.0
3462
+
has-property-descriptors: 1.0.2
3463
+
has-proto: 1.2.0
3464
+
has-symbols: 1.1.0
3465
+
hasown: 2.0.2
3466
+
internal-slot: 1.1.0
3467
+
is-array-buffer: 3.0.5
3468
+
is-callable: 1.2.7
3469
+
is-data-view: 1.0.2
3470
+
is-regex: 1.2.1
3471
+
is-shared-array-buffer: 1.0.4
3472
+
is-string: 1.1.1
3473
+
is-typed-array: 1.1.15
3474
+
is-weakref: 1.1.1
3475
+
math-intrinsics: 1.1.0
3476
+
object-inspect: 1.13.4
3477
+
object-keys: 1.1.1
3478
+
object.assign: 4.1.7
3479
+
own-keys: 1.0.1
3480
+
regexp.prototype.flags: 1.5.4
3481
+
safe-array-concat: 1.1.3
3482
+
safe-push-apply: 1.0.0
3483
+
safe-regex-test: 1.1.0
3484
+
set-proto: 1.0.0
3485
+
string.prototype.trim: 1.2.10
3486
+
string.prototype.trimend: 1.0.9
3487
+
string.prototype.trimstart: 1.0.8
3488
+
typed-array-buffer: 1.0.3
3489
+
typed-array-byte-length: 1.0.3
3490
+
typed-array-byte-offset: 1.0.4
3491
+
typed-array-length: 1.0.7
3492
+
unbox-primitive: 1.1.0
3493
+
which-typed-array: 1.1.18
3494
+
3495
+
es-define-property@1.0.1: {}
3496
+
3497
+
es-errors@1.3.0: {}
3498
+
3499
+
es-object-atoms@1.1.1:
3500
+
dependencies:
3501
+
es-errors: 1.3.0
3502
+
3503
+
es-set-tostringtag@2.1.0:
3504
+
dependencies:
3505
+
es-errors: 1.3.0
3506
+
get-intrinsic: 1.3.0
3507
+
has-tostringtag: 1.0.2
3508
+
hasown: 2.0.2
3509
+
3510
+
es-to-primitive@1.3.0:
3511
+
dependencies:
3512
+
is-callable: 1.2.7
3513
+
is-date-object: 1.1.0
3514
+
is-symbol: 1.1.1
3515
+
3516
+
esbuild@0.21.5:
3517
+
optionalDependencies:
3518
+
'@esbuild/aix-ppc64': 0.21.5
3519
+
'@esbuild/android-arm': 0.21.5
3520
+
'@esbuild/android-arm64': 0.21.5
3521
+
'@esbuild/android-x64': 0.21.5
3522
+
'@esbuild/darwin-arm64': 0.21.5
3523
+
'@esbuild/darwin-x64': 0.21.5
3524
+
'@esbuild/freebsd-arm64': 0.21.5
3525
+
'@esbuild/freebsd-x64': 0.21.5
3526
+
'@esbuild/linux-arm': 0.21.5
3527
+
'@esbuild/linux-arm64': 0.21.5
3528
+
'@esbuild/linux-ia32': 0.21.5
3529
+
'@esbuild/linux-loong64': 0.21.5
3530
+
'@esbuild/linux-mips64el': 0.21.5
3531
+
'@esbuild/linux-ppc64': 0.21.5
3532
+
'@esbuild/linux-riscv64': 0.21.5
3533
+
'@esbuild/linux-s390x': 0.21.5
3534
+
'@esbuild/linux-x64': 0.21.5
3535
+
'@esbuild/netbsd-x64': 0.21.5
3536
+
'@esbuild/openbsd-x64': 0.21.5
3537
+
'@esbuild/sunos-x64': 0.21.5
3538
+
'@esbuild/win32-arm64': 0.21.5
3539
+
'@esbuild/win32-ia32': 0.21.5
3540
+
'@esbuild/win32-x64': 0.21.5
3541
+
3542
+
escape-string-regexp@1.0.5: {}
3543
+
3544
+
escape-string-regexp@4.0.0: {}
3545
+
3546
+
eslint-config-prettier@8.10.0(eslint@8.57.1):
3547
+
dependencies:
3548
+
eslint: 8.57.1
3549
+
3550
+
eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.8):
3551
+
dependencies:
3552
+
eslint: 8.57.1
3553
+
prettier: 2.8.8
3554
+
prettier-linter-helpers: 1.0.0
3555
+
optionalDependencies:
3556
+
eslint-config-prettier: 8.10.0(eslint@8.57.1)
3557
+
3558
+
eslint-plugin-tsdoc@0.2.17:
3559
+
dependencies:
3560
+
'@microsoft/tsdoc': 0.14.2
3561
+
'@microsoft/tsdoc-config': 0.16.2
3562
+
3563
+
eslint-scope@5.1.1:
3564
+
dependencies:
3565
+
esrecurse: 4.3.0
3566
+
estraverse: 4.3.0
3567
+
3568
+
eslint-scope@7.2.2:
3569
+
dependencies:
3570
+
esrecurse: 4.3.0
3571
+
estraverse: 5.3.0
3572
+
3573
+
eslint-visitor-keys@3.4.3: {}
3574
+
3575
+
eslint@8.57.1:
3576
+
dependencies:
3577
+
'@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1)
3578
+
'@eslint-community/regexpp': 4.12.1
3579
+
'@eslint/eslintrc': 2.1.4
3580
+
'@eslint/js': 8.57.1
3581
+
'@humanwhocodes/config-array': 0.13.0
3582
+
'@humanwhocodes/module-importer': 1.0.1
3583
+
'@nodelib/fs.walk': 1.2.8
3584
+
'@ungap/structured-clone': 1.3.0
3585
+
ajv: 6.12.6
3586
+
chalk: 4.1.2
3587
+
cross-spawn: 7.0.6
3588
+
debug: 4.4.0
3589
+
doctrine: 3.0.0
3590
+
escape-string-regexp: 4.0.0
3591
+
eslint-scope: 7.2.2
3592
+
eslint-visitor-keys: 3.4.3
3593
+
espree: 9.6.1
3594
+
esquery: 1.6.0
3595
+
esutils: 2.0.3
3596
+
fast-deep-equal: 3.1.3
3597
+
file-entry-cache: 6.0.1
3598
+
find-up: 5.0.0
3599
+
glob-parent: 6.0.2
3600
+
globals: 13.24.0
3601
+
graphemer: 1.4.0
3602
+
ignore: 5.3.2
3603
+
imurmurhash: 0.1.4
3604
+
is-glob: 4.0.3
3605
+
is-path-inside: 3.0.3
3606
+
js-yaml: 4.1.0
3607
+
json-stable-stringify-without-jsonify: 1.0.1
3608
+
levn: 0.4.1
3609
+
lodash.merge: 4.6.2
3610
+
minimatch: 3.1.2
3611
+
natural-compare: 1.4.0
3612
+
optionator: 0.9.4
3613
+
strip-ansi: 6.0.1
3614
+
text-table: 0.2.0
3615
+
transitivePeerDependencies:
3616
+
- supports-color
3617
+
3618
+
espree@9.6.1:
3619
+
dependencies:
3620
+
acorn: 8.14.0
3621
+
acorn-jsx: 5.3.2(acorn@8.14.0)
3622
+
eslint-visitor-keys: 3.4.3
3623
+
3624
+
esprima@4.0.1: {}
3625
+
3626
+
esquery@1.6.0:
3627
+
dependencies:
3628
+
estraverse: 5.3.0
3629
+
3630
+
esrecurse@4.3.0:
3631
+
dependencies:
3632
+
estraverse: 5.3.0
3633
+
3634
+
estraverse@4.3.0: {}
3635
+
3636
+
estraverse@5.3.0: {}
3637
+
3638
+
estree-walker@2.0.2: {}
3639
+
3640
+
estree-walker@3.0.3:
3641
+
dependencies:
3642
+
'@types/estree': 1.0.6
3643
+
3644
+
esutils@2.0.3: {}
3645
+
3646
+
eventemitter3@5.0.1: {}
3647
+
3648
+
execa@7.2.0:
3649
+
dependencies:
3650
+
cross-spawn: 7.0.6
3651
+
get-stream: 6.0.1
3652
+
human-signals: 4.3.1
3653
+
is-stream: 3.0.0
3654
+
merge-stream: 2.0.0
3655
+
npm-run-path: 5.3.0
3656
+
onetime: 6.0.0
3657
+
signal-exit: 3.0.7
3658
+
strip-final-newline: 3.0.0
3659
+
3660
+
execa@8.0.1:
3661
+
dependencies:
3662
+
cross-spawn: 7.0.6
3663
+
get-stream: 8.0.1
3664
+
human-signals: 5.0.0
3665
+
is-stream: 3.0.0
3666
+
merge-stream: 2.0.0
3667
+
npm-run-path: 5.3.0
3668
+
onetime: 6.0.0
3669
+
signal-exit: 4.1.0
3670
+
strip-final-newline: 3.0.0
3671
+
3672
+
extendable-error@0.1.7: {}
3673
+
3674
+
fast-deep-equal@3.1.3: {}
3675
+
3676
+
fast-diff@1.3.0: {}
3677
+
3678
+
fast-glob@3.3.3:
3679
+
dependencies:
3680
+
'@nodelib/fs.stat': 2.0.5
3681
+
'@nodelib/fs.walk': 1.2.8
3682
+
glob-parent: 5.1.2
3683
+
merge2: 1.4.1
3684
+
micromatch: 4.0.8
3685
+
3686
+
fast-json-stable-stringify@2.1.0: {}
3687
+
3688
+
fast-levenshtein@2.0.6: {}
3689
+
3690
+
fastq@1.19.1:
3691
+
dependencies:
3692
+
reusify: 1.1.0
3693
+
3694
+
file-entry-cache@6.0.1:
3695
+
dependencies:
3696
+
flat-cache: 3.2.0
3697
+
3698
+
fill-range@7.1.1:
3699
+
dependencies:
3700
+
to-regex-range: 5.0.1
3701
+
3702
+
find-up@4.1.0:
3703
+
dependencies:
3704
+
locate-path: 5.0.0
3705
+
path-exists: 4.0.0
3706
+
3707
+
find-up@5.0.0:
3708
+
dependencies:
3709
+
locate-path: 6.0.0
3710
+
path-exists: 4.0.0
3711
+
3712
+
find-versions@4.0.0:
3713
+
dependencies:
3714
+
semver-regex: 3.1.4
3715
+
3716
+
flat-cache@3.2.0:
3717
+
dependencies:
3718
+
flatted: 3.3.3
3719
+
keyv: 4.5.4
3720
+
rimraf: 3.0.2
3721
+
3722
+
flatted@3.3.3: {}
3723
+
3724
+
flowgen@1.21.0:
3725
+
dependencies:
3726
+
'@babel/code-frame': 7.26.2
3727
+
'@babel/highlight': 7.25.9
3728
+
commander: 6.2.1
3729
+
lodash: 4.17.21
3730
+
prettier: 2.8.8
3731
+
shelljs: 0.8.5
3732
+
typescript: 4.4.4
3733
+
typescript-compiler: 1.4.1-2
3734
+
3735
+
for-each@0.3.5:
3736
+
dependencies:
3737
+
is-callable: 1.2.7
3738
+
3739
+
foreground-child@3.3.1:
3740
+
dependencies:
3741
+
cross-spawn: 7.0.6
3742
+
signal-exit: 4.1.0
3743
+
3744
+
fs-extra@7.0.1:
3745
+
dependencies:
3746
+
graceful-fs: 4.2.11
3747
+
jsonfile: 4.0.0
3748
+
universalify: 0.1.2
3749
+
3750
+
fs-extra@8.1.0:
3751
+
dependencies:
3752
+
graceful-fs: 4.2.11
3753
+
jsonfile: 4.0.0
3754
+
universalify: 0.1.2
3755
+
3756
+
fs.realpath@1.0.0: {}
3757
+
3758
+
fsevents@2.3.3:
3759
+
optional: true
3760
+
3761
+
function-bind@1.1.2: {}
3762
+
3763
+
function.prototype.name@1.1.8:
3764
+
dependencies:
3765
+
call-bind: 1.0.8
3766
+
call-bound: 1.0.4
3767
+
define-properties: 1.2.1
3768
+
functions-have-names: 1.2.3
3769
+
hasown: 2.0.2
3770
+
is-callable: 1.2.7
3771
+
3772
+
functions-have-names@1.2.3: {}
3773
+
3774
+
get-func-name@2.0.2: {}
3775
+
3776
+
get-intrinsic@1.3.0:
3777
+
dependencies:
3778
+
call-bind-apply-helpers: 1.0.2
3779
+
es-define-property: 1.0.1
3780
+
es-errors: 1.3.0
3781
+
es-object-atoms: 1.1.1
3782
+
function-bind: 1.1.2
3783
+
get-proto: 1.0.1
3784
+
gopd: 1.2.0
3785
+
has-symbols: 1.1.0
3786
+
hasown: 2.0.2
3787
+
math-intrinsics: 1.1.0
3788
+
3789
+
get-proto@1.0.1:
3790
+
dependencies:
3791
+
dunder-proto: 1.0.1
3792
+
es-object-atoms: 1.1.1
3793
+
3794
+
get-stream@6.0.1: {}
3795
+
3796
+
get-stream@8.0.1: {}
3797
+
3798
+
get-symbol-description@1.1.0:
3799
+
dependencies:
3800
+
call-bound: 1.0.4
3801
+
es-errors: 1.3.0
3802
+
get-intrinsic: 1.3.0
3803
+
3804
+
glob-parent@5.1.2:
3805
+
dependencies:
3806
+
is-glob: 4.0.3
3807
+
3808
+
glob-parent@6.0.2:
3809
+
dependencies:
3810
+
is-glob: 4.0.3
3811
+
3812
+
glob@10.4.5:
3813
+
dependencies:
3814
+
foreground-child: 3.3.1
3815
+
jackspeak: 3.4.3
3816
+
minimatch: 9.0.5
3817
+
minipass: 7.1.2
3818
+
package-json-from-dist: 1.0.1
3819
+
path-scurry: 1.11.1
3820
+
3821
+
glob@7.2.3:
3822
+
dependencies:
3823
+
fs.realpath: 1.0.0
3824
+
inflight: 1.0.6
3825
+
inherits: 2.0.4
3826
+
minimatch: 3.1.2
3827
+
once: 1.4.0
3828
+
path-is-absolute: 1.0.1
3829
+
3830
+
glob@8.1.0:
3831
+
dependencies:
3832
+
fs.realpath: 1.0.0
3833
+
inflight: 1.0.6
3834
+
inherits: 2.0.4
3835
+
minimatch: 5.1.6
3836
+
once: 1.4.0
3837
+
3838
+
globals@13.24.0:
3839
+
dependencies:
3840
+
type-fest: 0.20.2
3841
+
3842
+
globalthis@1.0.4:
3843
+
dependencies:
3844
+
define-properties: 1.2.1
3845
+
gopd: 1.2.0
3846
+
3847
+
globby@11.1.0:
3848
+
dependencies:
3849
+
array-union: 2.1.0
3850
+
dir-glob: 3.0.1
3851
+
fast-glob: 3.3.3
3852
+
ignore: 5.3.2
3853
+
merge2: 1.4.1
3854
+
slash: 3.0.0
3855
+
3856
+
gopd@1.2.0: {}
3857
+
3858
+
graceful-fs@4.2.11: {}
3859
+
3860
+
graphemer@1.4.0: {}
3861
+
3862
+
has-bigints@1.1.0: {}
3863
+
3864
+
has-flag@3.0.0: {}
3865
+
3866
+
has-flag@4.0.0: {}
3867
+
3868
+
has-property-descriptors@1.0.2:
3869
+
dependencies:
3870
+
es-define-property: 1.0.1
3871
+
3872
+
has-proto@1.2.0:
3873
+
dependencies:
3874
+
dunder-proto: 1.0.1
3875
+
3876
+
has-symbols@1.1.0: {}
3877
+
3878
+
has-tostringtag@1.0.2:
3879
+
dependencies:
3880
+
has-symbols: 1.1.0
3881
+
3882
+
hasown@2.0.2:
3883
+
dependencies:
3884
+
function-bind: 1.1.2
3885
+
3886
+
hosted-git-info@2.8.9: {}
3887
+
3888
+
human-id@4.1.1: {}
3889
+
3890
+
human-signals@4.3.1: {}
3891
+
3892
+
human-signals@5.0.0: {}
3893
+
3894
+
husky-v4@4.3.8:
3895
+
dependencies:
3896
+
chalk: 4.1.2
3897
+
ci-info: 2.0.0
3898
+
compare-versions: 3.6.0
3899
+
cosmiconfig: 7.1.0
3900
+
find-versions: 4.0.0
3901
+
opencollective-postinstall: 2.0.3
3902
+
pkg-dir: 5.0.0
3903
+
please-upgrade-node: 3.2.0
3904
+
slash: 3.0.0
3905
+
which-pm-runs: 1.1.0
3906
+
3907
+
iconv-lite@0.6.3:
3908
+
dependencies:
3909
+
safer-buffer: 2.1.2
3910
+
3911
+
ignore@5.3.2: {}
3912
+
3913
+
import-fresh@3.3.1:
3914
+
dependencies:
3915
+
parent-module: 1.0.1
3916
+
resolve-from: 4.0.0
3917
+
3918
+
imurmurhash@0.1.4: {}
3919
+
3920
+
inflight@1.0.6:
3921
+
dependencies:
3922
+
once: 1.4.0
3923
+
wrappy: 1.0.2
3924
+
3925
+
inherits@2.0.4: {}
3926
+
3927
+
internal-slot@1.1.0:
3928
+
dependencies:
3929
+
es-errors: 1.3.0
3930
+
hasown: 2.0.2
3931
+
side-channel: 1.1.0
3932
+
3933
+
interpret@1.4.0: {}
3934
+
3935
+
is-array-buffer@3.0.5:
3936
+
dependencies:
3937
+
call-bind: 1.0.8
3938
+
call-bound: 1.0.4
3939
+
get-intrinsic: 1.3.0
3940
+
3941
+
is-arrayish@0.2.1: {}
3942
+
3943
+
is-async-function@2.1.1:
3944
+
dependencies:
3945
+
async-function: 1.0.0
3946
+
call-bound: 1.0.4
3947
+
get-proto: 1.0.1
3948
+
has-tostringtag: 1.0.2
3949
+
safe-regex-test: 1.1.0
3950
+
3951
+
is-bigint@1.1.0:
3952
+
dependencies:
3953
+
has-bigints: 1.1.0
3954
+
3955
+
is-boolean-object@1.2.2:
3956
+
dependencies:
3957
+
call-bound: 1.0.4
3958
+
has-tostringtag: 1.0.2
3959
+
3960
+
is-callable@1.2.7: {}
3961
+
3962
+
is-core-module@2.16.1:
3963
+
dependencies:
3964
+
hasown: 2.0.2
3965
+
3966
+
is-data-view@1.0.2:
3967
+
dependencies:
3968
+
call-bound: 1.0.4
3969
+
get-intrinsic: 1.3.0
3970
+
is-typed-array: 1.1.15
3971
+
3972
+
is-date-object@1.1.0:
3973
+
dependencies:
3974
+
call-bound: 1.0.4
3975
+
has-tostringtag: 1.0.2
3976
+
3977
+
is-extglob@2.1.1: {}
3978
+
3979
+
is-finalizationregistry@1.1.1:
3980
+
dependencies:
3981
+
call-bound: 1.0.4
3982
+
3983
+
is-fullwidth-code-point@3.0.0: {}
3984
+
3985
+
is-fullwidth-code-point@4.0.0: {}
3986
+
3987
+
is-generator-function@1.1.0:
3988
+
dependencies:
3989
+
call-bound: 1.0.4
3990
+
get-proto: 1.0.1
3991
+
has-tostringtag: 1.0.2
3992
+
safe-regex-test: 1.1.0
3993
+
3994
+
is-glob@4.0.3:
3995
+
dependencies:
3996
+
is-extglob: 2.1.1
3997
+
3998
+
is-map@2.0.3: {}
3999
+
4000
+
is-module@1.0.0: {}
4001
+
4002
+
is-number-object@1.1.1:
4003
+
dependencies:
4004
+
call-bound: 1.0.4
4005
+
has-tostringtag: 1.0.2
4006
+
4007
+
is-number@7.0.0: {}
4008
+
4009
+
is-path-inside@3.0.3: {}
4010
+
4011
+
is-reference@1.2.1:
4012
+
dependencies:
4013
+
'@types/estree': 1.0.6
4014
+
4015
+
is-regex@1.2.1:
4016
+
dependencies:
4017
+
call-bound: 1.0.4
4018
+
gopd: 1.2.0
4019
+
has-tostringtag: 1.0.2
4020
+
hasown: 2.0.2
4021
+
4022
+
is-set@2.0.3: {}
4023
+
4024
+
is-shared-array-buffer@1.0.4:
4025
+
dependencies:
4026
+
call-bound: 1.0.4
4027
+
4028
+
is-stream@3.0.0: {}
4029
+
4030
+
is-string@1.1.1:
4031
+
dependencies:
4032
+
call-bound: 1.0.4
4033
+
has-tostringtag: 1.0.2
4034
+
4035
+
is-subdir@1.2.0:
4036
+
dependencies:
4037
+
better-path-resolve: 1.0.0
4038
+
4039
+
is-symbol@1.1.1:
4040
+
dependencies:
4041
+
call-bound: 1.0.4
4042
+
has-symbols: 1.1.0
4043
+
safe-regex-test: 1.1.0
4044
+
4045
+
is-typed-array@1.1.15:
4046
+
dependencies:
4047
+
which-typed-array: 1.1.18
4048
+
4049
+
is-weakmap@2.0.2: {}
4050
+
4051
+
is-weakref@1.1.1:
4052
+
dependencies:
4053
+
call-bound: 1.0.4
4054
+
4055
+
is-weakset@2.0.4:
4056
+
dependencies:
4057
+
call-bound: 1.0.4
4058
+
get-intrinsic: 1.3.0
4059
+
4060
+
is-windows@1.0.2: {}
4061
+
4062
+
isarray@2.0.5: {}
4063
+
4064
+
isexe@2.0.0: {}
4065
+
4066
+
jackspeak@3.4.3:
4067
+
dependencies:
4068
+
'@isaacs/cliui': 8.0.2
4069
+
optionalDependencies:
4070
+
'@pkgjs/parseargs': 0.11.0
4071
+
4072
+
jju@1.4.0: {}
4073
+
4074
+
js-tokens@4.0.0: {}
4075
+
4076
+
js-tokens@9.0.1: {}
4077
+
4078
+
js-yaml@3.14.1:
4079
+
dependencies:
4080
+
argparse: 1.0.10
4081
+
esprima: 4.0.1
4082
+
4083
+
js-yaml@4.1.0:
4084
+
dependencies:
4085
+
argparse: 2.0.1
4086
+
4087
+
jsesc@0.5.0: {}
4088
+
4089
+
json-buffer@3.0.1: {}
4090
+
4091
+
json-parse-better-errors@1.0.2: {}
4092
+
4093
+
json-parse-even-better-errors@2.3.1: {}
4094
+
4095
+
json-schema-traverse@0.4.1: {}
4096
+
4097
+
json-stable-stringify-without-jsonify@1.0.1: {}
4098
+
4099
+
jsonfile@4.0.0:
4100
+
optionalDependencies:
4101
+
graceful-fs: 4.2.11
4102
+
4103
+
keyv@4.5.4:
4104
+
dependencies:
4105
+
json-buffer: 3.0.1
4106
+
4107
+
levn@0.4.1:
4108
+
dependencies:
4109
+
prelude-ls: 1.2.1
4110
+
type-check: 0.4.0
4111
+
4112
+
lilconfig@2.1.0: {}
4113
+
4114
+
lines-and-columns@1.2.4: {}
4115
+
4116
+
lint-staged@13.3.0(enquirer@2.4.1):
4117
+
dependencies:
4118
+
chalk: 5.3.0
4119
+
commander: 11.0.0
4120
+
debug: 4.3.4
4121
+
execa: 7.2.0
4122
+
lilconfig: 2.1.0
4123
+
listr2: 6.6.1(enquirer@2.4.1)
4124
+
micromatch: 4.0.5
4125
+
pidtree: 0.6.0
4126
+
string-argv: 0.3.2
4127
+
yaml: 2.3.1
4128
+
transitivePeerDependencies:
4129
+
- enquirer
4130
+
- supports-color
4131
+
4132
+
listr2@6.6.1(enquirer@2.4.1):
4133
+
dependencies:
4134
+
cli-truncate: 3.1.0
4135
+
colorette: 2.0.20
4136
+
eventemitter3: 5.0.1
4137
+
log-update: 5.0.1
4138
+
rfdc: 1.4.1
4139
+
wrap-ansi: 8.1.0
4140
+
optionalDependencies:
4141
+
enquirer: 2.4.1
4142
+
4143
+
load-json-file@4.0.0:
4144
+
dependencies:
4145
+
graceful-fs: 4.2.11
4146
+
parse-json: 4.0.0
4147
+
pify: 3.0.0
4148
+
strip-bom: 3.0.0
4149
+
4150
+
local-pkg@0.5.1:
4151
+
dependencies:
4152
+
mlly: 1.7.4
4153
+
pkg-types: 1.3.1
4154
+
4155
+
locate-path@5.0.0:
4156
+
dependencies:
4157
+
p-locate: 4.1.0
4158
+
4159
+
locate-path@6.0.0:
4160
+
dependencies:
4161
+
p-locate: 5.0.0
4162
+
4163
+
lodash.merge@4.6.2: {}
4164
+
4165
+
lodash.startcase@4.4.0: {}
4166
+
4167
+
lodash@4.17.21: {}
4168
+
4169
+
log-update@5.0.1:
4170
+
dependencies:
4171
+
ansi-escapes: 5.0.0
4172
+
cli-cursor: 4.0.0
4173
+
slice-ansi: 5.0.0
4174
+
strip-ansi: 7.1.0
4175
+
wrap-ansi: 8.1.0
4176
+
4177
+
loupe@2.3.7:
4178
+
dependencies:
4179
+
get-func-name: 2.0.2
4180
+
4181
+
lru-cache@10.4.3: {}
4182
+
4183
+
magic-string@0.25.9:
4184
+
dependencies:
4185
+
sourcemap-codec: 1.4.8
4186
+
4187
+
magic-string@0.27.0:
4188
+
dependencies:
4189
+
'@jridgewell/sourcemap-codec': 1.5.0
4190
+
4191
+
magic-string@0.30.17:
4192
+
dependencies:
4193
+
'@jridgewell/sourcemap-codec': 1.5.0
4194
+
4195
+
math-intrinsics@1.1.0: {}
4196
+
4197
+
memorystream@0.3.1: {}
4198
+
4199
+
merge-stream@2.0.0: {}
4200
+
4201
+
merge2@1.4.1: {}
4202
+
4203
+
micromatch@4.0.5:
4204
+
dependencies:
4205
+
braces: 3.0.3
4206
+
picomatch: 2.3.1
4207
+
4208
+
micromatch@4.0.8:
4209
+
dependencies:
4210
+
braces: 3.0.3
4211
+
picomatch: 2.3.1
4212
+
4213
+
mimic-fn@2.1.0: {}
4214
+
4215
+
mimic-fn@4.0.0: {}
4216
+
4217
+
minimatch@3.1.2:
4218
+
dependencies:
4219
+
brace-expansion: 1.1.11
4220
+
4221
+
minimatch@5.1.6:
4222
+
dependencies:
4223
+
brace-expansion: 2.0.1
4224
+
4225
+
minimatch@9.0.5:
4226
+
dependencies:
4227
+
brace-expansion: 2.0.1
4228
+
4229
+
minimist@1.2.8: {}
4230
+
4231
+
minipass@7.1.2: {}
4232
+
4233
+
mlly@1.7.4:
4234
+
dependencies:
4235
+
acorn: 8.14.0
4236
+
pathe: 2.0.3
4237
+
pkg-types: 1.3.1
4238
+
ufo: 1.5.4
4239
+
4240
+
mri@1.2.0: {}
4241
+
4242
+
ms@2.1.2: {}
4243
+
4244
+
ms@2.1.3: {}
4245
+
4246
+
mz@2.7.0:
4247
+
dependencies:
4248
+
any-promise: 1.3.0
4249
+
object-assign: 4.1.1
4250
+
thenify-all: 1.6.0
4251
+
4252
+
nanoid@3.3.8: {}
4253
+
4254
+
natural-compare-lite@1.4.0: {}
4255
+
4256
+
natural-compare@1.4.0: {}
4257
+
4258
+
nice-try@1.0.5: {}
4259
+
4260
+
node-fetch@2.7.0:
4261
+
dependencies:
4262
+
whatwg-url: 5.0.0
4263
+
4264
+
normalize-package-data@2.5.0:
4265
+
dependencies:
4266
+
hosted-git-info: 2.8.9
4267
+
resolve: 1.22.10
4268
+
semver: 5.7.2
4269
+
validate-npm-package-license: 3.0.4
4270
+
4271
+
npm-run-all@4.1.5:
4272
+
dependencies:
4273
+
ansi-styles: 3.2.1
4274
+
chalk: 2.4.2
4275
+
cross-spawn: 6.0.6
4276
+
memorystream: 0.3.1
4277
+
minimatch: 3.1.2
4278
+
pidtree: 0.3.1
4279
+
read-pkg: 3.0.0
4280
+
shell-quote: 1.8.2
4281
+
string.prototype.padend: 3.1.6
4282
+
4283
+
npm-run-path@5.3.0:
4284
+
dependencies:
4285
+
path-key: 4.0.0
4286
+
4287
+
object-assign@4.1.1: {}
4288
+
4289
+
object-inspect@1.13.4: {}
4290
+
4291
+
object-keys@1.1.1: {}
4292
+
4293
+
object.assign@4.1.7:
4294
+
dependencies:
4295
+
call-bind: 1.0.8
4296
+
call-bound: 1.0.4
4297
+
define-properties: 1.2.1
4298
+
es-object-atoms: 1.1.1
4299
+
has-symbols: 1.1.0
4300
+
object-keys: 1.1.1
4301
+
4302
+
once@1.4.0:
4303
+
dependencies:
4304
+
wrappy: 1.0.2
4305
+
4306
+
onetime@5.1.2:
4307
+
dependencies:
4308
+
mimic-fn: 2.1.0
4309
+
4310
+
onetime@6.0.0:
4311
+
dependencies:
4312
+
mimic-fn: 4.0.0
4313
+
4314
+
opencollective-postinstall@2.0.3: {}
4315
+
4316
+
optionator@0.9.4:
4317
+
dependencies:
4318
+
deep-is: 0.1.4
4319
+
fast-levenshtein: 2.0.6
4320
+
levn: 0.4.1
4321
+
prelude-ls: 1.2.1
4322
+
type-check: 0.4.0
4323
+
word-wrap: 1.2.5
4324
+
4325
+
outdent@0.5.0: {}
4326
+
4327
+
own-keys@1.0.1:
4328
+
dependencies:
4329
+
get-intrinsic: 1.3.0
4330
+
object-keys: 1.1.1
4331
+
safe-push-apply: 1.0.0
4332
+
4333
+
p-filter@2.1.0:
4334
+
dependencies:
4335
+
p-map: 2.1.0
4336
+
4337
+
p-limit@2.3.0:
4338
+
dependencies:
4339
+
p-try: 2.2.0
4340
+
4341
+
p-limit@3.1.0:
4342
+
dependencies:
4343
+
yocto-queue: 0.1.0
4344
+
4345
+
p-limit@5.0.0:
4346
+
dependencies:
4347
+
yocto-queue: 1.1.1
4348
+
4349
+
p-locate@4.1.0:
4350
+
dependencies:
4351
+
p-limit: 2.3.0
4352
+
4353
+
p-locate@5.0.0:
4354
+
dependencies:
4355
+
p-limit: 3.1.0
4356
+
4357
+
p-map@2.1.0: {}
4358
+
4359
+
p-try@2.2.0: {}
4360
+
4361
+
package-json-from-dist@1.0.1: {}
4362
+
4363
+
package-manager-detector@0.2.11:
4364
+
dependencies:
4365
+
quansync: 0.2.8
4366
+
4367
+
parent-module@1.0.1:
4368
+
dependencies:
4369
+
callsites: 3.1.0
4370
+
4371
+
parse-json@4.0.0:
4372
+
dependencies:
4373
+
error-ex: 1.3.2
4374
+
json-parse-better-errors: 1.0.2
4375
+
4376
+
parse-json@5.2.0:
4377
+
dependencies:
4378
+
'@babel/code-frame': 7.26.2
4379
+
error-ex: 1.3.2
4380
+
json-parse-even-better-errors: 2.3.1
4381
+
lines-and-columns: 1.2.4
4382
+
4383
+
path-exists@4.0.0: {}
4384
+
4385
+
path-is-absolute@1.0.1: {}
4386
+
4387
+
path-key@2.0.1: {}
4388
+
4389
+
path-key@3.1.1: {}
4390
+
4391
+
path-key@4.0.0: {}
4392
+
4393
+
path-parse@1.0.7: {}
4394
+
4395
+
path-scurry@1.11.1:
4396
+
dependencies:
4397
+
lru-cache: 10.4.3
4398
+
minipass: 7.1.2
4399
+
4400
+
path-type@3.0.0:
4401
+
dependencies:
4402
+
pify: 3.0.0
4403
+
4404
+
path-type@4.0.0: {}
4405
+
4406
+
pathe@1.1.2: {}
4407
+
4408
+
pathe@2.0.3: {}
4409
+
4410
+
pathval@1.1.1: {}
4411
+
4412
+
picocolors@1.1.1: {}
4413
+
4414
+
picomatch@2.3.1: {}
4415
+
4416
+
picomatch@4.0.2: {}
4417
+
4418
+
pidtree@0.3.1: {}
4419
+
4420
+
pidtree@0.6.0: {}
4421
+
4422
+
pify@3.0.0: {}
4423
+
4424
+
pify@4.0.1: {}
4425
+
4426
+
pirates@4.0.6: {}
4427
+
4428
+
pkg-dir@5.0.0:
4429
+
dependencies:
4430
+
find-up: 5.0.0
4431
+
4432
+
pkg-types@1.3.1:
4433
+
dependencies:
4434
+
confbox: 0.1.8
4435
+
mlly: 1.7.4
4436
+
pathe: 2.0.3
4437
+
4438
+
please-upgrade-node@3.2.0:
4439
+
dependencies:
4440
+
semver-compare: 1.0.0
4441
+
4442
+
possible-typed-array-names@1.1.0: {}
4443
+
4444
+
postcss@8.5.3:
4445
+
dependencies:
4446
+
nanoid: 3.3.8
4447
+
picocolors: 1.1.1
4448
+
source-map-js: 1.2.1
4449
+
4450
+
prelude-ls@1.2.1: {}
4451
+
4452
+
prettier-linter-helpers@1.0.0:
4453
+
dependencies:
4454
+
fast-diff: 1.3.0
4455
+
4456
+
prettier@2.8.8: {}
4457
+
4458
+
pretty-format@29.7.0:
4459
+
dependencies:
4460
+
'@jest/schemas': 29.6.3
4461
+
ansi-styles: 5.2.0
4462
+
react-is: 18.3.1
4463
+
4464
+
punycode@2.3.1: {}
4465
+
4466
+
quansync@0.2.8: {}
4467
+
4468
+
queue-microtask@1.2.3: {}
4469
+
4470
+
react-is@18.3.1: {}
4471
+
4472
+
read-pkg@3.0.0:
4473
+
dependencies:
4474
+
load-json-file: 4.0.0
4475
+
normalize-package-data: 2.5.0
4476
+
path-type: 3.0.0
4477
+
4478
+
read-yaml-file@1.1.0:
4479
+
dependencies:
4480
+
graceful-fs: 4.2.11
4481
+
js-yaml: 3.14.1
4482
+
pify: 4.0.1
4483
+
strip-bom: 3.0.0
4484
+
4485
+
rechoir@0.6.2:
4486
+
dependencies:
4487
+
resolve: 1.22.10
4488
+
4489
+
reflect.getprototypeof@1.0.10:
4490
+
dependencies:
4491
+
call-bind: 1.0.8
4492
+
define-properties: 1.2.1
4493
+
es-abstract: 1.23.9
4494
+
es-errors: 1.3.0
4495
+
es-object-atoms: 1.1.1
4496
+
get-intrinsic: 1.3.0
4497
+
get-proto: 1.0.1
4498
+
which-builtin-type: 1.2.1
4499
+
4500
+
regenerate-unicode-properties@8.2.0:
4501
+
dependencies:
4502
+
regenerate: 1.4.2
4503
+
4504
+
regenerate@1.4.2: {}
4505
+
4506
+
regenerator-runtime@0.14.1: {}
4507
+
4508
+
regexp.prototype.flags@1.5.4:
4509
+
dependencies:
4510
+
call-bind: 1.0.8
4511
+
define-properties: 1.2.1
4512
+
es-errors: 1.3.0
4513
+
get-proto: 1.0.1
4514
+
gopd: 1.2.0
4515
+
set-function-name: 2.0.2
4516
+
4517
+
regexpu-core@4.5.4:
4518
+
dependencies:
4519
+
regenerate: 1.4.2
4520
+
regenerate-unicode-properties: 8.2.0
4521
+
regjsgen: 0.5.2
4522
+
regjsparser: 0.6.9
4523
+
unicode-match-property-ecmascript: 1.0.4
4524
+
unicode-match-property-value-ecmascript: 1.2.0
4525
+
4526
+
regjsgen@0.5.2: {}
4527
+
4528
+
regjsparser@0.6.9:
4529
+
dependencies:
4530
+
jsesc: 0.5.0
4531
+
4532
+
resolve-from@4.0.0: {}
4533
+
4534
+
resolve-from@5.0.0: {}
4535
+
4536
+
resolve@1.19.0:
4537
+
dependencies:
4538
+
is-core-module: 2.16.1
4539
+
path-parse: 1.0.7
4540
+
4541
+
resolve@1.22.10:
4542
+
dependencies:
4543
+
is-core-module: 2.16.1
4544
+
path-parse: 1.0.7
4545
+
supports-preserve-symlinks-flag: 1.0.0
4546
+
4547
+
restore-cursor@4.0.0:
4548
+
dependencies:
4549
+
onetime: 5.1.2
4550
+
signal-exit: 3.0.7
4551
+
4552
+
reusify@1.1.0: {}
4553
+
4554
+
rfdc@1.4.1: {}
4555
+
4556
+
rimraf@3.0.2:
4557
+
dependencies:
4558
+
glob: 7.2.3
4559
+
4560
+
rollup-plugin-cjs-check@1.0.3(rollup@3.29.5):
4561
+
dependencies:
4562
+
'@rollup/pluginutils': 5.1.4(rollup@3.29.5)
4563
+
cjs-module-lexer: 1.4.3
4564
+
rollup: 3.29.5
4565
+
4566
+
rollup-plugin-dts@5.3.1(rollup@3.29.5)(typescript@4.9.5):
4567
+
dependencies:
4568
+
magic-string: 0.30.17
4569
+
rollup: 3.29.5
4570
+
typescript: 4.9.5
4571
+
optionalDependencies:
4572
+
'@babel/code-frame': 7.26.2
4573
+
4574
+
rollup@3.29.5:
4575
+
optionalDependencies:
4576
+
fsevents: 2.3.3
4577
+
4578
+
rollup@4.34.9:
4579
+
dependencies:
4580
+
'@types/estree': 1.0.6
4581
+
optionalDependencies:
4582
+
'@rollup/rollup-android-arm-eabi': 4.34.9
4583
+
'@rollup/rollup-android-arm64': 4.34.9
4584
+
'@rollup/rollup-darwin-arm64': 4.34.9
4585
+
'@rollup/rollup-darwin-x64': 4.34.9
4586
+
'@rollup/rollup-freebsd-arm64': 4.34.9
4587
+
'@rollup/rollup-freebsd-x64': 4.34.9
4588
+
'@rollup/rollup-linux-arm-gnueabihf': 4.34.9
4589
+
'@rollup/rollup-linux-arm-musleabihf': 4.34.9
4590
+
'@rollup/rollup-linux-arm64-gnu': 4.34.9
4591
+
'@rollup/rollup-linux-arm64-musl': 4.34.9
4592
+
'@rollup/rollup-linux-loongarch64-gnu': 4.34.9
4593
+
'@rollup/rollup-linux-powerpc64le-gnu': 4.34.9
4594
+
'@rollup/rollup-linux-riscv64-gnu': 4.34.9
4595
+
'@rollup/rollup-linux-s390x-gnu': 4.34.9
4596
+
'@rollup/rollup-linux-x64-gnu': 4.34.9
4597
+
'@rollup/rollup-linux-x64-musl': 4.34.9
4598
+
'@rollup/rollup-win32-arm64-msvc': 4.34.9
4599
+
'@rollup/rollup-win32-ia32-msvc': 4.34.9
4600
+
'@rollup/rollup-win32-x64-msvc': 4.34.9
4601
+
fsevents: 2.3.3
4602
+
4603
+
run-parallel@1.2.0:
4604
+
dependencies:
4605
+
queue-microtask: 1.2.3
4606
+
4607
+
safe-array-concat@1.1.3:
4608
+
dependencies:
4609
+
call-bind: 1.0.8
4610
+
call-bound: 1.0.4
4611
+
get-intrinsic: 1.3.0
4612
+
has-symbols: 1.1.0
4613
+
isarray: 2.0.5
4614
+
4615
+
safe-push-apply@1.0.0:
4616
+
dependencies:
4617
+
es-errors: 1.3.0
4618
+
isarray: 2.0.5
4619
+
4620
+
safe-regex-test@1.1.0:
4621
+
dependencies:
4622
+
call-bound: 1.0.4
4623
+
es-errors: 1.3.0
4624
+
is-regex: 1.2.1
4625
+
4626
+
safer-buffer@2.1.2: {}
4627
+
4628
+
semver-compare@1.0.0: {}
4629
+
4630
+
semver-regex@3.1.4: {}
4631
+
4632
+
semver@5.7.2: {}
4633
+
4634
+
semver@7.7.1: {}
4635
+
4636
+
set-function-length@1.2.2:
4637
+
dependencies:
4638
+
define-data-property: 1.1.4
4639
+
es-errors: 1.3.0
4640
+
function-bind: 1.1.2
4641
+
get-intrinsic: 1.3.0
4642
+
gopd: 1.2.0
4643
+
has-property-descriptors: 1.0.2
4644
+
4645
+
set-function-name@2.0.2:
4646
+
dependencies:
4647
+
define-data-property: 1.1.4
4648
+
es-errors: 1.3.0
4649
+
functions-have-names: 1.2.3
4650
+
has-property-descriptors: 1.0.2
4651
+
4652
+
set-proto@1.0.0:
4653
+
dependencies:
4654
+
dunder-proto: 1.0.1
4655
+
es-errors: 1.3.0
4656
+
es-object-atoms: 1.1.1
4657
+
4658
+
shebang-command@1.2.0:
4659
+
dependencies:
4660
+
shebang-regex: 1.0.0
4661
+
4662
+
shebang-command@2.0.0:
4663
+
dependencies:
4664
+
shebang-regex: 3.0.0
4665
+
4666
+
shebang-regex@1.0.0: {}
4667
+
4668
+
shebang-regex@3.0.0: {}
4669
+
4670
+
shell-quote@1.8.2: {}
4671
+
4672
+
shelljs@0.8.5:
4673
+
dependencies:
4674
+
glob: 7.2.3
4675
+
interpret: 1.4.0
4676
+
rechoir: 0.6.2
4677
+
4678
+
side-channel-list@1.0.0:
4679
+
dependencies:
4680
+
es-errors: 1.3.0
4681
+
object-inspect: 1.13.4
4682
+
4683
+
side-channel-map@1.0.1:
4684
+
dependencies:
4685
+
call-bound: 1.0.4
4686
+
es-errors: 1.3.0
4687
+
get-intrinsic: 1.3.0
4688
+
object-inspect: 1.13.4
4689
+
4690
+
side-channel-weakmap@1.0.2:
4691
+
dependencies:
4692
+
call-bound: 1.0.4
4693
+
es-errors: 1.3.0
4694
+
get-intrinsic: 1.3.0
4695
+
object-inspect: 1.13.4
4696
+
side-channel-map: 1.0.1
4697
+
4698
+
side-channel@1.1.0:
4699
+
dependencies:
4700
+
es-errors: 1.3.0
4701
+
object-inspect: 1.13.4
4702
+
side-channel-list: 1.0.0
4703
+
side-channel-map: 1.0.1
4704
+
side-channel-weakmap: 1.0.2
4705
+
4706
+
siginfo@2.0.0: {}
4707
+
4708
+
signal-exit@3.0.7: {}
4709
+
4710
+
signal-exit@4.1.0: {}
4711
+
4712
+
slash@3.0.0: {}
4713
+
4714
+
slice-ansi@5.0.0:
4715
+
dependencies:
4716
+
ansi-styles: 6.2.1
4717
+
is-fullwidth-code-point: 4.0.0
4718
+
4719
+
source-map-js@1.2.1: {}
4720
+
4721
+
source-map-support@0.5.21:
4722
+
dependencies:
4723
+
buffer-from: 1.1.2
4724
+
source-map: 0.6.1
4725
+
4726
+
source-map@0.6.1: {}
4727
+
4728
+
sourcemap-codec@1.4.8: {}
4729
+
4730
+
spawndamnit@3.0.1:
4731
+
dependencies:
4732
+
cross-spawn: 7.0.6
4733
+
signal-exit: 4.1.0
4734
+
4735
+
spdx-correct@3.2.0:
4736
+
dependencies:
4737
+
spdx-expression-parse: 3.0.1
4738
+
spdx-license-ids: 3.0.21
4739
+
4740
+
spdx-exceptions@2.5.0: {}
4741
+
4742
+
spdx-expression-parse@3.0.1:
4743
+
dependencies:
4744
+
spdx-exceptions: 2.5.0
4745
+
spdx-license-ids: 3.0.21
4746
+
4747
+
spdx-license-ids@3.0.21: {}
4748
+
4749
+
sprintf-js@1.0.3: {}
4750
+
4751
+
stackback@0.0.2: {}
4752
+
4753
+
std-env@3.8.1: {}
4754
+
4755
+
string-argv@0.3.2: {}
4756
+
4757
+
string-width@4.2.3:
4758
+
dependencies:
4759
+
emoji-regex: 8.0.0
4760
+
is-fullwidth-code-point: 3.0.0
4761
+
strip-ansi: 6.0.1
4762
+
4763
+
string-width@5.1.2:
4764
+
dependencies:
4765
+
eastasianwidth: 0.2.0
4766
+
emoji-regex: 9.2.2
4767
+
strip-ansi: 7.1.0
4768
+
4769
+
string.prototype.padend@3.1.6:
4770
+
dependencies:
4771
+
call-bind: 1.0.8
4772
+
define-properties: 1.2.1
4773
+
es-abstract: 1.23.9
4774
+
es-object-atoms: 1.1.1
4775
+
4776
+
string.prototype.trim@1.2.10:
4777
+
dependencies:
4778
+
call-bind: 1.0.8
4779
+
call-bound: 1.0.4
4780
+
define-data-property: 1.1.4
4781
+
define-properties: 1.2.1
4782
+
es-abstract: 1.23.9
4783
+
es-object-atoms: 1.1.1
4784
+
has-property-descriptors: 1.0.2
4785
+
4786
+
string.prototype.trimend@1.0.9:
4787
+
dependencies:
4788
+
call-bind: 1.0.8
4789
+
call-bound: 1.0.4
4790
+
define-properties: 1.2.1
4791
+
es-object-atoms: 1.1.1
4792
+
4793
+
string.prototype.trimstart@1.0.8:
4794
+
dependencies:
4795
+
call-bind: 1.0.8
4796
+
define-properties: 1.2.1
4797
+
es-object-atoms: 1.1.1
4798
+
4799
+
strip-ansi@6.0.1:
4800
+
dependencies:
4801
+
ansi-regex: 5.0.1
4802
+
4803
+
strip-ansi@7.1.0:
4804
+
dependencies:
4805
+
ansi-regex: 6.1.0
4806
+
4807
+
strip-bom@3.0.0: {}
4808
+
4809
+
strip-final-newline@3.0.0: {}
4810
+
4811
+
strip-json-comments@3.1.1: {}
4812
+
4813
+
strip-literal@2.1.1:
4814
+
dependencies:
4815
+
js-tokens: 9.0.1
4816
+
4817
+
sucrase@3.35.0:
4818
+
dependencies:
4819
+
'@jridgewell/gen-mapping': 0.3.8
4820
+
commander: 4.1.1
4821
+
glob: 10.4.5
4822
+
lines-and-columns: 1.2.4
4823
+
mz: 2.7.0
4824
+
pirates: 4.0.6
4825
+
ts-interface-checker: 0.1.13
4826
+
4827
+
supports-color@5.5.0:
4828
+
dependencies:
4829
+
has-flag: 3.0.0
4830
+
4831
+
supports-color@7.2.0:
4832
+
dependencies:
4833
+
has-flag: 4.0.0
4834
+
4835
+
supports-preserve-symlinks-flag@1.0.0: {}
4836
+
4837
+
term-size@2.2.1: {}
4838
+
4839
+
terser@5.39.0:
4840
+
dependencies:
4841
+
'@jridgewell/source-map': 0.3.6
4842
+
acorn: 8.14.0
4843
+
commander: 2.20.3
4844
+
source-map-support: 0.5.21
4845
+
4846
+
text-table@0.2.0: {}
4847
+
4848
+
thenify-all@1.6.0:
4849
+
dependencies:
4850
+
thenify: 3.3.1
4851
+
4852
+
thenify@3.3.1:
4853
+
dependencies:
4854
+
any-promise: 1.3.0
4855
+
4856
+
tinybench@2.9.0: {}
4857
+
4858
+
tinypool@0.8.4: {}
4859
+
4860
+
tinyspy@2.2.1: {}
4861
+
4862
+
to-regex-range@5.0.1:
4863
+
dependencies:
4864
+
is-number: 7.0.0
4865
+
4866
+
tr46@0.0.3: {}
4867
+
4868
+
ts-interface-checker@0.1.13: {}
4869
+
4870
+
tslib@1.14.1: {}
4871
+
4872
+
tslib@2.8.1: {}
4873
+
4874
+
tsutils@3.21.0(typescript@4.9.5):
4875
+
dependencies:
4876
+
tslib: 1.14.1
4877
+
typescript: 4.9.5
4878
+
4879
+
type-check@0.4.0:
4880
+
dependencies:
4881
+
prelude-ls: 1.2.1
4882
+
4883
+
type-detect@4.1.0: {}
4884
+
4885
+
type-fest@0.20.2: {}
4886
+
4887
+
type-fest@1.4.0: {}
4888
+
4889
+
typed-array-buffer@1.0.3:
4890
+
dependencies:
4891
+
call-bound: 1.0.4
4892
+
es-errors: 1.3.0
4893
+
is-typed-array: 1.1.15
4894
+
4895
+
typed-array-byte-length@1.0.3:
4896
+
dependencies:
4897
+
call-bind: 1.0.8
4898
+
for-each: 0.3.5
4899
+
gopd: 1.2.0
4900
+
has-proto: 1.2.0
4901
+
is-typed-array: 1.1.15
4902
+
4903
+
typed-array-byte-offset@1.0.4:
4904
+
dependencies:
4905
+
available-typed-arrays: 1.0.7
4906
+
call-bind: 1.0.8
4907
+
for-each: 0.3.5
4908
+
gopd: 1.2.0
4909
+
has-proto: 1.2.0
4910
+
is-typed-array: 1.1.15
4911
+
reflect.getprototypeof: 1.0.10
4912
+
4913
+
typed-array-length@1.0.7:
4914
+
dependencies:
4915
+
call-bind: 1.0.8
4916
+
for-each: 0.3.5
4917
+
gopd: 1.2.0
4918
+
is-typed-array: 1.1.15
4919
+
possible-typed-array-names: 1.1.0
4920
+
reflect.getprototypeof: 1.0.10
4921
+
4922
+
typescript-compiler@1.4.1-2: {}
4923
+
4924
+
typescript@4.4.4: {}
4925
+
4926
+
typescript@4.9.5: {}
4927
+
4928
+
ufo@1.5.4: {}
4929
+
4930
+
unbox-primitive@1.1.0:
4931
+
dependencies:
4932
+
call-bound: 1.0.4
4933
+
has-bigints: 1.1.0
4934
+
has-symbols: 1.1.0
4935
+
which-boxed-primitive: 1.1.1
4936
+
4937
+
undici-types@6.20.0:
4938
+
optional: true
4939
+
4940
+
unicode-canonical-property-names-ecmascript@1.0.4: {}
4941
+
4942
+
unicode-match-property-ecmascript@1.0.4:
4943
+
dependencies:
4944
+
unicode-canonical-property-names-ecmascript: 1.0.4
4945
+
unicode-property-aliases-ecmascript: 1.1.0
4946
+
4947
+
unicode-match-property-value-ecmascript@1.2.0: {}
4948
+
4949
+
unicode-property-aliases-ecmascript@1.1.0: {}
4950
+
4951
+
universalify@0.1.2: {}
4952
+
4953
+
uri-js@4.4.1:
4954
+
dependencies:
4955
+
punycode: 2.3.1
4956
+
4957
+
validate-npm-package-license@3.0.4:
4958
+
dependencies:
4959
+
spdx-correct: 3.2.0
4960
+
spdx-expression-parse: 3.0.1
4961
+
4962
+
vite-node@1.6.1(@types/node@22.13.9)(terser@5.39.0):
4963
+
dependencies:
4964
+
cac: 6.7.14
4965
+
debug: 4.4.0
4966
+
pathe: 1.1.2
4967
+
picocolors: 1.1.1
4968
+
vite: 5.4.14(@types/node@22.13.9)(terser@5.39.0)
4969
+
transitivePeerDependencies:
4970
+
- '@types/node'
4971
+
- less
4972
+
- lightningcss
4973
+
- sass
4974
+
- sass-embedded
4975
+
- stylus
4976
+
- sugarss
4977
+
- supports-color
4978
+
- terser
4979
+
4980
+
vite@5.4.14(@types/node@22.13.9)(terser@5.39.0):
4981
+
dependencies:
4982
+
esbuild: 0.21.5
4983
+
postcss: 8.5.3
4984
+
rollup: 4.34.9
4985
+
optionalDependencies:
4986
+
'@types/node': 22.13.9
4987
+
fsevents: 2.3.3
4988
+
terser: 5.39.0
4989
+
4990
+
vitest@1.6.1(@types/node@22.13.9)(terser@5.39.0):
4991
+
dependencies:
4992
+
'@vitest/expect': 1.6.1
4993
+
'@vitest/runner': 1.6.1
4994
+
'@vitest/snapshot': 1.6.1
4995
+
'@vitest/spy': 1.6.1
4996
+
'@vitest/utils': 1.6.1
4997
+
acorn-walk: 8.3.4
4998
+
chai: 4.5.0
4999
+
debug: 4.4.0
5000
+
execa: 8.0.1
5001
+
local-pkg: 0.5.1
5002
+
magic-string: 0.30.17
5003
+
pathe: 1.1.2
5004
+
picocolors: 1.1.1
5005
+
std-env: 3.8.1
5006
+
strip-literal: 2.1.1
5007
+
tinybench: 2.9.0
5008
+
tinypool: 0.8.4
5009
+
vite: 5.4.14(@types/node@22.13.9)(terser@5.39.0)
5010
+
vite-node: 1.6.1(@types/node@22.13.9)(terser@5.39.0)
5011
+
why-is-node-running: 2.3.0
5012
+
optionalDependencies:
5013
+
'@types/node': 22.13.9
5014
+
transitivePeerDependencies:
5015
+
- less
5016
+
- lightningcss
5017
+
- sass
5018
+
- sass-embedded
5019
+
- stylus
5020
+
- sugarss
5021
+
- supports-color
5022
+
- terser
5023
+
5024
+
webidl-conversions@3.0.1: {}
5025
+
5026
+
whatwg-url@5.0.0:
5027
+
dependencies:
5028
+
tr46: 0.0.3
5029
+
webidl-conversions: 3.0.1
5030
+
5031
+
which-boxed-primitive@1.1.1:
5032
+
dependencies:
5033
+
is-bigint: 1.1.0
5034
+
is-boolean-object: 1.2.2
5035
+
is-number-object: 1.1.1
5036
+
is-string: 1.1.1
5037
+
is-symbol: 1.1.1
5038
+
5039
+
which-builtin-type@1.2.1:
5040
+
dependencies:
5041
+
call-bound: 1.0.4
5042
+
function.prototype.name: 1.1.8
5043
+
has-tostringtag: 1.0.2
5044
+
is-async-function: 2.1.1
5045
+
is-date-object: 1.1.0
5046
+
is-finalizationregistry: 1.1.1
5047
+
is-generator-function: 1.1.0
5048
+
is-regex: 1.2.1
5049
+
is-weakref: 1.1.1
5050
+
isarray: 2.0.5
5051
+
which-boxed-primitive: 1.1.1
5052
+
which-collection: 1.0.2
5053
+
which-typed-array: 1.1.18
5054
+
5055
+
which-collection@1.0.2:
5056
+
dependencies:
5057
+
is-map: 2.0.3
5058
+
is-set: 2.0.3
5059
+
is-weakmap: 2.0.2
5060
+
is-weakset: 2.0.4
5061
+
5062
+
which-pm-runs@1.1.0: {}
5063
+
5064
+
which-typed-array@1.1.18:
5065
+
dependencies:
5066
+
available-typed-arrays: 1.0.7
5067
+
call-bind: 1.0.8
5068
+
call-bound: 1.0.4
5069
+
for-each: 0.3.5
5070
+
gopd: 1.2.0
5071
+
has-tostringtag: 1.0.2
5072
+
5073
+
which@1.3.1:
5074
+
dependencies:
5075
+
isexe: 2.0.0
5076
+
5077
+
which@2.0.2:
5078
+
dependencies:
5079
+
isexe: 2.0.0
5080
+
5081
+
why-is-node-running@2.3.0:
5082
+
dependencies:
5083
+
siginfo: 2.0.0
5084
+
stackback: 0.0.2
5085
+
5086
+
word-wrap@1.2.5: {}
5087
+
5088
+
wrap-ansi@7.0.0:
5089
+
dependencies:
5090
+
ansi-styles: 4.3.0
5091
+
string-width: 4.2.3
5092
+
strip-ansi: 6.0.1
5093
+
5094
+
wrap-ansi@8.1.0:
5095
+
dependencies:
5096
+
ansi-styles: 6.2.1
5097
+
string-width: 5.1.2
5098
+
strip-ansi: 7.1.0
5099
+
5100
+
wrappy@1.0.2: {}
5101
+
5102
+
yaml@1.10.2: {}
5103
+
5104
+
yaml@2.3.1: {}
5105
+
5106
+
yocto-queue@0.1.0: {}
5107
+
5108
+
yocto-queue@1.1.1: {}
5109
+
5110
+
zen-observable@0.10.0: {}
+125
scripts/changelog.js
+125
scripts/changelog.js
···
1
+
const { config } = require('dotenv');
2
+
const { getInfo } = require('@changesets/get-github-info');
3
+
4
+
config();
5
+
6
+
const REPO = '0no-co/wonka';
7
+
const SEE_LINE = /^See:\s*(.*)/i;
8
+
const TRAILING_CHAR = /[.;:]$/g;
9
+
const listFormatter = new Intl.ListFormat('en-US');
10
+
11
+
const getSummaryLines = cs => {
12
+
let lines = cs.summary.trim().split(/\r?\n/);
13
+
if (!lines.some(line => /```/.test(line))) {
14
+
lines = lines.map(l => l.trim()).filter(Boolean);
15
+
const size = lines.length;
16
+
if (size > 0) {
17
+
lines[size - 1] = lines[size - 1].replace(TRAILING_CHAR, '');
18
+
}
19
+
}
20
+
return lines;
21
+
};
22
+
23
+
/** Creates a "(See X)" string from a template */
24
+
const templateSeeRef = links => {
25
+
const humanReadableLinks = links.filter(Boolean).map(link => {
26
+
if (typeof link === 'string') return link;
27
+
return link.pull || link.commit;
28
+
});
29
+
30
+
const size = humanReadableLinks.length;
31
+
if (size === 0) return '';
32
+
33
+
const str = listFormatter.format(humanReadableLinks);
34
+
return `(See ${str})`;
35
+
};
36
+
37
+
const changelogFunctions = {
38
+
getDependencyReleaseLine: async (changesets, dependenciesUpdated) => {
39
+
if (dependenciesUpdated.length === 0) return '';
40
+
41
+
const dependenciesLinks = await Promise.all(
42
+
changesets.map(async cs => {
43
+
if (!cs.commit) return undefined;
44
+
45
+
const lines = getSummaryLines(cs);
46
+
const prLine = lines.find(line => SEE_LINE.test(line));
47
+
if (prLine) {
48
+
const match = prLine.match(SEE_LINE);
49
+
return (match && match[1].trim()) || undefined;
50
+
}
51
+
52
+
const { links } = await getInfo({
53
+
repo: REPO,
54
+
commit: cs.commit,
55
+
});
56
+
57
+
return links;
58
+
})
59
+
);
60
+
61
+
let changesetLink = '- Updated dependencies';
62
+
63
+
const seeRef = templateSeeRef(dependenciesLinks);
64
+
if (seeRef) changesetLink += ` ${seeRef}`;
65
+
66
+
const detailsLinks = dependenciesUpdated.map(dep => {
67
+
return ` - ${dep.name}@${dep.newVersion}`;
68
+
});
69
+
70
+
return [changesetLink, ...detailsLinks].join('\n');
71
+
},
72
+
getReleaseLine: async (changeset, type) => {
73
+
let pull, commit, user;
74
+
75
+
const lines = getSummaryLines(changeset);
76
+
const prLineIndex = lines.findIndex(line => SEE_LINE.test(line));
77
+
if (prLineIndex > -1) {
78
+
const match = lines[prLineIndex].match(SEE_LINE);
79
+
pull = (match && match[1].trim()) || undefined;
80
+
lines.splice(prLineIndex, 1);
81
+
}
82
+
83
+
const [firstLine, ...futureLines] = lines;
84
+
85
+
if (changeset.commit && !pull) {
86
+
const { links } = await getInfo({
87
+
repo: REPO,
88
+
commit: changeset.commit,
89
+
});
90
+
91
+
pull = links.pull || undefined;
92
+
commit = links.commit || undefined;
93
+
user = links.user || undefined;
94
+
}
95
+
96
+
let annotation = '';
97
+
if (type === 'patch' && /^\s*fix/i.test(firstLine)) {
98
+
annotation = '⚠️ ';
99
+
}
100
+
101
+
let str = `- ${annotation}${firstLine}`;
102
+
if (futureLines.length > 0) {
103
+
str += `\n${futureLines.map(l => ` ${l}`).join('\n')}`;
104
+
}
105
+
106
+
const endsWithParagraph = /(?<=(?:[!;?.]|```) *)$/g;
107
+
if (user && !endsWithParagraph) {
108
+
str += `, by ${user}`;
109
+
} else {
110
+
str += `\nSubmitted by ${user}`;
111
+
}
112
+
113
+
if (pull || commit) {
114
+
const seeRef = templateSeeRef([pull || commit]);
115
+
if (seeRef) str += ` ${seeRef}`;
116
+
}
117
+
118
+
return str;
119
+
},
120
+
};
121
+
122
+
module.exports = {
123
+
...changelogFunctions,
124
+
default: changelogFunctions,
125
+
};
+54
scripts/eslint-preset.js
+54
scripts/eslint-preset.js
···
1
+
module.exports = {
2
+
parserOptions: {
3
+
ecmaVersion: 9,
4
+
sourceType: 'module',
5
+
ecmaFeatures: {
6
+
modules: true,
7
+
},
8
+
},
9
+
extends: ['prettier'],
10
+
plugins: ['prettier', 'tsdoc'],
11
+
ignorePatterns: ['node_modules/', 'dist/', 'coverage/', 'perf/'],
12
+
rules: {
13
+
'sort-keys': 'off',
14
+
'no-console': ['error', { allow: ['warn', 'error'] }],
15
+
'prefer-arrow/prefer-arrow-functions': 'off',
16
+
'prefer-rest-params': 'off',
17
+
18
+
'prettier/prettier': [
19
+
'error',
20
+
{
21
+
singleQuote: true,
22
+
arrowParens: 'avoid',
23
+
trailingComma: 'es5',
24
+
},
25
+
],
26
+
},
27
+
28
+
overrides: [
29
+
{
30
+
files: ['*.ts'],
31
+
parser: '@typescript-eslint/parser',
32
+
extends: ['plugin:@typescript-eslint/recommended', 'prettier'],
33
+
rules: {
34
+
'@typescript-eslint/explicit-module-boundary-types': 'off',
35
+
'@typescript-eslint/no-use-before-define': 'off',
36
+
'@typescript-eslint/ban-types': 'off',
37
+
'@typescript-eslint/ban-ts-comment': 'off',
38
+
'@typescript-eslint/member-ordering': 'off',
39
+
'@typescript-eslint/explicit-member-accessibility': 'off',
40
+
'@typescript-eslint/no-object-literal-type-assertion': 'off',
41
+
'@typescript-eslint/explicit-function-return-type': 'off',
42
+
'@typescript-eslint/interface-name-prefix': 'off',
43
+
'@typescript-eslint/no-non-null-assertion': 'off',
44
+
'@typescript-eslint/no-misused-new': 'off',
45
+
'@typescript-eslint/no-explicit-any': 'off',
46
+
'@typescript-eslint/array-type': 'off',
47
+
'@typescript-eslint/no-empty-function': 'off',
48
+
'@typescript-eslint/no-unused-vars': 'off',
49
+
'prefer-rest-params': 'off',
50
+
'tsdoc/syntax': 'error',
51
+
},
52
+
},
53
+
],
54
+
};
+32
scripts/flow-typings-plugin.mjs
+32
scripts/flow-typings-plugin.mjs
···
1
+
import { compiler, beautify } from 'flowgen';
2
+
3
+
function flowTypings() {
4
+
return {
5
+
name: 'flow-typings',
6
+
async renderChunk(code, chunk) {
7
+
if (chunk.fileName.endsWith('d.ts')) {
8
+
// NOTE: Computed property names will be omitted
9
+
code = code.replace(/\[Symbol\.\w+\][?()]*:(?:.*);\n?/g, '');
10
+
11
+
let flowdef = compiler.compileDefinitionString(code, {
12
+
jsdoc: false,
13
+
});
14
+
15
+
flowdef = beautify(flowdef);
16
+
flowdef = flowdef.replace(/import/g, 'import type');
17
+
flowdef = `// @flow\n\n${flowdef}`;
18
+
19
+
this.emitFile({
20
+
type: 'asset',
21
+
name: chunk.name,
22
+
fileName: `${chunk.name}.js.flow`,
23
+
source: flowdef,
24
+
});
25
+
}
26
+
27
+
return null;
28
+
},
29
+
};
30
+
}
31
+
32
+
export default flowTypings;
+18
scripts/prepare.js
+18
scripts/prepare.js
···
1
+
const path = require('path');
2
+
const fs = require('fs');
3
+
4
+
const hookSource = path.resolve(__dirname, '../node_modules/husky-v4/sh/husky.sh');
5
+
const hook = path.resolve(__dirname, '../.git/hooks/husky.sh');
6
+
const localHook = path.resolve(__dirname, '../.git/hooks/husky.local.sh');
7
+
const gitConfig = path.resolve(__dirname, '../.git/config');
8
+
9
+
let script = fs.readFileSync(hookSource, { encoding: 'utf-8' });
10
+
script = script.replace(`$(basename "$0")`, `$(basename "$0" .sh)`);
11
+
12
+
let config = fs.readFileSync(gitConfig, { encoding: 'utf-8' });
13
+
config = config.replace(/\s*hooksPath\s*=\s*\.husky\n?/g, '\n');
14
+
15
+
fs.writeFileSync(hook, script);
16
+
fs.writeFileSync(gitConfig, config);
17
+
18
+
fs.writeFileSync(localHook, 'packageManager=yarn\n' + 'cd "."\n');
+179
scripts/rollup.config.mjs
+179
scripts/rollup.config.mjs
···
1
+
import commonjs from '@rollup/plugin-commonjs';
2
+
import resolve from '@rollup/plugin-node-resolve';
3
+
import sucrase from '@rollup/plugin-sucrase';
4
+
import buble from '@rollup/plugin-buble';
5
+
import terser from '@rollup/plugin-terser';
6
+
import cjsCheck from 'rollup-plugin-cjs-check';
7
+
import dts from 'rollup-plugin-dts';
8
+
9
+
import flowTypings from './flow-typings-plugin.mjs';
10
+
import * as types from '../src/types.mjs';
11
+
12
+
const minify = terser({
13
+
warnings: true,
14
+
ecma: 2015,
15
+
keep_fnames: true,
16
+
ie8: false,
17
+
compress: {
18
+
pure_getters: true,
19
+
toplevel: true,
20
+
booleans_as_integers: false,
21
+
keep_fnames: true,
22
+
keep_fargs: true,
23
+
if_return: false,
24
+
ie8: false,
25
+
sequences: false,
26
+
loops: false,
27
+
conditionals: false,
28
+
join_vars: false,
29
+
},
30
+
mangle: {
31
+
module: true,
32
+
keep_fnames: true,
33
+
},
34
+
output: {
35
+
beautify: true,
36
+
braces: true,
37
+
indent_level: 2,
38
+
},
39
+
});
40
+
41
+
const commonPlugins = [
42
+
resolve({
43
+
extensions: ['.mjs', '.js', '.ts'],
44
+
mainFields: ['module', 'jsnext', 'main'],
45
+
preferBuiltins: false,
46
+
browser: true,
47
+
}),
48
+
49
+
commonjs({
50
+
ignoreGlobal: true,
51
+
include: /\/node_modules\//,
52
+
extensions: ['.mjs', '.js', '.ts'],
53
+
}),
54
+
55
+
sucrase({
56
+
exclude: ['node_modules/**'],
57
+
transforms: ['typescript']
58
+
}),
59
+
];
60
+
61
+
const jsPlugins = [
62
+
...commonPlugins,
63
+
cjsCheck(),
64
+
65
+
buble({
66
+
transforms: {
67
+
unicodeRegExp: false,
68
+
defaultParameter: false,
69
+
dangerousForOf: true,
70
+
dangerousTaggedTemplateString: true,
71
+
destructuring: false,
72
+
asyncAwait: false,
73
+
arrow: false,
74
+
classes: false,
75
+
computedProperty: false,
76
+
conciseMethodProperty: false,
77
+
templateString: false,
78
+
objectRestSpread: false,
79
+
parameterDestructuring: false,
80
+
spreadRest: false,
81
+
},
82
+
exclude: 'node_modules/**',
83
+
}),
84
+
];
85
+
86
+
const dtsPlugins = [
87
+
...commonPlugins,
88
+
dts(),
89
+
flowTypings(),
90
+
];
91
+
92
+
const output = format => {
93
+
const extension = format === 'esm' ? '.mjs' : '.js';
94
+
return {
95
+
chunkFileNames: '[hash]' + extension,
96
+
entryFileNames: '[name]' + extension,
97
+
dir: './dist',
98
+
exports: 'named',
99
+
sourcemap: true,
100
+
sourcemapExcludeSources: true,
101
+
indent: false,
102
+
freeze: false,
103
+
strict: false,
104
+
format,
105
+
// NOTE: All below settings are important for cjs-module-lexer to detect the export
106
+
// When this changes (and terser mangles the output) this will interfere with Node.js ESM intercompatibility
107
+
esModule: format !== 'esm',
108
+
externalLiveBindings: format !== 'esm',
109
+
generatedCode: {
110
+
preset: 'es5',
111
+
reservedNamesAsProps: false,
112
+
objectShorthand: false,
113
+
constBindings: false,
114
+
},
115
+
plugins: [
116
+
{
117
+
renderChunk(code, _chunk) {
118
+
const kinds = Object.keys(types);
119
+
const members = Object.values(types)
120
+
.reduce((acc, item) => [...acc, ...Object.keys(item)], [])
121
+
const enumRe = new RegExp(`(${kinds.join('|')})[.](${members.join('|')})`, 'g')
122
+
return code.replace(enumRe, (match, kind, member) => {
123
+
const value = (types[kind] && types[kind][member]);
124
+
return value != null ? '' + value : match;
125
+
});
126
+
},
127
+
},
128
+
129
+
minify,
130
+
]
131
+
};
132
+
};
133
+
134
+
const commonConfig = {
135
+
input: {
136
+
wonka: './src/index.ts',
137
+
},
138
+
onwarn: () => {},
139
+
external: () => false,
140
+
treeshake: {
141
+
unknownGlobalSideEffects: false,
142
+
tryCatchDeoptimization: false,
143
+
moduleSideEffects: false,
144
+
},
145
+
};
146
+
147
+
const jsConfig = {
148
+
...commonConfig,
149
+
plugins: jsPlugins,
150
+
output: [
151
+
output('esm'),
152
+
output('cjs'),
153
+
],
154
+
};
155
+
156
+
const dtsConfig = {
157
+
...commonConfig,
158
+
input: {
159
+
wonka: './src/index.ts',
160
+
},
161
+
onwarn: () => {},
162
+
external: () => false,
163
+
plugins: dtsPlugins,
164
+
treeshake: {
165
+
unknownGlobalSideEffects: false,
166
+
tryCatchDeoptimization: false,
167
+
moduleSideEffects: false,
168
+
},
169
+
output: {
170
+
dir: './dist',
171
+
entryFileNames: '[name].d.ts',
172
+
format: 'es'
173
+
},
174
+
};
175
+
176
+
export default [
177
+
jsConfig,
178
+
dtsConfig,
179
+
];
+76
src/__tests__/combine.test.ts
+76
src/__tests__/combine.test.ts
···
1
+
import { describe, it, expect, beforeEach, vi } from 'vitest';
2
+
3
+
import { Source } from '../types';
4
+
import { fromValue, makeSubject } from '../sources';
5
+
import { forEach } from '../sinks';
6
+
7
+
import {
8
+
passesPassivePull,
9
+
passesActivePush,
10
+
passesSinkClose,
11
+
passesSourceEnd,
12
+
passesSingleStart,
13
+
passesStrictEnd,
14
+
} from './compliance';
15
+
16
+
import { combine, zip } from '../combine';
17
+
18
+
beforeEach(() => {
19
+
vi.useFakeTimers();
20
+
});
21
+
22
+
describe('zip', () => {
23
+
const noop = (source: Source<any>) => zip([fromValue(0), source]);
24
+
25
+
passesPassivePull(noop, [0, 0]);
26
+
passesActivePush(noop, [0, 0]);
27
+
passesSinkClose(noop);
28
+
passesSourceEnd(noop, [0, 0]);
29
+
passesSingleStart(noop);
30
+
passesStrictEnd(noop);
31
+
32
+
it('emits the zipped values of two sources', () => {
33
+
const { source: sourceA, next: nextA } = makeSubject<number>();
34
+
const { source: sourceB, next: nextB } = makeSubject<number>();
35
+
const fn = vi.fn();
36
+
37
+
const combined = combine(sourceA, sourceB);
38
+
forEach(fn)(combined);
39
+
40
+
nextA(1);
41
+
expect(fn).not.toHaveBeenCalled();
42
+
nextB(2);
43
+
expect(fn).toHaveBeenCalledWith([1, 2]);
44
+
});
45
+
46
+
it('emits the zipped values of three sources', () => {
47
+
const { source: sourceA, next: nextA } = makeSubject<number>();
48
+
const { source: sourceB, next: nextB } = makeSubject<number>();
49
+
const { source: sourceC, next: nextC } = makeSubject<number>();
50
+
const fn = vi.fn();
51
+
52
+
const combined = zip([sourceA, sourceB, sourceC]);
53
+
forEach(fn)(combined);
54
+
55
+
nextA(1);
56
+
expect(fn).not.toHaveBeenCalled();
57
+
nextB(2);
58
+
expect(fn).not.toHaveBeenCalled();
59
+
nextC(3);
60
+
expect(fn).toHaveBeenCalledWith([1, 2, 3]);
61
+
});
62
+
63
+
it('emits the zipped values of a dictionary of two sources', () => {
64
+
const { source: sourceA, next: nextA } = makeSubject<number>();
65
+
const { source: sourceB, next: nextB } = makeSubject<number>();
66
+
const fn = vi.fn();
67
+
68
+
const combined = zip({ a: sourceA, b: sourceB });
69
+
forEach(fn)(combined);
70
+
71
+
nextA(1);
72
+
expect(fn).not.toHaveBeenCalled();
73
+
nextB(2);
74
+
expect(fn).toHaveBeenCalledWith({ a: 1, b: 2 });
75
+
});
76
+
});
+406
src/__tests__/compliance.ts
+406
src/__tests__/compliance.ts
···
1
+
import { it, expect, vi } from 'vitest';
2
+
3
+
import { Source, Sink, Operator, Signal, SignalKind, TalkbackKind, TalkbackFn } from '../types';
4
+
import { push, start } from '../helpers';
5
+
6
+
/* This tests a noop operator for passive Pull talkback signals.
7
+
A Pull will be sent from the sink upwards and should pass through
8
+
the operator until the source receives it, which then pushes a
9
+
value down. */
10
+
export const passesPassivePull = (operator: Operator<any, any>, output: any = 0) => {
11
+
it('responds to Pull talkback signals (spec)', () => {
12
+
let talkback: TalkbackFn | null = null;
13
+
let pushes = 0;
14
+
const values: any[] = [];
15
+
16
+
const source: Source<any> = sink => {
17
+
sink(
18
+
start(signal => {
19
+
if (!pushes && signal === TalkbackKind.Pull) {
20
+
pushes++;
21
+
sink(push(0));
22
+
}
23
+
})
24
+
);
25
+
};
26
+
27
+
const sink: Sink<any> = signal => {
28
+
expect(signal).not.toBe(SignalKind.End);
29
+
if (signal === SignalKind.End) {
30
+
/*noop*/
31
+
} else if (signal.tag === SignalKind.Push) {
32
+
values.push(signal[0]);
33
+
} else {
34
+
talkback = signal[0];
35
+
}
36
+
};
37
+
38
+
operator(source)(sink);
39
+
// The Start signal should always come in immediately
40
+
expect(talkback).not.toBe(null);
41
+
// No Push signals should be issued initially
42
+
expect(values).toEqual([]);
43
+
44
+
// When pulling a value we expect an immediate response
45
+
talkback!(TalkbackKind.Pull);
46
+
vi.runAllTimers();
47
+
expect(values).toEqual([output]);
48
+
});
49
+
};
50
+
51
+
/* This tests a noop operator for regular, active Push signals.
52
+
A Push will be sent downwards from the source, through the
53
+
operator to the sink. Pull events should be let through from
54
+
the sink after every Push event. */
55
+
export const passesActivePush = (operator: Operator<any, any>, result: any = 0) => {
56
+
it('responds to eager Push signals (spec)', () => {
57
+
const values: any[] = [];
58
+
let talkback: TalkbackFn | null = null;
59
+
let sink: Sink<any> | null = null;
60
+
let pulls = 0;
61
+
62
+
const source: Source<any> = _sink => {
63
+
(sink = _sink)(
64
+
start(signal => {
65
+
if (signal === TalkbackKind.Pull) pulls++;
66
+
})
67
+
);
68
+
};
69
+
70
+
operator(source)(signal => {
71
+
expect(signal).not.toBe(SignalKind.End);
72
+
if (signal === SignalKind.End) {
73
+
/*noop*/
74
+
} else if (signal.tag === SignalKind.Start) {
75
+
talkback = signal[0];
76
+
} else if (signal.tag === SignalKind.Push) {
77
+
values.push(signal[0]);
78
+
talkback!(TalkbackKind.Pull);
79
+
}
80
+
});
81
+
82
+
// No Pull signals should be issued initially
83
+
expect(pulls).toBe(0);
84
+
85
+
// When pushing a value we expect an immediate response
86
+
sink!(push(0));
87
+
vi.runAllTimers();
88
+
expect(values).toEqual([result]);
89
+
// Subsequently the Pull signal should have travelled upwards
90
+
expect(pulls).toBe(1);
91
+
});
92
+
};
93
+
94
+
/* This tests a noop operator for Close talkback signals from the sink.
95
+
A Close signal will be sent, which should be forwarded to the source,
96
+
which then ends the communication without sending an End signal. */
97
+
export const passesSinkClose = (operator: Operator<any, any>) => {
98
+
it('responds to Close signals from sink (spec)', () => {
99
+
let talkback: TalkbackFn | null = null;
100
+
let closing = 0;
101
+
102
+
const source: Source<any> = sink => {
103
+
sink(
104
+
start(signal => {
105
+
if (signal === TalkbackKind.Pull && !closing) {
106
+
sink(push(0));
107
+
} else if (signal === TalkbackKind.Close) {
108
+
closing++;
109
+
}
110
+
})
111
+
);
112
+
};
113
+
114
+
const sink: Sink<any> = signal => {
115
+
expect(signal).not.toBe(SignalKind.End);
116
+
if (signal === SignalKind.End) {
117
+
/*noop*/
118
+
} else if (signal.tag === SignalKind.Push) {
119
+
talkback!(TalkbackKind.Close);
120
+
} else {
121
+
talkback = signal[0];
122
+
}
123
+
};
124
+
125
+
operator(source)(sink);
126
+
127
+
// When pushing a value we expect an immediate close signal
128
+
talkback!(TalkbackKind.Pull);
129
+
vi.runAllTimers();
130
+
expect(closing).toBe(1);
131
+
});
132
+
};
133
+
134
+
/* This tests a noop operator for End signals from the source.
135
+
A Push and End signal will be sent after the first Pull talkback
136
+
signal from the sink, which shouldn't lead to any extra Close or Pull
137
+
talkback signals. */
138
+
export const passesSourceEnd = (operator: Operator<any, any>, result: any = 0) => {
139
+
it('passes on immediate Push then End signals from source (spec)', () => {
140
+
const signals: Signal<any>[] = [];
141
+
let talkback: TalkbackFn | null = null;
142
+
let pulls = 0;
143
+
let ending = 0;
144
+
145
+
const source: Source<any> = sink => {
146
+
sink(
147
+
start(signal => {
148
+
expect(signal).not.toBe(TalkbackKind.Close);
149
+
if (signal === TalkbackKind.Pull) {
150
+
pulls++;
151
+
if (pulls === 1) {
152
+
sink(push(0));
153
+
sink(SignalKind.End);
154
+
}
155
+
}
156
+
})
157
+
);
158
+
};
159
+
160
+
const sink: Sink<any> = signal => {
161
+
if (signal === SignalKind.End) {
162
+
signals.push(signal);
163
+
ending++;
164
+
} else if (signal.tag === SignalKind.Push) {
165
+
signals.push(signal);
166
+
} else {
167
+
talkback = signal[0];
168
+
}
169
+
};
170
+
171
+
operator(source)(sink);
172
+
173
+
// When pushing a value we expect an immediate Push then End signal
174
+
talkback!(TalkbackKind.Pull);
175
+
vi.runAllTimers();
176
+
expect(ending).toBe(1);
177
+
expect(signals).toEqual([push(result), SignalKind.End]);
178
+
// Also no additional pull event should be created by the operator
179
+
expect(pulls).toBe(1);
180
+
});
181
+
};
182
+
183
+
/* This tests a noop operator for End signals from the source
184
+
after the first pull in response to another.
185
+
This is similar to passesSourceEnd but more well behaved since
186
+
mergeMap/switchMap/concatMap are eager operators. */
187
+
export const passesSourcePushThenEnd = (operator: Operator<any, any>, result: any = 0) => {
188
+
it('passes on End signals from source (spec)', () => {
189
+
const signals: Signal<any>[] = [];
190
+
let talkback: TalkbackFn | null = null;
191
+
let pulls = 0;
192
+
let ending = 0;
193
+
194
+
const source: Source<any> = sink => {
195
+
sink(
196
+
start(signal => {
197
+
expect(signal).not.toBe(TalkbackKind.Close);
198
+
if (signal === TalkbackKind.Pull) {
199
+
pulls++;
200
+
if (pulls <= 2) {
201
+
sink(push(0));
202
+
} else {
203
+
sink(SignalKind.End);
204
+
}
205
+
}
206
+
})
207
+
);
208
+
};
209
+
210
+
const sink: Sink<any> = signal => {
211
+
if (signal === SignalKind.End) {
212
+
signals.push(signal);
213
+
ending++;
214
+
} else if (signal.tag === SignalKind.Push) {
215
+
signals.push(signal);
216
+
talkback!(TalkbackKind.Pull);
217
+
} else {
218
+
talkback = signal[0];
219
+
}
220
+
};
221
+
222
+
operator(source)(sink);
223
+
224
+
// When pushing a value we expect an immediate Push then End signal
225
+
talkback!(TalkbackKind.Pull);
226
+
vi.runAllTimers();
227
+
expect(ending).toBe(1);
228
+
expect(pulls).toBe(3);
229
+
expect(signals).toEqual([push(result), push(result), SignalKind.End]);
230
+
});
231
+
};
232
+
233
+
/* This tests a noop operator for Start signals from the source.
234
+
When the operator's sink is started by the source it'll receive
235
+
a Start event. As a response it should never send more than one
236
+
Start signals to the sink. */
237
+
export const passesSingleStart = (operator: Operator<any, any>) => {
238
+
it('sends a single Start event to the incoming sink (spec)', () => {
239
+
let starts = 0;
240
+
241
+
const source: Source<any> = sink => {
242
+
sink(start(() => {}));
243
+
};
244
+
245
+
const sink: Sink<any> = signal => {
246
+
if (signal !== SignalKind.End && signal.tag === SignalKind.Start) {
247
+
starts++;
248
+
}
249
+
};
250
+
251
+
// When starting the operator we expect a single start event on the sink
252
+
operator(source)(sink);
253
+
expect(starts).toBe(1);
254
+
});
255
+
};
256
+
257
+
/* This tests a noop operator for silence after End signals from the source.
258
+
When the operator receives the End signal it shouldn't forward any other
259
+
signals to the sink anymore.
260
+
This isn't a strict requirement, but some operators should ensure that
261
+
all sources are well behaved. This is particularly true for operators
262
+
that either Close sources themselves or may operate on multiple sources. */
263
+
export const passesStrictEnd = (operator: Operator<any, any>) => {
264
+
it('stops all signals after End has been received (spec: strict end)', () => {
265
+
let pulls = 0;
266
+
const signals: Signal<any>[] = [];
267
+
268
+
const source: Source<any> = sink => {
269
+
sink(
270
+
start(signal => {
271
+
if (signal === TalkbackKind.Pull) {
272
+
pulls++;
273
+
sink(SignalKind.End);
274
+
sink(push(123));
275
+
}
276
+
})
277
+
);
278
+
};
279
+
280
+
const sink: Sink<any> = signal => {
281
+
if (signal === SignalKind.End) {
282
+
signals.push(signal);
283
+
} else if (signal.tag === SignalKind.Push) {
284
+
signals.push(signal);
285
+
} else {
286
+
signal[0](TalkbackKind.Pull);
287
+
}
288
+
};
289
+
290
+
operator(source)(sink);
291
+
292
+
// The Push signal should've been dropped
293
+
vi.runAllTimers();
294
+
expect(signals).toEqual([SignalKind.End]);
295
+
expect(pulls).toBe(1);
296
+
});
297
+
298
+
it('stops all signals after Close has been received (spec: strict close)', () => {
299
+
const signals: Signal<any>[] = [];
300
+
301
+
const source: Source<any> = sink => {
302
+
sink(
303
+
start(signal => {
304
+
if (signal === TalkbackKind.Close) {
305
+
sink(push(123));
306
+
}
307
+
})
308
+
);
309
+
};
310
+
311
+
const sink: Sink<any> = signal => {
312
+
if (signal === SignalKind.End) {
313
+
signals.push(signal);
314
+
} else if (signal.tag === SignalKind.Push) {
315
+
signals.push(signal);
316
+
} else {
317
+
signal[0](TalkbackKind.Close);
318
+
}
319
+
};
320
+
321
+
operator(source)(sink);
322
+
323
+
// The Push signal should've been dropped
324
+
vi.runAllTimers();
325
+
expect(signals).toEqual([]);
326
+
});
327
+
};
328
+
329
+
/* This tests an immediately closing operator for End signals to
330
+
the sink and Close signals to the source.
331
+
When an operator closes immediately we expect to see a Close
332
+
signal at the source and an End signal to the sink, since the
333
+
closing operator is expected to end the entire chain. */
334
+
export const passesCloseAndEnd = (closingOperator: Operator<any, any>) => {
335
+
it('closes the source and ends the sink correctly (spec: ending operator)', () => {
336
+
let closing = 0;
337
+
let ending = 0;
338
+
339
+
const source: Source<any> = sink => {
340
+
sink(
341
+
start(signal => {
342
+
// For some operator tests we do need to send a single value
343
+
if (signal === TalkbackKind.Pull) {
344
+
sink(push(null));
345
+
} else {
346
+
closing++;
347
+
}
348
+
})
349
+
);
350
+
};
351
+
352
+
const sink: Sink<any> = signal => {
353
+
if (signal === SignalKind.End) {
354
+
ending++;
355
+
} else if (signal.tag === SignalKind.Start) {
356
+
signal[0](TalkbackKind.Pull);
357
+
}
358
+
};
359
+
360
+
// We expect the operator to immediately end and close
361
+
closingOperator(source)(sink);
362
+
expect(closing).toBe(1);
363
+
expect(ending).toBe(1);
364
+
});
365
+
};
366
+
367
+
export const passesAsyncSequence = (operator: Operator<any, any>, result: any = 0) => {
368
+
it('passes an async push with an async end (spec)', () => {
369
+
let hasPushed = false;
370
+
const signals: Signal<any>[] = [];
371
+
372
+
const source: Source<any> = sink => {
373
+
sink(
374
+
start(signal => {
375
+
if (signal === TalkbackKind.Pull && !hasPushed) {
376
+
hasPushed = true;
377
+
setTimeout(() => sink(push(0)), 10);
378
+
setTimeout(() => sink(SignalKind.End), 20);
379
+
}
380
+
})
381
+
);
382
+
};
383
+
384
+
const sink: Sink<any> = signal => {
385
+
if (signal === SignalKind.End) {
386
+
signals.push(signal);
387
+
} else if (signal.tag === SignalKind.Push) {
388
+
signals.push(signal);
389
+
} else {
390
+
setTimeout(() => {
391
+
signal[0](TalkbackKind.Pull);
392
+
}, 5);
393
+
}
394
+
};
395
+
396
+
// We initially expect to see the push signal
397
+
// Afterwards after all timers all other signals come in
398
+
operator(source)(sink);
399
+
expect(signals.length).toBe(0);
400
+
vi.advanceTimersByTime(5);
401
+
expect(hasPushed).toBeTruthy();
402
+
vi.runAllTimers();
403
+
404
+
expect(signals).toEqual([push(result), SignalKind.End]);
405
+
});
406
+
};
+854
src/__tests__/operators.test.ts
+854
src/__tests__/operators.test.ts
···
1
+
import { describe, it, expect, beforeEach, vi } from 'vitest';
2
+
3
+
import { Source, Sink, Signal, SignalKind, TalkbackKind, TalkbackFn } from '../types';
4
+
import { push, start } from '../helpers';
5
+
6
+
import {
7
+
passesPassivePull,
8
+
passesActivePush,
9
+
passesSinkClose,
10
+
passesSourceEnd,
11
+
passesSingleStart,
12
+
passesStrictEnd,
13
+
passesSourcePushThenEnd,
14
+
passesAsyncSequence,
15
+
passesCloseAndEnd,
16
+
} from './compliance';
17
+
18
+
import * as sources from '../sources';
19
+
import * as sinks from '../sinks';
20
+
import * as operators from '../operators';
21
+
22
+
beforeEach(() => {
23
+
vi.useFakeTimers();
24
+
});
25
+
26
+
describe('buffer', () => {
27
+
const valueThenNever: Source<any> = sink =>
28
+
sink(
29
+
start(signal => {
30
+
if (signal === TalkbackKind.Pull) sink(push(null));
31
+
})
32
+
);
33
+
34
+
const noop = operators.buffer(valueThenNever);
35
+
36
+
passesPassivePull(noop, [0]);
37
+
passesActivePush(noop, [0]);
38
+
passesSinkClose(noop);
39
+
passesSourcePushThenEnd(noop, [0]);
40
+
passesSingleStart(noop);
41
+
passesStrictEnd(noop);
42
+
43
+
it('emits batches of input values when a notifier emits', () => {
44
+
const { source: notifier$, next: notify } = sources.makeSubject();
45
+
const { source: input$, next } = sources.makeSubject();
46
+
const fn = vi.fn();
47
+
48
+
sinks.forEach(fn)(operators.buffer(notifier$)(input$));
49
+
50
+
next(1);
51
+
next(2);
52
+
expect(fn).not.toHaveBeenCalled();
53
+
54
+
notify(null);
55
+
expect(fn).toHaveBeenCalledWith([1, 2]);
56
+
57
+
next(3);
58
+
notify(null);
59
+
expect(fn).toHaveBeenCalledWith([3]);
60
+
});
61
+
});
62
+
63
+
describe('concatMap', () => {
64
+
const noop = operators.concatMap(x => sources.fromValue(x));
65
+
passesPassivePull(noop);
66
+
passesActivePush(noop);
67
+
passesSinkClose(noop);
68
+
passesSourcePushThenEnd(noop);
69
+
passesSingleStart(noop);
70
+
passesStrictEnd(noop);
71
+
passesAsyncSequence(noop);
72
+
73
+
// This synchronous test for concatMap will behave the same as mergeMap & switchMap
74
+
it('emits values from each flattened synchronous source', () => {
75
+
const { source, next, complete } = sources.makeSubject<number>();
76
+
const fn = vi.fn();
77
+
78
+
operators.concatMap((x: number) => sources.fromArray([x, x + 1]))(source)(fn);
79
+
80
+
next(1);
81
+
next(3);
82
+
complete();
83
+
84
+
expect(fn).toHaveBeenCalledTimes(6);
85
+
expect(fn.mock.calls).toEqual([
86
+
[start(expect.any(Function))],
87
+
[push(1)],
88
+
[push(2)],
89
+
[push(3)],
90
+
[push(4)],
91
+
[SignalKind.End],
92
+
]);
93
+
});
94
+
95
+
// This synchronous test for concatMap will behave the same as mergeMap & switchMap
96
+
it('lets inner sources finish when outer source ends', () => {
97
+
const signals: Signal<any>[] = [];
98
+
const teardown = vi.fn();
99
+
const fn = (signal: Signal<any>) => {
100
+
signals.push(signal);
101
+
if (signal !== SignalKind.End && signal.tag === SignalKind.Start) {
102
+
signal[0](TalkbackKind.Pull);
103
+
signal[0](TalkbackKind.Close);
104
+
}
105
+
};
106
+
107
+
operators.concatMap(() => {
108
+
return sources.make(() => teardown);
109
+
})(sources.fromValue(null))(fn);
110
+
111
+
expect(teardown).toHaveBeenCalled();
112
+
expect(signals).toEqual([start(expect.any(Function))]);
113
+
});
114
+
115
+
// This asynchronous test for concatMap will behave differently than mergeMap & switchMap
116
+
it('emits values from each flattened asynchronous source, one at a time', () => {
117
+
const source = operators.delay<number>(4)(sources.fromArray([1, 10]));
118
+
const fn = vi.fn();
119
+
120
+
sinks.forEach(fn)(
121
+
operators.concatMap((x: number) => {
122
+
return operators.delay(5)(sources.fromArray([x, x * 2]));
123
+
})(source)
124
+
);
125
+
126
+
vi.advanceTimersByTime(14);
127
+
expect(fn.mock.calls).toEqual([[1], [2]]);
128
+
129
+
vi.runAllTimers();
130
+
expect(fn.mock.calls).toEqual([[1], [2], [10], [20]]);
131
+
});
132
+
133
+
it('works for fully asynchronous sources', () => {
134
+
const fn = vi.fn();
135
+
136
+
sinks.forEach(fn)(
137
+
operators.concatMap(() => {
138
+
return sources.make(observer => {
139
+
setTimeout(() => observer.next(1));
140
+
return () => {};
141
+
});
142
+
})(sources.fromValue(null))
143
+
);
144
+
145
+
vi.runAllTimers();
146
+
expect(fn).toHaveBeenCalledWith(1);
147
+
});
148
+
149
+
it('emits synchronous values in order', () => {
150
+
const values: any[] = [];
151
+
152
+
sinks.forEach(x => values.push(x))(
153
+
operators.concat([sources.fromArray([1, 2]), sources.fromArray([3, 4])])
154
+
);
155
+
156
+
expect(values).toEqual([1, 2, 3, 4]);
157
+
});
158
+
});
159
+
160
+
describe('debounce', () => {
161
+
const noop = operators.debounce(() => 0);
162
+
passesPassivePull(noop);
163
+
passesActivePush(noop);
164
+
passesSinkClose(noop);
165
+
passesSourceEnd(noop);
166
+
passesSingleStart(noop);
167
+
passesStrictEnd(noop);
168
+
passesAsyncSequence(noop);
169
+
170
+
it('waits for a specified amount of silence before emitting the last value', () => {
171
+
const { source, next } = sources.makeSubject<number>();
172
+
const fn = vi.fn();
173
+
174
+
sinks.forEach(fn)(operators.debounce(() => 100)(source));
175
+
176
+
next(1);
177
+
vi.advanceTimersByTime(50);
178
+
expect(fn).not.toHaveBeenCalled();
179
+
180
+
next(2);
181
+
vi.advanceTimersByTime(99);
182
+
expect(fn).not.toHaveBeenCalled();
183
+
184
+
vi.advanceTimersByTime(1);
185
+
expect(fn).toHaveBeenCalledWith(2);
186
+
});
187
+
188
+
it('emits debounced value with delayed End signal', () => {
189
+
const { source, next, complete } = sources.makeSubject<number>();
190
+
const fn = vi.fn();
191
+
192
+
sinks.forEach(fn)(operators.debounce(() => 100)(source));
193
+
194
+
next(1);
195
+
complete();
196
+
vi.advanceTimersByTime(100);
197
+
expect(fn).toHaveBeenCalled();
198
+
});
199
+
});
200
+
201
+
describe('delay', () => {
202
+
const noop = operators.delay(0);
203
+
passesPassivePull(noop);
204
+
passesActivePush(noop);
205
+
passesSinkClose(noop);
206
+
passesSourceEnd(noop);
207
+
passesSingleStart(noop);
208
+
passesAsyncSequence(noop);
209
+
210
+
it('delays outputs by a specified delay timeout value', () => {
211
+
const { source, next } = sources.makeSubject();
212
+
const fn = vi.fn();
213
+
214
+
sinks.forEach(fn)(operators.delay(100)(source));
215
+
216
+
next(1);
217
+
expect(fn).not.toHaveBeenCalled();
218
+
219
+
vi.advanceTimersByTime(100);
220
+
expect(fn).toHaveBeenCalledWith(1);
221
+
});
222
+
});
223
+
224
+
describe('filter', () => {
225
+
const noop = operators.filter(() => true);
226
+
passesPassivePull(noop);
227
+
passesActivePush(noop);
228
+
passesSinkClose(noop);
229
+
passesSourceEnd(noop);
230
+
passesSingleStart(noop);
231
+
passesAsyncSequence(noop);
232
+
233
+
it('prevents emissions for which a predicate fails', () => {
234
+
const { source, next } = sources.makeSubject<boolean>();
235
+
const fn = vi.fn();
236
+
237
+
sinks.forEach((x: true) => {
238
+
fn(x);
239
+
})(operators.filter((x): x is true => !!x)(source));
240
+
241
+
next(false);
242
+
expect(fn).not.toHaveBeenCalled();
243
+
244
+
next(true);
245
+
expect(fn).toHaveBeenCalledWith(true);
246
+
});
247
+
});
248
+
249
+
describe('map', () => {
250
+
const noop = operators.map(x => x);
251
+
passesPassivePull(noop);
252
+
passesActivePush(noop);
253
+
passesSinkClose(noop);
254
+
passesSourceEnd(noop);
255
+
passesSingleStart(noop);
256
+
passesAsyncSequence(noop);
257
+
258
+
it('maps over values given a transform function', () => {
259
+
const { source, next } = sources.makeSubject<number>();
260
+
const fn = vi.fn();
261
+
262
+
sinks.forEach(fn)(operators.map((x: number) => x + 1)(source));
263
+
264
+
next(1);
265
+
expect(fn).toHaveBeenCalledWith(2);
266
+
});
267
+
});
268
+
269
+
describe('mergeMap', () => {
270
+
const noop = operators.mergeMap(x => sources.fromValue(x));
271
+
passesPassivePull(noop);
272
+
passesActivePush(noop);
273
+
passesSinkClose(noop);
274
+
passesSourcePushThenEnd(noop);
275
+
passesSingleStart(noop);
276
+
passesStrictEnd(noop);
277
+
passesAsyncSequence(noop);
278
+
279
+
// This synchronous test for mergeMap will behave the same as concatMap & switchMap
280
+
it('emits values from each flattened synchronous source', () => {
281
+
const { source, next, complete } = sources.makeSubject<number>();
282
+
const fn = vi.fn();
283
+
284
+
operators.mergeMap((x: number) => sources.fromArray([x, x + 1]))(source)(fn);
285
+
286
+
next(1);
287
+
next(3);
288
+
complete();
289
+
290
+
expect(fn.mock.calls).toEqual([
291
+
[start(expect.any(Function))],
292
+
[push(1)],
293
+
[push(2)],
294
+
[push(3)],
295
+
[push(4)],
296
+
[SignalKind.End],
297
+
]);
298
+
});
299
+
300
+
// This synchronous test for mergeMap will behave the same as concatMap & switchMap
301
+
it('lets inner sources finish when outer source ends', () => {
302
+
const values: Signal<any>[] = [];
303
+
const teardown = vi.fn();
304
+
const fn = (signal: Signal<any>) => {
305
+
values.push(signal);
306
+
if (signal !== SignalKind.End && signal.tag === SignalKind.Start) {
307
+
signal[0](TalkbackKind.Pull);
308
+
signal[0](TalkbackKind.Close);
309
+
}
310
+
};
311
+
312
+
operators.mergeMap(() => {
313
+
return sources.make(() => teardown);
314
+
})(sources.fromValue(null))(fn);
315
+
316
+
expect(teardown).toHaveBeenCalled();
317
+
expect(values).toEqual([start(expect.any(Function))]);
318
+
});
319
+
320
+
// This asynchronous test for mergeMap will behave differently than concatMap & switchMap
321
+
it('emits values from each flattened asynchronous source simultaneously', () => {
322
+
const source = operators.delay<number>(4)(sources.fromArray([1, 10]));
323
+
const fn = vi.fn();
324
+
325
+
sinks.forEach(fn)(
326
+
operators.mergeMap((x: number) => {
327
+
return operators.delay(5)(sources.fromArray([x, x * 2]));
328
+
})(source)
329
+
);
330
+
331
+
vi.runAllTimers();
332
+
expect(fn.mock.calls).toEqual([[1], [10], [2], [20]]);
333
+
});
334
+
335
+
it('emits synchronous values in order', () => {
336
+
const values: any[] = [];
337
+
338
+
sinks.forEach(x => values.push(x))(
339
+
operators.merge([sources.fromArray([1, 2]), sources.fromArray([3, 4])])
340
+
);
341
+
342
+
expect(values).toEqual([1, 2, 3, 4]);
343
+
});
344
+
});
345
+
346
+
describe('onEnd', () => {
347
+
const noop = operators.onEnd(() => {});
348
+
passesPassivePull(noop);
349
+
passesActivePush(noop);
350
+
passesSinkClose(noop);
351
+
passesSourceEnd(noop);
352
+
passesStrictEnd(noop);
353
+
passesSingleStart(noop);
354
+
passesAsyncSequence(noop);
355
+
356
+
it('calls a callback when the source ends', () => {
357
+
const { source, next, complete } = sources.makeSubject<any>();
358
+
const fn = vi.fn();
359
+
360
+
sinks.forEach(() => {})(operators.onEnd(fn)(source));
361
+
362
+
next(null);
363
+
expect(fn).not.toHaveBeenCalled();
364
+
365
+
complete();
366
+
expect(fn).toHaveBeenCalled();
367
+
});
368
+
});
369
+
370
+
describe('onPush', () => {
371
+
const noop = operators.onPush(() => {});
372
+
passesPassivePull(noop);
373
+
passesActivePush(noop);
374
+
passesSinkClose(noop);
375
+
passesSourceEnd(noop);
376
+
passesStrictEnd(noop);
377
+
passesSingleStart(noop);
378
+
passesAsyncSequence(noop);
379
+
380
+
it('calls a callback when the source emits', () => {
381
+
const { source, next } = sources.makeSubject<number>();
382
+
const fn = vi.fn();
383
+
384
+
sinks.forEach(() => {})(operators.onPush(fn)(source));
385
+
386
+
next(1);
387
+
expect(fn).toHaveBeenCalledWith(1);
388
+
next(2);
389
+
expect(fn).toHaveBeenCalledWith(2);
390
+
});
391
+
392
+
it('is the same as `tap`', () => {
393
+
expect(operators.onPush).toBe(operators.tap);
394
+
});
395
+
});
396
+
397
+
describe('onStart', () => {
398
+
const noop = operators.onStart(() => {});
399
+
passesPassivePull(noop);
400
+
passesActivePush(noop);
401
+
passesSinkClose(noop);
402
+
passesSourceEnd(noop);
403
+
passesSingleStart(noop);
404
+
passesAsyncSequence(noop);
405
+
406
+
it('is called when the source starts', () => {
407
+
let sink: Sink<any>;
408
+
409
+
const fn = vi.fn();
410
+
const source: Source<any> = _sink => {
411
+
sink = _sink;
412
+
};
413
+
414
+
sinks.forEach(() => {})(operators.onStart(fn)(source));
415
+
416
+
expect(fn).not.toHaveBeenCalled();
417
+
418
+
sink!(start(() => {}));
419
+
expect(fn).toHaveBeenCalled();
420
+
});
421
+
});
422
+
423
+
describe('sample', () => {
424
+
const valueThenNever: Source<any> = sink =>
425
+
sink(
426
+
start(signal => {
427
+
if (signal === TalkbackKind.Pull) sink(push(null));
428
+
})
429
+
);
430
+
431
+
const noop = operators.sample(valueThenNever);
432
+
433
+
passesPassivePull(noop);
434
+
passesActivePush(noop);
435
+
passesSinkClose(noop);
436
+
passesSourcePushThenEnd(noop);
437
+
passesSingleStart(noop);
438
+
passesStrictEnd(noop);
439
+
440
+
it('emits the latest value when a notifier source emits', () => {
441
+
const { source: notifier$, next: notify } = sources.makeSubject();
442
+
const { source: input$, next } = sources.makeSubject();
443
+
const fn = vi.fn();
444
+
445
+
sinks.forEach(fn)(operators.sample(notifier$)(input$));
446
+
447
+
next(1);
448
+
next(2);
449
+
expect(fn).not.toHaveBeenCalled();
450
+
451
+
notify(null);
452
+
expect(fn).toHaveBeenCalledWith(2);
453
+
});
454
+
});
455
+
456
+
describe('scan', () => {
457
+
const noop = operators.scan<any, any>((_acc, x) => x, null);
458
+
passesPassivePull(noop);
459
+
passesActivePush(noop);
460
+
passesSinkClose(noop);
461
+
passesSourceEnd(noop);
462
+
passesSingleStart(noop);
463
+
passesAsyncSequence(noop);
464
+
465
+
it('folds values continuously with a reducer and initial value', () => {
466
+
const { source: input$, next } = sources.makeSubject<number>();
467
+
const fn = vi.fn();
468
+
469
+
const reducer = (acc: number, x: number) => acc + x;
470
+
sinks.forEach(fn)(operators.scan(reducer, 0)(input$));
471
+
472
+
next(1);
473
+
expect(fn).toHaveBeenCalledWith(1);
474
+
next(2);
475
+
expect(fn).toHaveBeenCalledWith(3);
476
+
});
477
+
});
478
+
479
+
describe('share', () => {
480
+
const noop = operators.share;
481
+
passesPassivePull(noop);
482
+
passesActivePush(noop);
483
+
passesSinkClose(noop);
484
+
passesSourceEnd(noop);
485
+
passesSingleStart(noop);
486
+
passesStrictEnd(noop);
487
+
passesAsyncSequence(noop);
488
+
489
+
it('shares output values between sinks', () => {
490
+
let onPush = () => {};
491
+
492
+
const source: Source<any> = operators.share(sink => {
493
+
sink(start(() => {}));
494
+
onPush = () => {
495
+
sink(push([0]));
496
+
sink(SignalKind.End);
497
+
};
498
+
});
499
+
500
+
const fnA = vi.fn();
501
+
const fnB = vi.fn();
502
+
503
+
sinks.forEach(fnA)(source);
504
+
sinks.forEach(fnB)(source);
505
+
onPush();
506
+
507
+
expect(fnA).toHaveBeenCalledWith([0]);
508
+
expect(fnB).toHaveBeenCalledWith([0]);
509
+
expect(fnA.mock.calls[0][0]).toBe(fnB.mock.calls[0][0]);
510
+
});
511
+
512
+
it('completes the source when no more sink is listening', () => {
513
+
let onPush = () => {};
514
+
515
+
const talkback = vi.fn();
516
+
const source: Source<any> = operators.share(sink => {
517
+
sink(start(talkback));
518
+
onPush = () => {
519
+
sink(push([0]));
520
+
sink(push([1]));
521
+
sink(SignalKind.End);
522
+
};
523
+
});
524
+
525
+
const fnA = vi.fn();
526
+
const fnB = vi.fn();
527
+
528
+
sinks.forEach(fnA)(operators.take(1)(source));
529
+
sinks.forEach(fnB)(operators.take(1)(source));
530
+
onPush();
531
+
532
+
expect(fnA).toHaveBeenCalledWith([0]);
533
+
expect(fnB).toHaveBeenCalledWith([0]);
534
+
expect(fnA.mock.calls[0][0]).toBe(fnB.mock.calls[0][0]);
535
+
expect(talkback).toHaveBeenCalledWith(TalkbackKind.Close);
536
+
});
537
+
});
538
+
539
+
describe('skip', () => {
540
+
const noop = operators.skip(0);
541
+
passesPassivePull(noop);
542
+
passesActivePush(noop);
543
+
passesSinkClose(noop);
544
+
passesSourceEnd(noop);
545
+
passesSingleStart(noop);
546
+
passesAsyncSequence(noop);
547
+
548
+
it('skips a number of values before emitting normally', () => {
549
+
const { source, next } = sources.makeSubject<number>();
550
+
const fn = vi.fn();
551
+
552
+
sinks.forEach(fn)(operators.skip(1)(source));
553
+
554
+
next(1);
555
+
expect(fn).not.toHaveBeenCalled();
556
+
next(2);
557
+
expect(fn).toHaveBeenCalledWith(2);
558
+
});
559
+
});
560
+
561
+
describe('skipUntil', () => {
562
+
const noop = operators.skipUntil(sources.fromValue(null));
563
+
passesPassivePull(noop);
564
+
passesActivePush(noop);
565
+
passesSinkClose(noop);
566
+
passesSourceEnd(noop);
567
+
passesSingleStart(noop);
568
+
passesAsyncSequence(noop);
569
+
passesStrictEnd(noop);
570
+
571
+
it('skips values until the notifier source emits', () => {
572
+
const { source: notifier$, next: notify } = sources.makeSubject();
573
+
const { source: input$, next } = sources.makeSubject<number>();
574
+
const fn = vi.fn();
575
+
576
+
sinks.forEach(fn)(operators.skipUntil(notifier$)(input$));
577
+
578
+
next(1);
579
+
expect(fn).not.toHaveBeenCalled();
580
+
notify(null);
581
+
next(2);
582
+
expect(fn).toHaveBeenCalledWith(2);
583
+
});
584
+
});
585
+
586
+
describe('skipWhile', () => {
587
+
const noop = operators.skipWhile(() => false);
588
+
passesPassivePull(noop);
589
+
passesActivePush(noop);
590
+
passesSinkClose(noop);
591
+
passesSourceEnd(noop);
592
+
passesSingleStart(noop);
593
+
passesAsyncSequence(noop);
594
+
595
+
it('skips values until one fails a predicate', () => {
596
+
const { source, next } = sources.makeSubject<number>();
597
+
const fn = vi.fn();
598
+
599
+
sinks.forEach(fn)(operators.skipWhile((x: any) => x <= 1)(source));
600
+
601
+
next(1);
602
+
expect(fn).not.toHaveBeenCalled();
603
+
next(2);
604
+
expect(fn).toHaveBeenCalledWith(2);
605
+
});
606
+
});
607
+
608
+
describe('switchMap', () => {
609
+
const noop = operators.switchMap(x => sources.fromValue(x));
610
+
passesPassivePull(noop);
611
+
passesActivePush(noop);
612
+
passesSinkClose(noop);
613
+
passesSourcePushThenEnd(noop);
614
+
passesSingleStart(noop);
615
+
passesStrictEnd(noop);
616
+
passesAsyncSequence(noop);
617
+
618
+
// This synchronous test for switchMap will behave the same as concatMap & mergeMap
619
+
it('emits values from each flattened synchronous source', () => {
620
+
const { source, next, complete } = sources.makeSubject<number>();
621
+
const fn = vi.fn();
622
+
623
+
operators.switchMap((x: number) => sources.fromArray([x, x + 1]))(source)(fn);
624
+
625
+
next(1);
626
+
next(3);
627
+
complete();
628
+
629
+
expect(fn).toHaveBeenCalledTimes(6);
630
+
expect(fn.mock.calls).toEqual([
631
+
[start(expect.any(Function))],
632
+
[push(1)],
633
+
[push(2)],
634
+
[push(3)],
635
+
[push(4)],
636
+
[SignalKind.End],
637
+
]);
638
+
});
639
+
640
+
// This synchronous test for switchMap will behave the same as concatMap & mergeMap
641
+
it('lets inner sources finish when outer source ends', () => {
642
+
const signals: Signal<any>[] = [];
643
+
const teardown = vi.fn();
644
+
const fn = (signal: Signal<any>) => {
645
+
signals.push(signal);
646
+
if (signal !== SignalKind.End && signal.tag === SignalKind.Start) {
647
+
signal[0](TalkbackKind.Pull);
648
+
signal[0](TalkbackKind.Close);
649
+
}
650
+
};
651
+
652
+
operators.switchMap(() => {
653
+
return sources.make(() => teardown);
654
+
})(sources.fromValue(null))(fn);
655
+
656
+
expect(teardown).toHaveBeenCalled();
657
+
expect(signals).toEqual([start(expect.any(Function))]);
658
+
});
659
+
660
+
// This asynchronous test for switchMap will behave differently than concatMap & mergeMap
661
+
it('emits values from each flattened asynchronous source, one at a time', () => {
662
+
const source = operators.delay<number>(4)(sources.fromArray([1, 10]));
663
+
const fn = vi.fn();
664
+
665
+
sinks.forEach(fn)(
666
+
operators.switchMap((x: number) =>
667
+
operators.take(2)(operators.map((y: number) => x * (y + 1))(sources.interval(5)))
668
+
)(source)
669
+
);
670
+
671
+
vi.runAllTimers();
672
+
expect(fn.mock.calls).toEqual([[1], [10], [20]]);
673
+
});
674
+
});
675
+
676
+
describe('take', () => {
677
+
const noop = operators.take(10);
678
+
passesPassivePull(noop);
679
+
passesActivePush(noop);
680
+
passesSinkClose(noop);
681
+
passesSourceEnd(noop);
682
+
passesSingleStart(noop);
683
+
passesStrictEnd(noop);
684
+
passesAsyncSequence(noop);
685
+
686
+
passesCloseAndEnd(operators.take(0));
687
+
688
+
it('emits values until a maximum is reached', () => {
689
+
const { source, next } = sources.makeSubject<number>();
690
+
const fn = vi.fn();
691
+
692
+
operators.take(1)(source)(fn);
693
+
next(1);
694
+
695
+
expect(fn).toHaveBeenCalledTimes(3);
696
+
expect(fn.mock.calls).toEqual([[start(expect.any(Function))], [push(1)], [SignalKind.End]]);
697
+
});
698
+
});
699
+
700
+
describe('takeUntil', () => {
701
+
const noop = operators.takeUntil(sources.never);
702
+
passesPassivePull(noop);
703
+
passesActivePush(noop);
704
+
passesSinkClose(noop);
705
+
passesSourcePushThenEnd(noop);
706
+
passesSingleStart(noop);
707
+
passesStrictEnd(noop);
708
+
passesAsyncSequence(noop);
709
+
710
+
const ending = operators.takeUntil(sources.fromValue(null));
711
+
passesCloseAndEnd(ending);
712
+
713
+
it('emits values until a notifier emits', () => {
714
+
const { source: notifier$, next: notify } = sources.makeSubject<any>();
715
+
const { source: input$, next } = sources.makeSubject<number>();
716
+
const fn = vi.fn();
717
+
718
+
operators.takeUntil(notifier$)(input$)(fn);
719
+
next(1);
720
+
721
+
expect(fn).toHaveBeenCalledTimes(2);
722
+
expect(fn.mock.calls).toEqual([[start(expect.any(Function))], [push(1)]]);
723
+
724
+
notify(null);
725
+
expect(fn).toHaveBeenCalledTimes(3);
726
+
expect(fn.mock.calls[2][0]).toEqual(SignalKind.End);
727
+
});
728
+
729
+
it('emits values until a notifier emits', () => {
730
+
const { source: input$, next } = sources.makeSubject<number>();
731
+
const fn = vi.fn();
732
+
733
+
let hasClosed = false;
734
+
735
+
operators.takeUntil(sink => {
736
+
sink(
737
+
start(talkback => {
738
+
if (talkback === TalkbackKind.Close) {
739
+
hasClosed = true;
740
+
} else if (talkback === TalkbackKind.Pull && !hasClosed) {
741
+
sink(push(1));
742
+
}
743
+
})
744
+
);
745
+
})(input$)(fn);
746
+
747
+
next(1);
748
+
749
+
expect(fn).toHaveBeenCalledTimes(2);
750
+
expect(fn.mock.calls).toEqual([[0], [start(expect.any(Function))]]);
751
+
752
+
expect(hasClosed).toBe(true);
753
+
});
754
+
});
755
+
756
+
describe('takeWhile', () => {
757
+
const noop = operators.takeWhile(() => true);
758
+
passesPassivePull(noop);
759
+
passesActivePush(noop);
760
+
passesSinkClose(noop);
761
+
passesSourceEnd(noop);
762
+
passesSingleStart(noop);
763
+
passesAsyncSequence(noop);
764
+
765
+
const ending = operators.takeWhile(() => false);
766
+
passesCloseAndEnd(ending);
767
+
768
+
it('emits values while a predicate passes for all values', () => {
769
+
const { source, next } = sources.makeSubject<number>();
770
+
const fn = vi.fn();
771
+
772
+
operators.takeWhile((x: any) => x < 2)(source)(fn);
773
+
next(1);
774
+
next(2);
775
+
next(3);
776
+
777
+
expect(fn.mock.calls).toEqual([[start(expect.any(Function))], [push(1)], [SignalKind.End]]);
778
+
});
779
+
780
+
it('emits values while a predicate passes for all values plus an additional one', () => {
781
+
const { source, next } = sources.makeSubject<number>();
782
+
const fn = vi.fn();
783
+
784
+
operators.takeWhile((x: any) => x < 2, true)(source)(fn);
785
+
next(1);
786
+
next(2);
787
+
next(3);
788
+
789
+
expect(fn.mock.calls).toEqual([
790
+
[start(expect.any(Function))],
791
+
[push(1)],
792
+
[push(2)],
793
+
[SignalKind.End],
794
+
]);
795
+
});
796
+
});
797
+
798
+
describe('takeLast', () => {
799
+
passesCloseAndEnd(operators.takeLast(0));
800
+
801
+
it('emits the last max values of an ended source', () => {
802
+
const { source, next, complete } = sources.makeSubject<number>();
803
+
const signals: Signal<any>[] = [];
804
+
805
+
let talkback: TalkbackFn;
806
+
807
+
operators.takeLast(1)(source)(signal => {
808
+
signals.push(signal);
809
+
if (signal === SignalKind.End) {
810
+
/*noop*/
811
+
} else if (signal.tag === SignalKind.Start) {
812
+
(talkback = signal[0])(TalkbackKind.Pull);
813
+
} else {
814
+
talkback!(TalkbackKind.Pull);
815
+
}
816
+
});
817
+
818
+
next(1);
819
+
next(2);
820
+
821
+
expect(signals.length).toBe(0);
822
+
complete();
823
+
824
+
expect(signals).toEqual([start(expect.any(Function)), push(2), SignalKind.End]);
825
+
});
826
+
});
827
+
828
+
describe('throttle', () => {
829
+
const noop = operators.throttle(() => 0);
830
+
passesPassivePull(noop);
831
+
passesActivePush(noop);
832
+
passesSinkClose(noop);
833
+
passesSourceEnd(noop);
834
+
passesSingleStart(noop);
835
+
passesAsyncSequence(noop);
836
+
837
+
it('should ignore emissions for a period of time after a value', () => {
838
+
const { source, next } = sources.makeSubject<number>();
839
+
const fn = vi.fn();
840
+
841
+
sinks.forEach(fn)(operators.throttle(() => 100)(source));
842
+
843
+
next(1);
844
+
expect(fn).toHaveBeenCalledWith(1);
845
+
vi.advanceTimersByTime(50);
846
+
847
+
next(2);
848
+
expect(fn).toHaveBeenCalledTimes(1);
849
+
vi.advanceTimersByTime(50);
850
+
851
+
next(3);
852
+
expect(fn).toHaveBeenCalledWith(3);
853
+
});
854
+
});
+487
src/__tests__/sinks.test.ts
+487
src/__tests__/sinks.test.ts
···
1
+
import { describe, it, expect, vi } from 'vitest';
2
+
3
+
import { Source, Sink, SignalKind, TalkbackKind } from '../types';
4
+
import { push, start } from '../helpers';
5
+
6
+
import * as sinks from '../sinks';
7
+
import * as sources from '../sources';
8
+
import * as callbag from '../callbag';
9
+
import * as observable from '../observable';
10
+
11
+
import Observable from 'zen-observable';
12
+
import callbagIterate from 'callbag-iterate';
13
+
import callbagTake from 'callbag-take';
14
+
15
+
describe('subscribe', () => {
16
+
it('sends Pull talkback signals every Push signal', () => {
17
+
let pulls = 0;
18
+
const fn = vi.fn();
19
+
20
+
const source: Source<any> = sink => {
21
+
sink(
22
+
start(signal => {
23
+
if (signal === TalkbackKind.Pull) {
24
+
if (pulls < 3) {
25
+
pulls++;
26
+
sink(push(0));
27
+
} else {
28
+
sink(SignalKind.End);
29
+
expect(pulls).toBe(3);
30
+
}
31
+
}
32
+
})
33
+
);
34
+
};
35
+
36
+
sinks.subscribe(fn)(source);
37
+
expect(fn).toHaveBeenCalledTimes(3);
38
+
expect(pulls).toBe(3);
39
+
});
40
+
41
+
it('cancels when unsubscribe is called', () => {
42
+
let pulls = 0;
43
+
let closing = 0;
44
+
45
+
const source: Source<any> = sink => {
46
+
sink(
47
+
start(signal => {
48
+
if (signal === TalkbackKind.Pull) {
49
+
if (!pulls) {
50
+
pulls++;
51
+
sink(push(0));
52
+
}
53
+
} else {
54
+
closing++;
55
+
}
56
+
})
57
+
);
58
+
};
59
+
60
+
const sub = sinks.subscribe(() => {})(source);
61
+
expect(pulls).toBe(1);
62
+
63
+
sub.unsubscribe();
64
+
expect(closing).toBe(1);
65
+
});
66
+
67
+
it('ignores cancellation when the source has already ended', () => {
68
+
let pulls = 0;
69
+
let closing = 0;
70
+
71
+
const source: Source<any> = sink => {
72
+
sink(
73
+
start(signal => {
74
+
if (signal === TalkbackKind.Pull) {
75
+
pulls++;
76
+
sink(SignalKind.End);
77
+
} else {
78
+
closing++;
79
+
}
80
+
})
81
+
);
82
+
};
83
+
84
+
const sub = sinks.subscribe(() => {})(source);
85
+
expect(pulls).toBe(1);
86
+
sub.unsubscribe();
87
+
expect(closing).toBe(0);
88
+
});
89
+
90
+
it('ignores Push signals after the source has ended', () => {
91
+
const fn = vi.fn();
92
+
const source: Source<any> = sink => {
93
+
sink(
94
+
start(signal => {
95
+
if (signal === TalkbackKind.Pull) {
96
+
sink(SignalKind.End);
97
+
sink(push(0));
98
+
}
99
+
})
100
+
);
101
+
};
102
+
103
+
sinks.subscribe(fn)(source);
104
+
expect(fn).not.toHaveBeenCalled();
105
+
});
106
+
107
+
it('ignores Push signals after cancellation', () => {
108
+
const fn = vi.fn();
109
+
const source: Source<any> = sink => {
110
+
sink(
111
+
start(signal => {
112
+
if (signal === TalkbackKind.Close) {
113
+
sink(push(0));
114
+
}
115
+
})
116
+
);
117
+
};
118
+
119
+
sinks.subscribe(fn)(source).unsubscribe();
120
+
expect(fn).not.toHaveBeenCalled();
121
+
});
122
+
});
123
+
124
+
describe('publish', () => {
125
+
it('sends Pull talkback signals every Push signal', () => {
126
+
let pulls = 0;
127
+
const source: Source<any> = sink => {
128
+
sink(
129
+
start(signal => {
130
+
if (signal === TalkbackKind.Pull) {
131
+
if (pulls < 3) {
132
+
pulls++;
133
+
sink(push(0));
134
+
} else {
135
+
sink(SignalKind.End);
136
+
expect(pulls).toBe(3);
137
+
}
138
+
}
139
+
})
140
+
);
141
+
};
142
+
143
+
sinks.publish(source);
144
+
expect(pulls).toBe(3);
145
+
});
146
+
});
147
+
148
+
describe('toArray', () => {
149
+
it('sends Pull talkback signals every Push signal', () => {
150
+
let pulls = 0;
151
+
const source: Source<any> = sink => {
152
+
sink(
153
+
start(signal => {
154
+
if (signal === TalkbackKind.Pull) {
155
+
if (pulls < 3) {
156
+
pulls++;
157
+
sink(push(0));
158
+
} else {
159
+
sink(SignalKind.End);
160
+
expect(pulls).toBe(3);
161
+
}
162
+
}
163
+
})
164
+
);
165
+
};
166
+
167
+
const array = sinks.toArray(source);
168
+
expect(array).toEqual([0, 0, 0]);
169
+
expect(pulls).toBe(3);
170
+
});
171
+
172
+
it('sends a Close talkback signal after all synchronous values have been pulled', () => {
173
+
let pulls = 0;
174
+
let ending = 0;
175
+
176
+
const source: Source<any> = sink => {
177
+
sink(
178
+
start(signal => {
179
+
if (signal === TalkbackKind.Pull) {
180
+
if (!pulls) {
181
+
pulls++;
182
+
sink(push(0));
183
+
}
184
+
} else {
185
+
ending++;
186
+
}
187
+
})
188
+
);
189
+
};
190
+
191
+
const array = sinks.toArray(source);
192
+
expect(array).toEqual([0]);
193
+
expect(ending).toBe(1);
194
+
});
195
+
});
196
+
197
+
describe('toPromise', () => {
198
+
it('creates a Promise that resolves on the last value', async () => {
199
+
let pulls = 0;
200
+
let sink: Sink<any> | null = null;
201
+
202
+
const source: Source<any> = _sink => {
203
+
sink = _sink;
204
+
sink(
205
+
start(signal => {
206
+
if (signal === TalkbackKind.Pull) pulls++;
207
+
})
208
+
);
209
+
};
210
+
211
+
const fn = vi.fn();
212
+
const promise = sinks.toPromise(source).then(fn);
213
+
214
+
expect(pulls).toBe(1);
215
+
sink!(push(0));
216
+
expect(pulls).toBe(2);
217
+
sink!(push(1));
218
+
sink!(SignalKind.End);
219
+
expect(fn).not.toHaveBeenCalled();
220
+
221
+
await promise;
222
+
expect(fn).toHaveBeenCalledWith(1);
223
+
});
224
+
225
+
it('creates a Promise for synchronous sources', async () => {
226
+
const fn = vi.fn();
227
+
await sinks.toPromise(sources.fromArray([1, 2, 3])).then(fn);
228
+
expect(fn).toHaveBeenCalledWith(3);
229
+
});
230
+
});
231
+
232
+
describe('toAsyncIterable', () => {
233
+
it('creates an async iterable mirroring the Wonka source', async () => {
234
+
let pulls = 0;
235
+
let sink: Sink<any> | null = null;
236
+
237
+
const source: Source<any> = _sink => {
238
+
sink = _sink;
239
+
sink(
240
+
start(signal => {
241
+
if (signal === TalkbackKind.Pull) pulls++;
242
+
})
243
+
);
244
+
};
245
+
246
+
const asyncIterator = sinks.toAsyncIterable(source)[Symbol.asyncIterator]();
247
+
const next$ = asyncIterator.next();
248
+
249
+
sink!(push(0));
250
+
expect(await next$).toEqual({ value: 0, done: false });
251
+
expect(pulls).toBe(1);
252
+
253
+
sink!(push(1));
254
+
expect(await asyncIterator.next()).toEqual({ value: 1, done: false });
255
+
expect(pulls).toBe(2);
256
+
257
+
sink!(SignalKind.End);
258
+
expect(await asyncIterator.next()).toEqual({ done: true });
259
+
expect(pulls).toBe(2);
260
+
});
261
+
262
+
it('buffers actively pushed values', async () => {
263
+
let pulls = 0;
264
+
let sink: Sink<any> | null = null;
265
+
266
+
const source: Source<any> = _sink => {
267
+
sink = _sink;
268
+
sink(
269
+
start(signal => {
270
+
if (signal === TalkbackKind.Pull) pulls++;
271
+
})
272
+
);
273
+
};
274
+
275
+
const asyncIterator = sinks.toAsyncIterable(source)[Symbol.asyncIterator]();
276
+
const next$ = asyncIterator.next();
277
+
278
+
sink!(push(0));
279
+
sink!(push(1));
280
+
sink!(SignalKind.End);
281
+
282
+
expect(pulls).toBe(1);
283
+
expect(await next$).toEqual({ value: 0, done: false });
284
+
expect(await asyncIterator.next()).toEqual({ value: 1, done: false });
285
+
expect(await asyncIterator.next()).toEqual({ done: true });
286
+
});
287
+
288
+
it('asynchronously waits for pulled values', async () => {
289
+
let pulls = 0;
290
+
let sink: Sink<any> | null = null;
291
+
292
+
const source: Source<any> = _sink => {
293
+
sink = _sink;
294
+
sink(
295
+
start(signal => {
296
+
if (signal === TalkbackKind.Pull) pulls++;
297
+
})
298
+
);
299
+
};
300
+
301
+
const asyncIterator = sinks.toAsyncIterable(source)[Symbol.asyncIterator]();
302
+
asyncIterator.next();
303
+
expect(pulls).toBe(1);
304
+
305
+
let resolved = false;
306
+
307
+
const promise = asyncIterator.next().then(value => {
308
+
resolved = true;
309
+
return value;
310
+
});
311
+
312
+
await Promise.resolve();
313
+
expect(resolved).toBe(false);
314
+
315
+
sink!(push(0));
316
+
sink!(SignalKind.End);
317
+
expect(await promise).toEqual({ value: 0, done: false });
318
+
expect(await asyncIterator.next()).toEqual({ done: true });
319
+
});
320
+
321
+
it('supports cancellation via return', async () => {
322
+
let ended = false;
323
+
let sink: Sink<any> | null = null;
324
+
325
+
const source: Source<any> = _sink => {
326
+
sink = _sink;
327
+
sink(
328
+
start(signal => {
329
+
if (signal === TalkbackKind.Close) ended = true;
330
+
})
331
+
);
332
+
};
333
+
334
+
const asyncIterator = sinks.toAsyncIterable(source)[Symbol.asyncIterator]();
335
+
const next$ = asyncIterator.next();
336
+
337
+
sink!(push(0));
338
+
expect(await next$).toEqual({ value: 0, done: false });
339
+
expect(await asyncIterator.return!()).toEqual({ done: true });
340
+
341
+
sink!(push(1));
342
+
expect(await asyncIterator.next()).toEqual({ done: true });
343
+
344
+
expect(ended).toBeTruthy();
345
+
});
346
+
347
+
it('supports for-await-of', async () => {
348
+
let pulls = 0;
349
+
350
+
const source: Source<any> = sink => {
351
+
sink(
352
+
start(signal => {
353
+
if (signal === TalkbackKind.Pull) {
354
+
sink(pulls < 3 ? push(pulls++) : SignalKind.End);
355
+
}
356
+
})
357
+
);
358
+
};
359
+
360
+
const iterable = sinks.toAsyncIterable(source);
361
+
const values: any[] = [];
362
+
for await (const value of iterable) {
363
+
values.push(value);
364
+
}
365
+
366
+
expect(values).toEqual([0, 1, 2]);
367
+
});
368
+
369
+
it('supports for-await-of with early break', async () => {
370
+
let pulls = 0;
371
+
let closed = false;
372
+
373
+
const source: Source<any> = sink => {
374
+
sink(
375
+
start(signal => {
376
+
if (signal === TalkbackKind.Pull) {
377
+
sink(pulls < 3 ? push(pulls++) : SignalKind.End);
378
+
} else {
379
+
closed = true;
380
+
}
381
+
})
382
+
);
383
+
};
384
+
385
+
const iterable = sinks.toAsyncIterable(source);
386
+
for await (const value of iterable) {
387
+
expect(value).toBe(0);
388
+
break;
389
+
}
390
+
391
+
expect(closed).toBe(true);
392
+
});
393
+
});
394
+
395
+
describe('toObservable', () => {
396
+
it('creates an Observable mirroring the Wonka source', () => {
397
+
const next = vi.fn();
398
+
const complete = vi.fn();
399
+
let pulls = 0;
400
+
let sink: Sink<any> | null = null;
401
+
402
+
const source: Source<any> = _sink => {
403
+
sink = _sink;
404
+
sink(
405
+
start(signal => {
406
+
if (signal === TalkbackKind.Pull) pulls++;
407
+
})
408
+
);
409
+
};
410
+
411
+
Observable.from(observable.toObservable(source) as any).subscribe({
412
+
next,
413
+
complete,
414
+
});
415
+
416
+
expect(pulls).toBe(1);
417
+
sink!(push(0));
418
+
expect(next).toHaveBeenCalledWith(0);
419
+
sink!(push(1));
420
+
expect(next).toHaveBeenCalledWith(1);
421
+
sink!(SignalKind.End);
422
+
expect(complete).toHaveBeenCalled();
423
+
});
424
+
425
+
it('forwards cancellations from the Observable as a talkback', () => {
426
+
let ending = 0;
427
+
const source: Source<any> = sink =>
428
+
sink(
429
+
start(signal => {
430
+
if (signal === TalkbackKind.Close) ending++;
431
+
})
432
+
);
433
+
434
+
const sub = Observable.from(observable.toObservable(source) as any).subscribe({});
435
+
436
+
expect(ending).toBe(0);
437
+
sub.unsubscribe();
438
+
expect(ending).toBe(1);
439
+
});
440
+
});
441
+
442
+
describe('toCallbag', () => {
443
+
it('creates a Callbag mirroring the Wonka source', () => {
444
+
const fn = vi.fn();
445
+
let pulls = 0;
446
+
let sink: Sink<any> | null = null;
447
+
448
+
const source: Source<any> = _sink => {
449
+
sink = _sink;
450
+
sink(
451
+
start(signal => {
452
+
if (signal === TalkbackKind.Pull) pulls++;
453
+
})
454
+
);
455
+
};
456
+
457
+
callbagIterate(fn)(callbag.toCallbag(source));
458
+
459
+
expect(pulls).toBe(1);
460
+
sink!(push(0));
461
+
expect(fn).toHaveBeenCalledWith(0);
462
+
sink!(push(1));
463
+
expect(fn).toHaveBeenCalledWith(1);
464
+
sink!(SignalKind.End);
465
+
});
466
+
467
+
it('forwards cancellations from the Callbag as a talkback', () => {
468
+
let ending = 0;
469
+
const fn = vi.fn();
470
+
471
+
const source: Source<any> = sink =>
472
+
sink(
473
+
start(signal => {
474
+
if (signal === TalkbackKind.Pull) {
475
+
sink(push(0));
476
+
} else {
477
+
ending++;
478
+
}
479
+
})
480
+
);
481
+
482
+
callbagIterate(fn)(callbagTake(1)(callbag.toCallbag(source) as any));
483
+
484
+
expect(fn.mock.calls).toEqual([[0]]);
485
+
expect(ending).toBe(1);
486
+
});
487
+
});
+386
src/__tests__/sources.test.ts
+386
src/__tests__/sources.test.ts
···
1
+
import { describe, it, expect, beforeEach, vi } from 'vitest';
2
+
3
+
import { Source, Sink, Signal, SignalKind, TalkbackKind, TalkbackFn } from '../types';
4
+
import { push, start, talkbackPlaceholder } from '../helpers';
5
+
6
+
import * as sources from '../sources';
7
+
import * as operators from '../operators';
8
+
import * as callbag from '../callbag';
9
+
import * as observable from '../observable';
10
+
11
+
import callbagFromArray from 'callbag-from-iter';
12
+
import Observable from 'zen-observable';
13
+
14
+
const collectSignals = (source: Source<any>, onStart?: (talkbackCb: TalkbackFn) => void) => {
15
+
let talkback = talkbackPlaceholder;
16
+
const signals: Signal<any>[] = [];
17
+
source(signal => {
18
+
signals.push(signal);
19
+
if (signal === SignalKind.End) {
20
+
/*noop*/
21
+
} else if (signal.tag === SignalKind.Start) {
22
+
talkback = signal[0];
23
+
if (onStart) onStart(talkback);
24
+
talkback(TalkbackKind.Pull);
25
+
} else {
26
+
talkback(TalkbackKind.Pull);
27
+
}
28
+
});
29
+
30
+
return signals;
31
+
};
32
+
33
+
/* When a Close talkback signal is sent the source should immediately end */
34
+
const passesActiveClose = (source: Source<any>) => {
35
+
it('stops emitting when a Close talkback signal is received (spec)', () => {
36
+
let talkback: TalkbackFn | null = null;
37
+
const sink: Sink<any> = signal => {
38
+
expect(signal).not.toBe(SignalKind.End);
39
+
expect((signal as any).tag).not.toBe(SignalKind.Push);
40
+
if ((signal as any).tag === SignalKind.Start) {
41
+
(talkback = signal[0])(TalkbackKind.Close);
42
+
}
43
+
};
44
+
source(sink);
45
+
expect(talkback).not.toBe(null);
46
+
});
47
+
};
48
+
49
+
/* All synchronous, cold sources won't send anything unless a Pull signal
50
+
has been received. */
51
+
const passesColdPull = (source: Source<any>) => {
52
+
it('sends nothing when no Pull talkback signal has been sent (spec)', () => {
53
+
let talkback: TalkbackFn | null = null;
54
+
let pushes = 0;
55
+
56
+
const sink: Sink<any> = signal => {
57
+
if (signal === SignalKind.End) {
58
+
/*noop*/
59
+
} else if (signal.tag === SignalKind.Push) {
60
+
pushes++;
61
+
} else {
62
+
talkback = signal[0];
63
+
}
64
+
};
65
+
66
+
source(sink);
67
+
expect(talkback).not.toBe(null);
68
+
expect(pushes).toBe(0);
69
+
70
+
setTimeout(() => {
71
+
expect(pushes).toBe(0);
72
+
talkback!(TalkbackKind.Pull);
73
+
}, 10);
74
+
75
+
vi.runAllTimers();
76
+
expect(pushes).toBe(1);
77
+
});
78
+
};
79
+
80
+
/* All synchronous, cold sources need to use trampoline scheduling to avoid
81
+
recursively sending more and more Push signals which would eventually lead
82
+
to a call stack overflow when too many values are emitted. */
83
+
const passesTrampoline = (source: Source<any>) => {
84
+
it('uses trampoline scheduling instead of recursive push signals (spec)', () => {
85
+
let talkback: TalkbackFn | null = null;
86
+
let pushes = 0;
87
+
88
+
const signals: Signal<any>[] = [];
89
+
const sink: Sink<any> = signal => {
90
+
if (signal === SignalKind.End) {
91
+
signals.push(signal);
92
+
expect(pushes).toBe(2);
93
+
} else if (signal.tag === SignalKind.Push) {
94
+
const lastPushes = ++pushes;
95
+
signals.push(signal);
96
+
talkback!(TalkbackKind.Pull);
97
+
expect(lastPushes).toBe(pushes);
98
+
} else if (signal.tag === SignalKind.Start) {
99
+
(talkback = signal[0])(TalkbackKind.Pull);
100
+
expect(pushes).toBe(2);
101
+
}
102
+
};
103
+
104
+
source(sink);
105
+
expect(signals).toEqual([push(1), push(2), SignalKind.End]);
106
+
});
107
+
};
108
+
109
+
beforeEach(() => {
110
+
vi.useFakeTimers();
111
+
});
112
+
113
+
describe('fromArray', () => {
114
+
passesTrampoline(sources.fromArray([1, 2]));
115
+
passesColdPull(sources.fromArray([0]));
116
+
passesActiveClose(sources.fromArray([0]));
117
+
});
118
+
119
+
describe('fromValue', () => {
120
+
passesColdPull(sources.fromValue(0));
121
+
passesActiveClose(sources.fromValue(0));
122
+
123
+
it('sends a single value and ends', () => {
124
+
expect(collectSignals(sources.fromValue(1))).toEqual([
125
+
start(expect.any(Function)),
126
+
push(1),
127
+
SignalKind.End,
128
+
]);
129
+
});
130
+
});
131
+
132
+
describe('merge', () => {
133
+
const source = operators.merge<any>([sources.fromValue(0), sources.empty]);
134
+
135
+
passesColdPull(source);
136
+
passesActiveClose(source);
137
+
138
+
it('correctly merges two sources where the second is empty', () => {
139
+
const source = operators.merge<any>([sources.fromValue(0), sources.empty]);
140
+
141
+
expect(collectSignals(source)).toEqual([start(expect.any(Function)), push(0), SignalKind.End]);
142
+
});
143
+
144
+
it('correctly merges hot sources', () => {
145
+
const onStart = vi.fn();
146
+
const source = operators.merge<any>([
147
+
operators.onStart(onStart)(sources.never),
148
+
operators.onStart(onStart)(sources.fromArray([1, 2])),
149
+
]);
150
+
151
+
const signals = collectSignals(source);
152
+
expect(onStart).toHaveBeenCalledTimes(2);
153
+
154
+
expect(signals).toEqual([start(expect.any(Function)), push(1), push(2)]);
155
+
});
156
+
157
+
it('correctly merges asynchronous sources', () => {
158
+
vi.useFakeTimers();
159
+
160
+
const onStart = vi.fn();
161
+
const source = operators.merge<any>([
162
+
operators.onStart(onStart)(sources.fromValue(-1)),
163
+
operators.onStart(onStart)(operators.take(2)(sources.interval(50))),
164
+
]);
165
+
166
+
const signals = collectSignals(source);
167
+
vi.advanceTimersByTime(100);
168
+
expect(onStart).toHaveBeenCalledTimes(2);
169
+
170
+
expect(signals).toEqual([
171
+
start(expect.any(Function)),
172
+
push(-1),
173
+
push(0),
174
+
push(1),
175
+
SignalKind.End,
176
+
]);
177
+
});
178
+
});
179
+
180
+
describe('concat', () => {
181
+
const source = operators.concat<any>([sources.fromValue(0), sources.empty]);
182
+
183
+
passesColdPull(source);
184
+
passesActiveClose(source);
185
+
186
+
it('correctly concats two sources where the second is empty', () => {
187
+
const source = operators.concat<any>([sources.fromValue(0), sources.empty]);
188
+
189
+
expect(collectSignals(source)).toEqual([start(expect.any(Function)), push(0), SignalKind.End]);
190
+
});
191
+
});
192
+
193
+
describe('make', () => {
194
+
it('may be used to create async sources', () => {
195
+
const teardown = vi.fn();
196
+
const source = sources.make(observer => {
197
+
setTimeout(() => observer.next(1), 10);
198
+
setTimeout(() => observer.complete(), 20);
199
+
return teardown;
200
+
});
201
+
202
+
const signals = collectSignals(source);
203
+
expect(signals).toEqual([start(expect.any(Function))]);
204
+
vi.runAllTimers();
205
+
206
+
expect(signals).toEqual([start(expect.any(Function)), push(1), SignalKind.End]);
207
+
});
208
+
209
+
it('supports active cancellation', () => {
210
+
const teardown = vi.fn();
211
+
const source = sources.make(() => teardown);
212
+
213
+
const sink: Sink<any> = signal => {
214
+
expect(signal).not.toBe(SignalKind.End);
215
+
expect((signal as any).tag).not.toBe(SignalKind.Push);
216
+
setTimeout(() => signal[0](TalkbackKind.Close));
217
+
};
218
+
219
+
source(sink);
220
+
expect(teardown).not.toHaveBeenCalled();
221
+
vi.runAllTimers();
222
+
expect(teardown).toHaveBeenCalled();
223
+
});
224
+
});
225
+
226
+
describe('makeSubject', () => {
227
+
it('may be used to emit signals programmatically', () => {
228
+
const { source, next, complete } = sources.makeSubject();
229
+
const signals = collectSignals(source);
230
+
231
+
expect(signals).toEqual([start(expect.any(Function))]);
232
+
233
+
next(1);
234
+
235
+
expect(signals).toEqual([start(expect.any(Function)), push(1)]);
236
+
237
+
complete();
238
+
239
+
expect(signals).toEqual([start(expect.any(Function)), push(1), SignalKind.End]);
240
+
});
241
+
242
+
it('ignores signals after complete has been called', () => {
243
+
const { source, next, complete } = sources.makeSubject();
244
+
const signals = collectSignals(source);
245
+
complete();
246
+
247
+
expect(signals).toEqual([start(expect.any(Function)), SignalKind.End]);
248
+
249
+
next(1);
250
+
complete();
251
+
expect(signals.length).toBe(2);
252
+
});
253
+
});
254
+
255
+
describe('never', () => {
256
+
it('emits nothing and ends immediately', () => {
257
+
const signals = collectSignals(sources.never);
258
+
expect(signals).toEqual([start(expect.any(Function))]);
259
+
});
260
+
});
261
+
262
+
describe('empty', () => {
263
+
it('emits nothing and ends immediately', () => {
264
+
const signals = collectSignals(sources.empty);
265
+
266
+
expect(signals).toEqual([start(expect.any(Function)), SignalKind.End]);
267
+
});
268
+
});
269
+
270
+
describe('fromPromise', () => {
271
+
passesActiveClose(sources.fromPromise(Promise.resolve(null)));
272
+
273
+
it('emits a value when the promise resolves', async () => {
274
+
const promise = Promise.resolve(1);
275
+
const signals = collectSignals(sources.fromPromise(promise));
276
+
277
+
expect(signals).toEqual([start(expect.any(Function))]);
278
+
279
+
await Promise.resolve();
280
+
await promise;
281
+
await Promise.resolve();
282
+
283
+
expect(signals).toEqual([start(expect.any(Function)), push(1), SignalKind.End]);
284
+
});
285
+
});
286
+
287
+
describe('fromObservable', () => {
288
+
beforeEach(() => {
289
+
vi.useRealTimers();
290
+
});
291
+
292
+
it('converts an Observable to a Wonka source', async () => {
293
+
const source = observable.fromObservable(Observable.from([1, 2]));
294
+
const signals = collectSignals(source);
295
+
296
+
await new Promise(resolve => setTimeout(resolve));
297
+
298
+
expect(signals).toEqual([start(expect.any(Function)), push(1), push(2), SignalKind.End]);
299
+
});
300
+
301
+
it('supports cancellation on converted Observables', async () => {
302
+
const source = observable.fromObservable(Observable.from([1, 2]));
303
+
const signals = collectSignals(source, talkback => {
304
+
talkback(TalkbackKind.Close);
305
+
});
306
+
307
+
await new Promise(resolve => setTimeout(resolve));
308
+
309
+
expect(signals).toEqual([start(expect.any(Function))]);
310
+
});
311
+
});
312
+
313
+
describe('fromCallbag', () => {
314
+
it('converts a Callbag to a Wonka source', () => {
315
+
const source = callbag.fromCallbag(callbagFromArray([1, 2]) as any);
316
+
const signals = collectSignals(source);
317
+
318
+
expect(signals).toEqual([start(expect.any(Function)), push(1), push(2), SignalKind.End]);
319
+
});
320
+
321
+
it('supports cancellation on converted Observables', () => {
322
+
const source = callbag.fromCallbag(callbagFromArray([1, 2]) as any);
323
+
const signals = collectSignals(source, talkback => {
324
+
talkback(TalkbackKind.Close);
325
+
});
326
+
327
+
expect(signals).toEqual([start(expect.any(Function))]);
328
+
});
329
+
});
330
+
331
+
describe('interval', () => {
332
+
it('emits Push signals until Cancel is sent', () => {
333
+
let pushes = 0;
334
+
let talkback: TalkbackFn | null = null;
335
+
336
+
const sink: Sink<any> = signal => {
337
+
if (signal === SignalKind.End) {
338
+
/*noop*/
339
+
} else if (signal.tag === SignalKind.Push) {
340
+
pushes++;
341
+
} else {
342
+
talkback = signal[0];
343
+
}
344
+
};
345
+
346
+
sources.interval(100)(sink);
347
+
expect(talkback).not.toBe(null);
348
+
expect(pushes).toBe(0);
349
+
350
+
vi.advanceTimersByTime(100);
351
+
expect(pushes).toBe(1);
352
+
vi.advanceTimersByTime(100);
353
+
expect(pushes).toBe(2);
354
+
355
+
talkback!(TalkbackKind.Close);
356
+
vi.advanceTimersByTime(100);
357
+
expect(pushes).toBe(2);
358
+
});
359
+
});
360
+
361
+
describe('fromDomEvent', () => {
362
+
it('emits Push signals for events on a DOM element', () => {
363
+
let talkback: TalkbackFn | null = null;
364
+
365
+
const element = {
366
+
addEventListener: vi.fn(),
367
+
removeEventListener: vi.fn(),
368
+
};
369
+
370
+
const sink: Sink<any> = signal => {
371
+
expect(signal).not.toBe(SignalKind.End);
372
+
if ((signal as any).tag === SignalKind.Start) talkback = signal[0];
373
+
};
374
+
375
+
sources.fromDomEvent(element as any, 'click')(sink);
376
+
377
+
expect(element.addEventListener).toHaveBeenCalledWith('click', expect.any(Function));
378
+
expect(element.removeEventListener).not.toHaveBeenCalled();
379
+
const listener = element.addEventListener.mock.calls[0][1];
380
+
381
+
listener(1);
382
+
listener(2);
383
+
talkback!(TalkbackKind.Close);
384
+
expect(element.removeEventListener).toHaveBeenCalledWith('click', listener);
385
+
});
386
+
});
+64
src/callbag.ts
+64
src/callbag.ts
···
1
+
import { Source, SignalKind } from './types';
2
+
import { push, start } from './helpers';
3
+
4
+
/** A definition of the Callbag type as per its specification.
5
+
* @see {@link https://github.com/callbag/callbag} for the Callbag specification.
6
+
*/
7
+
interface Callbag<I, O> {
8
+
(t: 0, d: Callbag<O, I>): void;
9
+
(t: 1, d: I): void;
10
+
(t: 2, d?: any): void;
11
+
}
12
+
13
+
/** Converts a Callbag to a {@link Source}.
14
+
* @param callbag - The {@link Callbag} object that will be converted.
15
+
* @returns A {@link Source} wrapping the passed Callbag.
16
+
*
17
+
* @remarks
18
+
* This converts a Callbag to a {@link Source}. When this Source receives a {@link Sink} and
19
+
* the subscription starts, internally, it'll subscribe to the passed Callbag, passing through
20
+
* all of its emitted values.
21
+
*/
22
+
export function fromCallbag<T>(callbag: Callbag<any, T>): Source<T> {
23
+
return sink => {
24
+
callbag(0, (signal: number, data: any) => {
25
+
if (signal === 0) {
26
+
sink(
27
+
start(signal => {
28
+
data(signal + 1);
29
+
})
30
+
);
31
+
} else if (signal === 1) {
32
+
sink(push(data));
33
+
} else {
34
+
sink(SignalKind.End);
35
+
}
36
+
});
37
+
};
38
+
}
39
+
40
+
/** Converts a {@link Source} to a Callbag.
41
+
* @param source - The {@link Source} that will be converted.
42
+
* @returns A {@link Callbag} wrapping the passed Source.
43
+
*
44
+
* @remarks
45
+
* This converts a {@link Source} to a {@link Callbag}. When this Callbag is subscribed to, it
46
+
* internally subscribes to the Wonka Source and pulls new values.
47
+
*/
48
+
export function toCallbag<T>(source: Source<T>): Callbag<any, T> {
49
+
return (signal: number, sink: any) => {
50
+
if (signal === 0) {
51
+
source(signal => {
52
+
if (signal === SignalKind.End) {
53
+
sink(2);
54
+
} else if (signal.tag === SignalKind.Start) {
55
+
sink(0, (num: number) => {
56
+
if (num < 3) signal[0](num - 1);
57
+
});
58
+
} else {
59
+
sink(1, signal[0]);
60
+
}
61
+
});
62
+
}
63
+
};
64
+
}
+137
src/combine.ts
+137
src/combine.ts
···
1
+
import { Source, TypeOfSource, SignalKind, TalkbackKind, TalkbackFn } from './types';
2
+
import { push, start, talkbackPlaceholder } from './helpers';
3
+
4
+
type TypeOfSourceArray<T extends readonly [...any[]]> = T extends [infer Head, ...infer Tail]
5
+
? [TypeOfSource<Head>, ...TypeOfSourceArray<Tail>]
6
+
: [];
7
+
8
+
/** Combines the latest values of several sources into a Source issuing either tuple or dictionary
9
+
* values.
10
+
*
11
+
* @param sources - Either an array or dictionary object of Sources.
12
+
* @returns A {@link Source} issuing a zipped value whenever any input Source updates.
13
+
*
14
+
* @remarks
15
+
* `zip` combines several {@link Source | Sources}. The resulting Source will issue its first value
16
+
* once all input Sources have at least issued one value, and will subsequently issue a new value
17
+
* each time any of the Sources emits a new value.
18
+
*
19
+
* Depending on whether an array or dictionary object of Sources is passed to `zip`, its emitted
20
+
* values will be arrays or dictionary objects of the Sources' values.
21
+
*
22
+
* @example
23
+
* An example of passing a dictionary object to `zip`. If an array is passed, the resulting
24
+
* values will output arrays of the sources' values instead.
25
+
*
26
+
* ```ts
27
+
* pipe(
28
+
* zip({
29
+
* x: fromValue(1),
30
+
* y: fromArray([2, 3]),
31
+
* }),
32
+
* subscribe(result => {
33
+
* // logs { x: 1, y: 2 } then { x: 1, y: 3 }
34
+
* console.log(result);
35
+
* })
36
+
* );
37
+
* ```
38
+
*/
39
+
interface zip {
40
+
<Sources extends readonly [...Source<any>[]]>(sources: [...Sources]): Source<
41
+
TypeOfSourceArray<Sources>
42
+
>;
43
+
44
+
<Sources extends { [prop: string]: Source<any> }>(sources: Sources): Source<{
45
+
[Property in keyof Sources]: TypeOfSource<Sources[Property]>;
46
+
}>;
47
+
}
48
+
49
+
function zip<T>(sources: Source<T>[] | Record<string, Source<T>>): Source<T[] | Record<string, T>> {
50
+
const size = Object.keys(sources).length;
51
+
return sink => {
52
+
const filled: Set<string | number> = new Set();
53
+
54
+
const talkbacks: TalkbackFn[] | Record<string, TalkbackFn | void> = Array.isArray(sources)
55
+
? new Array(size).fill(talkbackPlaceholder)
56
+
: {};
57
+
const buffer: T[] | Record<string, T> = Array.isArray(sources) ? new Array(size) : {};
58
+
59
+
let gotBuffer = false;
60
+
let gotSignal = false;
61
+
let ended = false;
62
+
let endCount = 0;
63
+
64
+
for (const key in sources) {
65
+
(sources[key] as Source<T>)(signal => {
66
+
if (signal === SignalKind.End) {
67
+
if (endCount >= size - 1) {
68
+
ended = true;
69
+
sink(SignalKind.End);
70
+
} else {
71
+
endCount++;
72
+
}
73
+
} else if (signal.tag === SignalKind.Start) {
74
+
talkbacks[key] = signal[0];
75
+
} else if (!ended) {
76
+
buffer[key] = signal[0];
77
+
filled.add(key);
78
+
if (!gotBuffer && filled.size < size) {
79
+
if (!gotSignal) {
80
+
for (const key in sources)
81
+
if (!filled.has(key)) (talkbacks[key] || talkbackPlaceholder)(TalkbackKind.Pull);
82
+
} else {
83
+
gotSignal = false;
84
+
}
85
+
} else {
86
+
gotBuffer = true;
87
+
gotSignal = false;
88
+
sink(push(Array.isArray(buffer) ? buffer.slice() : { ...buffer }));
89
+
}
90
+
}
91
+
});
92
+
}
93
+
sink(
94
+
start(signal => {
95
+
if (ended) {
96
+
/*noop*/
97
+
} else if (signal === TalkbackKind.Close) {
98
+
ended = true;
99
+
for (const key in talkbacks) talkbacks[key](TalkbackKind.Close);
100
+
} else if (!gotSignal) {
101
+
gotSignal = true;
102
+
for (const key in talkbacks) talkbacks[key](TalkbackKind.Pull);
103
+
}
104
+
})
105
+
);
106
+
};
107
+
}
108
+
109
+
export { zip };
110
+
111
+
/** Combines the latest values of all passed sources into a Source issuing tuple values.
112
+
*
113
+
* @see {@link zip | `zip`} which this helper wraps and uses.
114
+
* @param sources - A variadic list of {@link Source} parameters.
115
+
* @returns A {@link Source} issuing a zipped value whenever any input Source updates.
116
+
*
117
+
* @remarks
118
+
* `combine` takes one or more {@link Source | Sources} as arguments. Once all input Sources have at
119
+
* least issued one value it will issue an array of all of the Sources' values. Subsequently, it
120
+
* will issue a new array value whenever any of the Sources update.
121
+
*
122
+
* @example
123
+
*
124
+
* ```ts
125
+
* pipe(
126
+
* combine(fromValue(1), fromValue(2)),
127
+
* subscribe(result => {
128
+
* console.log(result); // logs [1, 2]
129
+
* })
130
+
* );
131
+
* ```
132
+
*/
133
+
export function combine<Sources extends Source<any>[]>(
134
+
...sources: Sources
135
+
): Source<TypeOfSourceArray<Sources>> {
136
+
return zip(sources) as Source<any>;
137
+
}
+62
src/helpers.ts
+62
src/helpers.ts
···
1
+
import { TalkbackFn, TeardownFn, Start, Push, SignalKind } from './types';
2
+
3
+
/** Placeholder {@link TeardownFn | teardown functions} that's a no-op.
4
+
* @see {@link TeardownFn} for the definition and usage of teardowns.
5
+
* @internal
6
+
*/
7
+
export const teardownPlaceholder: TeardownFn = () => {
8
+
/*noop*/
9
+
};
10
+
11
+
/** Placeholder {@link TalkbackFn | talkback function} that's a no-op.
12
+
* @privateRemarks
13
+
* This is frequently used in the codebase as a no-op initializer value for talkback functions in
14
+
* the implementation of {@link Operator | Operators}. This is cheaper than initializing the
15
+
* variables of talkbacks to `undefined` or `null` and performing an extra check before calling
16
+
* them. Since the {@link Start | Start signal} is assumed to come first and carry a talkback, we can
17
+
* use this to our advantage and use a no-op placeholder before {@link Start} is received.
18
+
*
19
+
* @internal
20
+
*/
21
+
export const talkbackPlaceholder: TalkbackFn = teardownPlaceholder;
22
+
23
+
/** Wraps the passed {@link TalkbackFn | talkback function} in a {@link Start | Start signal}.
24
+
* @internal
25
+
*/
26
+
export function start<T>(talkback: TalkbackFn): Start<T> {
27
+
return {
28
+
tag: SignalKind.Start,
29
+
0: talkback,
30
+
} as Start<T>;
31
+
}
32
+
33
+
/** Wraps the passed value in a {@link Push | Push signal}.
34
+
* @internal
35
+
*/
36
+
export function push<T>(value: T): Push<T> {
37
+
return {
38
+
tag: SignalKind.Push,
39
+
0: value,
40
+
} as Push<T>;
41
+
}
42
+
43
+
/** Returns the well-known symbol specifying the default AsyncIterator.
44
+
* @internal
45
+
*/
46
+
export const asyncIteratorSymbol = (): typeof Symbol.asyncIterator =>
47
+
(typeof Symbol === 'function' && Symbol.asyncIterator) || ('@@asyncIterator' as any);
48
+
49
+
/** Returns the well-known symbol specifying the default ES Observable.
50
+
* @privateRemarks
51
+
* This symbol is used to mark an object as a default ES Observable. By the specification, an object
52
+
* that abides by the default Observable implementation must carry a method set to this well-known
53
+
* symbol that returns the Observable implementation. It's common for this object to be an
54
+
* Observable itself and return itself on this method.
55
+
*
56
+
* @see {@link https://github.com/0no-co/wonka/issues/122} for notes on the intercompatibility
57
+
* between Observable implementations.
58
+
*
59
+
* @internal
60
+
*/
61
+
export const observableSymbol = (): typeof Symbol.observable =>
62
+
(typeof Symbol === 'function' && Symbol.observable) || ('@@observable' as any);
-4
src/index.d.ts
-4
src/index.d.ts
+31
src/index.ts
+31
src/index.ts
···
1
+
/**
2
+
* A tiny but capable push & pull stream library for TypeScript and Flow.
3
+
*
4
+
* @remarks
5
+
* Wonka is a lightweight iterable and observable library and exposes a set of helpers to create
6
+
* streams, which are sources emitting multiple values, which allow you to create, transform, and
7
+
* consume event streams or iterable sets of data.
8
+
*
9
+
* It's loosely based on the Callbag spec: {@link https://github.com/callbag/callbag}
10
+
* @packageDocumentation
11
+
*/
12
+
13
+
export type {
14
+
TeardownFn,
15
+
Signal,
16
+
Sink,
17
+
Source,
18
+
Operator,
19
+
TypeOfSource,
20
+
Subscription,
21
+
Observer,
22
+
Subject,
23
+
} from './types';
24
+
25
+
export * from './sources';
26
+
export * from './operators';
27
+
export * from './sinks';
28
+
export * from './combine';
29
+
export * from './observable';
30
+
export * from './callbag';
31
+
export * from './pipe';
+207
src/observable.ts
+207
src/observable.ts
···
1
+
import { Source, SignalKind, TalkbackKind } from './types';
2
+
import { push, start, talkbackPlaceholder, observableSymbol } from './helpers';
3
+
4
+
// NOTE: This must be placed in an exported file for `rollup-plugin-dts`
5
+
// to include it in output typings files
6
+
declare global {
7
+
interface SymbolConstructor {
8
+
readonly observable: symbol;
9
+
}
10
+
}
11
+
12
+
/** A definition of the ES Observable Subscription type that is returned by
13
+
* {@link Observable.subscribe}
14
+
*
15
+
* @remarks
16
+
* The Subscription in ES Observables is a handle that is held while the Observable is actively
17
+
* streaming values. As such, it's used to indicate with {@link ObservableSubscription.closed}
18
+
* whether it's active, and {@link ObservableSubscription.unsubscribe} may be used to cancel the
19
+
* ongoing subscription and end the {@link Observable} early.
20
+
*
21
+
* @see {@link https://github.com/tc39/proposal-observable} for the ES Observable specification.
22
+
*/
23
+
interface ObservableSubscription {
24
+
/** A boolean flag indicating whether the subscription is closed.
25
+
* @remarks
26
+
* When `true`, the subscription will not issue new values to the {@link ObservableObserver} and
27
+
* has terminated. No new values are expected.
28
+
*
29
+
* @readonly
30
+
*/
31
+
closed: boolean;
32
+
/** Cancels the subscription.
33
+
* @remarks
34
+
* This cancels the ongoing subscription and the {@link ObservableObserver}'s callbacks will
35
+
* subsequently not be called at all. The subscription will be terminated and become inactive.
36
+
*/
37
+
unsubscribe(): void;
38
+
}
39
+
40
+
/** A definition of the ES Observable Observer type that is used to receive data from an
41
+
* {@link Observable}.
42
+
*
43
+
* @remarks
44
+
* The Observer in ES Observables is supplied to {@link Observable.subscribe} to receive events from
45
+
* an {@link Observable} as it issues them.
46
+
*
47
+
* @see {@link https://github.com/tc39/proposal-observable#observer} for the ES Observable
48
+
* specification of an Observer.
49
+
*/
50
+
interface ObservableObserver<T> {
51
+
/** Callback for the Observable issuing new values.
52
+
* @param value - The value that the {@link Observable} is sending.
53
+
*/
54
+
next(value: T): void;
55
+
/** Callback for the Observable encountering an error, terminating it.
56
+
* @param error - The error that the {@link Observable} has encountered.
57
+
*/
58
+
error?(error: any): void;
59
+
/** Callback for the Observable ending, after all values have been issued. */
60
+
complete?(): void;
61
+
}
62
+
63
+
/** A looser definition of ES Observable-like types that is used for interoperability.
64
+
* @remarks
65
+
* The Observable is often used by multiple libraries supporting or creating streams to provide
66
+
* interoperability for push-based streams. When converting from an Observable to a {@link Source},
67
+
* this looser type is accepted as an input.
68
+
*
69
+
* @see {@link https://github.com/tc39/proposal-observable} for the ES Observable specification.
70
+
* @see {@link Observable} for the full ES Observable type.
71
+
*/
72
+
interface ObservableLike<T> {
73
+
/**
74
+
* Subscribes to new signals from an {@link Observable} via callbacks.
75
+
* @param observer - An object containing callbacks for the various events of an Observable.
76
+
* @returns Subscription handle of type {@link ObservableSubscription}.
77
+
*
78
+
* @see {@link ObservableObserver} for the callbacks in an object that are called as Observables
79
+
* issue events.
80
+
*/
81
+
subscribe(observer: ObservableObserver<T>): { unsubscribe(): void };
82
+
83
+
/** The well-known symbol specifying the default ES Observable for an object. */
84
+
[Symbol.observable]?(): Observable<T>;
85
+
}
86
+
87
+
/** An ES Observable type that is a de-facto standard for push-based data sources across the JS
88
+
* ecosystem.
89
+
*
90
+
* @remarks
91
+
* The Observable is often used by multiple libraries supporting or creating streams to provide
92
+
* interoperability for push-based streams. As Wonka's {@link Source | Sources} are similar in
93
+
* functionality to Observables, it provides utilities to cleanly convert to and from Observables.
94
+
*
95
+
* @see {@link https://github.com/tc39/proposal-observable} for the ES Observable specification.
96
+
*/
97
+
interface Observable<T> {
98
+
/** Subscribes to new signals from an {@link Observable} via callbacks.
99
+
* @param observer - An object containing callbacks for the various events of an Observable.
100
+
* @returns Subscription handle of type {@link ObservableSubscription}.
101
+
*
102
+
* @see {@link ObservableObserver} for the callbacks in an object that are called as Observables
103
+
* issue events.
104
+
*/
105
+
subscribe(observer: ObservableObserver<T>): ObservableSubscription;
106
+
107
+
/** Subscribes to new signals from an {@link Observable} via callbacks.
108
+
* @param onNext - Callback for the Observable issuing new values.
109
+
* @param onError - Callback for the Observable encountering an error, terminating it.
110
+
* @param onComplete - Callback for the Observable ending, after all values have been issued.
111
+
* @returns Subscription handle of type {@link ObservableSubscription}.
112
+
*/
113
+
subscribe(
114
+
onNext: (value: T) => any,
115
+
onError?: (error: any) => any,
116
+
onComplete?: () => any
117
+
): ObservableSubscription;
118
+
119
+
/** The well-known symbol specifying the default ES Observable for an object. */
120
+
[Symbol.observable](): Observable<T>;
121
+
}
122
+
123
+
/** Converts an ES Observable to a {@link Source}.
124
+
* @param input - The {@link ObservableLike} object that will be converted.
125
+
* @returns A {@link Source} wrapping the passed Observable.
126
+
*
127
+
* @remarks
128
+
* This converts an ES Observable to a {@link Source}. When this Source receives a {@link Sink} and
129
+
* the subscription starts, internally, it'll subscribe to the passed Observable, passing through
130
+
* all of the Observable's values. As such, this utility provides intercompatibility converting from
131
+
* standard Observables to Wonka Sources.
132
+
*
133
+
* @throws
134
+
* When the passed ES Observable throws, the error is simply re-thrown as {@link Source} does
135
+
* not support or expect errors to be handled by streams.
136
+
*/
137
+
export function fromObservable<T>(input: ObservableLike<T>): Source<T> {
138
+
return sink => {
139
+
const subscription = (
140
+
input[observableSymbol()] ? input[observableSymbol()]!() : input
141
+
).subscribe({
142
+
next(value: T) {
143
+
sink(push(value));
144
+
},
145
+
complete() {
146
+
sink(SignalKind.End);
147
+
},
148
+
error(error) {
149
+
throw error;
150
+
},
151
+
});
152
+
sink(
153
+
start(signal => {
154
+
if (signal === TalkbackKind.Close) subscription.unsubscribe();
155
+
})
156
+
);
157
+
};
158
+
}
159
+
160
+
/** Converts a {@link Source} to an ES Observable.
161
+
* @param source - The {@link Source} that will be converted.
162
+
* @returns An {@link Observable} wrapping the passed Source.
163
+
*
164
+
* @remarks
165
+
* This converts a {@link Source} to an {@link Observable}. When this Observable is subscribed to, it
166
+
* internally subscribes to the Wonka Source and pulls new values. As such, this utility provides
167
+
* intercompatibility converting from Wonka Sources to standard ES Observables.
168
+
*/
169
+
export function toObservable<T>(source: Source<T>): Observable<T> {
170
+
return {
171
+
subscribe(
172
+
next: ObservableObserver<T> | ((value: T) => any),
173
+
error?: (error: any) => any | undefined,
174
+
complete?: () => any | undefined
175
+
) {
176
+
const observer: ObservableObserver<T> =
177
+
typeof next == 'object' ? next : { next, error, complete };
178
+
let talkback = talkbackPlaceholder;
179
+
let ended = false;
180
+
source(signal => {
181
+
if (ended) {
182
+
/*noop*/
183
+
} else if (signal === SignalKind.End) {
184
+
ended = true;
185
+
if (observer.complete) observer.complete();
186
+
} else if (signal.tag === SignalKind.Start) {
187
+
(talkback = signal[0])(TalkbackKind.Pull);
188
+
} else {
189
+
observer.next(signal[0]);
190
+
talkback(TalkbackKind.Pull);
191
+
}
192
+
});
193
+
const subscription = {
194
+
closed: false,
195
+
unsubscribe() {
196
+
subscription.closed = true;
197
+
ended = true;
198
+
talkback(TalkbackKind.Close);
199
+
},
200
+
};
201
+
return subscription;
202
+
},
203
+
[observableSymbol()]() {
204
+
return this;
205
+
},
206
+
};
207
+
}
-3
src/operators/wonka_operator_combine.d.ts
-3
src/operators/wonka_operator_combine.d.ts
-86
src/operators/wonka_operator_combine.re
-86
src/operators/wonka_operator_combine.re
···
1
-
open Wonka_types;
2
-
open Wonka_helpers;
3
-
4
-
type combineStateT('a, 'b) = {
5
-
mutable talkbackA: (.talkbackT) => unit,
6
-
mutable talkbackB: (.talkbackT) => unit,
7
-
mutable lastValA: option('a),
8
-
mutable lastValB: option('b),
9
-
mutable gotSignal: bool,
10
-
mutable endCounter: int,
11
-
mutable ended: bool,
12
-
};
13
-
14
-
let combine = sourceA => curry(sourceB => curry(sink => {
15
-
let state = {
16
-
talkbackA: talkbackPlaceholder,
17
-
talkbackB: talkbackPlaceholder,
18
-
lastValA: None,
19
-
lastValB: None,
20
-
gotSignal: false,
21
-
endCounter: 0,
22
-
ended: false
23
-
};
24
-
25
-
sourceA((.signal) => {
26
-
switch (signal, state.lastValB) {
27
-
| (Start(tb), _) => state.talkbackA = tb
28
-
| (Push(a), None) => {
29
-
state.lastValA = Some(a);
30
-
state.gotSignal = false;
31
-
}
32
-
| (Push(a), Some(b)) when !state.ended => {
33
-
state.lastValA = Some(a);
34
-
state.gotSignal = false;
35
-
sink(.Push((a, b)));
36
-
}
37
-
| (End, _) when state.endCounter < 1 =>
38
-
state.endCounter = state.endCounter + 1
39
-
| (End, _) when !state.ended => {
40
-
state.ended = true;
41
-
sink(.End);
42
-
}
43
-
| _ => ()
44
-
}
45
-
});
46
-
47
-
sourceB((.signal) => {
48
-
switch (signal, state.lastValA) {
49
-
| (Start(tb), _) => state.talkbackB = tb
50
-
| (Push(b), None) => {
51
-
state.lastValB = Some(b);
52
-
state.gotSignal = false;
53
-
}
54
-
| (Push(b), Some(a)) when !state.ended => {
55
-
state.lastValB = Some(b);
56
-
state.gotSignal = false;
57
-
sink(.Push((a, b)));
58
-
}
59
-
| (End, _) when state.endCounter < 1 =>
60
-
state.endCounter = state.endCounter + 1
61
-
| (End, _) when !state.ended => {
62
-
state.ended = true;
63
-
sink(.End);
64
-
}
65
-
| _ => ()
66
-
}
67
-
});
68
-
69
-
sink(.Start((.signal) => {
70
-
if (!state.ended) {
71
-
switch (signal) {
72
-
| Close => {
73
-
state.ended = true;
74
-
state.talkbackA(.Close);
75
-
state.talkbackB(.Close);
76
-
}
77
-
| Pull when !state.gotSignal => {
78
-
state.gotSignal = true;
79
-
state.talkbackA(.signal);
80
-
state.talkbackB(.signal);
81
-
}
82
-
| Pull => ()
83
-
}
84
-
};
85
-
}));
86
-
}));
-3
src/operators/wonka_operator_combine.rei
-3
src/operators/wonka_operator_combine.rei
-5
src/operators/wonka_operator_concatMap.d.ts
-5
src/operators/wonka_operator_concatMap.d.ts
-96
src/operators/wonka_operator_concatMap.re
-96
src/operators/wonka_operator_concatMap.re
···
1
-
open Wonka_types;
2
-
open Wonka_helpers;
3
-
4
-
type concatMapStateT('a) = {
5
-
inputQueue: Rebel.MutableQueue.t('a),
6
-
mutable outerTalkback: (.talkbackT) => unit,
7
-
mutable innerTalkback: (.talkbackT) => unit,
8
-
mutable innerActive: bool,
9
-
mutable closed: bool,
10
-
mutable ended: bool
11
-
};
12
-
13
-
let concatMap = f => curry(source => curry(sink => {
14
-
let state: concatMapStateT('a) = {
15
-
inputQueue: Rebel.MutableQueue.make(),
16
-
outerTalkback: talkbackPlaceholder,
17
-
innerTalkback: talkbackPlaceholder,
18
-
innerActive: false,
19
-
closed: false,
20
-
ended: false
21
-
};
22
-
23
-
let rec applyInnerSource = innerSource =>
24
-
innerSource((.signal) => {
25
-
switch (signal) {
26
-
| End => {
27
-
state.innerActive = false;
28
-
state.innerTalkback = talkbackPlaceholder;
29
-
30
-
switch (Rebel.MutableQueue.pop(state.inputQueue)) {
31
-
| Some(input) => applyInnerSource(f(.input))
32
-
| None when state.ended => sink(.End)
33
-
| None => ()
34
-
};
35
-
}
36
-
| Start(tb) => {
37
-
state.innerActive = true;
38
-
state.innerTalkback = tb;
39
-
tb(.Pull);
40
-
}
41
-
| Push(x) when !state.closed => {
42
-
sink(.Push(x));
43
-
state.innerTalkback(.Pull);
44
-
}
45
-
| Push(_) => ()
46
-
}
47
-
});
48
-
49
-
source((.signal) => {
50
-
switch (signal) {
51
-
| End when !state.ended => {
52
-
state.ended = true;
53
-
if (!state.innerActive && Rebel.MutableQueue.isEmpty(state.inputQueue)) {
54
-
sink(.End);
55
-
}
56
-
}
57
-
| End => ()
58
-
| Start(tb) => {
59
-
state.outerTalkback = tb;
60
-
tb(.Pull);
61
-
}
62
-
| Push(x) when !state.ended => {
63
-
if (state.innerActive) {
64
-
Rebel.MutableQueue.add(state.inputQueue, x);
65
-
} else {
66
-
applyInnerSource(f(.x));
67
-
}
68
-
69
-
state.outerTalkback(.Pull);
70
-
}
71
-
| Push(_) => ()
72
-
}
73
-
});
74
-
75
-
sink(.Start((.signal) => {
76
-
switch (signal) {
77
-
| Pull => if (!state.ended) state.innerTalkback(.Pull)
78
-
| Close => {
79
-
state.innerTalkback(.Close);
80
-
if (!state.ended) {
81
-
state.ended = true;
82
-
state.closed = true;
83
-
state.outerTalkback(.Close);
84
-
state.innerTalkback = talkbackPlaceholder;
85
-
}
86
-
}
87
-
}
88
-
}));
89
-
}));
90
-
91
-
let concatAll = source => concatMap((.x) => x, source);
92
-
93
-
let concat = sources => {
94
-
open Wonka_source_fromArray;
95
-
concatMap((.x) => x, fromArray(sources));
96
-
};
-5
src/operators/wonka_operator_concatMap.rei
-5
src/operators/wonka_operator_concatMap.rei
-3
src/operators/wonka_operator_filter.d.ts
-3
src/operators/wonka_operator_filter.d.ts
-11
src/operators/wonka_operator_filter.re
-11
src/operators/wonka_operator_filter.re
-3
src/operators/wonka_operator_filter.rei
-3
src/operators/wonka_operator_filter.rei
-3
src/operators/wonka_operator_map.d.ts
-3
src/operators/wonka_operator_map.d.ts
-11
src/operators/wonka_operator_map.re
-11
src/operators/wonka_operator_map.re
-3
src/operators/wonka_operator_map.rei
-3
src/operators/wonka_operator_map.rei
-6
src/operators/wonka_operator_mergeMap.d.ts
-6
src/operators/wonka_operator_mergeMap.d.ts
···
1
-
import { Source, Operator } from '../wonka_types';
2
-
3
-
export const mergeMap: <A, B>(f: (value: A) => Source<B>) => Operator<A, B>;
4
-
export const merge: <A>(sources: Array<Source<A>>) => Source<A>;
5
-
export const mergeAll: <A>(source: Source<Source<A>>) => Source<A>;
6
-
export const flatten: <A>(source: Source<Source<A>>) => Source<A>;
-87
src/operators/wonka_operator_mergeMap.re
-87
src/operators/wonka_operator_mergeMap.re
···
1
-
open Wonka_types;
2
-
open Wonka_helpers;
3
-
4
-
type mergeMapStateT = {
5
-
mutable outerTalkback: (.talkbackT) => unit,
6
-
mutable innerTalkbacks: Rebel.Array.t((.talkbackT) => unit),
7
-
mutable ended: bool
8
-
};
9
-
10
-
let mergeMap = f => curry(source => curry(sink => {
11
-
let state: mergeMapStateT = {
12
-
outerTalkback: talkbackPlaceholder,
13
-
innerTalkbacks: Rebel.Array.makeEmpty(),
14
-
ended: false
15
-
};
16
-
17
-
let applyInnerSource = innerSource => {
18
-
let talkback = ref(talkbackPlaceholder);
19
-
20
-
innerSource((.signal) => {
21
-
switch (signal) {
22
-
| End => {
23
-
state.innerTalkbacks = Rebel.Array.filter(state.innerTalkbacks, x => x !== talkback^);
24
-
if (state.ended && Rebel.Array.size(state.innerTalkbacks) === 0) {
25
-
sink(.End);
26
-
}
27
-
}
28
-
| Start(tb) => {
29
-
talkback := tb;
30
-
state.innerTalkbacks = Rebel.Array.append(state.innerTalkbacks, tb);
31
-
tb(.Pull);
32
-
}
33
-
| Push(x) when Rebel.Array.size(state.innerTalkbacks) !== 0 => {
34
-
sink(.Push(x));
35
-
talkback^(.Pull);
36
-
}
37
-
| Push(_) => ()
38
-
}
39
-
});
40
-
};
41
-
42
-
source((.signal) => {
43
-
switch (signal) {
44
-
| End when !state.ended => {
45
-
state.ended = true;
46
-
if (Rebel.Array.size(state.innerTalkbacks) === 0) {
47
-
sink(.End);
48
-
}
49
-
}
50
-
| End => ()
51
-
| Start(tb) => {
52
-
state.outerTalkback = tb;
53
-
tb(.Pull);
54
-
}
55
-
| Push(x) when !state.ended => {
56
-
applyInnerSource(f(.x));
57
-
state.outerTalkback(.Pull);
58
-
}
59
-
| Push(_) => ()
60
-
}
61
-
});
62
-
63
-
sink(.Start((.signal) => {
64
-
switch (signal) {
65
-
| Close => {
66
-
Rebel.Array.forEach(state.innerTalkbacks, talkback => talkback(.Close));
67
-
if (!state.ended) {
68
-
state.ended = true;
69
-
state.outerTalkback(.Close);
70
-
Rebel.Array.forEach(state.innerTalkbacks, talkback => talkback(.Close));
71
-
state.innerTalkbacks = Rebel.Array.makeEmpty();
72
-
}
73
-
}
74
-
| Pull when !state.ended =>
75
-
Rebel.Array.forEach(state.innerTalkbacks, talkback => talkback(.Pull));
76
-
| Pull => ()
77
-
}
78
-
}));
79
-
}));
80
-
81
-
let merge = sources => {
82
-
open Wonka_source_fromArray;
83
-
mergeMap((.x) => x, fromArray(sources));
84
-
};
85
-
86
-
let mergeAll = source => mergeMap((.x) => x, source);
87
-
let flatten = mergeAll;
-6
src/operators/wonka_operator_mergeMap.rei
-6
src/operators/wonka_operator_mergeMap.rei
-3
src/operators/wonka_operator_scan.d.ts
-3
src/operators/wonka_operator_scan.d.ts
-16
src/operators/wonka_operator_scan.re
-16
src/operators/wonka_operator_scan.re
···
1
-
open Wonka_types;
2
-
3
-
let scan = (f, seed) => curry(source => curry(sink => {
4
-
let acc = ref(seed);
5
-
6
-
source((.signal) => sink(.
7
-
switch (signal) {
8
-
| Push(x) => {
9
-
acc := f(.acc^, x);
10
-
Push(acc^)
11
-
}
12
-
| Start(x) => Start(x)
13
-
| End => End
14
-
}
15
-
));
16
-
}));
-3
src/operators/wonka_operator_scan.rei
-3
src/operators/wonka_operator_scan.rei
-3
src/operators/wonka_operator_skip.d.ts
-3
src/operators/wonka_operator_skip.d.ts
-16
src/operators/wonka_operator_skip.re
-16
src/operators/wonka_operator_skip.re
···
1
-
open Wonka_types;
2
-
open Wonka_helpers;
3
-
4
-
let skip = wait => curry(source => curry(sink => {
5
-
let rest = ref(wait);
6
-
7
-
captureTalkback(source, (.signal, talkback) => {
8
-
switch (signal) {
9
-
| Push(_) when rest^ > 0 => {
10
-
rest := rest^ - 1;
11
-
talkback(.Pull);
12
-
}
13
-
| _ => sink(.signal)
14
-
}
15
-
});
16
-
}));
-3
src/operators/wonka_operator_skip.rei
-3
src/operators/wonka_operator_skip.rei
-3
src/operators/wonka_operator_skipUntil.d.ts
-3
src/operators/wonka_operator_skipUntil.d.ts
-69
src/operators/wonka_operator_skipUntil.re
-69
src/operators/wonka_operator_skipUntil.re
···
1
-
open Wonka_types;
2
-
open Wonka_helpers;
3
-
4
-
type skipUntilStateT = {
5
-
mutable skip: bool,
6
-
mutable ended: bool,
7
-
mutable gotSignal: bool,
8
-
mutable sourceTalkback: (.talkbackT) => unit,
9
-
mutable notifierTalkback: (.talkbackT) => unit
10
-
};
11
-
12
-
let skipUntil = notifier => curry(source => curry(sink => {
13
-
let state: skipUntilStateT = {
14
-
skip: true,
15
-
ended: false,
16
-
gotSignal: false,
17
-
sourceTalkback: talkbackPlaceholder,
18
-
notifierTalkback: talkbackPlaceholder
19
-
};
20
-
21
-
source((.signal) => {
22
-
switch (signal) {
23
-
| Start(tb) => {
24
-
state.sourceTalkback = tb;
25
-
26
-
notifier((.signal) => {
27
-
switch (signal) {
28
-
| Start(innerTb) => {
29
-
state.notifierTalkback = innerTb;
30
-
innerTb(.Pull);
31
-
tb(.Pull);
32
-
}
33
-
| Push(_) => {
34
-
state.skip = false;
35
-
state.notifierTalkback(.Close);
36
-
}
37
-
| End => ()
38
-
}
39
-
});
40
-
}
41
-
| Push(_) when state.skip && !state.ended => state.sourceTalkback(.Pull)
42
-
| Push(_) when !state.ended => {
43
-
state.gotSignal = false;
44
-
sink(.signal)
45
-
}
46
-
| Push(_) => ()
47
-
| End => {
48
-
if (state.skip) state.notifierTalkback(.Close);
49
-
state.ended = true;
50
-
sink(.End)
51
-
}
52
-
}
53
-
});
54
-
55
-
sink(.Start((.signal) => {
56
-
switch (signal) {
57
-
| Close => {
58
-
if (state.skip) state.notifierTalkback(.Close);
59
-
state.ended = true;
60
-
state.sourceTalkback(.Close);
61
-
}
62
-
| Pull when !state.gotSignal && !state.ended => {
63
-
state.gotSignal = true;
64
-
state.sourceTalkback(.Pull);
65
-
}
66
-
| Pull => ()
67
-
}
68
-
}));
69
-
}));
-3
src/operators/wonka_operator_skipUntil.rei
-3
src/operators/wonka_operator_skipUntil.rei
-3
src/operators/wonka_operator_skipWhile.d.ts
-3
src/operators/wonka_operator_skipWhile.d.ts
-20
src/operators/wonka_operator_skipWhile.re
-20
src/operators/wonka_operator_skipWhile.re
···
1
-
open Wonka_types;
2
-
open Wonka_helpers;
3
-
4
-
let skipWhile = f => curry(source => curry(sink => {
5
-
let skip = ref(true);
6
-
7
-
captureTalkback(source, (.signal, talkback) => {
8
-
switch (signal) {
9
-
| Push(x) when skip^ => {
10
-
if (f(.x)) {
11
-
talkback(.Pull);
12
-
} else {
13
-
skip := false;
14
-
sink(.signal);
15
-
};
16
-
}
17
-
| _ => sink(.signal)
18
-
}
19
-
});
20
-
}));
-3
src/operators/wonka_operator_skipWhile.rei
-3
src/operators/wonka_operator_skipWhile.rei
-3
src/operators/wonka_operator_switchMap.d.ts
-3
src/operators/wonka_operator_switchMap.d.ts
-79
src/operators/wonka_operator_switchMap.re
-79
src/operators/wonka_operator_switchMap.re
···
1
-
open Wonka_types;
2
-
open Wonka_helpers;
3
-
4
-
type switchMapStateT('a) = {
5
-
mutable outerTalkback: (.talkbackT) => unit,
6
-
mutable innerTalkback: (.talkbackT) => unit,
7
-
mutable innerActive: bool,
8
-
mutable closed: bool,
9
-
mutable ended: bool
10
-
};
11
-
12
-
let switchMap = f => curry(source => curry(sink => {
13
-
let state: switchMapStateT('a) = {
14
-
outerTalkback: talkbackPlaceholder,
15
-
innerTalkback: talkbackPlaceholder,
16
-
innerActive: false,
17
-
closed: false,
18
-
ended: false
19
-
};
20
-
21
-
let applyInnerSource = innerSource =>
22
-
innerSource((.signal) => {
23
-
switch (signal) {
24
-
| End => {
25
-
state.innerActive = false;
26
-
state.innerTalkback = talkbackPlaceholder;
27
-
if (state.ended) sink(.End);
28
-
}
29
-
| Start(tb) => {
30
-
state.innerActive = true;
31
-
state.innerTalkback = tb;
32
-
tb(.Pull);
33
-
}
34
-
| Push(x) when !state.closed => {
35
-
sink(.Push(x));
36
-
state.innerTalkback(.Pull);
37
-
}
38
-
| Push(_) => ()
39
-
}
40
-
});
41
-
42
-
source((.signal) => {
43
-
switch (signal) {
44
-
| End when !state.ended => {
45
-
state.ended = true;
46
-
if (!state.innerActive) sink(.End);
47
-
}
48
-
| End => ()
49
-
| Start(tb) => {
50
-
state.outerTalkback = tb;
51
-
tb(.Pull);
52
-
}
53
-
| Push(x) when !state.ended => {
54
-
if (state.innerActive) {
55
-
state.innerTalkback(.Close);
56
-
state.innerTalkback = talkbackPlaceholder;
57
-
}
58
-
applyInnerSource(f(.x));
59
-
state.outerTalkback(.Pull);
60
-
}
61
-
| Push(_) => ()
62
-
}
63
-
});
64
-
65
-
sink(.Start((.signal) => {
66
-
switch (signal) {
67
-
| Pull => state.innerTalkback(.Pull)
68
-
| Close => {
69
-
state.innerTalkback(.Close);
70
-
if (!state.ended) {
71
-
state.ended = true;
72
-
state.closed = true;
73
-
state.outerTalkback(.Close);
74
-
state.innerTalkback = talkbackPlaceholder;
75
-
}
76
-
}
77
-
}
78
-
}));
79
-
}));
-3
src/operators/wonka_operator_switchMap.rei
-3
src/operators/wonka_operator_switchMap.rei
-3
src/operators/wonka_operator_take.d.ts
-3
src/operators/wonka_operator_take.d.ts
-47
src/operators/wonka_operator_take.re
-47
src/operators/wonka_operator_take.re
···
1
-
open Wonka_types;
2
-
open Wonka_helpers;
3
-
4
-
type takeStateT = {
5
-
mutable taken: int,
6
-
mutable talkback: (.talkbackT) => unit
7
-
};
8
-
9
-
let take = max => curry(source => curry(sink => {
10
-
let state: takeStateT = {
11
-
taken: 0,
12
-
talkback: talkbackPlaceholder
13
-
};
14
-
15
-
source((.signal) => {
16
-
switch (signal) {
17
-
| Start(tb) => state.talkback = tb;
18
-
| Push(_) when state.taken < max => {
19
-
state.taken = state.taken + 1;
20
-
sink(.signal);
21
-
22
-
if (state.taken === max) {
23
-
sink(.End);
24
-
state.talkback(.Close);
25
-
};
26
-
}
27
-
| Push(_) => ()
28
-
| End when state.taken < max => {
29
-
state.taken = max;
30
-
sink(.End)
31
-
}
32
-
| End => ()
33
-
}
34
-
});
35
-
36
-
sink(.Start((.signal) => {
37
-
if (state.taken < max) {
38
-
switch (signal) {
39
-
| Pull => state.talkback(.Pull);
40
-
| Close => {
41
-
state.taken = max;
42
-
state.talkback(.Close);
43
-
}
44
-
}
45
-
};
46
-
}));
47
-
}));
-3
src/operators/wonka_operator_take.rei
-3
src/operators/wonka_operator_take.rei
-3
src/operators/wonka_operator_takeLast.d.ts
-3
src/operators/wonka_operator_takeLast.d.ts
-23
src/operators/wonka_operator_takeLast.re
-23
src/operators/wonka_operator_takeLast.re
···
1
-
open Wonka_types;
2
-
open Wonka_helpers;
3
-
4
-
let takeLast = max => curry(source => curry(sink => {
5
-
open Rebel;
6
-
let queue = MutableQueue.make();
7
-
8
-
captureTalkback(source, (.signal, talkback) => {
9
-
switch (signal) {
10
-
| Start(_) => talkback(.Pull)
11
-
| Push(x) => {
12
-
let size = MutableQueue.size(queue);
13
-
if (size >= max && max > 0) {
14
-
ignore(MutableQueue.pop(queue));
15
-
};
16
-
17
-
MutableQueue.add(queue, x);
18
-
talkback(.Pull);
19
-
}
20
-
| End => makeTrampoline(sink, (.) => MutableQueue.pop(queue))
21
-
}
22
-
});
23
-
}));
-3
src/operators/wonka_operator_takeLast.rei
-3
src/operators/wonka_operator_takeLast.rei
-3
src/operators/wonka_operator_takeUntil.d.ts
-3
src/operators/wonka_operator_takeUntil.d.ts
-60
src/operators/wonka_operator_takeUntil.re
-60
src/operators/wonka_operator_takeUntil.re
···
1
-
open Wonka_types;
2
-
open Wonka_helpers;
3
-
4
-
type takeUntilStateT = {
5
-
mutable ended: bool,
6
-
mutable sourceTalkback: (.talkbackT) => unit,
7
-
mutable notifierTalkback: (.talkbackT) => unit
8
-
};
9
-
10
-
let takeUntil = notifier => curry(source => curry(sink => {
11
-
let state: takeUntilStateT = {
12
-
ended: false,
13
-
sourceTalkback: talkbackPlaceholder,
14
-
notifierTalkback: talkbackPlaceholder
15
-
};
16
-
17
-
source((.signal) => {
18
-
switch (signal) {
19
-
| Start(tb) => {
20
-
state.sourceTalkback = tb;
21
-
22
-
notifier((.signal) => {
23
-
switch (signal) {
24
-
| Start(innerTb) => {
25
-
state.notifierTalkback = innerTb;
26
-
innerTb(.Pull);
27
-
}
28
-
| Push(_) => {
29
-
state.ended = true;
30
-
state.notifierTalkback(.Close);
31
-
state.sourceTalkback(.Close);
32
-
sink(.End);
33
-
}
34
-
| End => ()
35
-
}
36
-
});
37
-
}
38
-
| End when !state.ended => {
39
-
state.notifierTalkback(.Close);
40
-
state.ended = true;
41
-
sink(.End);
42
-
}
43
-
| End => ()
44
-
| Push(_) when !state.ended => sink(.signal)
45
-
| Push(_) => ()
46
-
}
47
-
});
48
-
49
-
sink(.Start((.signal) => {
50
-
if (!state.ended) {
51
-
switch (signal) {
52
-
| Close => {
53
-
state.sourceTalkback(.Close);
54
-
state.notifierTalkback(.Close);
55
-
}
56
-
| Pull => state.sourceTalkback(.Pull)
57
-
}
58
-
};
59
-
}));
60
-
}));
-3
src/operators/wonka_operator_takeUntil.rei
-3
src/operators/wonka_operator_takeUntil.rei
-3
src/operators/wonka_operator_takeWhile.d.ts
-3
src/operators/wonka_operator_takeWhile.d.ts
-43
src/operators/wonka_operator_takeWhile.re
-43
src/operators/wonka_operator_takeWhile.re
···
1
-
open Wonka_types;
2
-
open Wonka_helpers;
3
-
4
-
let takeWhile = f => curry(source => curry(sink => {
5
-
let ended = ref(false);
6
-
let talkback = ref(talkbackPlaceholder);
7
-
8
-
source((.signal) => {
9
-
switch (signal) {
10
-
| Start(tb) => {
11
-
talkback := tb;
12
-
sink(.signal);
13
-
}
14
-
| End when !ended^ => {
15
-
ended := true;
16
-
sink(.End);
17
-
}
18
-
| End => ()
19
-
| Push(x) when !ended^ => {
20
-
if (!f(.x)) {
21
-
ended := true;
22
-
sink(.End);
23
-
talkback^(.Close);
24
-
} else {
25
-
sink(.signal);
26
-
};
27
-
}
28
-
| Push(_) => ()
29
-
}
30
-
});
31
-
32
-
sink(.Start((.signal) => {
33
-
if (!ended^) {
34
-
switch (signal) {
35
-
| Pull => talkback^(.Pull);
36
-
| Close => {
37
-
ended := true;
38
-
talkback^(.Close);
39
-
}
40
-
}
41
-
};
42
-
}));
43
-
}));
-3
src/operators/wonka_operator_takeWhile.rei
-3
src/operators/wonka_operator_takeWhile.rei
-3
src/operators/wonka_operator_tap.d.ts
-3
src/operators/wonka_operator_tap.d.ts
-12
src/operators/wonka_operator_tap.re
-12
src/operators/wonka_operator_tap.re
-3
src/operators/wonka_operator_tap.rei
-3
src/operators/wonka_operator_tap.rei
-7
src/operators/wonka_operator_tapAll.d.ts
-7
src/operators/wonka_operator_tapAll.d.ts
-15
src/operators/wonka_operator_tapAll.re
-15
src/operators/wonka_operator_tapAll.re
···
1
-
open Wonka_types;
2
-
3
-
let tapAll = (~onStart, ~onPush, ~onEnd) => {
4
-
curry(source => curry(sink => {
5
-
source((.signal) => {
6
-
switch (signal) {
7
-
| Start(_) => onStart(.)
8
-
| Push(x) => onPush(.x)
9
-
| End => onEnd(.)
10
-
};
11
-
12
-
sink(.signal);
13
-
});
14
-
}));
15
-
};
-9
src/operators/wonka_operator_tapAll.rei
-9
src/operators/wonka_operator_tapAll.rei
+1461
src/operators.ts
+1461
src/operators.ts
···
1
+
import { Push, Source, Sink, Operator, SignalKind, TalkbackKind, TalkbackFn } from './types';
2
+
import { push, start, talkbackPlaceholder } from './helpers';
3
+
import { fromArray } from './sources';
4
+
5
+
const identity = <T>(x: T): T => x;
6
+
7
+
/** Buffers values and emits the array of bufferd values each time a `notifier` Source emits.
8
+
*
9
+
* @param notifier - A {@link Source} that releases the current buffer.
10
+
* @returns An {@link Operator}.
11
+
*
12
+
* @remarks
13
+
* `buffer` will buffer values from the input {@link Source}. When the passed `notifier` Source
14
+
* emits, it will emit an array of all buffered values.
15
+
*
16
+
* This can be used to group values over time. A buffer will only be emitted when it contains any
17
+
* values.
18
+
*
19
+
* @example
20
+
* ```ts
21
+
* pipe(
22
+
* interval(50),
23
+
* buffer(interval(100)),
24
+
* subscribe(x => {
25
+
* console.log(text); // logs: [0], [1, 2], [3, 4]...
26
+
* })
27
+
* );
28
+
* ```
29
+
*/
30
+
export function buffer<S, T>(notifier: Source<S>): Operator<T, T[]> {
31
+
return source => sink => {
32
+
let buffer: T[] = [];
33
+
let sourceTalkback = talkbackPlaceholder;
34
+
let notifierTalkback = talkbackPlaceholder;
35
+
let pulled = false;
36
+
let ended = false;
37
+
source(signal => {
38
+
if (ended) {
39
+
/*noop*/
40
+
} else if (signal === SignalKind.End) {
41
+
ended = true;
42
+
notifierTalkback(TalkbackKind.Close);
43
+
if (buffer.length) sink(push(buffer));
44
+
sink(SignalKind.End);
45
+
} else if (signal.tag === SignalKind.Start) {
46
+
sourceTalkback = signal[0];
47
+
notifier(signal => {
48
+
if (ended) {
49
+
/*noop*/
50
+
} else if (signal === SignalKind.End) {
51
+
ended = true;
52
+
sourceTalkback(TalkbackKind.Close);
53
+
if (buffer.length) sink(push(buffer));
54
+
sink(SignalKind.End);
55
+
} else if (signal.tag === SignalKind.Start) {
56
+
notifierTalkback = signal[0];
57
+
} else if (buffer.length) {
58
+
const signal = push(buffer);
59
+
buffer = [];
60
+
sink(signal);
61
+
}
62
+
});
63
+
} else {
64
+
buffer.push(signal[0]);
65
+
if (!pulled) {
66
+
pulled = true;
67
+
sourceTalkback(TalkbackKind.Pull);
68
+
notifierTalkback(TalkbackKind.Pull);
69
+
} else {
70
+
pulled = false;
71
+
}
72
+
}
73
+
});
74
+
sink(
75
+
start(signal => {
76
+
if (signal === TalkbackKind.Close && !ended) {
77
+
ended = true;
78
+
sourceTalkback(TalkbackKind.Close);
79
+
notifierTalkback(TalkbackKind.Close);
80
+
} else if (!ended && !pulled) {
81
+
pulled = true;
82
+
sourceTalkback(TalkbackKind.Pull);
83
+
notifierTalkback(TalkbackKind.Pull);
84
+
}
85
+
})
86
+
);
87
+
};
88
+
}
89
+
90
+
/** Emits in order from the Sources returned by a mapping function per value of the Source.
91
+
*
92
+
* @param map - A function returning a {@link Source} per value.
93
+
* @returns An {@link Operator}.
94
+
*
95
+
* @remarks
96
+
* `concatMap` accepts a mapping function which must return a {@link Source} per value.
97
+
* The output {@link Source} will emit values from each Source the function returned, in order,
98
+
* queuing sources that aren't yet active.
99
+
*
100
+
* This can be used to issue multiple values per emission of an input {@link Source}, while keeping
101
+
* the order of their outputs consistent.
102
+
*
103
+
* @example
104
+
* ```ts
105
+
* pipe(
106
+
* fromArray([1, 2]),
107
+
* concatMap(x => fromArray([x, x * 2])),
108
+
* subscribe(x => {
109
+
* console.log(text); // logs: 1, 2, 2, 4
110
+
* })
111
+
* );
112
+
* ```
113
+
*/
114
+
export function concatMap<In, Out>(map: (value: In) => Source<Out>): Operator<In, Out> {
115
+
return source => sink => {
116
+
const inputQueue: In[] = [];
117
+
let outerTalkback = talkbackPlaceholder;
118
+
let innerTalkback = talkbackPlaceholder;
119
+
let outerPulled = false;
120
+
let innerPulled = false;
121
+
let innerActive = false;
122
+
let ended = false;
123
+
function applyInnerSource(innerSource: Source<Out>): void {
124
+
innerActive = true;
125
+
innerSource(signal => {
126
+
if (signal === SignalKind.End) {
127
+
if (innerActive) {
128
+
innerActive = false;
129
+
if (inputQueue.length) {
130
+
applyInnerSource(map(inputQueue.shift()!));
131
+
} else if (ended) {
132
+
sink(SignalKind.End);
133
+
} else if (!outerPulled) {
134
+
outerPulled = true;
135
+
outerTalkback(TalkbackKind.Pull);
136
+
}
137
+
}
138
+
} else if (signal.tag === SignalKind.Start) {
139
+
innerPulled = false;
140
+
(innerTalkback = signal[0])(TalkbackKind.Pull);
141
+
} else if (innerActive) {
142
+
sink(signal);
143
+
if (innerPulled) {
144
+
innerPulled = false;
145
+
} else {
146
+
innerTalkback(TalkbackKind.Pull);
147
+
}
148
+
}
149
+
});
150
+
}
151
+
source(signal => {
152
+
if (ended) {
153
+
/*noop*/
154
+
} else if (signal === SignalKind.End) {
155
+
ended = true;
156
+
if (!innerActive && !inputQueue.length) sink(SignalKind.End);
157
+
} else if (signal.tag === SignalKind.Start) {
158
+
outerTalkback = signal[0];
159
+
} else {
160
+
outerPulled = false;
161
+
if (innerActive) {
162
+
inputQueue.push(signal[0]);
163
+
} else {
164
+
applyInnerSource(map(signal[0]));
165
+
}
166
+
}
167
+
});
168
+
sink(
169
+
start(signal => {
170
+
if (signal === TalkbackKind.Close) {
171
+
if (!ended) {
172
+
ended = true;
173
+
outerTalkback(TalkbackKind.Close);
174
+
}
175
+
if (innerActive) {
176
+
innerActive = false;
177
+
innerTalkback(TalkbackKind.Close);
178
+
}
179
+
} else {
180
+
if (!ended && !outerPulled) {
181
+
outerPulled = true;
182
+
outerTalkback(TalkbackKind.Pull);
183
+
}
184
+
if (innerActive && !innerPulled) {
185
+
innerPulled = true;
186
+
innerTalkback(TalkbackKind.Pull);
187
+
}
188
+
}
189
+
})
190
+
);
191
+
};
192
+
}
193
+
194
+
/** Flattens a Source emitting Sources into a single Source emitting the inner values in order.
195
+
*
196
+
* @see {@link concatMap} which this helper uses and instead accept a mapping function.
197
+
* @param source - An {@link Source} emitting {@link Source | Sources}.
198
+
* @returns A {@link Source} emitting values from the inner Sources.
199
+
*
200
+
* @remarks
201
+
* `concatAll` accepts a {@link Source} emitting {@link Source | Sources}.
202
+
* The output {@link Source} will emit values from each Source, in order, queuing sources that
203
+
* aren't yet active.
204
+
*
205
+
* @example
206
+
* ```ts
207
+
* pipe(
208
+
* fromArray([
209
+
* fromArray([1, 2]),
210
+
* fromArray([3, 4]),
211
+
* ]),
212
+
* concatAll,
213
+
* subscribe(x => {
214
+
* console.log(text); // logs: 1, 2, 3, 4
215
+
* })
216
+
* );
217
+
* ```
218
+
*/
219
+
export function concatAll<T>(source: Source<Source<T>>): Source<T> {
220
+
return concatMap<Source<T>, T>(identity)(source);
221
+
}
222
+
223
+
/** Emits values from the passed sources in order.
224
+
*
225
+
* @param sources - An array of {@link Source | Sources}.
226
+
* @returns A {@link Source} emitting values from the input Sources.
227
+
*
228
+
* @remarks
229
+
* `concat` accepts an array of {@link Source | Sources} and will emit values from them, starting
230
+
* with the first one and continuing to the next only when the prior source ended.
231
+
*
232
+
* This can be used to issue combine sources while keeping the order of their values intact.
233
+
*
234
+
* @example
235
+
* ```ts
236
+
* pipe(
237
+
* concat([
238
+
* fromArray([1, 2]),
239
+
* fromArray([3, 4]),
240
+
* ]),
241
+
* subscribe(x => {
242
+
* console.log(text); // logs: 1, 2, 3, 4
243
+
* })
244
+
* );
245
+
* ```
246
+
*/
247
+
export function concat<T>(sources: Source<T>[]): Source<T> {
248
+
return concatAll(fromArray(sources));
249
+
}
250
+
251
+
/** Filters out emitted values for which the passed predicate function returns `false`.
252
+
*
253
+
* @param predicate - A function returning a boolean per value.
254
+
* @returns An {@link Operator}.
255
+
*
256
+
* @remarks
257
+
* `filter` will omit values from the {@link Source} for which the passed `predicate` function
258
+
* returns `false`.
259
+
*
260
+
* @example
261
+
* ```ts
262
+
* pipe(
263
+
* fromArray([1, 2, 3]),
264
+
* filter(x => x % 2 === 0),
265
+
* subscribe(x => {
266
+
* console.log(text); // logs: 2
267
+
* })
268
+
* );
269
+
* ```
270
+
*/
271
+
function filter<In, Out extends In>(predicate: (value: In) => value is Out): Operator<In, Out>;
272
+
function filter<T>(predicate: (value: T) => boolean): Operator<T, T>;
273
+
function filter<In, Out>(predicate: (value: In) => boolean): Operator<In, Out> {
274
+
return source => sink => {
275
+
let talkback = talkbackPlaceholder;
276
+
source(signal => {
277
+
if (signal === SignalKind.End) {
278
+
sink(SignalKind.End);
279
+
} else if (signal.tag === SignalKind.Start) {
280
+
talkback = signal[0];
281
+
sink(signal);
282
+
} else if (!predicate(signal[0])) {
283
+
talkback(TalkbackKind.Pull);
284
+
} else {
285
+
sink(signal as Push<any>);
286
+
}
287
+
});
288
+
};
289
+
}
290
+
291
+
export { filter };
292
+
293
+
/** Maps emitted values using the passed mapping function.
294
+
*
295
+
* @param map - A function returning transforming the {@link Source | Source's} values.
296
+
* @returns An {@link Operator}.
297
+
*
298
+
* @remarks
299
+
* `map` accepts a transform function and calls it on each emitted value. It then emits
300
+
* the values returned by the transform function instead.
301
+
*
302
+
* @example
303
+
* ```ts
304
+
* pipe(
305
+
* fromArray([1, 2, 3]),
306
+
* map(x => x * 2),
307
+
* subscribe(x => {
308
+
* console.log(text); // logs: 2, 4, 6
309
+
* })
310
+
* );
311
+
* ```
312
+
*/
313
+
export function map<In, Out>(map: (value: In) => Out): Operator<In, Out> {
314
+
return source => sink =>
315
+
source(signal => {
316
+
if (signal === SignalKind.End || signal.tag === SignalKind.Start) {
317
+
sink(signal);
318
+
} else {
319
+
sink(push(map(signal[0])));
320
+
}
321
+
});
322
+
}
323
+
324
+
/** Emits from the Sources returned by a mapping function per value of the Source.
325
+
*
326
+
* @param map - A function returning a {@link Source} per value.
327
+
* @returns An {@link Operator}.
328
+
*
329
+
* @remarks
330
+
* `mergeMap` accepts a mapping function which must return a {@link Source} per value.
331
+
* The output {@link Source} will emit values from all {@link Source | Sources} the mapping function
332
+
* returned.
333
+
*
334
+
* This can be used to issue multiple values per emission of an input {@link Source}, essentially
335
+
* multiplexing all values to multiple Sources.
336
+
*
337
+
* @example
338
+
* ```ts
339
+
* pipe(
340
+
* interval(50),
341
+
* mergeMap(x => pipe(
342
+
* fromValue(x),
343
+
* delay(100)
344
+
* )),
345
+
* subscribe(x => {
346
+
* console.log(text); // logs: 0, 1, 2...
347
+
* })
348
+
* );
349
+
* ```
350
+
*/
351
+
export function mergeMap<In, Out>(map: (value: In) => Source<Out>): Operator<In, Out> {
352
+
return source => sink => {
353
+
let innerTalkbacks: TalkbackFn[] = [];
354
+
let outerTalkback = talkbackPlaceholder;
355
+
let outerPulled = false;
356
+
let ended = false;
357
+
function applyInnerSource(innerSource: Source<Out>): void {
358
+
let talkback = talkbackPlaceholder;
359
+
innerSource(signal => {
360
+
if (signal === SignalKind.End) {
361
+
if (innerTalkbacks.length) {
362
+
const index = innerTalkbacks.indexOf(talkback);
363
+
if (index > -1) (innerTalkbacks = innerTalkbacks.slice()).splice(index, 1);
364
+
if (!innerTalkbacks.length) {
365
+
if (ended) {
366
+
sink(SignalKind.End);
367
+
} else if (!outerPulled) {
368
+
outerPulled = true;
369
+
outerTalkback(TalkbackKind.Pull);
370
+
}
371
+
}
372
+
}
373
+
} else if (signal.tag === SignalKind.Start) {
374
+
innerTalkbacks.push((talkback = signal[0]));
375
+
talkback(TalkbackKind.Pull);
376
+
} else if (innerTalkbacks.length) {
377
+
sink(signal);
378
+
talkback(TalkbackKind.Pull);
379
+
}
380
+
});
381
+
}
382
+
source(signal => {
383
+
if (ended) {
384
+
/*noop*/
385
+
} else if (signal === SignalKind.End) {
386
+
ended = true;
387
+
if (!innerTalkbacks.length) sink(SignalKind.End);
388
+
} else if (signal.tag === SignalKind.Start) {
389
+
outerTalkback = signal[0];
390
+
} else {
391
+
outerPulled = false;
392
+
applyInnerSource(map(signal[0]));
393
+
if (!outerPulled) {
394
+
outerPulled = true;
395
+
outerTalkback(TalkbackKind.Pull);
396
+
}
397
+
}
398
+
});
399
+
sink(
400
+
start(signal => {
401
+
if (signal === TalkbackKind.Close) {
402
+
if (!ended) {
403
+
ended = true;
404
+
outerTalkback(TalkbackKind.Close);
405
+
}
406
+
for (let i = 0, a = innerTalkbacks, l = innerTalkbacks.length; i < l; i++)
407
+
a[i](TalkbackKind.Close);
408
+
innerTalkbacks.length = 0;
409
+
} else {
410
+
if (!ended && !outerPulled) {
411
+
outerPulled = true;
412
+
outerTalkback(TalkbackKind.Pull);
413
+
} else {
414
+
outerPulled = false;
415
+
}
416
+
for (let i = 0, a = innerTalkbacks, l = innerTalkbacks.length; i < l; i++)
417
+
a[i](TalkbackKind.Pull);
418
+
}
419
+
})
420
+
);
421
+
};
422
+
}
423
+
424
+
/** Flattens a Source emitting Sources into a single Source emitting the inner values.
425
+
*
426
+
* @see {@link mergeMap} which this helper uses and instead accept a mapping function.
427
+
* @param source - An {@link Source} emitting {@link Source | Sources}.
428
+
* @returns A {@link Source} emitting values from the inner Sources.
429
+
*
430
+
* @remarks
431
+
* `mergeAll` accepts a {@link Source} which must emit {@link Source | Sources}. It will subscribe
432
+
* to each incoming source immediately and start passing its emitted values through.
433
+
*
434
+
* @example
435
+
* ```ts
436
+
* pipe(
437
+
* fromArray([
438
+
* interval(50),
439
+
* interval(100),
440
+
* ]),
441
+
* mergeAll,
442
+
* subscribe(x => {
443
+
* console.log(text); // logs: 0, 0, 1, 2, 1, 3, 4, 2
444
+
* })
445
+
* );
446
+
* ```
447
+
*/
448
+
export function mergeAll<T>(source: Source<Source<T>>): Source<T> {
449
+
return mergeMap<Source<T>, T>(identity)(source);
450
+
}
451
+
452
+
/** Emits values from the passed sources simultaneously.
453
+
*
454
+
* @param sources - An array of {@link Source | Sources}.
455
+
* @returns A {@link Source} emitting values from the input Sources.
456
+
*
457
+
* @remarks
458
+
* `merge` accepts an array of {@link Source | Sources} and will subscribe to all of them, passing
459
+
* through all their emitted values simultaneously.
460
+
*
461
+
* This can be used to interleave the values of multiple sources.
462
+
*
463
+
* @example
464
+
* ```ts
465
+
* pipe(
466
+
* merge([
467
+
* interval(50),
468
+
* interval(100),
469
+
* ]),
470
+
* subscribe(x => {
471
+
* console.log(text); // logs: 0, 0, 1, 2, 1, 3, 4, 2
472
+
* })
473
+
* );
474
+
* ```
475
+
*/
476
+
export function merge<T>(sources: Source<T>[]): Source<T> {
477
+
return mergeAll(fromArray(sources));
478
+
}
479
+
480
+
/** Calls the passed callback function when the Source ends or is closed.
481
+
*
482
+
* @param callback - A function that is called when the {@link Source} ends.
483
+
* @returns An {@link Operator}.
484
+
*
485
+
* @remarks
486
+
* `onEnd` accepts a callback which is called when the {@link Source} either ends
487
+
* or is closed.
488
+
*
489
+
* This operator can be used to add side-effects to a Source.
490
+
*
491
+
* @example
492
+
* ```ts
493
+
* pipe(
494
+
* fromArray([1, 2, 3]),
495
+
* take(1),
496
+
* onEnd(() => {
497
+
* console.log('end');
498
+
* }),
499
+
* publish
500
+
* );
501
+
* ```
502
+
*/
503
+
export function onEnd<T>(callback: () => void): Operator<T, T> {
504
+
return source => sink => {
505
+
let ended = false;
506
+
source(signal => {
507
+
if (ended) {
508
+
/*noop*/
509
+
} else if (signal === SignalKind.End) {
510
+
ended = true;
511
+
sink(SignalKind.End);
512
+
callback();
513
+
} else if (signal.tag === SignalKind.Start) {
514
+
const talkback = signal[0];
515
+
sink(
516
+
start(signal => {
517
+
if (signal === TalkbackKind.Close) {
518
+
ended = true;
519
+
talkback(TalkbackKind.Close);
520
+
callback();
521
+
} else {
522
+
talkback(signal);
523
+
}
524
+
})
525
+
);
526
+
} else {
527
+
sink(signal);
528
+
}
529
+
});
530
+
};
531
+
}
532
+
533
+
/** Calls the passed callback function when the Source emits a value.
534
+
*
535
+
* @param callback - A function that is called with each value the {@link Source} emits.
536
+
* @returns An {@link Operator}.
537
+
*
538
+
* @remarks
539
+
* `onPush` accepts a callback which is called for every emitted value of
540
+
* the {@link Source}.
541
+
*
542
+
* This operator can be used to add side-effects to a Source.
543
+
*
544
+
* @example
545
+
* ```ts
546
+
* pipe(
547
+
* fromArray([1, 2, 3]),
548
+
* onPush(value => {
549
+
* console.log(value); // logs: 1, 2, 3
550
+
* }),
551
+
* publish
552
+
* );
553
+
* ```
554
+
*/
555
+
export function onPush<T>(callback: (value: T) => void): Operator<T, T> {
556
+
return source => sink => {
557
+
let ended = false;
558
+
source(signal => {
559
+
if (ended) {
560
+
/*noop*/
561
+
} else if (signal === SignalKind.End) {
562
+
ended = true;
563
+
sink(SignalKind.End);
564
+
} else if (signal.tag === SignalKind.Start) {
565
+
const talkback = signal[0];
566
+
sink(
567
+
start(signal => {
568
+
if (signal === TalkbackKind.Close) ended = true;
569
+
talkback(signal);
570
+
})
571
+
);
572
+
} else {
573
+
callback(signal[0]);
574
+
sink(signal);
575
+
}
576
+
});
577
+
};
578
+
}
579
+
580
+
/** Calls the passed callback function when the Source starts.
581
+
*
582
+
* @param callback - A function that is called when the {@link Source} is started.
583
+
* @returns An {@link Operator}.
584
+
*
585
+
* @remarks
586
+
* `onPush` accepts a callback which is called for every emitted value of
587
+
* the {@link Source}.
588
+
*
589
+
* This operator can be used to add side-effects to a Source.
590
+
* Specifically, it's useful to add a side-effect for a Source that triggers only once
591
+
* the {@link Source} is used and started.
592
+
*
593
+
* @example
594
+
* ```ts
595
+
* pipe(
596
+
* fromArray([1, 2, 3]),
597
+
* onStart(() => {
598
+
* console.log('start');
599
+
* }),
600
+
* publish
601
+
* );
602
+
* ```
603
+
*/
604
+
export function onStart<T>(callback: () => void): Operator<T, T> {
605
+
return source => sink =>
606
+
source(signal => {
607
+
if (signal === SignalKind.End) {
608
+
sink(SignalKind.End);
609
+
} else if (signal.tag === SignalKind.Start) {
610
+
sink(signal);
611
+
callback();
612
+
} else {
613
+
sink(signal);
614
+
}
615
+
});
616
+
}
617
+
618
+
/** Emits the last value the {@link Source} emitted, whenever the notifier Source emits a value.
619
+
*
620
+
* @param notifier - A {@link Source} that triggers the last value to be emitted.
621
+
* @returns An {@link Operator}.
622
+
*
623
+
* @remarks
624
+
* `sample` will store the latest value the {@link Source} emitted. Every time the `notifier` Source
625
+
* emits, it will emit the latest value.
626
+
*
627
+
* This is a back pressure operator that can be used to omit values from a {@link Source} coming in
628
+
* too frequently.
629
+
*
630
+
* {@link Source | Sources} emitting `undefined` are undefined behaviour and these values will be
631
+
* ignored.
632
+
*
633
+
* @example
634
+
* ```ts
635
+
* pipe(
636
+
* interval(50),
637
+
* sample(interval(100)),
638
+
* subscribe(x => {
639
+
* console.log(text); // logs: 0, 2, 4...
640
+
* })
641
+
* );
642
+
* ```
643
+
*/
644
+
export function sample<S, T>(notifier: Source<S>): Operator<T, T> {
645
+
return source => sink => {
646
+
let sourceTalkback = talkbackPlaceholder;
647
+
let notifierTalkback = talkbackPlaceholder;
648
+
let value: T | void;
649
+
let pulled = false;
650
+
let ended = false;
651
+
source(signal => {
652
+
if (ended) {
653
+
/*noop*/
654
+
} else if (signal === SignalKind.End) {
655
+
ended = true;
656
+
notifierTalkback(TalkbackKind.Close);
657
+
sink(SignalKind.End);
658
+
} else if (signal.tag === SignalKind.Start) {
659
+
sourceTalkback = signal[0];
660
+
} else {
661
+
value = signal[0];
662
+
if (!pulled) {
663
+
pulled = true;
664
+
notifierTalkback(TalkbackKind.Pull);
665
+
sourceTalkback(TalkbackKind.Pull);
666
+
} else {
667
+
pulled = false;
668
+
}
669
+
}
670
+
});
671
+
notifier(signal => {
672
+
if (ended) {
673
+
/*noop*/
674
+
} else if (signal === SignalKind.End) {
675
+
ended = true;
676
+
sourceTalkback(TalkbackKind.Close);
677
+
sink(SignalKind.End);
678
+
} else if (signal.tag === SignalKind.Start) {
679
+
notifierTalkback = signal[0];
680
+
} else if (value !== undefined) {
681
+
const signal = push(value);
682
+
value = undefined;
683
+
sink(signal);
684
+
}
685
+
});
686
+
sink(
687
+
start(signal => {
688
+
if (signal === TalkbackKind.Close && !ended) {
689
+
ended = true;
690
+
sourceTalkback(TalkbackKind.Close);
691
+
notifierTalkback(TalkbackKind.Close);
692
+
} else if (!ended && !pulled) {
693
+
pulled = true;
694
+
sourceTalkback(TalkbackKind.Pull);
695
+
notifierTalkback(TalkbackKind.Pull);
696
+
}
697
+
})
698
+
);
699
+
};
700
+
}
701
+
702
+
/** Maps emitted values using the passed reducer function.
703
+
*
704
+
* @param reducer - A function called with the last value by the `reducer` and the emitted value.
705
+
* @param seed - The initial value that is passed to the `reducer`.
706
+
* @returns An {@link Operator}.
707
+
*
708
+
* @remarks
709
+
* `scan` accepts a reducer function and a seed value. The reducer will be called initially with the
710
+
* seed value and the first emitted value. The {@link Source} will then emit the value returned by
711
+
* the reducer function. Subsequently, the `reducer` is called with the last value the `reducer`
712
+
* returned and the emitted value.
713
+
*
714
+
* This operator is similar to `Array.prototype.reduce`, but instead is called over time and emits
715
+
* each value of the reducer.
716
+
*
717
+
* @example
718
+
* ```ts
719
+
* pipe(
720
+
* fromArray([1, 2, 3]),
721
+
* scan((acc, x) => acc + x, 0),
722
+
* subscribe(x => {
723
+
* console.log(text); // logs: 1, 3, 6
724
+
* })
725
+
* );
726
+
* ```
727
+
*/
728
+
export function scan<In, Out>(reducer: (acc: Out, value: In) => Out, seed: Out): Operator<In, Out> {
729
+
return source => sink => {
730
+
let acc = seed;
731
+
source(signal => {
732
+
if (signal === SignalKind.End) {
733
+
sink(SignalKind.End);
734
+
} else if (signal.tag === SignalKind.Start) {
735
+
sink(signal);
736
+
} else {
737
+
sink(push((acc = reducer(acc, signal[0]))));
738
+
}
739
+
});
740
+
};
741
+
}
742
+
743
+
/** Shares one underlying subscription to the Source between all Sinks.
744
+
*
745
+
* @param source - A {@link Source} that should be shared.
746
+
* @returns A shared {@link Source}.
747
+
*
748
+
* @remarks
749
+
* `share` accepts a {@link Source} and returns one. It will emit all values as normal, however, it
750
+
* will share one subscription to the input source. This allows side-effects on the input
751
+
* {@link Source} to only be triggerd once.
752
+
*/
753
+
export function share<T>(source: Source<T>): Source<T> {
754
+
let sinks: Sink<T>[] = [];
755
+
let talkback = talkbackPlaceholder;
756
+
let gotSignal = false;
757
+
return sink => {
758
+
sinks.push(sink);
759
+
if (sinks.length === 1) {
760
+
source(signal => {
761
+
if (signal === SignalKind.End) {
762
+
for (let i = 0, a = sinks, l = sinks.length; i < l; i++) a[i](SignalKind.End);
763
+
sinks.length = 0;
764
+
} else if (signal.tag === SignalKind.Start) {
765
+
talkback = signal[0];
766
+
} else {
767
+
gotSignal = false;
768
+
for (let i = 0, a = sinks, l = sinks.length; i < l; i++) a[i](signal);
769
+
}
770
+
});
771
+
}
772
+
sink(
773
+
start(signal => {
774
+
if (signal === TalkbackKind.Close) {
775
+
const index = sinks.indexOf(sink);
776
+
if (index > -1) (sinks = sinks.slice()).splice(index, 1);
777
+
if (!sinks.length) talkback(TalkbackKind.Close);
778
+
} else if (!gotSignal) {
779
+
gotSignal = true;
780
+
talkback(TalkbackKind.Pull);
781
+
}
782
+
})
783
+
);
784
+
};
785
+
}
786
+
787
+
/** Omits `wait` amount of values from the Source and then runs as usual.
788
+
*
789
+
* @param wait - The number of values to be omitted.
790
+
* @returns An {@link Operator}.
791
+
*
792
+
* @remarks
793
+
* `skip` will skip `wait` number of emitted values, then issue all values as normal afterwards.
794
+
* This essentially skips a given number of values on the input {@link Source}.
795
+
*
796
+
* @example
797
+
* ```ts
798
+
* pipe(
799
+
* fromArray([1, 2, 3]),
800
+
* skip(2),
801
+
* subscribe(x => {
802
+
* console.log(text); // logs: 3
803
+
* })
804
+
* );
805
+
* ```
806
+
*/
807
+
export function skip<T>(wait: number): Operator<T, T> {
808
+
return source => sink => {
809
+
let talkback = talkbackPlaceholder;
810
+
let rest = wait;
811
+
source(signal => {
812
+
if (signal === SignalKind.End) {
813
+
sink(SignalKind.End);
814
+
} else if (signal.tag === SignalKind.Start) {
815
+
talkback = signal[0];
816
+
sink(signal);
817
+
} else if (rest-- > 0) {
818
+
talkback(TalkbackKind.Pull);
819
+
} else {
820
+
sink(signal);
821
+
}
822
+
});
823
+
};
824
+
}
825
+
826
+
/** Omits values from an input Source until a notifier Source emits a value.
827
+
*
828
+
* @param notifier - A {@link Source} that starts the operator's sent values.
829
+
* @returns An {@link Operator}.
830
+
*
831
+
* @remarks
832
+
* `skipUntil` will omit all values from the input {@link Source} until the `notifier`
833
+
* Source emits a value of its own. It'll then start passing values from the Source through.
834
+
*
835
+
* @example
836
+
* ```ts
837
+
* pipe(
838
+
* interval(50),
839
+
* skipUntil(interval(150)),
840
+
* subscribe(x => {
841
+
* console.log(text); // logs: 2, 3...
842
+
* })
843
+
* );
844
+
* ```
845
+
*/
846
+
export function skipUntil<S, T>(notifier: Source<S>): Operator<T, T> {
847
+
return source => sink => {
848
+
let sourceTalkback = talkbackPlaceholder;
849
+
let notifierTalkback = talkbackPlaceholder;
850
+
let skip = true;
851
+
let pulled = false;
852
+
let ended = false;
853
+
source(signal => {
854
+
if (ended) {
855
+
/*noop*/
856
+
} else if (signal === SignalKind.End) {
857
+
ended = true;
858
+
if (skip) notifierTalkback(TalkbackKind.Close);
859
+
sink(SignalKind.End);
860
+
} else if (signal.tag === SignalKind.Start) {
861
+
sourceTalkback = signal[0];
862
+
notifier(signal => {
863
+
if (signal === SignalKind.End) {
864
+
if (skip) {
865
+
ended = true;
866
+
sourceTalkback(TalkbackKind.Close);
867
+
}
868
+
} else if (signal.tag === SignalKind.Start) {
869
+
(notifierTalkback = signal[0])(TalkbackKind.Pull);
870
+
} else {
871
+
skip = false;
872
+
notifierTalkback(TalkbackKind.Close);
873
+
}
874
+
});
875
+
} else if (!skip) {
876
+
pulled = false;
877
+
sink(signal);
878
+
} else if (!pulled) {
879
+
pulled = true;
880
+
sourceTalkback(TalkbackKind.Pull);
881
+
notifierTalkback(TalkbackKind.Pull);
882
+
} else {
883
+
pulled = false;
884
+
}
885
+
});
886
+
sink(
887
+
start(signal => {
888
+
if (signal === TalkbackKind.Close && !ended) {
889
+
ended = true;
890
+
sourceTalkback(TalkbackKind.Close);
891
+
if (skip) notifierTalkback(TalkbackKind.Close);
892
+
} else if (!ended && !pulled) {
893
+
pulled = true;
894
+
if (skip) notifierTalkback(TalkbackKind.Pull);
895
+
sourceTalkback(TalkbackKind.Pull);
896
+
}
897
+
})
898
+
);
899
+
};
900
+
}
901
+
902
+
/** Omits values from an input Source until a predicate function returns `false`.
903
+
*
904
+
* @param predicate - A function returning a boolean per value.
905
+
* @returns An {@link Operator}.
906
+
*
907
+
* @remarks
908
+
* `skipWhile` will omit all values from the input {@link Source} until the `predicate`
909
+
* function returns `false`. When the `predicate` function returns `false`, the Source's values will
910
+
* be passed through.
911
+
*
912
+
* @example
913
+
* ```ts
914
+
* pipe(
915
+
* fromArray([1, 2, 3]),
916
+
* skipWhile(x => x < 2),
917
+
* subscribe(x => {
918
+
* console.log(text); // logs: 2, 3
919
+
* })
920
+
* );
921
+
* ```
922
+
*/
923
+
export function skipWhile<T>(predicate: (value: T) => boolean): Operator<T, T> {
924
+
return source => sink => {
925
+
let talkback = talkbackPlaceholder;
926
+
let skip = true;
927
+
source(signal => {
928
+
if (signal === SignalKind.End) {
929
+
sink(SignalKind.End);
930
+
} else if (signal.tag === SignalKind.Start) {
931
+
talkback = signal[0];
932
+
sink(signal);
933
+
} else if (skip) {
934
+
if (predicate(signal[0])) {
935
+
talkback(TalkbackKind.Pull);
936
+
} else {
937
+
skip = false;
938
+
sink(signal);
939
+
}
940
+
} else {
941
+
sink(signal);
942
+
}
943
+
});
944
+
};
945
+
}
946
+
947
+
/** Emits from the latest Source returned by a mapping function per value of the Source.
948
+
*
949
+
* @param map - A function returning a {@link Source} per value.
950
+
* @returns An {@link Operator}.
951
+
*
952
+
* @remarks
953
+
* `switchMap` accepts a mapping function which must return a {@link Source} per value.
954
+
* The output {@link Source} will emit values from the latest Source the mapping function
955
+
* returned. If a value is emitted while the last returned Source is still active, the prior Source
956
+
* will be closed.
957
+
*
958
+
* This can be used to issue multiple values per emission of an input {@link Source}, while only
959
+
* letting one of these sub-Sources be active at a time.
960
+
*
961
+
* @example
962
+
* ```ts
963
+
* pipe(
964
+
* interval(100),
965
+
* switchMap(() => interval(50)),
966
+
* subscribe(x => {
967
+
* console.log(text); // logs: 0, 0, 0...
968
+
* })
969
+
* );
970
+
* ```
971
+
*/
972
+
export function switchMap<In, Out>(map: (value: In) => Source<Out>): Operator<In, Out> {
973
+
return source => sink => {
974
+
let outerTalkback = talkbackPlaceholder;
975
+
let innerTalkback = talkbackPlaceholder;
976
+
let outerPulled = false;
977
+
let innerPulled = false;
978
+
let innerActive = false;
979
+
let ended = false;
980
+
function applyInnerSource(innerSource: Source<Out>): void {
981
+
innerActive = true;
982
+
innerSource(signal => {
983
+
if (!innerActive) {
984
+
/*noop*/
985
+
} else if (signal === SignalKind.End) {
986
+
innerActive = false;
987
+
if (ended) {
988
+
sink(SignalKind.End);
989
+
} else if (!outerPulled) {
990
+
outerPulled = true;
991
+
outerTalkback(TalkbackKind.Pull);
992
+
}
993
+
} else if (signal.tag === SignalKind.Start) {
994
+
innerPulled = false;
995
+
(innerTalkback = signal[0])(TalkbackKind.Pull);
996
+
} else {
997
+
sink(signal);
998
+
if (!innerPulled) {
999
+
innerTalkback(TalkbackKind.Pull);
1000
+
} else {
1001
+
innerPulled = false;
1002
+
}
1003
+
}
1004
+
});
1005
+
}
1006
+
source(signal => {
1007
+
if (ended) {
1008
+
/*noop*/
1009
+
} else if (signal === SignalKind.End) {
1010
+
ended = true;
1011
+
if (!innerActive) sink(SignalKind.End);
1012
+
} else if (signal.tag === SignalKind.Start) {
1013
+
outerTalkback = signal[0];
1014
+
} else {
1015
+
if (innerActive) {
1016
+
innerTalkback(TalkbackKind.Close);
1017
+
innerTalkback = talkbackPlaceholder;
1018
+
}
1019
+
if (!outerPulled) {
1020
+
outerPulled = true;
1021
+
outerTalkback(TalkbackKind.Pull);
1022
+
} else {
1023
+
outerPulled = false;
1024
+
}
1025
+
applyInnerSource(map(signal[0]));
1026
+
}
1027
+
});
1028
+
sink(
1029
+
start(signal => {
1030
+
if (signal === TalkbackKind.Close) {
1031
+
if (!ended) {
1032
+
ended = true;
1033
+
outerTalkback(TalkbackKind.Close);
1034
+
}
1035
+
if (innerActive) {
1036
+
innerActive = false;
1037
+
innerTalkback(TalkbackKind.Close);
1038
+
}
1039
+
} else {
1040
+
if (!ended && !outerPulled) {
1041
+
outerPulled = true;
1042
+
outerTalkback(TalkbackKind.Pull);
1043
+
}
1044
+
if (innerActive && !innerPulled) {
1045
+
innerPulled = true;
1046
+
innerTalkback(TalkbackKind.Pull);
1047
+
}
1048
+
}
1049
+
})
1050
+
);
1051
+
};
1052
+
}
1053
+
1054
+
/** Flattens a Source emitting Sources into a single Source emitting the inner values.
1055
+
*
1056
+
* @see {@link switchMap} which this helper uses and instead accept a mapping function.
1057
+
* @param source - An {@link Source} emitting {@link Source | Sources}.
1058
+
* @returns A {@link Source} emitting values from the inner Sources.
1059
+
*
1060
+
* @remarks
1061
+
* `switchAll` accepts a {@link Source} which must emit {@link Source | Sources}. Each time it
1062
+
* receives a {@link Source} it will close its prior subscription and subscribe to the new Source
1063
+
* instead, passing through its values.
1064
+
*
1065
+
* @example
1066
+
* ```ts
1067
+
* pipe(
1068
+
* interval(100),
1069
+
* map(() => interval(50)),
1070
+
* switchAll,
1071
+
* subscribe(x => {
1072
+
* console.log(text); // logs: 0, 0, 0...
1073
+
* })
1074
+
* );
1075
+
* ```
1076
+
*/
1077
+
export function switchAll<T>(source: Source<Source<T>>): Source<T> {
1078
+
return switchMap<Source<T>, T>(identity)(source);
1079
+
}
1080
+
1081
+
/** Emits `max` values from the Source and then ends.
1082
+
*
1083
+
* @param max - The maximum number of values emitted.
1084
+
* @returns An {@link Operator}.
1085
+
*
1086
+
* @remarks
1087
+
* `take` will issue all values as normal until the `max` number of emitted values has been reached.
1088
+
* It will then end and close the {@link Source}.
1089
+
*
1090
+
* @example
1091
+
* ```ts
1092
+
* pipe(
1093
+
* fromArray([1, 2, 3]),
1094
+
* take(2),
1095
+
* subscribe(x => {
1096
+
* console.log(text); // logs: 1, 2
1097
+
* })
1098
+
* );
1099
+
* ```
1100
+
*/
1101
+
export function take<T>(max: number): Operator<T, T> {
1102
+
return source => sink => {
1103
+
let talkback = talkbackPlaceholder;
1104
+
let ended = false;
1105
+
let taken = 0;
1106
+
source(signal => {
1107
+
if (ended) {
1108
+
/*noop*/
1109
+
} else if (signal === SignalKind.End) {
1110
+
ended = true;
1111
+
sink(SignalKind.End);
1112
+
} else if (signal.tag === SignalKind.Start) {
1113
+
if (max <= 0) {
1114
+
ended = true;
1115
+
sink(SignalKind.End);
1116
+
signal[0](TalkbackKind.Close);
1117
+
} else {
1118
+
talkback = signal[0];
1119
+
}
1120
+
} else if (taken++ < max) {
1121
+
sink(signal);
1122
+
if (!ended && taken >= max) {
1123
+
ended = true;
1124
+
sink(SignalKind.End);
1125
+
talkback(TalkbackKind.Close);
1126
+
}
1127
+
} else {
1128
+
sink(signal);
1129
+
}
1130
+
});
1131
+
sink(
1132
+
start(signal => {
1133
+
if (signal === TalkbackKind.Close && !ended) {
1134
+
ended = true;
1135
+
talkback(TalkbackKind.Close);
1136
+
} else if (signal === TalkbackKind.Pull && !ended && taken < max) {
1137
+
talkback(TalkbackKind.Pull);
1138
+
}
1139
+
})
1140
+
);
1141
+
};
1142
+
}
1143
+
1144
+
/** Buffers the `max` last values of the Source and emits them once the Source ends.
1145
+
*
1146
+
* @param max - The maximum number of values buffered.
1147
+
* @returns An {@link Operator}.
1148
+
*
1149
+
* @remarks
1150
+
* `takeLast` will buffer values from the input {@link Source} up until the given `max` number. It
1151
+
* will only emit values stored in the buffer once the {@link Source} ends.
1152
+
*
1153
+
* All values in the buffer are emitted like the {@link fromArray | `fromArray`} source would
1154
+
* synchronously.
1155
+
*
1156
+
* @example
1157
+
* ```ts
1158
+
* pipe(
1159
+
* fromArray([1, 2, 3]),
1160
+
* takeLast(1),
1161
+
* subscribe(x => {
1162
+
* console.log(text); // logs: 3
1163
+
* })
1164
+
* );
1165
+
* ```
1166
+
*/
1167
+
export function takeLast<T>(max: number): Operator<T, T> {
1168
+
return source => sink => {
1169
+
const queue: T[] = [];
1170
+
let talkback = talkbackPlaceholder;
1171
+
source(signal => {
1172
+
if (signal === SignalKind.End) {
1173
+
fromArray(queue)(sink);
1174
+
} else if (signal.tag === SignalKind.Start) {
1175
+
if (max <= 0) {
1176
+
signal[0](TalkbackKind.Close);
1177
+
fromArray(queue)(sink);
1178
+
} else {
1179
+
(talkback = signal[0])(TalkbackKind.Pull);
1180
+
}
1181
+
} else {
1182
+
if (queue.length >= max && max) queue.shift();
1183
+
queue.push(signal[0]);
1184
+
talkback(TalkbackKind.Pull);
1185
+
}
1186
+
});
1187
+
};
1188
+
}
1189
+
1190
+
/** Takes values from an input Source until a notifier Source emits a value.
1191
+
*
1192
+
* @param notifier - A {@link Source} that stops the operator's sent values.
1193
+
* @returns An {@link Operator}.
1194
+
*
1195
+
* @remarks
1196
+
* `takeUntil` will issue all values as normal from the input {@link Source} until the `notifier`
1197
+
* Source emits a value of its own. It'll then close the {@link Source}.
1198
+
*
1199
+
* @example
1200
+
* ```ts
1201
+
* pipe(
1202
+
* interval(50),
1203
+
* takeUntil(interval(150)),
1204
+
* subscribe(x => {
1205
+
* console.log(text); // logs: 0, 1
1206
+
* })
1207
+
* );
1208
+
* ```
1209
+
*/
1210
+
export function takeUntil<S, T>(notifier: Source<S>): Operator<T, T> {
1211
+
return source => sink => {
1212
+
let sourceTalkback = talkbackPlaceholder;
1213
+
let notifierTalkback = talkbackPlaceholder;
1214
+
let ended = false;
1215
+
source(signal => {
1216
+
if (ended) {
1217
+
/*noop*/
1218
+
} else if (signal === SignalKind.End) {
1219
+
ended = true;
1220
+
notifierTalkback(TalkbackKind.Close);
1221
+
sink(SignalKind.End);
1222
+
} else if (signal.tag === SignalKind.Start) {
1223
+
sourceTalkback = signal[0];
1224
+
notifier(signal => {
1225
+
if (signal === SignalKind.End) {
1226
+
/*noop*/
1227
+
} else if (signal.tag === SignalKind.Start) {
1228
+
(notifierTalkback = signal[0])(TalkbackKind.Pull);
1229
+
} else {
1230
+
ended = true;
1231
+
notifierTalkback(TalkbackKind.Close);
1232
+
sourceTalkback(TalkbackKind.Close);
1233
+
sink(SignalKind.End);
1234
+
}
1235
+
});
1236
+
} else {
1237
+
sink(signal);
1238
+
}
1239
+
});
1240
+
sink(
1241
+
start(signal => {
1242
+
if (signal === TalkbackKind.Close && !ended) {
1243
+
ended = true;
1244
+
sourceTalkback(TalkbackKind.Close);
1245
+
notifierTalkback(TalkbackKind.Close);
1246
+
} else if (!ended) {
1247
+
sourceTalkback(TalkbackKind.Pull);
1248
+
}
1249
+
})
1250
+
);
1251
+
};
1252
+
}
1253
+
1254
+
/** Takes values from an input Source until a predicate function returns `false`.
1255
+
*
1256
+
* @param predicate - A function returning a boolean per value.
1257
+
* @param addOne - Lets an additional input value pass on.
1258
+
* @returns An {@link Operator}.
1259
+
*
1260
+
* @remarks
1261
+
* `takeWhile` will issue all values as normal from the input {@link Source} until the `predicate`
1262
+
* function returns `false`. When the `predicate` function returns `false`, the current value is
1263
+
* omitted and the {@link Source} is closed.
1264
+
*
1265
+
* If `addOne` is set to `true`, the value for which the `predicate` first returned `false` is
1266
+
* issued and passed on as well instead of being omitted.
1267
+
*
1268
+
* @example
1269
+
* ```ts
1270
+
* pipe(
1271
+
* fromArray([1, 2, 3]),
1272
+
* takeWhile(x => x < 2),
1273
+
* subscribe(x => {
1274
+
* console.log(text); // logs: 1
1275
+
* })
1276
+
* );
1277
+
* ```
1278
+
*/
1279
+
export function takeWhile<T>(predicate: (value: T) => boolean, addOne?: boolean): Operator<T, T> {
1280
+
return source => sink => {
1281
+
let talkback = talkbackPlaceholder;
1282
+
let ended = false;
1283
+
source(signal => {
1284
+
if (ended) {
1285
+
/*noop*/
1286
+
} else if (signal === SignalKind.End) {
1287
+
ended = true;
1288
+
sink(SignalKind.End);
1289
+
} else if (signal.tag === SignalKind.Start) {
1290
+
talkback = signal[0];
1291
+
sink(signal);
1292
+
} else if (!predicate(signal[0])) {
1293
+
ended = true;
1294
+
if (addOne) sink(signal);
1295
+
sink(SignalKind.End);
1296
+
talkback(TalkbackKind.Close);
1297
+
} else {
1298
+
sink(signal);
1299
+
}
1300
+
});
1301
+
};
1302
+
}
1303
+
1304
+
/** Debounces a Source by omitting values until a given timeframe has passed.
1305
+
*
1306
+
* @param timing - A function returning a debounce time (ms) per emitted value.
1307
+
* @returns An {@link Operator}.
1308
+
*
1309
+
* @remarks
1310
+
* `debounce` accepts a mapping function that can be used to return a time (in ms) per emitted
1311
+
* value. All emitted values issued by the {@link Source} during the returned time will be omitted
1312
+
* until the time has passed.
1313
+
*
1314
+
* Debouncing means that the returned {@link Source} will wait for a minimum time of silence until a
1315
+
* value is let through.
1316
+
*
1317
+
* This is a back pressure operator that can be used to omit values from a {@link Source} coming in
1318
+
* too frequently.
1319
+
*
1320
+
* @example
1321
+
* ```ts
1322
+
* pipe(
1323
+
* interval(50),
1324
+
* debounce(() => 100),
1325
+
* subscribe(x => {
1326
+
* console.log(text); // never logs any value
1327
+
* })
1328
+
* );
1329
+
* ```
1330
+
*/
1331
+
export function debounce<T>(timing: (value: T) => number): Operator<T, T> {
1332
+
return source => sink => {
1333
+
let id: any | void;
1334
+
let deferredEnded = false;
1335
+
let ended = false;
1336
+
source(signal => {
1337
+
if (ended) {
1338
+
/*noop*/
1339
+
} else if (signal === SignalKind.End) {
1340
+
ended = true;
1341
+
if (id) {
1342
+
deferredEnded = true;
1343
+
} else {
1344
+
sink(SignalKind.End);
1345
+
}
1346
+
} else if (signal.tag === SignalKind.Start) {
1347
+
const talkback = signal[0];
1348
+
sink(
1349
+
start(signal => {
1350
+
if (signal === TalkbackKind.Close && !ended) {
1351
+
ended = true;
1352
+
deferredEnded = false;
1353
+
if (id) clearTimeout(id);
1354
+
talkback(TalkbackKind.Close);
1355
+
} else if (!ended) {
1356
+
talkback(TalkbackKind.Pull);
1357
+
}
1358
+
})
1359
+
);
1360
+
} else {
1361
+
if (id) clearTimeout(id);
1362
+
id = setTimeout(() => {
1363
+
id = undefined;
1364
+
sink(signal);
1365
+
if (deferredEnded) sink(SignalKind.End);
1366
+
}, timing(signal[0]));
1367
+
}
1368
+
});
1369
+
};
1370
+
}
1371
+
1372
+
/** Delays each signal emitted by a Source by given time (ms).
1373
+
*
1374
+
* @param wait - A time (in ms) by which each {@link SignalKind | signal} is delayed.
1375
+
* @returns An {@link Operator}.
1376
+
*
1377
+
* @remarks
1378
+
* `delay` accepts a time (in ms) by which each {@link SignalKind | signal} will be delayed by.
1379
+
* This will create a timeout per received signal and delay the emitted values accordingly.
1380
+
*
1381
+
* Since the operator only calls `setTimeout` per signal, it relies on the timeout implementation to
1382
+
* be ordered. Otherwise, signals will arrive in the wrong order at the sink.
1383
+
*/
1384
+
export function delay<T>(wait: number): Operator<T, T> {
1385
+
return source => sink => {
1386
+
let active = 0;
1387
+
source(signal => {
1388
+
if (signal !== SignalKind.End && signal.tag === SignalKind.Start) {
1389
+
sink(signal);
1390
+
} else {
1391
+
active++;
1392
+
setTimeout(() => {
1393
+
if (active) {
1394
+
active--;
1395
+
sink(signal);
1396
+
}
1397
+
}, wait);
1398
+
}
1399
+
});
1400
+
};
1401
+
}
1402
+
1403
+
/** Throttles a Source by omitting values that are emitted before a given timeout.
1404
+
*
1405
+
* @param timing - A function returning a throttle time (ms) per emitted value.
1406
+
* @returns An {@link Operator}.
1407
+
*
1408
+
* @remarks
1409
+
* `throttle` accepts a mapping function that can be used to return a time (in ms) per emitted
1410
+
* value. During the returned timeframe all values issued by the {@link Source} will be omitted and
1411
+
* dropped.
1412
+
*
1413
+
* This is a back pressure operator that can be used to omit values from a {@link Source} coming in
1414
+
* too frequently.
1415
+
*
1416
+
* @example
1417
+
* ```ts
1418
+
* pipe(
1419
+
* interval(50),
1420
+
* throttle(() => 100),
1421
+
* subscribe(x => {
1422
+
* // omits every second value: 0, 2, 4...
1423
+
* console.log(text);
1424
+
* })
1425
+
* );
1426
+
* ```
1427
+
*/
1428
+
export function throttle<T>(timing: (value: T) => number): Operator<T, T> {
1429
+
return source => sink => {
1430
+
let skip = false;
1431
+
let id: any | void;
1432
+
source(signal => {
1433
+
if (signal === SignalKind.End) {
1434
+
if (id) clearTimeout(id);
1435
+
sink(SignalKind.End);
1436
+
} else if (signal.tag === SignalKind.Start) {
1437
+
const talkback = signal[0];
1438
+
sink(
1439
+
start(signal => {
1440
+
if (signal === TalkbackKind.Close) {
1441
+
if (id) clearTimeout(id);
1442
+
talkback(TalkbackKind.Close);
1443
+
} else {
1444
+
talkback(TalkbackKind.Pull);
1445
+
}
1446
+
})
1447
+
);
1448
+
} else if (!skip) {
1449
+
skip = true;
1450
+
if (id) clearTimeout(id);
1451
+
id = setTimeout(() => {
1452
+
id = undefined;
1453
+
skip = false;
1454
+
}, timing(signal[0]));
1455
+
sink(signal);
1456
+
}
1457
+
});
1458
+
};
1459
+
}
1460
+
1461
+
export { mergeAll as flatten, onPush as tap };
-156
src/pipe.d.ts
-156
src/pipe.d.ts
···
1
-
import { Source } from './wonka_types';
2
-
3
-
interface UnaryFn<T, R> { (source: T): R; }
4
-
5
-
/* pipe definitions for source + operators composition */
6
-
7
-
export function pipe<T, A>(
8
-
source: Source<T>,
9
-
op1: UnaryFn<Source<T>, Source<A>>
10
-
): Source<A>;
11
-
12
-
export function pipe<T, A, B>(
13
-
source: Source<T>,
14
-
op1: UnaryFn<Source<T>, Source<A>>,
15
-
op2: UnaryFn<Source<A>, Source<B>>
16
-
): Source<B>;
17
-
18
-
export function pipe<T, A, B, C>(
19
-
source: Source<T>,
20
-
op1: UnaryFn<Source<T>, Source<A>>,
21
-
op2: UnaryFn<Source<A>, Source<B>>,
22
-
op3: UnaryFn<Source<B>, Source<C>>
23
-
): Source<C>;
24
-
25
-
export function pipe<T, A, B, C, D>(
26
-
source: Source<T>,
27
-
op1: UnaryFn<Source<T>, Source<A>>,
28
-
op2: UnaryFn<Source<A>, Source<B>>,
29
-
op3: UnaryFn<Source<B>, Source<C>>,
30
-
op4: UnaryFn<Source<C>, Source<D>>
31
-
): Source<D>;
32
-
33
-
export function pipe<T, A, B, C, D, E>(
34
-
source: Source<T>,
35
-
op1: UnaryFn<Source<T>, Source<A>>,
36
-
op2: UnaryFn<Source<A>, Source<B>>,
37
-
op3: UnaryFn<Source<B>, Source<C>>,
38
-
op4: UnaryFn<Source<C>, Source<D>>,
39
-
op5: UnaryFn<Source<D>, Source<E>>
40
-
): Source<E>;
41
-
42
-
export function pipe<T, A, B, C, D, E, F>(
43
-
source: Source<T>,
44
-
op1: UnaryFn<Source<T>, Source<A>>,
45
-
op2: UnaryFn<Source<A>, Source<B>>,
46
-
op3: UnaryFn<Source<B>, Source<C>>,
47
-
op4: UnaryFn<Source<C>, Source<D>>,
48
-
op5: UnaryFn<Source<D>, Source<E>>,
49
-
op6: UnaryFn<Source<E>, Source<F>>
50
-
): Source<F>;
51
-
52
-
export function pipe<T, A, B, C, D, E, F, G>(
53
-
source: Source<T>,
54
-
op1: UnaryFn<Source<T>, Source<A>>,
55
-
op2: UnaryFn<Source<A>, Source<B>>,
56
-
op3: UnaryFn<Source<B>, Source<C>>,
57
-
op4: UnaryFn<Source<C>, Source<D>>,
58
-
op5: UnaryFn<Source<D>, Source<E>>,
59
-
op6: UnaryFn<Source<E>, Source<F>>,
60
-
op7: UnaryFn<Source<F>, Source<G>>
61
-
): Source<G>;
62
-
63
-
export function pipe<T, A, B, C, D, E, F, G, H>(
64
-
source: Source<T>,
65
-
op1: UnaryFn<Source<T>, Source<A>>,
66
-
op2: UnaryFn<Source<A>, Source<B>>,
67
-
op3: UnaryFn<Source<B>, Source<C>>,
68
-
op4: UnaryFn<Source<C>, Source<D>>,
69
-
op5: UnaryFn<Source<D>, Source<E>>,
70
-
op6: UnaryFn<Source<E>, Source<F>>,
71
-
op7: UnaryFn<Source<F>, Source<G>>,
72
-
op8: UnaryFn<Source<G>, Source<H>>
73
-
): Source<H>;
74
-
75
-
/* pipe definitions for source + operators + consumer composition */
76
-
77
-
export function pipe<T, R>(
78
-
source: Source<T>,
79
-
consumer: UnaryFn<Source<T>, R>
80
-
): R;
81
-
82
-
export function pipe<T, A, R>(
83
-
source: Source<T>,
84
-
op1: UnaryFn<Source<T>, Source<A>>,
85
-
consumer: UnaryFn<Source<A>, R>
86
-
): R;
87
-
88
-
export function pipe<T, A, B, R>(
89
-
source: Source<T>,
90
-
op1: UnaryFn<Source<T>, Source<A>>,
91
-
op2: UnaryFn<Source<A>, Source<B>>,
92
-
consumer: UnaryFn<Source<B>, R>
93
-
): R;
94
-
95
-
export function pipe<T, A, B, C, R>(
96
-
source: Source<T>,
97
-
op1: UnaryFn<Source<T>, Source<A>>,
98
-
op2: UnaryFn<Source<A>, Source<B>>,
99
-
op3: UnaryFn<Source<B>, Source<C>>,
100
-
consumer: UnaryFn<Source<C>, R>
101
-
): R;
102
-
103
-
export function pipe<T, A, B, C, D, R>(
104
-
source: Source<T>,
105
-
op1: UnaryFn<Source<T>, Source<A>>,
106
-
op2: UnaryFn<Source<A>, Source<B>>,
107
-
op3: UnaryFn<Source<B>, Source<C>>,
108
-
op4: UnaryFn<Source<C>, Source<D>>,
109
-
consumer: UnaryFn<Source<D>, R>
110
-
): R;
111
-
112
-
export function pipe<T, A, B, C, D, E, R>(
113
-
source: Source<T>,
114
-
op1: UnaryFn<Source<T>, Source<A>>,
115
-
op2: UnaryFn<Source<A>, Source<B>>,
116
-
op3: UnaryFn<Source<B>, Source<C>>,
117
-
op4: UnaryFn<Source<C>, Source<D>>,
118
-
op5: UnaryFn<Source<D>, Source<E>>,
119
-
consumer: UnaryFn<Source<E>, R>
120
-
): R;
121
-
122
-
export function pipe<T, A, B, C, D, E, F, R>(
123
-
source: Source<T>,
124
-
op1: UnaryFn<Source<T>, Source<A>>,
125
-
op2: UnaryFn<Source<A>, Source<B>>,
126
-
op3: UnaryFn<Source<B>, Source<C>>,
127
-
op4: UnaryFn<Source<C>, Source<D>>,
128
-
op5: UnaryFn<Source<D>, Source<E>>,
129
-
op6: UnaryFn<Source<E>, Source<F>>,
130
-
consumer: UnaryFn<Source<F>, R>
131
-
): R;
132
-
133
-
export function pipe<T, A, B, C, D, E, F, G, R>(
134
-
source: Source<T>,
135
-
op1: UnaryFn<Source<T>, Source<A>>,
136
-
op2: UnaryFn<Source<A>, Source<B>>,
137
-
op3: UnaryFn<Source<B>, Source<C>>,
138
-
op4: UnaryFn<Source<C>, Source<D>>,
139
-
op5: UnaryFn<Source<D>, Source<E>>,
140
-
op6: UnaryFn<Source<E>, Source<F>>,
141
-
op7: UnaryFn<Source<F>, Source<G>>,
142
-
consumer: UnaryFn<Source<G>, R>
143
-
): R;
144
-
145
-
export function pipe<T, A, B, C, D, E, F, G, H, R>(
146
-
source: Source<T>,
147
-
op1: UnaryFn<Source<T>, Source<A>>,
148
-
op2: UnaryFn<Source<A>, Source<B>>,
149
-
op3: UnaryFn<Source<B>, Source<C>>,
150
-
op4: UnaryFn<Source<C>, Source<D>>,
151
-
op5: UnaryFn<Source<D>, Source<E>>,
152
-
op6: UnaryFn<Source<E>, Source<F>>,
153
-
op7: UnaryFn<Source<F>, Source<G>>,
154
-
op8: UnaryFn<Source<G>, Source<H>>,
155
-
consumer: UnaryFn<Source<H>, R>
156
-
): R;
-11
src/pipe.js
-11
src/pipe.js
+185
src/pipe.ts
+185
src/pipe.ts
···
1
+
import { Source, Sink, Operator } from './types';
2
+
3
+
interface UnaryFn<T, R> {
4
+
(source: T): R;
5
+
}
6
+
7
+
/** Chain calls operators on a given source and returns the last result.
8
+
* @param args - A source, then a variable number of transform functions
9
+
*
10
+
* @remarks
11
+
* The `pipe` utility can be called with a {@link Source} then one or more unary transform functions.
12
+
* Each transform function will be called in turn with the last function's return value, starting
13
+
* with the source passed as the first argument to `pipe`.
14
+
*
15
+
* It's used to transform a source with a list of {@link Operator | Operators}. The last argument may
16
+
* also be a {@link Sink} that returns something else than a Source.
17
+
*
18
+
* @example
19
+
*
20
+
* ```ts
21
+
* pipe(
22
+
* fromArray([1, 2, 3]),
23
+
* map(x => x * 2),
24
+
* subscribe(console.log)
25
+
* );
26
+
* ```
27
+
*
28
+
* @see {@link https://github.com/tc39/proposal-pipeline-operator} for the JS Pipeline Operator spec, for which this is a replacement utility for.
29
+
*/
30
+
interface pipe {
31
+
/* pipe definitions for source + operators composition */
32
+
33
+
<T, A>(source: Source<T>, op1: UnaryFn<Source<T>, Source<A>>): Source<A>;
34
+
35
+
<T, A, B>(
36
+
source: Source<T>,
37
+
op1: UnaryFn<Source<T>, Source<A>>,
38
+
op2: UnaryFn<Source<A>, Source<B>>
39
+
): Source<B>;
40
+
41
+
<T, A, B, C>(
42
+
source: Source<T>,
43
+
op1: UnaryFn<Source<T>, Source<A>>,
44
+
op2: UnaryFn<Source<A>, Source<B>>,
45
+
op3: UnaryFn<Source<B>, Source<C>>
46
+
): Source<C>;
47
+
48
+
<T, A, B, C, D>(
49
+
source: Source<T>,
50
+
op1: UnaryFn<Source<T>, Source<A>>,
51
+
op2: UnaryFn<Source<A>, Source<B>>,
52
+
op3: UnaryFn<Source<B>, Source<C>>,
53
+
op4: UnaryFn<Source<C>, Source<D>>
54
+
): Source<D>;
55
+
56
+
<T, A, B, C, D, E>(
57
+
source: Source<T>,
58
+
op1: UnaryFn<Source<T>, Source<A>>,
59
+
op2: UnaryFn<Source<A>, Source<B>>,
60
+
op3: UnaryFn<Source<B>, Source<C>>,
61
+
op4: UnaryFn<Source<C>, Source<D>>,
62
+
op5: UnaryFn<Source<D>, Source<E>>
63
+
): Source<E>;
64
+
65
+
<T, A, B, C, D, E, F>(
66
+
source: Source<T>,
67
+
op1: UnaryFn<Source<T>, Source<A>>,
68
+
op2: UnaryFn<Source<A>, Source<B>>,
69
+
op3: UnaryFn<Source<B>, Source<C>>,
70
+
op4: UnaryFn<Source<C>, Source<D>>,
71
+
op5: UnaryFn<Source<D>, Source<E>>,
72
+
op6: UnaryFn<Source<E>, Source<F>>
73
+
): Source<F>;
74
+
75
+
<T, A, B, C, D, E, F, G>(
76
+
source: Source<T>,
77
+
op1: UnaryFn<Source<T>, Source<A>>,
78
+
op2: UnaryFn<Source<A>, Source<B>>,
79
+
op3: UnaryFn<Source<B>, Source<C>>,
80
+
op4: UnaryFn<Source<C>, Source<D>>,
81
+
op5: UnaryFn<Source<D>, Source<E>>,
82
+
op6: UnaryFn<Source<E>, Source<F>>,
83
+
op7: UnaryFn<Source<F>, Source<G>>
84
+
): Source<G>;
85
+
86
+
<T, A, B, C, D, E, F, G, H>(
87
+
source: Source<T>,
88
+
op1: UnaryFn<Source<T>, Source<A>>,
89
+
op2: UnaryFn<Source<A>, Source<B>>,
90
+
op3: UnaryFn<Source<B>, Source<C>>,
91
+
op4: UnaryFn<Source<C>, Source<D>>,
92
+
op5: UnaryFn<Source<D>, Source<E>>,
93
+
op6: UnaryFn<Source<E>, Source<F>>,
94
+
op7: UnaryFn<Source<F>, Source<G>>,
95
+
op8: UnaryFn<Source<G>, Source<H>>
96
+
): Source<H>;
97
+
98
+
/* pipe definitions for source + operators + consumer composition */
99
+
100
+
<T, R>(source: Source<T>, consumer: UnaryFn<Source<T>, R>): R;
101
+
102
+
<T, A, R>(
103
+
source: Source<T>,
104
+
op1: UnaryFn<Source<T>, Source<A>>,
105
+
consumer: UnaryFn<Source<A>, R>
106
+
): R;
107
+
108
+
<T, A, B, R>(
109
+
source: Source<T>,
110
+
op1: UnaryFn<Source<T>, Source<A>>,
111
+
op2: UnaryFn<Source<A>, Source<B>>,
112
+
consumer: UnaryFn<Source<B>, R>
113
+
): R;
114
+
115
+
<T, A, B, C, R>(
116
+
source: Source<T>,
117
+
op1: UnaryFn<Source<T>, Source<A>>,
118
+
op2: UnaryFn<Source<A>, Source<B>>,
119
+
op3: UnaryFn<Source<B>, Source<C>>,
120
+
consumer: UnaryFn<Source<C>, R>
121
+
): R;
122
+
123
+
<T, A, B, C, D, R>(
124
+
source: Source<T>,
125
+
op1: UnaryFn<Source<T>, Source<A>>,
126
+
op2: UnaryFn<Source<A>, Source<B>>,
127
+
op3: UnaryFn<Source<B>, Source<C>>,
128
+
op4: UnaryFn<Source<C>, Source<D>>,
129
+
consumer: UnaryFn<Source<D>, R>
130
+
): R;
131
+
132
+
<T, A, B, C, D, E, R>(
133
+
source: Source<T>,
134
+
op1: UnaryFn<Source<T>, Source<A>>,
135
+
op2: UnaryFn<Source<A>, Source<B>>,
136
+
op3: UnaryFn<Source<B>, Source<C>>,
137
+
op4: UnaryFn<Source<C>, Source<D>>,
138
+
op5: UnaryFn<Source<D>, Source<E>>,
139
+
consumer: UnaryFn<Source<E>, R>
140
+
): R;
141
+
142
+
<T, A, B, C, D, E, F, R>(
143
+
source: Source<T>,
144
+
op1: UnaryFn<Source<T>, Source<A>>,
145
+
op2: UnaryFn<Source<A>, Source<B>>,
146
+
op3: UnaryFn<Source<B>, Source<C>>,
147
+
op4: UnaryFn<Source<C>, Source<D>>,
148
+
op5: UnaryFn<Source<D>, Source<E>>,
149
+
op6: UnaryFn<Source<E>, Source<F>>,
150
+
consumer: UnaryFn<Source<F>, R>
151
+
): R;
152
+
153
+
<T, A, B, C, D, E, F, G, R>(
154
+
source: Source<T>,
155
+
op1: UnaryFn<Source<T>, Source<A>>,
156
+
op2: UnaryFn<Source<A>, Source<B>>,
157
+
op3: UnaryFn<Source<B>, Source<C>>,
158
+
op4: UnaryFn<Source<C>, Source<D>>,
159
+
op5: UnaryFn<Source<D>, Source<E>>,
160
+
op6: UnaryFn<Source<E>, Source<F>>,
161
+
op7: UnaryFn<Source<F>, Source<G>>,
162
+
consumer: UnaryFn<Source<G>, R>
163
+
): R;
164
+
165
+
<T, A, B, C, D, E, F, G, H, R>(
166
+
source: Source<T>,
167
+
op1: UnaryFn<Source<T>, Source<A>>,
168
+
op2: UnaryFn<Source<A>, Source<B>>,
169
+
op3: UnaryFn<Source<B>, Source<C>>,
170
+
op4: UnaryFn<Source<C>, Source<D>>,
171
+
op5: UnaryFn<Source<D>, Source<E>>,
172
+
op6: UnaryFn<Source<E>, Source<F>>,
173
+
op7: UnaryFn<Source<F>, Source<G>>,
174
+
op8: UnaryFn<Source<G>, Source<H>>,
175
+
consumer: UnaryFn<Source<H>, R>
176
+
): R;
177
+
}
178
+
179
+
const pipe: pipe = (...args: Function[]): any => {
180
+
let x = args[0];
181
+
for (let i = 1, l = args.length; i < l; i++) x = args[i](x);
182
+
return x;
183
+
};
184
+
185
+
export { pipe };
-3
src/sinks/wonka_sink_publish.d.ts
-3
src/sinks/wonka_sink_publish.d.ts
-33
src/sinks/wonka_sink_publish.re
-33
src/sinks/wonka_sink_publish.re
···
1
-
open Wonka_types;
2
-
open Wonka_helpers;
3
-
4
-
type publishStateT = {
5
-
mutable talkback: (.talkbackT) => unit,
6
-
mutable ended: bool
7
-
};
8
-
9
-
let publish = source => {
10
-
let state: publishStateT = {
11
-
talkback: talkbackPlaceholder,
12
-
ended: false
13
-
};
14
-
15
-
source((.signal) => {
16
-
switch (signal) {
17
-
| Start(x) => {
18
-
state.talkback = x;
19
-
x(.Pull);
20
-
}
21
-
| Push(_) => if (!state.ended) state.talkback(.Pull);
22
-
| End => state.ended = true;
23
-
}
24
-
});
25
-
26
-
{
27
-
unsubscribe: () =>
28
-
if (!state.ended) {
29
-
state.ended = true;
30
-
state.talkback(.Close);
31
-
}
32
-
}
33
-
};
-3
src/sinks/wonka_sink_publish.rei
-3
src/sinks/wonka_sink_publish.rei
-4
src/sinks/wonka_sink_subscribe.d.ts
-4
src/sinks/wonka_sink_subscribe.d.ts
-41
src/sinks/wonka_sink_subscribe.re
-41
src/sinks/wonka_sink_subscribe.re
···
1
-
open Wonka_types;
2
-
open Wonka_helpers;
3
-
4
-
type subscribeStateT = {
5
-
mutable talkback: (.talkbackT) => unit,
6
-
mutable ended: bool
7
-
};
8
-
9
-
let subscribe = f => curry(source => {
10
-
let state: subscribeStateT = {
11
-
talkback: talkbackPlaceholder,
12
-
ended: false
13
-
};
14
-
15
-
source((.signal) => {
16
-
switch (signal) {
17
-
| Start(x) => {
18
-
state.talkback = x;
19
-
x(.Pull);
20
-
}
21
-
| Push(x) when !state.ended => {
22
-
f(.x);
23
-
state.talkback(.Pull);
24
-
}
25
-
| Push(_) => ()
26
-
| End => state.ended = true;
27
-
}
28
-
});
29
-
30
-
{
31
-
unsubscribe: () =>
32
-
if (!state.ended) {
33
-
state.ended = true;
34
-
state.talkback(.Close);
35
-
}
36
-
}
37
-
});
38
-
39
-
let forEach = f => curry(source => {
40
-
ignore(subscribe(f, source));
41
-
});
-4
src/sinks/wonka_sink_subscribe.rei
-4
src/sinks/wonka_sink_subscribe.rei
+253
src/sinks.ts
+253
src/sinks.ts
···
1
+
import { Source, Subscription, TalkbackKind, SignalKind, SourceIterable } from './types';
2
+
import { talkbackPlaceholder, asyncIteratorSymbol } from './helpers';
3
+
4
+
/** Creates a subscription to a given source and invokes a `subscriber` callback for each value.
5
+
* @param subscriber - A callback function called for each issued value.
6
+
* @returns A function accepting a {@link Source} and returning a {@link Subscription}.
7
+
*
8
+
* @remarks
9
+
* `subscribe` accepts a `subscriber` callback and returns a function accepting a {@link Source}.
10
+
* When a source is passed to the returned funtion, the subscription will start and `subscriber`
11
+
* will be called for each new value the Source issues. This will also return a {@link Subscription}
12
+
* object that can cancel the ongoing {@link Source} early.
13
+
*
14
+
* @example
15
+
* ```ts
16
+
* const subscription = pipe(
17
+
* fromValue('test'),
18
+
* subscribe(text => {
19
+
* console.log(text); // 'test'
20
+
* })
21
+
* );
22
+
* ```
23
+
*/
24
+
export function subscribe<T>(subscriber: (value: T) => void) {
25
+
return (source: Source<T>): Subscription => {
26
+
let talkback = talkbackPlaceholder;
27
+
let ended = false;
28
+
source(signal => {
29
+
if (signal === SignalKind.End) {
30
+
ended = true;
31
+
} else if (signal.tag === SignalKind.Start) {
32
+
(talkback = signal[0])(TalkbackKind.Pull);
33
+
} else if (!ended) {
34
+
subscriber(signal[0]);
35
+
talkback(TalkbackKind.Pull);
36
+
}
37
+
});
38
+
return {
39
+
unsubscribe() {
40
+
if (!ended) {
41
+
ended = true;
42
+
talkback(TalkbackKind.Close);
43
+
}
44
+
},
45
+
};
46
+
};
47
+
}
48
+
49
+
/** Creates a subscription to a given source and invokes a `subscriber` callback for each value.
50
+
* @see {@link subscribe} which this helper aliases without returnin a {@link Subscription}.
51
+
* @param subscriber - A callback function called for each issued value.
52
+
* @returns A function accepting a {@link Source}.
53
+
*
54
+
* @remarks
55
+
* `forEach` accepts a `subscriber` callback and returns a function accepting a {@link Source}.
56
+
* When a source is passed to the returned funtion, the subscription will start and `subscriber`
57
+
* will be called for each new value the Source issues. Unlike `subscribe` it will not return a
58
+
* Subscription object and can't be cancelled early.
59
+
*
60
+
* @example
61
+
* ```ts
62
+
* pipe(
63
+
* fromValue('test'),
64
+
* forEach(text => {
65
+
* console.log(text); // 'test'
66
+
* })
67
+
* ); // undefined
68
+
* ```
69
+
*/
70
+
export function forEach<T>(subscriber: (value: T) => void) {
71
+
return (source: Source<T>): void => {
72
+
subscribe(subscriber)(source);
73
+
};
74
+
}
75
+
76
+
/** Creates a subscription to a given source and invokes a `subscriber` callback for each value.
77
+
* @see {@link subscribe} which this helper aliases without accepting parameters or returning a
78
+
* {@link Subscription | Subscription}.
79
+
*
80
+
* @param source - A {@link Source}.
81
+
*
82
+
* @remarks
83
+
* `publish` accepts a {@link Source} and subscribes to it, starting its values. The resulting
84
+
* values cannot be observed and the subscription can't be cancelled, as this helper is purely
85
+
* intended to start side-effects.
86
+
*
87
+
* @example
88
+
* ```ts
89
+
* pipe(
90
+
* lazy(() => {
91
+
* console.log('test'); // this is called
92
+
* return fromValue(123); // this is never used
93
+
* }),
94
+
* publish
95
+
* ); // undefined
96
+
* ```
97
+
*/
98
+
export function publish<T>(source: Source<T>): void {
99
+
subscribe(_value => {
100
+
/*noop*/
101
+
})(source);
102
+
}
103
+
104
+
const doneResult = { done: true } as IteratorReturnResult<void>;
105
+
106
+
/** Converts a Source to an AsyncIterable that pulls and issues values from the Source.
107
+
*
108
+
* @param source - A {@link Source}.
109
+
* @returns An {@link AsyncIterable | `AsyncIterable`} issuing values from the Source.
110
+
*
111
+
* @remarks
112
+
* `toAsyncIterable` will create an {@link AsyncIterable} that pulls and issues values from a given
113
+
* {@link Source}. This can be used in many interoperability situations, to provide an iterable when
114
+
* a consumer requires it.
115
+
*
116
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols}
117
+
* for the JS Iterable protocol.
118
+
*
119
+
* @example
120
+
* ```ts
121
+
* const iterable = toAsyncIterable(fromArray([1, 2, 3]));
122
+
* for await (const value of iterable) {
123
+
* console.log(value); // outputs: 1, 2, 3
124
+
* }
125
+
* ```
126
+
*/
127
+
export const toAsyncIterable = <T>(source: Source<T>): SourceIterable<T> => {
128
+
const buffer: T[] = [];
129
+
130
+
let ended = false;
131
+
let started = false;
132
+
let pulled = false;
133
+
let talkback = talkbackPlaceholder;
134
+
let next: ((value: IteratorResult<T>) => void) | void;
135
+
136
+
return {
137
+
async next(): Promise<IteratorResult<T>> {
138
+
if (!started) {
139
+
started = true;
140
+
source(signal => {
141
+
if (ended) {
142
+
/*noop*/
143
+
} else if (signal === SignalKind.End) {
144
+
if (next) next = next(doneResult);
145
+
ended = true;
146
+
} else if (signal.tag === SignalKind.Start) {
147
+
pulled = true;
148
+
(talkback = signal[0])(TalkbackKind.Pull);
149
+
} else {
150
+
pulled = false;
151
+
if (next) {
152
+
next = next({ value: signal[0], done: false });
153
+
} else {
154
+
buffer.push(signal[0]);
155
+
}
156
+
}
157
+
});
158
+
}
159
+
160
+
if (ended && !buffer.length) {
161
+
return doneResult;
162
+
} else if (!ended && !pulled && buffer.length <= 1) {
163
+
pulled = true;
164
+
talkback(TalkbackKind.Pull);
165
+
}
166
+
167
+
return buffer.length
168
+
? { value: buffer.shift()!, done: false }
169
+
: new Promise(resolve => (next = resolve));
170
+
},
171
+
async return(): Promise<IteratorReturnResult<void>> {
172
+
if (!ended) next = talkback(TalkbackKind.Close);
173
+
ended = true;
174
+
return doneResult;
175
+
},
176
+
[asyncIteratorSymbol()](): SourceIterable<T> {
177
+
return this;
178
+
},
179
+
};
180
+
};
181
+
182
+
/** Subscribes to a given source and collects all synchronous values into an array.
183
+
* @param source - A {@link Source}.
184
+
* @returns An array of values collected from the {@link Source}.
185
+
*
186
+
* @remarks
187
+
* `toArray` accepts a {@link Source} and returns an array of all synchronously issued values from
188
+
* this Source. It will issue {@link TalkbackKind.Pull | Pull signals} after every value it receives
189
+
* and expects the Source to recursively issue values.
190
+
*
191
+
* Any asynchronously issued values will not be
192
+
* added to the array and a {@link TalkbackKind.Close | Close signal} is issued by the sink before
193
+
* returning the array.
194
+
*
195
+
* @example
196
+
* ```ts
197
+
* toArray(fromArray([1, 2, 3])); // [1, 2, 3]
198
+
* ```
199
+
*/
200
+
export function toArray<T>(source: Source<T>): T[] {
201
+
const values: T[] = [];
202
+
let talkback = talkbackPlaceholder;
203
+
let ended = false;
204
+
source(signal => {
205
+
if (signal === SignalKind.End) {
206
+
ended = true;
207
+
} else if (signal.tag === SignalKind.Start) {
208
+
(talkback = signal[0])(TalkbackKind.Pull);
209
+
} else {
210
+
values.push(signal[0]);
211
+
talkback(TalkbackKind.Pull);
212
+
}
213
+
});
214
+
if (!ended) talkback(TalkbackKind.Close);
215
+
return values;
216
+
}
217
+
218
+
/** Subscribes to a given source and returns a Promise that will resolve with the last value the
219
+
* source issues.
220
+
*
221
+
* @param source - A {@link Source}.
222
+
* @returns A {@link Promise} resolving to the last value of the {@link Source}.
223
+
*
224
+
* @remarks
225
+
* `toPromise` will subscribe to the passed {@link Source} and resolve to the last value of it once
226
+
* it receives the last value, as signaled by the {@link SignalKind.End | End signal}.
227
+
*
228
+
* To keep its implementation simple, padding sources that don't issue any values to `toPromise` is
229
+
* undefined behaviour and `toPromise` will issue `undefined` in that case.
230
+
*
231
+
* The returned {@link Promise} delays its value by a microtick, using `Promise.resolve`.
232
+
*
233
+
* @example
234
+
* ```ts
235
+
* toPromise(fromValue('test')); // resolves: 'test'
236
+
* ```
237
+
*/
238
+
export function toPromise<T>(source: Source<T>): Promise<T> {
239
+
return new Promise(resolve => {
240
+
let talkback = talkbackPlaceholder;
241
+
let value: T | void;
242
+
source(signal => {
243
+
if (signal === SignalKind.End) {
244
+
Promise.resolve(value!).then(resolve);
245
+
} else if (signal.tag === SignalKind.Start) {
246
+
(talkback = signal[0])(TalkbackKind.Pull);
247
+
} else {
248
+
value = signal[0];
249
+
talkback(TalkbackKind.Pull);
250
+
}
251
+
});
252
+
});
253
+
}
-3
src/sources/wonka_source_fromArray.d.ts
-3
src/sources/wonka_source_fromArray.d.ts
-44
src/sources/wonka_source_fromArray.re
-44
src/sources/wonka_source_fromArray.re
···
1
-
open Wonka_types;
2
-
3
-
type fromArrayState('a) = {
4
-
mutable index: int,
5
-
mutable ended: bool,
6
-
mutable looping: bool,
7
-
mutable pull: bool
8
-
};
9
-
10
-
let fromArray = arr => curry(sink => {
11
-
let size = Rebel.Array.size(arr);
12
-
let state = {
13
-
index: 0,
14
-
ended: false,
15
-
looping: false,
16
-
pull: false
17
-
};
18
-
19
-
sink(.Start((.signal) => {
20
-
switch (signal, state.looping) {
21
-
| (Pull, false) => {
22
-
state.pull = true;
23
-
state.looping = true;
24
-
25
-
while (state.pull && !state.ended) {
26
-
let index = state.index;
27
-
if (index < size) {
28
-
let x = Rebel.Array.getUnsafe(arr, index);
29
-
state.index = index + 1;
30
-
state.pull = false;
31
-
sink(.Push(x));
32
-
} else {
33
-
state.ended = true;
34
-
sink(.End);
35
-
}
36
-
};
37
-
38
-
state.looping = false;
39
-
}
40
-
| (Pull, true) => state.pull = true
41
-
| (Close, _) => state.ended = true
42
-
}
43
-
}));
44
-
});
-3
src/sources/wonka_source_fromArray.rei
-3
src/sources/wonka_source_fromArray.rei
-3
src/sources/wonka_source_fromList.d.ts
-3
src/sources/wonka_source_fromList.d.ts
-44
src/sources/wonka_source_fromList.re
-44
src/sources/wonka_source_fromList.re
···
1
-
open Wonka_types;
2
-
3
-
type fromListState('a) = {
4
-
mutable value: 'a,
5
-
mutable ended: bool,
6
-
mutable looping: bool,
7
-
mutable pull: bool
8
-
};
9
-
10
-
let fromList = ls => curry(sink => {
11
-
let state = {
12
-
value: ls,
13
-
ended: false,
14
-
looping: false,
15
-
pull: false
16
-
};
17
-
18
-
sink(.Start((.signal) => {
19
-
switch (signal, state.looping) {
20
-
| (Pull, false) => {
21
-
state.pull = true;
22
-
state.looping = true;
23
-
24
-
while (state.pull && !state.ended) {
25
-
switch (state.value) {
26
-
| [x, ...rest] => {
27
-
state.value = rest;
28
-
state.pull = false;
29
-
sink(.Push(x));
30
-
}
31
-
| [] => {
32
-
state.ended = true;
33
-
sink(.End);
34
-
}
35
-
}
36
-
};
37
-
38
-
state.looping = false;
39
-
}
40
-
| (Pull, true) => state.pull = true
41
-
| (Close, _) => state.ended = true
42
-
}
43
-
}));
44
-
});
-3
src/sources/wonka_source_fromList.rei
-3
src/sources/wonka_source_fromList.rei
-3
src/sources/wonka_source_fromValue.d.ts
-3
src/sources/wonka_source_fromValue.d.ts
-16
src/sources/wonka_source_fromValue.re
-16
src/sources/wonka_source_fromValue.re
-3
src/sources/wonka_source_fromValue.rei
-3
src/sources/wonka_source_fromValue.rei
-3
src/sources/wonka_source_make.d.ts
-3
src/sources/wonka_source_make.d.ts
-15
src/sources/wonka_source_make.re
-15
src/sources/wonka_source_make.re
-3
src/sources/wonka_source_make.rei
-3
src/sources/wonka_source_make.rei
-3
src/sources/wonka_source_makeSubject.d.ts
-3
src/sources/wonka_source_makeSubject.d.ts
-35
src/sources/wonka_source_makeSubject.re
-35
src/sources/wonka_source_makeSubject.re
···
1
-
open Wonka_types;
2
-
3
-
type subjectState('a) = {
4
-
mutable sinks: Rebel.Array.t(sinkT('a)),
5
-
mutable ended: bool
6
-
};
7
-
8
-
let makeSubject = () => {
9
-
let state: subjectState('a) = {
10
-
sinks: Rebel.Array.makeEmpty(),
11
-
ended: false,
12
-
};
13
-
14
-
let source = sink => {
15
-
state.sinks = Rebel.Array.append(state.sinks, sink);
16
-
sink(.Start((.signal) => {
17
-
if (signal === Close) {
18
-
state.sinks = Rebel.Array.filter(state.sinks, x => x !== sink);
19
-
}
20
-
}));
21
-
};
22
-
23
-
let next = value =>
24
-
if (!state.ended) {
25
-
Rebel.Array.forEach(state.sinks, sink => sink(.Push(value)));
26
-
};
27
-
28
-
let complete = () =>
29
-
if (!state.ended) {
30
-
state.ended = true;
31
-
Rebel.Array.forEach(state.sinks, sink => sink(.End));
32
-
};
33
-
34
-
{ source, next, complete }
35
-
};
-3
src/sources/wonka_source_makeSubject.rei
-3
src/sources/wonka_source_makeSubject.rei
-4
src/sources/wonka_source_primitives.d.ts
-4
src/sources/wonka_source_primitives.d.ts
-11
src/sources/wonka_source_primitives.re
-11
src/sources/wonka_source_primitives.re
-4
src/sources/wonka_source_primitives.rei
-4
src/sources/wonka_source_primitives.rei
+407
src/sources.ts
+407
src/sources.ts
···
1
+
import { Source, Sink, SignalKind, TalkbackKind, Observer, Subject, TeardownFn } from './types';
2
+
import {
3
+
push,
4
+
start,
5
+
talkbackPlaceholder,
6
+
teardownPlaceholder,
7
+
asyncIteratorSymbol,
8
+
} from './helpers';
9
+
import { share } from './operators';
10
+
11
+
/** Helper creating a Source from a factory function when it's subscribed to.
12
+
* @param produce - A factory function returning a {@link Source}.
13
+
* @returns A {@link Source} lazyily subscribing to the Source returned by the given factory
14
+
* function.
15
+
*
16
+
* @remarks
17
+
* At times it's necessary to create a {@link Source} lazily. The time of a {@link Source} being
18
+
* created could be different from when it's subscribed to, and hence we may want to split the
19
+
* creation and subscription time. This is especially useful when the Source we wrap is "hot" and
20
+
* issues values as soon as it's created, which we may then not receive in a subscriber.
21
+
*
22
+
* @example An example of creating a {@link Source} that issues the timestamp of subscription. Here
23
+
* we effectively use `lazy` with the simple {@link fromValue | `fromValue`} source, to quickly
24
+
* create a Source that issues the time of its subscription, rather than the time of its creation
25
+
* that it would otherwise issue without `lazy`.
26
+
*
27
+
* ```ts
28
+
* lazy(() => fromValue(Date.now()));
29
+
* ```
30
+
*/
31
+
export function lazy<T>(produce: () => Source<T>): Source<T> {
32
+
return sink => produce()(sink);
33
+
}
34
+
35
+
/** Converts an AsyncIterable to a Source that pulls and issues values from it as requested.
36
+
*
37
+
* @see {@link fromIterable | `fromIterable`} for the non-async Iterable version of this helper,
38
+
* which calls this helper automatically as needed.
39
+
*
40
+
* @param iterable - An {@link AsyncIterable | `AsyncIterable`}.
41
+
* @returns A {@link Source} issuing values sourced from the Iterable.
42
+
*
43
+
* @remarks
44
+
* `fromAsyncIterable` will create a {@link Source} that pulls and issues values from a given
45
+
* {@link AsyncIterable}. This can be used in many interoperability situations, including to consume
46
+
* an async generator function.
47
+
*
48
+
* When the {@link Sink} throws an exception when a new value is pushed, this helper will rethrow it
49
+
* using {@link AsyncIterator.throw}, which allows an async generator to recover from the exception.
50
+
*
51
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_async_iterator_and_async_iterable_protocols}
52
+
* for the JS Iterable protocol.
53
+
*/
54
+
export function fromAsyncIterable<T>(iterable: AsyncIterable<T> | AsyncIterator<T>): Source<T> {
55
+
return sink => {
56
+
const iterator: AsyncIterator<T> =
57
+
(iterable[asyncIteratorSymbol()] && iterable[asyncIteratorSymbol()]()) || iterable;
58
+
59
+
let ended = false;
60
+
let looping = false;
61
+
let pulled = false;
62
+
let next: IteratorResult<T>;
63
+
sink(
64
+
start(async signal => {
65
+
if (signal === TalkbackKind.Close) {
66
+
ended = true;
67
+
if (iterator.return) iterator.return();
68
+
} else if (looping) {
69
+
pulled = true;
70
+
} else {
71
+
for (pulled = looping = true; pulled && !ended; ) {
72
+
if ((next = await iterator.next()).done) {
73
+
ended = true;
74
+
if (iterator.return) await iterator.return();
75
+
sink(SignalKind.End);
76
+
} else {
77
+
try {
78
+
pulled = false;
79
+
sink(push(next.value));
80
+
} catch (error) {
81
+
if (iterator.throw) {
82
+
if ((ended = !!(await iterator.throw(error)).done)) sink(SignalKind.End);
83
+
} else {
84
+
throw error;
85
+
}
86
+
}
87
+
}
88
+
}
89
+
looping = false;
90
+
}
91
+
})
92
+
);
93
+
};
94
+
}
95
+
96
+
/** Converts an Iterable to a Source that pulls and issues values from it as requested.
97
+
* @see {@link fromAsyncIterable | `fromAsyncIterable`} for the AsyncIterable version of this helper.
98
+
* @param iterable - An {@link Iterable | `Iterable`} or an `AsyncIterable`
99
+
* @returns A {@link Source} issuing values sourced from the Iterable.
100
+
*
101
+
* @remarks
102
+
* `fromIterable` will create a {@link Source} that pulls and issues values from a given
103
+
* {@link Iterable | JS Iterable}. As iterables are the common standard for any lazily iterated list
104
+
* of values in JS it can be applied to many different JS data types, including a JS Generator
105
+
* function.
106
+
*
107
+
* This Source will only call {@link Iterator.next} on the iterator when the subscribing {@link Sink}
108
+
* has pulled a new value with the {@link TalkbackKind.Pull | Pull signal}. `fromIterable` can
109
+
* therefore also be applied to "infinite" iterables, without a predefined end.
110
+
*
111
+
* This helper will call {@link fromAsyncIterable | `fromAsyncIterable`} automatically when the
112
+
* passed object also implements the async iterator protocol.
113
+
*
114
+
* When the {@link Sink} throws an exception when a new value is pushed, this helper will rethrow it
115
+
* using {@link Iterator.throw}, which allows a generator to recover from the exception.
116
+
*
117
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols#the_iterable_protocol}
118
+
* for the JS Iterable protocol.
119
+
*/
120
+
export function fromIterable<T>(iterable: Iterable<T> | AsyncIterable<T>): Source<T> {
121
+
if (iterable[asyncIteratorSymbol()]) return fromAsyncIterable(iterable as AsyncIterable<T>);
122
+
return sink => {
123
+
const iterator = iterable[Symbol.iterator]();
124
+
let ended = false;
125
+
let looping = false;
126
+
let pulled = false;
127
+
let next: IteratorResult<T>;
128
+
sink(
129
+
start(signal => {
130
+
if (signal === TalkbackKind.Close) {
131
+
ended = true;
132
+
if (iterator.return) iterator.return();
133
+
} else if (looping) {
134
+
pulled = true;
135
+
} else {
136
+
for (pulled = looping = true; pulled && !ended; ) {
137
+
if ((next = iterator.next()).done) {
138
+
ended = true;
139
+
if (iterator.return) iterator.return();
140
+
sink(SignalKind.End);
141
+
} else {
142
+
try {
143
+
pulled = false;
144
+
sink(push(next.value));
145
+
} catch (error) {
146
+
if (iterator.throw) {
147
+
if ((ended = !!iterator.throw(error).done)) sink(SignalKind.End);
148
+
} else {
149
+
throw error;
150
+
}
151
+
}
152
+
}
153
+
}
154
+
looping = false;
155
+
}
156
+
})
157
+
);
158
+
};
159
+
}
160
+
161
+
/** Creates a Source that issues a each value of a given array synchronously.
162
+
* @see {@link fromIterable} which `fromArray` aliases.
163
+
* @param array - The array whose values will be issued one by one.
164
+
* @returns A {@link Source} issuing the array's values.
165
+
*
166
+
* @remarks
167
+
* `fromArray` will create a {@link Source} that issues the values of a given JS array one by one. It
168
+
* will issue values as they're pulled and is hence a "cold" source, not eagerly emitting values. It
169
+
* will end and issue the {@link SignalKind.End | End signal} when the array is exhausted of values.
170
+
*
171
+
* @example
172
+
* ```ts
173
+
* fromArray([1, 2, 3]);
174
+
* ```
175
+
*/
176
+
export const fromArray: <T>(array: T[]) => Source<T> = fromIterable;
177
+
178
+
/** Creates a Source that issues a single value and ends immediately after.
179
+
* @param value - The value that will be issued.
180
+
* @returns A {@link Source} issuing the single value.
181
+
*
182
+
* @example
183
+
* ```ts
184
+
* fromValue('test');
185
+
* ```
186
+
*/
187
+
export function fromValue<T>(value: T): Source<T> {
188
+
return sink => {
189
+
let ended = false;
190
+
sink(
191
+
start(signal => {
192
+
if (signal === TalkbackKind.Close) {
193
+
ended = true;
194
+
} else if (!ended) {
195
+
ended = true;
196
+
sink(push(value));
197
+
sink(SignalKind.End);
198
+
}
199
+
})
200
+
);
201
+
};
202
+
}
203
+
204
+
/** Creates a new Source from scratch from a passed `subscriber` function.
205
+
* @param subscriber - A callback that is called when the {@link Source} is subscribed to.
206
+
* @returns A {@link Source} created from the `subscriber` parameter.
207
+
*
208
+
* @remarks
209
+
* `make` is used to create a new, arbitrary {@link Source} from scratch. It calls the passed
210
+
* `subscriber` function when it's subscribed to.
211
+
*
212
+
* The `subscriber` function receives an {@link Observer}. You may call {@link Observer.next} to
213
+
* issue values on the Source, and {@link Observer.complete} to end the Source.
214
+
*
215
+
* Your `subscribr` function must return a {@link TeardownFn | teardown function} which is only
216
+
* called when your source is cancelled — not when you invoke `complete` yourself. As this creates a
217
+
* "cold" source, every time this source is subscribed to, it will invoke the `subscriber` function
218
+
* again and create a new source.
219
+
*
220
+
* @example
221
+
*
222
+
* ```ts
223
+
* make(observer => {
224
+
* const frame = requestAnimationFrame(() => {
225
+
* observer.next('animate!');
226
+
* });
227
+
* return () => {
228
+
* cancelAnimationFrame(frame);
229
+
* };
230
+
* });
231
+
* ```
232
+
*/
233
+
export function make<T>(subscriber: (observer: Observer<T>) => TeardownFn): Source<T> {
234
+
return sink => {
235
+
let ended = false;
236
+
const teardown = subscriber({
237
+
next(value: T) {
238
+
if (!ended) sink(push(value));
239
+
},
240
+
complete() {
241
+
if (!ended) {
242
+
ended = true;
243
+
sink(SignalKind.End);
244
+
}
245
+
},
246
+
});
247
+
sink(
248
+
start(signal => {
249
+
if (signal === TalkbackKind.Close && !ended) {
250
+
ended = true;
251
+
teardown();
252
+
}
253
+
})
254
+
);
255
+
};
256
+
}
257
+
258
+
/** Creates a new Subject which can be used as an IO event hub.
259
+
* @returns A new {@link Subject}.
260
+
*
261
+
* @remarks
262
+
* `makeSubject` creates a new {@link Subject}. A Subject is a {@link Source} and an {@link Observer}
263
+
* combined in one interface, as the Observer is used to send new signals to the Source. This means
264
+
* that it's "hot" and hence all subscriptions to {@link Subject.source} share the same underlying
265
+
* signals coming from {@link Subject.next} and {@link Subject.complete}.
266
+
*
267
+
* @example
268
+
* ```ts
269
+
* const subject = makeSubject();
270
+
* pipe(subject.source, subscribe(console.log));
271
+
* // This will log the string on the above subscription
272
+
* subject.next('hello subject!');
273
+
* ```
274
+
*/
275
+
export function makeSubject<T>(): Subject<T> {
276
+
let next: Subject<T>['next'] | void;
277
+
let complete: Subject<T>['complete'] | void;
278
+
return {
279
+
source: share(
280
+
make(observer => {
281
+
next = observer.next;
282
+
complete = observer.complete;
283
+
return teardownPlaceholder;
284
+
})
285
+
),
286
+
next(value: T) {
287
+
if (next) next(value);
288
+
},
289
+
complete() {
290
+
if (complete) complete();
291
+
},
292
+
};
293
+
}
294
+
295
+
/** A {@link Source} that immediately ends.
296
+
* @remarks
297
+
* `empty` is a {@link Source} that immediately issues an {@link SignalKind.End | End signal} when
298
+
* it's subscribed to, ending immediately.
299
+
*
300
+
* @see {@link never | `never`} for a source that instead never ends.
301
+
*/
302
+
export const empty: Source<any> = (sink: Sink<any>): void => {
303
+
let ended = false;
304
+
sink(
305
+
start(signal => {
306
+
if (signal === TalkbackKind.Close) {
307
+
ended = true;
308
+
} else if (!ended) {
309
+
ended = true;
310
+
sink(SignalKind.End);
311
+
}
312
+
})
313
+
);
314
+
};
315
+
316
+
/** A {@link Source} without values that never ends.
317
+
* @remarks
318
+
* `never` is a {@link Source} that never issues any signals and neither sends values nor ends.
319
+
*
320
+
* @see {@link empty | `empty`} for a source that instead ends immediately.
321
+
*/
322
+
export const never: Source<any> = (sink: Sink<any>): void => {
323
+
sink(start(talkbackPlaceholder));
324
+
};
325
+
326
+
/** Creates a Source that issues an incrementing integer in intervals.
327
+
* @param ms - The interval in milliseconds.
328
+
* @returns A {@link Source} issuing an incrementing count on each interval.
329
+
*
330
+
* @remarks
331
+
* `interval` will create a {@link Source} that issues an incrementing counter each time the `ms`
332
+
* interval expires.
333
+
*
334
+
* It'll only stop when it's cancelled by a {@link TalkbackKind.Close | Close signal}.
335
+
*
336
+
* @example
337
+
* An example printing `0`, then `1`, and so on, in intervals of 50ms.
338
+
*
339
+
* ```ts
340
+
* pipe(interval(50), subscribe(console.log));
341
+
* ```
342
+
*/
343
+
export function interval(ms: number): Source<number> {
344
+
return make(observer => {
345
+
let i = 0;
346
+
const id = setInterval(() => observer.next(i++), ms);
347
+
return () => clearInterval(id);
348
+
});
349
+
}
350
+
351
+
/** Converts DOM Events to a Source given an `HTMLElement` and an event's name.
352
+
* @param element - The {@link HTMLElement} to listen to.
353
+
* @param event - The DOM Event name to listen to.
354
+
* @returns A {@link Source} issuing the {@link Event | DOM Events} as they're issued by the DOM.
355
+
*
356
+
* @remarks
357
+
* `fromDomEvent` will create a {@link Source} that listens to the given element's events and issues
358
+
* them as values on the source. This source will only stop when it's cancelled by a
359
+
* {@link TalkbackKind.Close | Close signal}.
360
+
*
361
+
* @example
362
+
* An example printing `'clicked!'` when the given `#root` element is clicked.
363
+
*
364
+
* ```ts
365
+
* const element = document.getElementById('root');
366
+
* pipe(
367
+
* fromDomEvent(element, 'click'),
368
+
* subscribe(() => console.log('clicked!'))
369
+
* );
370
+
* ```
371
+
*/
372
+
export function fromDomEvent(element: HTMLElement, event: string): Source<Event> {
373
+
return make(observer => {
374
+
element.addEventListener(event, observer.next);
375
+
return () => element.removeEventListener(event, observer.next);
376
+
});
377
+
}
378
+
379
+
/** Converts a Promise to a Source that issues the resolving Promise's value and then ends.
380
+
* @param promise - The promise that will be wrapped.
381
+
* @returns A {@link Source} issuing the promise's value when it resolves.
382
+
*
383
+
* @remarks
384
+
* `fromPromise` will create a {@link Source} that issues the {@link Promise}'s resolving value
385
+
* asynchronously and ends immediately after resolving.
386
+
*
387
+
* This helper will not handle the promise's exceptions, and will cause uncaught errors if the
388
+
* promise rejects without a value.
389
+
*
390
+
* @example
391
+
* An example printing `'resolved!'` when the given promise resolves after a tick.
392
+
*
393
+
* ```ts
394
+
* pipe(fromPromise(Promise.resolve('resolved!')), subscribe(console.log));
395
+
* ```
396
+
*/
397
+
export function fromPromise<T>(promise: Promise<T>): Source<T> {
398
+
return make(observer => {
399
+
promise.then(value => {
400
+
Promise.resolve(value).then(() => {
401
+
observer.next(value);
402
+
observer.complete();
403
+
});
404
+
});
405
+
return teardownPlaceholder;
406
+
});
407
+
}
+207
src/types.d.ts
+207
src/types.d.ts
···
1
+
/**
2
+
* Talkback signal that sends instructions from a sink to a source.
3
+
*
4
+
* @remarks
5
+
* This signal is issued via {@link TalkbackFn | talkback functions} that a {@link Sink} receives via
6
+
* the {@link Start} signal, to tell a {@link Source} to either send a new value (pulling) or stop
7
+
* sending values altogether (cancellation).
8
+
*/
9
+
export declare enum TalkbackKind {
10
+
/** Instructs the {@link Source} to send the next value. */
11
+
Pull = 0,
12
+
/** Instructs the {@link Source} to stop sending values and cancels it. */
13
+
Close = 1,
14
+
}
15
+
16
+
/**
17
+
* Talkback callback that sends instructions to a source.
18
+
*
19
+
* @remarks
20
+
* This function sends a {@link TalkbackKind} signal to the source to instruct it to send a new value
21
+
* (pulling) or to be cancelled and stop sending values altogether.
22
+
*/
23
+
export type TalkbackFn = (signal: TalkbackKind) => void;
24
+
25
+
/**
26
+
* Callback that is called when a source is cancelled.
27
+
*
28
+
* @remarks
29
+
* This is used, in particular, in the {@link make | make Source} and is a returned function that is
30
+
* called when the {@link TalkbackKind.Close} signal is received by the source.
31
+
*/
32
+
export type TeardownFn = () => void;
33
+
34
+
/**
35
+
* Tag enum that is used to on signals that are sent from a source to a sink.
36
+
*
37
+
* @remarks
38
+
* This signal is issued by a {@link Source} and {@link Sink | Sinks} are called with it. The signals
39
+
* carrying values ({@link Start} and {@link Push}) are sent as a unary `[T]` tuple tagged with
40
+
* {@link Tag}. The {@link End} signal carries no value and is sent as a raw `0` value.
41
+
* @see {@link Start} for the data structure of the start signal.
42
+
* @see {@link Push} for the data structure of the push signal, carrying values.
43
+
*/
44
+
export declare enum SignalKind {
45
+
/**
46
+
* Informs the {@link Sink} that it's being called by a {@link Source}.
47
+
*
48
+
* @remarks
49
+
* This starts the stream of values and carries a {@link TalkbackFn | talkback function} with it
50
+
* that is used by the {@link Sink} to communicate back to the {@link Source}.
51
+
* @see {@link Start} for the data structure of the signal.
52
+
*/
53
+
Start = 0,
54
+
/**
55
+
* Informs the {@link Sink} of a new values that's incoming from the {@link Source}.
56
+
*
57
+
* @remarks
58
+
* This informs the {@link Sink} of new values that are sent by the {@link Source}.
59
+
* @see {@link Push} for the data structure of the signal.
60
+
*/
61
+
Push = 1,
62
+
/**
63
+
* Informs the {@link Sink} that the {@link Source} has ended and that it won't send more values.
64
+
*
65
+
* @remarks
66
+
* This signal signifies that the stream has stopped and that no more values are expected. Some
67
+
* sources don't have a set end or limit on how many values will be sent. This signal is not sent
68
+
* when the {@link Source} is cancelled with a {@link TalkbackKind.Close | Close talkback signal}.
69
+
*/
70
+
End = 0,
71
+
}
72
+
73
+
/**
74
+
* The tag property that's put on unary `[T]` tuple to turn them into signals carrying values.
75
+
*
76
+
* @internal
77
+
*/
78
+
export interface Tag<T> {
79
+
tag: T;
80
+
}
81
+
82
+
/**
83
+
* Indicates the start of a stream to a {@link Sink}.
84
+
*
85
+
* @remarks
86
+
* This signal is sent from a {@link Source} to a {@link Sink} at the start of a stream to inform it
87
+
* that values can be pulled and/or will be sent. This signal carries a
88
+
* {@link TalkbackFn | talkback function} that is used by the {@link Sink} to communicate back to the
89
+
* {@link Source} as a callback. The talkback accepts {@link TalkbackKind.Pull | Pull} and
90
+
* {@link TalkbackKind.Close | Close} signals.
91
+
*/
92
+
export type Start<_T> = Tag<SignalKind.Start> & [TalkbackFn];
93
+
94
+
/**
95
+
* Sends a new value to a {@link Sink}.
96
+
*
97
+
* @remarks
98
+
* This signal is sent from a {@link Source} to a {@link Sink} to send a new value to it. This is
99
+
* essentially the signal that wraps new values coming in, like an event. Values are carried on
100
+
* unary tuples and can be accessed using `signal[0]`.
101
+
*/
102
+
export type Push<T> = Tag<SignalKind.Push> & [T];
103
+
104
+
/**
105
+
* Signals are sent from {@link Source | Sources} to {@link Sink | Sinks} to inform them of changes.
106
+
*
107
+
* @remarks
108
+
* A {@link Source}, when consumed, sends a sequence of events to {@link Sink | Sinks}. In order, a
109
+
* {@link SignalKind.Start | Start} signal will always be sent first, followed optionally by one or
110
+
* more {@link SignalKind.Push | Push signals}, carrying values and representing the stream. A
111
+
* {@link Source} will send the {@link SignalKind.End | End signal} when it runs out of values. The
112
+
* End signal will be omitted if the Source is cancelled by a
113
+
* {@link TalkbackKind.Close | Close signal}, sent back from the {@link Sink}.
114
+
* @see {@link SignalKind} for the kinds signals sent by {@link Source | Sources}.
115
+
* @see {@link Start} for the data structure of the start signal.
116
+
* @see {@link Push} for the data structure of the push signal.
117
+
*/
118
+
export type Signal<T> = Start<T> | Push<T> | SignalKind.End;
119
+
120
+
/**
121
+
* Callback function that is called by a {@link Source} with {@link Signal | Signals}.
122
+
*
123
+
* @remarks
124
+
* A Sink is a function that is called repeatedly with signals from a {@link Source}. It represents
125
+
* the receiver of the stream of signals/events coming from a {@link Source}.
126
+
* @see {@link Signal} for the data structure of signals.
127
+
*/
128
+
export type Sink<T> = (signal: Signal<T>) => void;
129
+
130
+
/** Factory function that calls {@link Sink | Sinks} with {@link Signal | Signals} when invoked.
131
+
* @remarks
132
+
* A Source is a factory function that when invoked with a {@link Sink}, calls it with
133
+
* {@link Signal | Signals} to create a stream of events, informing it of new values and the
134
+
* potential end of the stream of values. The first signal a Source sends is always a
135
+
* {@link Start | Start signal} that sends a talkback function to the {@link Sink}, so it may request
136
+
* new values or cancel the source.
137
+
*
138
+
* @see {@link Signal} for the data structure of signals.
139
+
* @see {@link Sink} for the data structure of sinks.
140
+
*/
141
+
export type Source<T> = (sink: Sink<T>) => void;
142
+
143
+
/** Transform function that accepts a {@link Source} and returns a new one.
144
+
* @remarks
145
+
* Wonka comes with several helper operators that transform a given {@link Source} into a new one,
146
+
* potentially changing its outputs, or the outputs' timing. An "operator" in Wonka typically
147
+
* accepts arguments and then returns this kind of function, so they can be chained and composed.
148
+
*
149
+
* @see {@link pipe | `pipe`} for the helper used to compose operators.
150
+
*/
151
+
export type Operator<In, Out> = (a: Source<In>) => Source<Out>;
152
+
153
+
/** Type utility to determine the type of a {@link Source}. */
154
+
export type TypeOfSource<T> = T extends Source<infer U> ? U : never;
155
+
156
+
/** Subscription object that can be used to cancel a {@link Source}.
157
+
* @see {@link subscribe | subscribe sink} for a helper that returns this structure.
158
+
*/
159
+
export interface Subscription {
160
+
/**
161
+
* Cancels a {@link Source} to stop the subscription from receiving new values.
162
+
*
163
+
* @see {@link TalkbackKind.Close | Close signal} This uses the {@link TalkbackFn | talkback function} to send a {@link TalkbackKind.Close | Close signal}
164
+
* to the subscribed-to {@link Source} to stop it from sending new values. This cleans up the subscription
165
+
* and ends it immediately.
166
+
*/
167
+
unsubscribe(): void;
168
+
}
169
+
170
+
/** An Observer represents sending signals manually to a {@link Sink}.
171
+
* @remarks
172
+
* The Observer is used whenever a utility allows for signals to be sent manually as a {@link Source}
173
+
* would send them.
174
+
*
175
+
* @see {@link make | `make` source} for a helper that uses this structure.
176
+
*/
177
+
export interface Observer<T> {
178
+
/** Sends a new value to the receiving Sink.
179
+
* @remarks
180
+
* This creates a {@link Push | Push signal} that is sent to a {@link Sink}.
181
+
*/
182
+
next(value: T): void;
183
+
/** Indicates to the receiving Sink that no more values will be sent.
184
+
* @remarks
185
+
* This creates an {@link SignalKind.End | End signal} that is sent to a {@link Sink}. The Observer
186
+
* will accept no more values via {@link Observer.next | `next` calls} once this method has been
187
+
* invoked.
188
+
*/
189
+
complete(): void;
190
+
}
191
+
192
+
/** Subjects combine a {@link Source} with the {@link Observer} that is used to send values on said Source.
193
+
* @remarks
194
+
* A Subject is used whenever an event hub-like structure is needed, as it both provides the
195
+
* {@link Observer}'s methods to send signals, as well as the `source` to receive said signals.
196
+
*
197
+
* @see {@link makeSubject | `makeSubject` source} for a helper that creates this structure.
198
+
*/
199
+
export interface Subject<T> extends Observer<T> {
200
+
/** The {@link Source} that issues the signals as the {@link Observer} methods are called. */
201
+
source: Source<T>;
202
+
}
203
+
204
+
/** Async Iterable/Iterator after having converted a {@link Source}.
205
+
* @see {@link toAsyncIterable} for a helper that creates this structure.
206
+
*/
207
+
export interface SourceIterable<T> extends AsyncIterator<T>, AsyncIterable<T> {}
+10
src/types.mjs
+10
src/types.mjs
-14
src/web/wonkaJs.d.ts
-14
src/web/wonkaJs.d.ts
···
1
-
/* operators */
2
-
export * from './wonka_operator_debounce';
3
-
export * from './wonka_operator_delay';
4
-
export * from './wonka_operator_interval';
5
-
export * from './wonka_operator_sample';
6
-
export * from './wonka_operator_throttle';
7
-
8
-
/* sinks */
9
-
export * from './wonka_sink_toPromise';
10
-
11
-
/* sources */
12
-
export * from './wonka_source_fromDomEvent';
13
-
export * from './wonka_source_fromListener';
14
-
export * from './wonka_source_fromPromise';
-14
src/web/wonkaJs.re
-14
src/web/wonkaJs.re
···
1
-
/* operators */
2
-
include Wonka_operator_debounce;
3
-
include Wonka_operator_delay;
4
-
include Wonka_operator_interval;
5
-
include Wonka_operator_sample;
6
-
include Wonka_operator_throttle;
7
-
8
-
/* sinks */
9
-
include Wonka_sink_toPromise;
10
-
11
-
/* sources */
12
-
include Wonka_source_fromDomEvent;
13
-
include Wonka_source_fromListener;
14
-
include Wonka_source_fromPromise;
-3
src/web/wonka_operator_debounce.d.ts
-3
src/web/wonka_operator_debounce.d.ts
-47
src/web/wonka_operator_debounce.re
-47
src/web/wonka_operator_debounce.re
···
1
-
open Wonka_types;
2
-
3
-
let debounce = f => curry(source => curry(sink => {
4
-
let gotEndSignal = ref(false);
5
-
let id: ref(option(Js.Global.timeoutId)) = ref(None);
6
-
7
-
let clearTimeout = () =>
8
-
switch (id^) {
9
-
| Some(timeoutId) => {
10
-
id := None;
11
-
Js.Global.clearTimeout(timeoutId);
12
-
}
13
-
| None => ()
14
-
};
15
-
16
-
source((.signal) => {
17
-
switch (signal) {
18
-
| Start(tb) => {
19
-
sink(.Start((.signal) => {
20
-
switch (signal) {
21
-
| Close => {
22
-
clearTimeout();
23
-
tb(.Close);
24
-
}
25
-
| _ => tb(.signal)
26
-
}
27
-
}));
28
-
}
29
-
| Push(x) => {
30
-
clearTimeout();
31
-
id := Some(Js.Global.setTimeout(() => {
32
-
id := None;
33
-
sink(.signal);
34
-
if (gotEndSignal^) sink(.End);
35
-
}, f(.x)));
36
-
}
37
-
| End => {
38
-
gotEndSignal := true;
39
-
40
-
switch (id^) {
41
-
| None => sink(.End)
42
-
| _ => ()
43
-
};
44
-
}
45
-
}
46
-
});
47
-
}));
-3
src/web/wonka_operator_debounce.rei
-3
src/web/wonka_operator_debounce.rei
-3
src/web/wonka_operator_delay.d.ts
-3
src/web/wonka_operator_delay.d.ts
-45
src/web/wonka_operator_delay.re
-45
src/web/wonka_operator_delay.re
···
1
-
open Wonka_types;
2
-
3
-
type delayStateT = {
4
-
mutable talkback: (.talkbackT) => unit,
5
-
mutable active: int,
6
-
mutable gotEndSignal: bool
7
-
};
8
-
9
-
let delay = wait => curry(source => curry(sink => {
10
-
let state: delayStateT = {
11
-
talkback: Wonka_helpers.talkbackPlaceholder,
12
-
active: 0,
13
-
gotEndSignal: false
14
-
};
15
-
16
-
source((.signal) => {
17
-
switch (signal) {
18
-
| Start(tb) => state.talkback = tb
19
-
| _ when !state.gotEndSignal => {
20
-
state.active = state.active + 1;
21
-
ignore(Js.Global.setTimeout(() => {
22
-
if (state.gotEndSignal && state.active === 0) {
23
-
sink(.End);
24
-
} else {
25
-
state.active = state.active - 1;
26
-
};
27
-
28
-
sink(.signal);
29
-
}, wait));
30
-
}
31
-
| _ => ()
32
-
}
33
-
});
34
-
35
-
sink(.Start((.signal) => {
36
-
switch (signal) {
37
-
| Close => {
38
-
state.gotEndSignal = true;
39
-
if (state.active === 0) sink(.End);
40
-
}
41
-
| _ when !state.gotEndSignal => state.talkback(.signal)
42
-
| _ => ()
43
-
}
44
-
}));
45
-
}));
-3
src/web/wonka_operator_delay.rei
-3
src/web/wonka_operator_delay.rei
-3
src/web/wonka_operator_interval.d.ts
-3
src/web/wonka_operator_interval.d.ts
-17
src/web/wonka_operator_interval.re
-17
src/web/wonka_operator_interval.re
···
1
-
open Wonka_types;
2
-
3
-
let interval = p => curry(sink => {
4
-
let i = ref(0);
5
-
let id = Js.Global.setInterval(() => {
6
-
let num = i^;
7
-
i := i^ + 1;
8
-
sink(.Push(num));
9
-
}, p);
10
-
11
-
sink(.Start((.signal) => {
12
-
switch (signal) {
13
-
| Close => Js.Global.clearInterval(id)
14
-
| _ => ()
15
-
}
16
-
}));
17
-
});
-3
src/web/wonka_operator_interval.rei
-3
src/web/wonka_operator_interval.rei
-3
src/web/wonka_operator_sample.d.ts
-3
src/web/wonka_operator_sample.d.ts
-59
src/web/wonka_operator_sample.re
-59
src/web/wonka_operator_sample.re
···
1
-
open Wonka_types;
2
-
3
-
type sampleStateT('a) = {
4
-
mutable ended: bool,
5
-
mutable value: option('a),
6
-
mutable sourceTalkback: (.talkbackT) => unit,
7
-
mutable notifierTalkback: (.talkbackT) => unit
8
-
};
9
-
10
-
let sample = notifier => curry(source => curry(sink => {
11
-
let state = {
12
-
ended: false,
13
-
value: None,
14
-
sourceTalkback: (._: talkbackT) => (),
15
-
notifierTalkback: (._: talkbackT) => ()
16
-
};
17
-
18
-
source((.signal) => {
19
-
switch (signal) {
20
-
| Start(tb) => state.sourceTalkback = tb
21
-
| End => {
22
-
state.ended = true;
23
-
state.notifierTalkback(.Close);
24
-
sink(.End);
25
-
}
26
-
| Push(x) => state.value = Some(x)
27
-
}
28
-
});
29
-
30
-
notifier((.signal) => {
31
-
switch (signal, state.value) {
32
-
| (Start(tb), _) => state.notifierTalkback = tb
33
-
| (End, _) => {
34
-
state.ended = true;
35
-
state.sourceTalkback(.Close);
36
-
sink(.End);
37
-
}
38
-
| (Push(_), Some(x)) when !state.ended => {
39
-
state.value = None;
40
-
sink(.Push(x));
41
-
}
42
-
| (Push(_), _) => ()
43
-
}
44
-
});
45
-
46
-
sink(.Start((.signal) => {
47
-
switch (signal) {
48
-
| Pull => {
49
-
state.sourceTalkback(.Pull);
50
-
state.notifierTalkback(.Pull);
51
-
}
52
-
| Close => {
53
-
state.ended = true;
54
-
state.sourceTalkback(.Close);
55
-
state.notifierTalkback(.Close);
56
-
}
57
-
}
58
-
}));
59
-
}));
-3
src/web/wonka_operator_sample.rei
-3
src/web/wonka_operator_sample.rei
-3
src/web/wonka_operator_throttle.d.ts
-3
src/web/wonka_operator_throttle.d.ts
-41
src/web/wonka_operator_throttle.re
-41
src/web/wonka_operator_throttle.re
···
1
-
open Wonka_types;
2
-
3
-
let throttle = f => curry(source => curry(sink => {
4
-
let skip = ref(false);
5
-
let id: ref(option(Js.Global.timeoutId)) = ref(None);
6
-
let clearTimeout = () =>
7
-
switch (id^) {
8
-
| Some(timeoutId) => Js.Global.clearTimeout(timeoutId);
9
-
| None => ()
10
-
};
11
-
12
-
source((.signal) => {
13
-
switch (signal) {
14
-
| Start(tb) => {
15
-
sink(.Start((.signal) => {
16
-
switch (signal) {
17
-
| Close => {
18
-
clearTimeout();
19
-
tb(.Close);
20
-
}
21
-
| _ => tb(.signal)
22
-
}
23
-
}));
24
-
}
25
-
| End => {
26
-
clearTimeout();
27
-
sink(.End);
28
-
}
29
-
| Push(x) when !skip^ => {
30
-
skip := true;
31
-
clearTimeout();
32
-
id := Some(Js.Global.setTimeout(() => {
33
-
id := None;
34
-
skip := false;
35
-
}, f(.x)));
36
-
sink(.signal);
37
-
}
38
-
| Push(_) => ()
39
-
}
40
-
});
41
-
}));
-3
src/web/wonka_operator_throttle.rei
-3
src/web/wonka_operator_throttle.rei
-3
src/web/wonka_sink_toPromise.d.ts
-3
src/web/wonka_sink_toPromise.d.ts
-15
src/web/wonka_sink_toPromise.re
-15
src/web/wonka_sink_toPromise.re
···
1
-
open Wonka_types;
2
-
3
-
let toPromise = source => {
4
-
open Wonka_operator_takeLast;
5
-
6
-
Js.Promise.make((~resolve, ~reject as _) => {
7
-
takeLast(1, source, (.signal) => {
8
-
switch (signal) {
9
-
| Start(x) => x(.Pull)
10
-
| Push(x) => resolve(.x)
11
-
| End => ()
12
-
}
13
-
});
14
-
});
15
-
};
-3
src/web/wonka_sink_toPromise.rei
-3
src/web/wonka_sink_toPromise.rei
-3
src/web/wonka_source_fromDomEvent.d.ts
-3
src/web/wonka_source_fromDomEvent.d.ts
-30
src/web/wonka_source_fromDomEvent.re
-30
src/web/wonka_source_fromDomEvent.re
···
1
-
open Wonka_types;
2
-
open Wonka_source_fromListener;
3
-
4
-
let fromDomEvent = (element, event) => curry(sink => {
5
-
let addEventListener: (
6
-
Dom.element,
7
-
string,
8
-
(Dom.event) => unit
9
-
) => unit = [%raw {|
10
-
function (element, event, handler) {
11
-
element.addEventListener(event, handler);
12
-
}
13
-
|}];
14
-
15
-
let removeEventListener: (
16
-
Dom.element,
17
-
string,
18
-
(Dom.event) => unit
19
-
) => unit = [%raw {|
20
-
function (element, event, handler) {
21
-
element.removeEventListener(event, handler);
22
-
}
23
-
|}];
24
-
25
-
fromListener(
26
-
handler => addEventListener(element, event, handler),
27
-
handler => removeEventListener(element, event, handler),
28
-
sink
29
-
)
30
-
});
-3
src/web/wonka_source_fromDomEvent.rei
-3
src/web/wonka_source_fromDomEvent.rei
-6
src/web/wonka_source_fromListener.d.ts
-6
src/web/wonka_source_fromListener.d.ts
-14
src/web/wonka_source_fromListener.re
-14
src/web/wonka_source_fromListener.re
···
1
-
open Wonka_types;
2
-
3
-
let fromListener = (addListener, removeListener) => curry(sink => {
4
-
let handler = event => sink(.Push(event));
5
-
6
-
sink(.Start((.signal) => {
7
-
switch (signal) {
8
-
| Close => removeListener(handler)
9
-
| _ => ()
10
-
}
11
-
}));
12
-
13
-
addListener(handler);
14
-
});
-8
src/web/wonka_source_fromListener.rei
-8
src/web/wonka_source_fromListener.rei
-3
src/web/wonka_source_fromPromise.d.ts
-3
src/web/wonka_source_fromPromise.d.ts
-21
src/web/wonka_source_fromPromise.re
-21
src/web/wonka_source_fromPromise.re
···
1
-
open Wonka_types;
2
-
3
-
let fromPromise = promise => curry(sink => {
4
-
let ended = ref(false);
5
-
6
-
ignore(Js.Promise.then_(value => {
7
-
if (!ended^) {
8
-
sink(.Push(value));
9
-
sink(.End);
10
-
};
11
-
12
-
Js.Promise.resolve(())
13
-
}, promise));
14
-
15
-
sink(.Start((.signal) => {
16
-
switch (signal) {
17
-
| Close => ended := true
18
-
| _ => ()
19
-
}
20
-
}));
21
-
});
-3
src/web/wonka_source_fromPromise.rei
-3
src/web/wonka_source_fromPromise.rei
-32
src/wonka.d.ts
-32
src/wonka.d.ts
···
1
-
/* sources */
2
-
export * from './sources/wonka_source_fromArray';
3
-
export * from './sources/wonka_source_fromList';
4
-
export * from './sources/wonka_source_fromValue';
5
-
export * from './sources/wonka_source_make';
6
-
export * from './sources/wonka_source_makeSubject';
7
-
export * from './sources/wonka_source_primitives';
8
-
9
-
/* operators */
10
-
export * from './operators/wonka_operator_combine';
11
-
export * from './operators/wonka_operator_concatMap';
12
-
export * from './operators/wonka_operator_filter';
13
-
export * from './operators/wonka_operator_map';
14
-
export * from './operators/wonka_operator_mergeMap';
15
-
export * from './operators/wonka_operator_scan';
16
-
export * from './operators/wonka_operator_share';
17
-
export * from './operators/wonka_operator_skip';
18
-
export * from './operators/wonka_operator_skipUntil';
19
-
export * from './operators/wonka_operator_skipWhile';
20
-
export * from './operators/wonka_operator_switchMap';
21
-
export * from './operators/wonka_operator_take';
22
-
export * from './operators/wonka_operator_takeLast';
23
-
export * from './operators/wonka_operator_takeUntil';
24
-
export * from './operators/wonka_operator_takeWhile';
25
-
export * from './operators/wonka_operator_tap';
26
-
export * from './operators/wonka_operator_tapAll';
27
-
28
-
/* sinks */
29
-
export * from './sinks/wonka_sink_publish';
30
-
export * from './sinks/wonka_sink_subscribe';
31
-
32
-
export * from './web/wonkaJs';
-40
src/wonka.ml
-40
src/wonka.ml
···
1
-
module Types = Wonka_types
2
-
3
-
(* sources *)
4
-
include Wonka_source_fromArray
5
-
include Wonka_source_fromList
6
-
include Wonka_source_fromValue
7
-
include Wonka_source_make
8
-
include Wonka_source_makeSubject
9
-
include Wonka_source_primitives
10
-
11
-
(* operators *)
12
-
include Wonka_operator_combine
13
-
include Wonka_operator_concatMap
14
-
include Wonka_operator_filter
15
-
include Wonka_operator_map
16
-
include Wonka_operator_mergeMap
17
-
include Wonka_operator_scan
18
-
include Wonka_operator_share
19
-
include Wonka_operator_skip
20
-
include Wonka_operator_skipUntil
21
-
include Wonka_operator_skipWhile
22
-
include Wonka_operator_switchMap
23
-
include Wonka_operator_take
24
-
include Wonka_operator_takeLast
25
-
include Wonka_operator_takeUntil
26
-
include Wonka_operator_takeWhile
27
-
include Wonka_operator_tap
28
-
include Wonka_operator_tapAll
29
-
30
-
(* sinks *)
31
-
include Wonka_sink_publish
32
-
include Wonka_sink_subscribe
33
-
34
-
#if BS_NATIVE then
35
-
#if BSB_BACKEND = "js" then
36
-
include WonkaJs
37
-
#end
38
-
#else
39
-
include WonkaJs
40
-
#end
-62
src/wonka_helpers.re
-62
src/wonka_helpers.re
···
1
-
open Wonka_types;
2
-
3
-
let talkbackPlaceholder = (._: talkbackT) => ();
4
-
5
-
let captureTalkback = (
6
-
source: sourceT('a),
7
-
sinkWithTalkback: (.signalT('a), (.talkbackT) => unit) => unit
8
-
) => {
9
-
let talkback = ref(talkbackPlaceholder);
10
-
11
-
source((.signal) => {
12
-
switch (signal) {
13
-
| Start(x) => talkback := x
14
-
| _ => ()
15
-
};
16
-
17
-
sinkWithTalkback(.signal, talkback^)
18
-
});
19
-
};
20
-
21
-
type trampolineT = {
22
-
mutable exhausted: bool,
23
-
mutable inLoop: bool,
24
-
mutable gotSignal: bool
25
-
};
26
-
27
-
let makeTrampoline = (sink: sinkT('a), f: (.unit) => option('a)) => {
28
-
let state: trampolineT = {
29
-
exhausted: false,
30
-
inLoop: false,
31
-
gotSignal: false
32
-
};
33
-
34
-
let loop = () => {
35
-
let rec explode = () =>
36
-
switch (f(.)) {
37
-
| Some(x) => {
38
-
state.gotSignal = false;
39
-
sink(.Push(x));
40
-
if (state.gotSignal) explode();
41
-
}
42
-
| None => {
43
-
state.exhausted = true;
44
-
sink(.End)
45
-
}
46
-
};
47
-
48
-
state.inLoop = true;
49
-
explode();
50
-
state.inLoop = false;
51
-
};
52
-
53
-
sink(.Start((.signal) => {
54
-
switch (signal, state.exhausted) {
55
-
| (Pull, false) => {
56
-
state.gotSignal = true;
57
-
if (!state.inLoop) loop();
58
-
}
59
-
| _ => ()
60
-
}
61
-
}));
62
-
};
-27
src/wonka_types.d.ts
-27
src/wonka_types.d.ts
···
1
-
// Reason Helper Types:
2
-
3
-
interface ListNode<T> {
4
-
[0]: T,
5
-
[1]: 0 | List<T>
6
-
}
7
-
8
-
export type List<T> = ListNode<T> | 0;
9
-
10
-
// Wonka Types:
11
-
12
-
export type Talkback = 0 | 1;
13
-
14
-
export type Signal<A> =
15
-
| { tag: 0, [0]: (talkback: Talkback) => void }
16
-
| { tag: 1, [0]: A }
17
-
| 0;
18
-
19
-
export interface Sink<A> { (signal: Signal<A>): void; }
20
-
export interface Source<A> { (sink: Sink<A>): void; }
21
-
export interface Operator<A, B> { (source: Source<A>): Source<B>; }
22
-
23
-
export type Subscription = [() => void];
24
-
25
-
export type Observer<A> = [(value: A) => void, () => void];
26
-
27
-
export type Subject<A> = [Source<A>, (value: A) => void, () => void];
-62
src/wonka_types.re
-62
src/wonka_types.re
···
1
-
/* A sink has the signature: `signalT('a) => unit`
2
-
* A source thus has the signature: `sink => unit`, or `(signalT('a) => unit) => unit`
3
-
*
4
-
* Effectively a sink is a callback receiving signals as its first argument.
5
-
* - Start(talkback) will be carrying a talkback using which the sink can attempt
6
-
* to pull values (Pull) or request the source to end its stream (End)
7
-
* - Push(payload) carries a value that the source sends to the sink.
8
-
* This can happen at any time, since a source can be both pullable or
9
-
* merely listenable.
10
-
* - End signifies the end of the source stream, be it because of a talkback (End)
11
-
* or because the source is exhausted.
12
-
*
13
-
* In detail, a talkback is simply a callback that receives a talkback signal as
14
-
* its first argument. It's thus typically anonymously created by the source.
15
-
*
16
-
* A source is a factory that accepts a sink. Calling a source with a sink will
17
-
* instantiate and initiate the source's stream, after which the source sends the sink
18
-
* a talkback (Start(talkback)). This is called the "handshake".
19
-
*
20
-
* Typically an operator factory won't call the source with a sink it receives
21
-
* immediately—because this would cause the operator to simply be a noop—but instead
22
-
* it will create an intermediate sink with the same signature to perform its own
23
-
* logic.
24
-
*
25
-
* At that point the operator can for instance intercept the talkback for its own
26
-
* purposes, or call the actual sink as it sees fit.
27
-
*/
28
-
29
-
type talkbackT =
30
-
| Pull
31
-
| Close;
32
-
33
-
type signalT('a) =
34
-
| Start((.talkbackT) => unit)
35
-
| Push('a)
36
-
| End;
37
-
38
-
type sinkT('a) = (.signalT('a)) => unit;
39
-
type sourceT('a) = sinkT('a) => unit;
40
-
41
-
type teardownT = (.unit) => unit;
42
-
43
-
type subscriptionT = {
44
-
unsubscribe: unit => unit
45
-
};
46
-
47
-
type observerT('a) = {
48
-
next: 'a => unit,
49
-
complete: unit => unit
50
-
};
51
-
52
-
type subjectT('a) = {
53
-
source: sourceT('a),
54
-
next: 'a => unit,
55
-
complete: unit => unit
56
-
};
57
-
58
-
/* Sinks and sources need to explicitly be their own callbacks;
59
-
* This means that currying needs to be forced for Bucklescript
60
-
* not to optimise them away
61
-
*/
62
-
external curry: 'a => 'a = "%identity";
-38
tasks.json
-38
tasks.json
···
1
-
{
2
-
"version": "0.1.0",
3
-
"command": "npm",
4
-
"options": {
5
-
"cwd": "${workspaceRoot}"
6
-
},
7
-
"isShellCommand": true,
8
-
"args": [
9
-
"run",
10
-
"watch"
11
-
],
12
-
"showOutput": "always",
13
-
"isBackground": true,
14
-
"problemMatcher": {
15
-
"fileLocation": "absolute",
16
-
"owner": "ocaml",
17
-
"watching": {
18
-
"activeOnStart": false,
19
-
"beginsPattern": ">>>> Start compiling",
20
-
"endsPattern": ">>>> Finish compiling"
21
-
},
22
-
"pattern": [
23
-
{
24
-
"regexp": "^File \"(.*)\", line (\\d+)(?:, characters (\\d+)-(\\d+))?:$",
25
-
"file": 1,
26
-
"line": 2,
27
-
"column": 3,
28
-
"endColumn": 4
29
-
},
30
-
{
31
-
"regexp": "^(?:(?:Parse\\s+)?(Warning|[Ee]rror)(?:\\s+\\d+)?:)?\\s+(.*)$",
32
-
"severity": 1,
33
-
"message": 2,
34
-
"loop": true
35
-
}
36
-
]
37
-
}
38
-
}
+24
tsconfig.json
+24
tsconfig.json
···
1
+
{
2
+
"compilerOptions": {
3
+
"forceConsistentCasingInFileNames": true,
4
+
"importsNotUsedAsValues": "remove",
5
+
"noEmit": true,
6
+
"esModuleInterop": true,
7
+
"noUnusedLocals": true,
8
+
"rootDir": "./src",
9
+
"baseUrl": ".",
10
+
"outDir": "dist/cjs",
11
+
"lib": ["dom", "esnext"],
12
+
"jsx": "react",
13
+
"declaration": false,
14
+
"module": "es2015",
15
+
"moduleResolution": "node",
16
+
"target": "esnext",
17
+
"strict": true,
18
+
"noImplicitAny": false,
19
+
"noUnusedParameters": true,
20
+
"skipLibCheck": true,
21
+
"isolatedModules": true
22
+
},
23
+
"include": ["src"]
24
+
}
-6452
yarn.lock
-6452
yarn.lock
···
1
-
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
-
# yarn lockfile v1
3
-
4
-
5
-
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.0.0-beta.35":
6
-
version "7.0.0"
7
-
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8"
8
-
integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==
9
-
dependencies:
10
-
"@babel/highlight" "^7.0.0"
11
-
12
-
"@babel/core@^7.1.6":
13
-
version "7.2.2"
14
-
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.2.2.tgz#07adba6dde27bb5ad8d8672f15fde3e08184a687"
15
-
integrity sha512-59vB0RWt09cAct5EIe58+NzGP4TFSD3Bz//2/ELy3ZeTeKF6VTD1AXlH8BGGbCX0PuobZBsIzO7IAI9PH67eKw==
16
-
dependencies:
17
-
"@babel/code-frame" "^7.0.0"
18
-
"@babel/generator" "^7.2.2"
19
-
"@babel/helpers" "^7.2.0"
20
-
"@babel/parser" "^7.2.2"
21
-
"@babel/template" "^7.2.2"
22
-
"@babel/traverse" "^7.2.2"
23
-
"@babel/types" "^7.2.2"
24
-
convert-source-map "^1.1.0"
25
-
debug "^4.1.0"
26
-
json5 "^2.1.0"
27
-
lodash "^4.17.10"
28
-
resolve "^1.3.2"
29
-
semver "^5.4.1"
30
-
source-map "^0.5.0"
31
-
32
-
"@babel/generator@^7.2.2":
33
-
version "7.2.2"
34
-
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.2.2.tgz#18c816c70962640eab42fe8cae5f3947a5c65ccc"
35
-
integrity sha512-I4o675J/iS8k+P38dvJ3IBGqObLXyQLTxtrR4u9cSUJOURvafeEWb/pFMOTwtNrmq73mJzyF6ueTbO1BtN0Zeg==
36
-
dependencies:
37
-
"@babel/types" "^7.2.2"
38
-
jsesc "^2.5.1"
39
-
lodash "^4.17.10"
40
-
source-map "^0.5.0"
41
-
trim-right "^1.0.1"
42
-
43
-
"@babel/helper-function-name@^7.1.0":
44
-
version "7.1.0"
45
-
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53"
46
-
integrity sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==
47
-
dependencies:
48
-
"@babel/helper-get-function-arity" "^7.0.0"
49
-
"@babel/template" "^7.1.0"
50
-
"@babel/types" "^7.0.0"
51
-
52
-
"@babel/helper-get-function-arity@^7.0.0":
53
-
version "7.0.0"
54
-
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3"
55
-
integrity sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==
56
-
dependencies:
57
-
"@babel/types" "^7.0.0"
58
-
59
-
"@babel/helper-member-expression-to-functions@^7.0.0":
60
-
version "7.0.0"
61
-
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0.tgz#8cd14b0a0df7ff00f009e7d7a436945f47c7a16f"
62
-
integrity sha512-avo+lm/QmZlv27Zsi0xEor2fKcqWG56D5ae9dzklpIaY7cQMK5N8VSpaNVPPagiqmy7LrEjK1IWdGMOqPu5csg==
63
-
dependencies:
64
-
"@babel/types" "^7.0.0"
65
-
66
-
"@babel/helper-module-imports@^7.0.0":
67
-
version "7.0.0"
68
-
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d"
69
-
integrity sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==
70
-
dependencies:
71
-
"@babel/types" "^7.0.0"
72
-
73
-
"@babel/helper-optimise-call-expression@^7.0.0":
74
-
version "7.0.0"
75
-
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5"
76
-
integrity sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==
77
-
dependencies:
78
-
"@babel/types" "^7.0.0"
79
-
80
-
"@babel/helper-plugin-utils@^7.0.0":
81
-
version "7.0.0"
82
-
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250"
83
-
integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==
84
-
85
-
"@babel/helper-replace-supers@^7.1.0":
86
-
version "7.2.3"
87
-
resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.2.3.tgz#19970020cf22677d62b3a689561dbd9644d8c5e5"
88
-
integrity sha512-GyieIznGUfPXPWu0yLS6U55Mz67AZD9cUk0BfirOWlPrXlBcan9Gz+vHGz+cPfuoweZSnPzPIm67VtQM0OWZbA==
89
-
dependencies:
90
-
"@babel/helper-member-expression-to-functions" "^7.0.0"
91
-
"@babel/helper-optimise-call-expression" "^7.0.0"
92
-
"@babel/traverse" "^7.2.3"
93
-
"@babel/types" "^7.0.0"
94
-
95
-
"@babel/helper-split-export-declaration@^7.0.0":
96
-
version "7.0.0"
97
-
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz#3aae285c0311c2ab095d997b8c9a94cad547d813"
98
-
integrity sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==
99
-
dependencies:
100
-
"@babel/types" "^7.0.0"
101
-
102
-
"@babel/helpers@^7.2.0":
103
-
version "7.2.0"
104
-
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.2.0.tgz#8335f3140f3144270dc63c4732a4f8b0a50b7a21"
105
-
integrity sha512-Fr07N+ea0dMcMN8nFpuK6dUIT7/ivt9yKQdEEnjVS83tG2pHwPi03gYmk/tyuwONnZ+sY+GFFPlWGgCtW1hF9A==
106
-
dependencies:
107
-
"@babel/template" "^7.1.2"
108
-
"@babel/traverse" "^7.1.5"
109
-
"@babel/types" "^7.2.0"
110
-
111
-
"@babel/highlight@^7.0.0":
112
-
version "7.0.0"
113
-
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
114
-
integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==
115
-
dependencies:
116
-
chalk "^2.0.0"
117
-
esutils "^2.0.2"
118
-
js-tokens "^4.0.0"
119
-
120
-
"@babel/parser@^7.2.2", "@babel/parser@^7.2.3":
121
-
version "7.2.3"
122
-
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.2.3.tgz#32f5df65744b70888d17872ec106b02434ba1489"
123
-
integrity sha512-0LyEcVlfCoFmci8mXx8A5oIkpkOgyo8dRHtxBnK9RRBwxO2+JZPNsqtVEZQ7mJFPxnXF9lfmU24mHOPI0qnlkA==
124
-
125
-
"@babel/plugin-proposal-class-properties@7.1.0":
126
-
version "7.1.0"
127
-
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.1.0.tgz#9af01856b1241db60ec8838d84691aa0bd1e8df4"
128
-
integrity sha512-/PCJWN+CKt5v1xcGn4vnuu13QDoV+P7NcICP44BoonAJoPSGwVkgrXihFIQGiEjjPlUDBIw1cM7wYFLARS2/hw==
129
-
dependencies:
130
-
"@babel/helper-function-name" "^7.1.0"
131
-
"@babel/helper-member-expression-to-functions" "^7.0.0"
132
-
"@babel/helper-optimise-call-expression" "^7.0.0"
133
-
"@babel/helper-plugin-utils" "^7.0.0"
134
-
"@babel/helper-replace-supers" "^7.1.0"
135
-
"@babel/plugin-syntax-class-properties" "^7.0.0"
136
-
137
-
"@babel/plugin-syntax-class-properties@^7.0.0":
138
-
version "7.2.0"
139
-
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.2.0.tgz#23b3b7b9bcdabd73672a9149f728cd3be6214812"
140
-
integrity sha512-UxYaGXYQ7rrKJS/PxIKRkv3exi05oH7rokBAsmCSsCxz1sVPZ7Fu6FzKoGgUvmY+0YgSkYHgUoCh5R5bCNBQlw==
141
-
dependencies:
142
-
"@babel/helper-plugin-utils" "^7.0.0"
143
-
144
-
"@babel/plugin-syntax-jsx@^7.0.0":
145
-
version "7.2.0"
146
-
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7"
147
-
integrity sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==
148
-
dependencies:
149
-
"@babel/helper-plugin-utils" "^7.0.0"
150
-
151
-
"@babel/polyfill@^7.0.0":
152
-
version "7.2.5"
153
-
resolved "https://registry.yarnpkg.com/@babel/polyfill/-/polyfill-7.2.5.tgz#6c54b964f71ad27edddc567d065e57e87ed7fa7d"
154
-
integrity sha512-8Y/t3MWThtMLYr0YNC/Q76tqN1w30+b0uQMeFUYauG2UGTR19zyUtFrAzT23zNtBxPp+LbE5E/nwV/q/r3y6ug==
155
-
dependencies:
156
-
core-js "^2.5.7"
157
-
regenerator-runtime "^0.12.0"
158
-
159
-
"@babel/template@^7.1.0", "@babel/template@^7.1.2", "@babel/template@^7.2.2":
160
-
version "7.2.2"
161
-
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.2.2.tgz#005b3fdf0ed96e88041330379e0da9a708eb2907"
162
-
integrity sha512-zRL0IMM02AUDwghf5LMSSDEz7sBCO2YnNmpg3uWTZj/v1rcG2BmQUvaGU8GhU8BvfMh1k2KIAYZ7Ji9KXPUg7g==
163
-
dependencies:
164
-
"@babel/code-frame" "^7.0.0"
165
-
"@babel/parser" "^7.2.2"
166
-
"@babel/types" "^7.2.2"
167
-
168
-
"@babel/traverse@^7.1.5", "@babel/traverse@^7.2.2", "@babel/traverse@^7.2.3":
169
-
version "7.2.3"
170
-
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.2.3.tgz#7ff50cefa9c7c0bd2d81231fdac122f3957748d8"
171
-
integrity sha512-Z31oUD/fJvEWVR0lNZtfgvVt512ForCTNKYcJBGbPb1QZfve4WGH8Wsy7+Mev33/45fhP/hwQtvgusNdcCMgSw==
172
-
dependencies:
173
-
"@babel/code-frame" "^7.0.0"
174
-
"@babel/generator" "^7.2.2"
175
-
"@babel/helper-function-name" "^7.1.0"
176
-
"@babel/helper-split-export-declaration" "^7.0.0"
177
-
"@babel/parser" "^7.2.3"
178
-
"@babel/types" "^7.2.2"
179
-
debug "^4.1.0"
180
-
globals "^11.1.0"
181
-
lodash "^4.17.10"
182
-
183
-
"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2":
184
-
version "7.2.2"
185
-
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.2.2.tgz#44e10fc24e33af524488b716cdaee5360ea8ed1e"
186
-
integrity sha512-fKCuD6UFUMkR541eDWL+2ih/xFZBXPOg/7EQFeTluMDebfqR4jrpaCjLhkWlQS4hT6nRa2PMEgXKbRB5/H2fpg==
187
-
dependencies:
188
-
esutils "^2.0.2"
189
-
lodash "^4.17.10"
190
-
to-fast-properties "^2.0.0"
191
-
192
-
"@glennsl/bs-jest@^0.4.6":
193
-
version "0.4.6"
194
-
resolved "https://registry.yarnpkg.com/@glennsl/bs-jest/-/bs-jest-0.4.6.tgz#2a249a46c10caaa9756b5e30dcf60a2c1dde57ea"
195
-
integrity sha512-TJLx1ti1Cp7e53bCndV7DpMAcZL9+pqA4L9YD4kCrDQuYdA8boRnPh1l862w8AJHWTxEki/xtDu0FVPCq2HVrA==
196
-
dependencies:
197
-
jest "^23.5.0"
198
-
199
-
"@types/estree@0.0.39":
200
-
version "0.0.39"
201
-
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
202
-
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
203
-
204
-
"@types/node@*":
205
-
version "10.12.18"
206
-
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67"
207
-
integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==
208
-
209
-
"@types/q@^1.5.1":
210
-
version "1.5.1"
211
-
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.1.tgz#48fd98c1561fe718b61733daed46ff115b496e18"
212
-
integrity sha512-eqz8c/0kwNi/OEHQfvIuJVLTst3in0e7uTKeuY+WL/zfKn0xVujOTp42bS/vUUokhK5P2BppLd9JXMOMHcgbjA==
213
-
214
-
abab@^2.0.0:
215
-
version "2.0.0"
216
-
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.0.tgz#aba0ab4c5eee2d4c79d3487d85450fb2376ebb0f"
217
-
integrity sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==
218
-
219
-
abbrev@1:
220
-
version "1.1.1"
221
-
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
222
-
integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
223
-
224
-
acorn-globals@^4.1.0:
225
-
version "4.3.0"
226
-
resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.0.tgz#e3b6f8da3c1552a95ae627571f7dd6923bb54103"
227
-
integrity sha512-hMtHj3s5RnuhvHPowpBYvJVj3rAar82JiDQHvGs1zO0l10ocX/xEdBShNHTJaboucJUsScghp74pH3s7EnHHQw==
228
-
dependencies:
229
-
acorn "^6.0.1"
230
-
acorn-walk "^6.0.1"
231
-
232
-
acorn-walk@^6.0.1:
233
-
version "6.1.1"
234
-
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913"
235
-
integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==
236
-
237
-
acorn@^5.5.3:
238
-
version "5.7.3"
239
-
resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279"
240
-
integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==
241
-
242
-
acorn@^6.0.1:
243
-
version "6.0.5"
244
-
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.5.tgz#81730c0815f3f3b34d8efa95cb7430965f4d887a"
245
-
integrity sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg==
246
-
247
-
ajv@^6.5.5:
248
-
version "6.6.2"
249
-
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.6.2.tgz#caceccf474bf3fc3ce3b147443711a24063cc30d"
250
-
integrity sha512-FBHEW6Jf5TB9MGBgUUA9XHkTbjXYfAUjY43ACMfmdMRHniyoMHjHjzD50OK8LGDWQwp4rWEsIq5kEqq7rvIM1g==
251
-
dependencies:
252
-
fast-deep-equal "^2.0.1"
253
-
fast-json-stable-stringify "^2.0.0"
254
-
json-schema-traverse "^0.4.1"
255
-
uri-js "^4.2.2"
256
-
257
-
alphanum-sort@^1.0.0, alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
258
-
version "1.0.2"
259
-
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
260
-
integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
261
-
262
-
ansi-escapes@^3.0.0:
263
-
version "3.1.0"
264
-
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.1.0.tgz#f73207bb81207d75fd6c83f125af26eea378ca30"
265
-
integrity sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==
266
-
267
-
ansi-regex@^2.0.0:
268
-
version "2.1.1"
269
-
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
270
-
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
271
-
272
-
ansi-regex@^3.0.0:
273
-
version "3.0.0"
274
-
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
275
-
integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
276
-
277
-
ansi-styles@^2.2.1:
278
-
version "2.2.1"
279
-
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
280
-
integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=
281
-
282
-
ansi-styles@^3.1.0, ansi-styles@^3.2.0, ansi-styles@^3.2.1:
283
-
version "3.2.1"
284
-
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
285
-
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
286
-
dependencies:
287
-
color-convert "^1.9.0"
288
-
289
-
anymatch@^2.0.0:
290
-
version "2.0.0"
291
-
resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
292
-
integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
293
-
dependencies:
294
-
micromatch "^3.1.4"
295
-
normalize-path "^2.1.1"
296
-
297
-
append-transform@^0.4.0:
298
-
version "0.4.0"
299
-
resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-0.4.0.tgz#d76ebf8ca94d276e247a36bad44a4b74ab611991"
300
-
integrity sha1-126/jKlNJ24keja61EpLdKthGZE=
301
-
dependencies:
302
-
default-require-extensions "^1.0.0"
303
-
304
-
aproba@^1.0.3:
305
-
version "1.2.0"
306
-
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
307
-
integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==
308
-
309
-
are-we-there-yet@~1.1.2:
310
-
version "1.1.5"
311
-
resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21"
312
-
integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==
313
-
dependencies:
314
-
delegates "^1.0.0"
315
-
readable-stream "^2.0.6"
316
-
317
-
argparse@^1.0.7:
318
-
version "1.0.10"
319
-
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
320
-
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
321
-
dependencies:
322
-
sprintf-js "~1.0.2"
323
-
324
-
arr-diff@^2.0.0:
325
-
version "2.0.0"
326
-
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
327
-
integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=
328
-
dependencies:
329
-
arr-flatten "^1.0.1"
330
-
331
-
arr-diff@^4.0.0:
332
-
version "4.0.0"
333
-
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
334
-
integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=
335
-
336
-
arr-flatten@^1.0.1, arr-flatten@^1.1.0:
337
-
version "1.1.0"
338
-
resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
339
-
integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
340
-
341
-
arr-union@^3.1.0:
342
-
version "3.1.0"
343
-
resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
344
-
integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=
345
-
346
-
array-equal@^1.0.0:
347
-
version "1.0.0"
348
-
resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93"
349
-
integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=
350
-
351
-
array-filter@~0.0.0:
352
-
version "0.0.1"
353
-
resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec"
354
-
integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw=
355
-
356
-
array-map@~0.0.0:
357
-
version "0.0.0"
358
-
resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662"
359
-
integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=
360
-
361
-
array-reduce@~0.0.0:
362
-
version "0.0.0"
363
-
resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b"
364
-
integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=
365
-
366
-
array-unique@^0.2.1:
367
-
version "0.2.1"
368
-
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
369
-
integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=
370
-
371
-
array-unique@^0.3.2:
372
-
version "0.3.2"
373
-
resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
374
-
integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=
375
-
376
-
arrify@^1.0.1:
377
-
version "1.0.1"
378
-
resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
379
-
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
380
-
381
-
asn1@~0.2.3:
382
-
version "0.2.4"
383
-
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
384
-
integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
385
-
dependencies:
386
-
safer-buffer "~2.1.0"
387
-
388
-
assert-plus@1.0.0, assert-plus@^1.0.0:
389
-
version "1.0.0"
390
-
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
391
-
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
392
-
393
-
assign-symbols@^1.0.0:
394
-
version "1.0.0"
395
-
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
396
-
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
397
-
398
-
astral-regex@^1.0.0:
399
-
version "1.0.0"
400
-
resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
401
-
integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==
402
-
403
-
async-limiter@~1.0.0:
404
-
version "1.0.0"
405
-
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8"
406
-
integrity sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==
407
-
408
-
async@^2.1.4, async@^2.5.0:
409
-
version "2.6.1"
410
-
resolved "https://registry.yarnpkg.com/async/-/async-2.6.1.tgz#b245a23ca71930044ec53fa46aa00a3e87c6a610"
411
-
integrity sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==
412
-
dependencies:
413
-
lodash "^4.17.10"
414
-
415
-
asynckit@^0.4.0:
416
-
version "0.4.0"
417
-
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
418
-
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
419
-
420
-
asyncro@^3.0.0:
421
-
version "3.0.0"
422
-
resolved "https://registry.yarnpkg.com/asyncro/-/asyncro-3.0.0.tgz#3c7a732e263bc4a42499042f48d7d858e9c0134e"
423
-
integrity sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg==
424
-
425
-
atob@^2.1.1:
426
-
version "2.1.2"
427
-
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
428
-
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
429
-
430
-
autoprefixer@^6.3.1:
431
-
version "6.7.7"
432
-
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.7.7.tgz#1dbd1c835658e35ce3f9984099db00585c782014"
433
-
integrity sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=
434
-
dependencies:
435
-
browserslist "^1.7.6"
436
-
caniuse-db "^1.0.30000634"
437
-
normalize-range "^0.1.2"
438
-
num2fraction "^1.2.2"
439
-
postcss "^5.2.16"
440
-
postcss-value-parser "^3.2.3"
441
-
442
-
autoprefixer@^9.0.0:
443
-
version "9.4.5"
444
-
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.4.5.tgz#a13ccb001e4bc8837f71c3354005b42f02cc03d7"
445
-
integrity sha512-M602C0ZxzFpJKqD4V6eq2j+K5CkzlhekCrcQupJmAOrPEZjWJyj/wSeo6qRSNoN6M3/9mtLPQqTTrABfReytQg==
446
-
dependencies:
447
-
browserslist "^4.4.0"
448
-
caniuse-lite "^1.0.30000928"
449
-
normalize-range "^0.1.2"
450
-
num2fraction "^1.2.2"
451
-
postcss "^7.0.11"
452
-
postcss-value-parser "^3.3.1"
453
-
454
-
aws-sign2@~0.7.0:
455
-
version "0.7.0"
456
-
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
457
-
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
458
-
459
-
aws4@^1.8.0:
460
-
version "1.8.0"
461
-
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
462
-
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
463
-
464
-
axios@0.15.3:
465
-
version "0.15.3"
466
-
resolved "https://registry.yarnpkg.com/axios/-/axios-0.15.3.tgz#2c9d638b2e191a08ea1d6cc988eadd6ba5bdc053"
467
-
integrity sha1-LJ1jiy4ZGgjqHWzJiOrda6W9wFM=
468
-
dependencies:
469
-
follow-redirects "1.0.0"
470
-
471
-
axios@^0.17.0:
472
-
version "0.17.1"
473
-
resolved "https://registry.yarnpkg.com/axios/-/axios-0.17.1.tgz#2d8e3e5d0bdbd7327f91bc814f5c57660f81824d"
474
-
integrity sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=
475
-
dependencies:
476
-
follow-redirects "^1.2.5"
477
-
is-buffer "^1.1.5"
478
-
479
-
babel-code-frame@^6.26.0:
480
-
version "6.26.0"
481
-
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
482
-
integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=
483
-
dependencies:
484
-
chalk "^1.1.3"
485
-
esutils "^2.0.2"
486
-
js-tokens "^3.0.2"
487
-
488
-
babel-core@^6.0.0, babel-core@^6.26.0:
489
-
version "6.26.3"
490
-
resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207"
491
-
integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==
492
-
dependencies:
493
-
babel-code-frame "^6.26.0"
494
-
babel-generator "^6.26.0"
495
-
babel-helpers "^6.24.1"
496
-
babel-messages "^6.23.0"
497
-
babel-register "^6.26.0"
498
-
babel-runtime "^6.26.0"
499
-
babel-template "^6.26.0"
500
-
babel-traverse "^6.26.0"
501
-
babel-types "^6.26.0"
502
-
babylon "^6.18.0"
503
-
convert-source-map "^1.5.1"
504
-
debug "^2.6.9"
505
-
json5 "^0.5.1"
506
-
lodash "^4.17.4"
507
-
minimatch "^3.0.4"
508
-
path-is-absolute "^1.0.1"
509
-
private "^0.1.8"
510
-
slash "^1.0.0"
511
-
source-map "^0.5.7"
512
-
513
-
babel-generator@^6.18.0, babel-generator@^6.26.0:
514
-
version "6.26.1"
515
-
resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90"
516
-
integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==
517
-
dependencies:
518
-
babel-messages "^6.23.0"
519
-
babel-runtime "^6.26.0"
520
-
babel-types "^6.26.0"
521
-
detect-indent "^4.0.0"
522
-
jsesc "^1.3.0"
523
-
lodash "^4.17.4"
524
-
source-map "^0.5.7"
525
-
trim-right "^1.0.1"
526
-
527
-
babel-helpers@^6.24.1:
528
-
version "6.24.1"
529
-
resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2"
530
-
integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=
531
-
dependencies:
532
-
babel-runtime "^6.22.0"
533
-
babel-template "^6.24.1"
534
-
535
-
babel-jest@^23.6.0:
536
-
version "23.6.0"
537
-
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-23.6.0.tgz#a644232366557a2240a0c083da6b25786185a2f1"
538
-
integrity sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==
539
-
dependencies:
540
-
babel-plugin-istanbul "^4.1.6"
541
-
babel-preset-jest "^23.2.0"
542
-
543
-
babel-messages@^6.23.0:
544
-
version "6.23.0"
545
-
resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e"
546
-
integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=
547
-
dependencies:
548
-
babel-runtime "^6.22.0"
549
-
550
-
babel-plugin-istanbul@^4.1.6:
551
-
version "4.1.6"
552
-
resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz#36c59b2192efce81c5b378321b74175add1c9a45"
553
-
integrity sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==
554
-
dependencies:
555
-
babel-plugin-syntax-object-rest-spread "^6.13.0"
556
-
find-up "^2.1.0"
557
-
istanbul-lib-instrument "^1.10.1"
558
-
test-exclude "^4.2.1"
559
-
560
-
babel-plugin-jest-hoist@^23.2.0:
561
-
version "23.2.0"
562
-
resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz#e61fae05a1ca8801aadee57a6d66b8cefaf44167"
563
-
integrity sha1-5h+uBaHKiAGq3uV6bWa4zvr0QWc=
564
-
565
-
babel-plugin-syntax-object-rest-spread@^6.13.0:
566
-
version "6.13.0"
567
-
resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
568
-
integrity sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=
569
-
570
-
babel-plugin-transform-async-to-promises@^0.8.3:
571
-
version "0.8.4"
572
-
resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-promises/-/babel-plugin-transform-async-to-promises-0.8.4.tgz#f0ffd0db2b1fa1bee1b723fe651dc412d75aabb7"
573
-
integrity sha512-2lS63lG9z0pMpnd6D+dOctOgZ0QQlYZrPSMzx9IeJpSZo3MuFD09LfG12PRSIkJr7v2UkcnYKfBJRx39X4Di4w==
574
-
575
-
babel-preset-jest@^23.2.0:
576
-
version "23.2.0"
577
-
resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz#8ec7a03a138f001a1a8fb1e8113652bf1a55da46"
578
-
integrity sha1-jsegOhOPABoaj7HoETZSvxpV2kY=
579
-
dependencies:
580
-
babel-plugin-jest-hoist "^23.2.0"
581
-
babel-plugin-syntax-object-rest-spread "^6.13.0"
582
-
583
-
babel-register@^6.26.0:
584
-
version "6.26.0"
585
-
resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071"
586
-
integrity sha1-btAhFz4vy0htestFxgCahW9kcHE=
587
-
dependencies:
588
-
babel-core "^6.26.0"
589
-
babel-runtime "^6.26.0"
590
-
core-js "^2.5.0"
591
-
home-or-tmp "^2.0.0"
592
-
lodash "^4.17.4"
593
-
mkdirp "^0.5.1"
594
-
source-map-support "^0.4.15"
595
-
596
-
babel-runtime@^6.22.0, babel-runtime@^6.26.0:
597
-
version "6.26.0"
598
-
resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe"
599
-
integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4=
600
-
dependencies:
601
-
core-js "^2.4.0"
602
-
regenerator-runtime "^0.11.0"
603
-
604
-
babel-template@^6.16.0, babel-template@^6.24.1, babel-template@^6.26.0:
605
-
version "6.26.0"
606
-
resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02"
607
-
integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=
608
-
dependencies:
609
-
babel-runtime "^6.26.0"
610
-
babel-traverse "^6.26.0"
611
-
babel-types "^6.26.0"
612
-
babylon "^6.18.0"
613
-
lodash "^4.17.4"
614
-
615
-
babel-traverse@^6.0.0, babel-traverse@^6.18.0, babel-traverse@^6.26.0:
616
-
version "6.26.0"
617
-
resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee"
618
-
integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=
619
-
dependencies:
620
-
babel-code-frame "^6.26.0"
621
-
babel-messages "^6.23.0"
622
-
babel-runtime "^6.26.0"
623
-
babel-types "^6.26.0"
624
-
babylon "^6.18.0"
625
-
debug "^2.6.8"
626
-
globals "^9.18.0"
627
-
invariant "^2.2.2"
628
-
lodash "^4.17.4"
629
-
630
-
babel-types@^6.0.0, babel-types@^6.18.0, babel-types@^6.26.0:
631
-
version "6.26.0"
632
-
resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497"
633
-
integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=
634
-
dependencies:
635
-
babel-runtime "^6.26.0"
636
-
esutils "^2.0.2"
637
-
lodash "^4.17.4"
638
-
to-fast-properties "^1.0.3"
639
-
640
-
babylon@^6.15.0, babylon@^6.18.0:
641
-
version "6.18.0"
642
-
resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3"
643
-
integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==
644
-
645
-
balanced-match@^0.4.2:
646
-
version "0.4.2"
647
-
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
648
-
integrity sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=
649
-
650
-
balanced-match@^1.0.0:
651
-
version "1.0.0"
652
-
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
653
-
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
654
-
655
-
base@^0.11.1:
656
-
version "0.11.2"
657
-
resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
658
-
integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
659
-
dependencies:
660
-
cache-base "^1.0.1"
661
-
class-utils "^0.3.5"
662
-
component-emitter "^1.2.1"
663
-
define-property "^1.0.0"
664
-
isobject "^3.0.1"
665
-
mixin-deep "^1.2.0"
666
-
pascalcase "^0.1.1"
667
-
668
-
bcrypt-pbkdf@^1.0.0:
669
-
version "1.0.2"
670
-
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
671
-
integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
672
-
dependencies:
673
-
tweetnacl "^0.14.3"
674
-
675
-
big.js@^3.1.3:
676
-
version "3.2.0"
677
-
resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
678
-
integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==
679
-
680
-
bl@^1.0.0:
681
-
version "1.2.2"
682
-
resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c"
683
-
integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==
684
-
dependencies:
685
-
readable-stream "^2.3.5"
686
-
safe-buffer "^5.1.1"
687
-
688
-
block-stream@*:
689
-
version "0.0.9"
690
-
resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
691
-
integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=
692
-
dependencies:
693
-
inherits "~2.0.0"
694
-
695
-
boolbase@^1.0.0, boolbase@~1.0.0:
696
-
version "1.0.0"
697
-
resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
698
-
integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24=
699
-
700
-
brace-expansion@^1.1.7:
701
-
version "1.1.11"
702
-
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
703
-
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
704
-
dependencies:
705
-
balanced-match "^1.0.0"
706
-
concat-map "0.0.1"
707
-
708
-
braces@^1.8.2:
709
-
version "1.8.5"
710
-
resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
711
-
integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=
712
-
dependencies:
713
-
expand-range "^1.8.1"
714
-
preserve "^0.2.0"
715
-
repeat-element "^1.1.2"
716
-
717
-
braces@^2.3.1:
718
-
version "2.3.2"
719
-
resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
720
-
integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
721
-
dependencies:
722
-
arr-flatten "^1.1.0"
723
-
array-unique "^0.3.2"
724
-
extend-shallow "^2.0.1"
725
-
fill-range "^4.0.0"
726
-
isobject "^3.0.1"
727
-
repeat-element "^1.1.2"
728
-
snapdragon "^0.8.1"
729
-
snapdragon-node "^2.0.1"
730
-
split-string "^3.0.2"
731
-
to-regex "^3.0.1"
732
-
733
-
brotli-size@0.0.1:
734
-
version "0.0.1"
735
-
resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-0.0.1.tgz#8c1aeea01cd22f359b048951185bd539ff0c829f"
736
-
integrity sha1-jBruoBzSLzWbBIlRGFvVOf8Mgp8=
737
-
dependencies:
738
-
duplexer "^0.1.1"
739
-
iltorb "^1.0.9"
740
-
741
-
brotli-size@^0.0.3:
742
-
version "0.0.3"
743
-
resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-0.0.3.tgz#1d3855b38f182591a6f69da1516131676e5f62f2"
744
-
integrity sha512-bBIdd8uUGxKGldAVykxOqPegl+HlIm4FpXJamwWw5x77WCE8jO7AhXFE1YXOhOB28gS+2pTQete0FqRE6U5hQQ==
745
-
dependencies:
746
-
duplexer "^0.1.1"
747
-
iltorb "^2.0.5"
748
-
749
-
browser-process-hrtime@^0.1.2:
750
-
version "0.1.3"
751
-
resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz#616f00faef1df7ec1b5bf9cfe2bdc3170f26c7b4"
752
-
integrity sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==
753
-
754
-
browser-resolve@^1.11.3:
755
-
version "1.11.3"
756
-
resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6"
757
-
integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==
758
-
dependencies:
759
-
resolve "1.1.7"
760
-
761
-
browserslist@^1.3.6, browserslist@^1.5.2, browserslist@^1.7.6:
762
-
version "1.7.7"
763
-
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.7.tgz#0bd76704258be829b2398bb50e4b62d1a166b0b9"
764
-
integrity sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=
765
-
dependencies:
766
-
caniuse-db "^1.0.30000639"
767
-
electron-to-chromium "^1.2.7"
768
-
769
-
browserslist@^4.0.0, browserslist@^4.4.0:
770
-
version "4.4.0"
771
-
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.4.0.tgz#7050d1412cbfc5274aba609ed5e50359ca1a5fdf"
772
-
integrity sha512-tQkHS8VVxWbrjnNDXgt7/+SuPJ7qDvD0Y2e6bLtoQluR2SPvlmPUcfcU75L1KAalhqULlIFJlJ6BDfnYyJxJsw==
773
-
dependencies:
774
-
caniuse-lite "^1.0.30000928"
775
-
electron-to-chromium "^1.3.100"
776
-
node-releases "^1.1.3"
777
-
778
-
bs-platform@^4.0.17:
779
-
version "4.0.18"
780
-
resolved "https://registry.yarnpkg.com/bs-platform/-/bs-platform-4.0.18.tgz#d17b8693ba1f714d9b27e0ddb365f2069ba4b8a0"
781
-
integrity sha512-BwzW0iYHvREqUZIgQxJmdJrxexppLvJxYQ4LLexbhCp7uZU5DIZ5ub4ZHpkCkc8fn8bsXWc+Rrejb3csi+BoAQ==
782
-
783
-
bs-rebel@^0.2.3:
784
-
version "0.2.3"
785
-
resolved "https://registry.yarnpkg.com/bs-rebel/-/bs-rebel-0.2.3.tgz#11e1a95a4a3f16311575e8853a004cec6b9d19de"
786
-
integrity sha512-NTDUSkJ+KkIqmKHUE48luD2YaYh49XaU1zVSSk9lJ6KFNQzlRQnIfR+paNWYyvzxf5+TZ2inVgxBUHdCsZEiYA==
787
-
788
-
bser@^2.0.0:
789
-
version "2.0.0"
790
-
resolved "https://registry.yarnpkg.com/bser/-/bser-2.0.0.tgz#9ac78d3ed5d915804fd87acb158bc797147a1719"
791
-
integrity sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=
792
-
dependencies:
793
-
node-int64 "^0.4.0"
794
-
795
-
buble@^0.19.6:
796
-
version "0.19.6"
797
-
resolved "https://registry.yarnpkg.com/buble/-/buble-0.19.6.tgz#915909b6bd5b11ee03b1c885ec914a8b974d34d3"
798
-
integrity sha512-9kViM6nJA1Q548Jrd06x0geh+BG2ru2+RMDkIHHgJY/8AcyCs34lTHwra9BX7YdPrZXd5aarkpr/SY8bmPgPdg==
799
-
dependencies:
800
-
chalk "^2.4.1"
801
-
magic-string "^0.25.1"
802
-
minimist "^1.2.0"
803
-
os-homedir "^1.0.1"
804
-
regexpu-core "^4.2.0"
805
-
vlq "^1.0.0"
806
-
807
-
buffer-alloc-unsafe@^1.1.0:
808
-
version "1.1.0"
809
-
resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
810
-
integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
811
-
812
-
buffer-alloc@^1.2.0:
813
-
version "1.2.0"
814
-
resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
815
-
integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
816
-
dependencies:
817
-
buffer-alloc-unsafe "^1.1.0"
818
-
buffer-fill "^1.0.0"
819
-
820
-
buffer-fill@^1.0.0:
821
-
version "1.0.0"
822
-
resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
823
-
integrity sha1-+PeLdniYiO858gXNY39o5wISKyw=
824
-
825
-
buffer-from@^1.0.0:
826
-
version "1.1.1"
827
-
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
828
-
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
829
-
830
-
builtin-modules@^1.0.0:
831
-
version "1.1.1"
832
-
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
833
-
integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
834
-
835
-
builtin-modules@^2.0.0:
836
-
version "2.0.0"
837
-
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-2.0.0.tgz#60b7ef5ae6546bd7deefa74b08b62a43a232648e"
838
-
integrity sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==
839
-
840
-
bundlesize@^0.17.0:
841
-
version "0.17.0"
842
-
resolved "https://registry.yarnpkg.com/bundlesize/-/bundlesize-0.17.0.tgz#212ae5731ab0554d2acd509d23e1de18640b2008"
843
-
integrity sha512-w/jYWQupw/eijqx4LV6PPr1z0HmfXT8SMCg9tls1a3xrr6/PtC22MoFrYJ8j/uPLSANRQ+8WiN/gXuhTY6wogQ==
844
-
dependencies:
845
-
axios "^0.17.0"
846
-
brotli-size "0.0.1"
847
-
bytes "^3.0.0"
848
-
ci-env "^1.4.0"
849
-
commander "^2.11.0"
850
-
github-build "^1.2.0"
851
-
glob "^7.1.2"
852
-
gzip-size "^4.0.0"
853
-
prettycli "^1.4.3"
854
-
read-pkg-up "^3.0.0"
855
-
856
-
bytes@^3.0.0:
857
-
version "3.0.0"
858
-
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
859
-
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
860
-
861
-
cache-base@^1.0.1:
862
-
version "1.0.1"
863
-
resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
864
-
integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
865
-
dependencies:
866
-
collection-visit "^1.0.0"
867
-
component-emitter "^1.2.1"
868
-
get-value "^2.0.6"
869
-
has-value "^1.0.0"
870
-
isobject "^3.0.1"
871
-
set-value "^2.0.0"
872
-
to-object-path "^0.3.0"
873
-
union-value "^1.0.0"
874
-
unset-value "^1.0.0"
875
-
876
-
caller-callsite@^2.0.0:
877
-
version "2.0.0"
878
-
resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134"
879
-
integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=
880
-
dependencies:
881
-
callsites "^2.0.0"
882
-
883
-
caller-path@^2.0.0:
884
-
version "2.0.0"
885
-
resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4"
886
-
integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=
887
-
dependencies:
888
-
caller-callsite "^2.0.0"
889
-
890
-
callsites@^2.0.0:
891
-
version "2.0.0"
892
-
resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50"
893
-
integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=
894
-
895
-
camelcase@^4.1.0:
896
-
version "4.1.0"
897
-
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
898
-
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
899
-
900
-
camelcase@^5.0.0:
901
-
version "5.0.0"
902
-
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42"
903
-
integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==
904
-
905
-
caniuse-api@^1.5.2:
906
-
version "1.6.1"
907
-
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
908
-
integrity sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=
909
-
dependencies:
910
-
browserslist "^1.3.6"
911
-
caniuse-db "^1.0.30000529"
912
-
lodash.memoize "^4.1.2"
913
-
lodash.uniq "^4.5.0"
914
-
915
-
caniuse-api@^3.0.0:
916
-
version "3.0.0"
917
-
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
918
-
integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
919
-
dependencies:
920
-
browserslist "^4.0.0"
921
-
caniuse-lite "^1.0.0"
922
-
lodash.memoize "^4.1.2"
923
-
lodash.uniq "^4.5.0"
924
-
925
-
caniuse-db@^1.0.30000529, caniuse-db@^1.0.30000634, caniuse-db@^1.0.30000639:
926
-
version "1.0.30000928"
927
-
resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000928.tgz#2e83d2b14276442da239511615eb7c62fed0cfa7"
928
-
integrity sha512-nAoeTspAEzLjqGSeibzM09WojORi08faeOOI5GBmFWC3/brydovb9lYJWM+p48rEQsdevfpufK58gPiDtwOWKw==
929
-
930
-
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000928:
931
-
version "1.0.30000928"
932
-
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30000928.tgz#805e828dc72b06498e3683a32e61c7507fd67b88"
933
-
integrity sha512-aSpMWRXL6ZXNnzm8hgE4QDLibG5pVJ2Ujzsuj3icazlIkxXkPXtL+BWnMx6FBkWmkZgBHGUxPZQvrbRw2ZTxhg==
934
-
935
-
capture-exit@^1.2.0:
936
-
version "1.2.0"
937
-
resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-1.2.0.tgz#1c5fcc489fd0ab00d4f1ac7ae1072e3173fbab6f"
938
-
integrity sha1-HF/MSJ/QqwDU8ax64QcuMXP7q28=
939
-
dependencies:
940
-
rsvp "^3.3.3"
941
-
942
-
caseless@~0.12.0:
943
-
version "0.12.0"
944
-
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
945
-
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
946
-
947
-
chalk@2.1.0:
948
-
version "2.1.0"
949
-
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e"
950
-
integrity sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==
951
-
dependencies:
952
-
ansi-styles "^3.1.0"
953
-
escape-string-regexp "^1.0.5"
954
-
supports-color "^4.0.0"
955
-
956
-
chalk@^1.0.0, chalk@^1.1.3:
957
-
version "1.1.3"
958
-
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
959
-
integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=
960
-
dependencies:
961
-
ansi-styles "^2.2.1"
962
-
escape-string-regexp "^1.0.2"
963
-
has-ansi "^2.0.0"
964
-
strip-ansi "^3.0.0"
965
-
supports-color "^2.0.0"
966
-
967
-
chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.0, chalk@^2.4.1, chalk@^2.4.2:
968
-
version "2.4.2"
969
-
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
970
-
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
971
-
dependencies:
972
-
ansi-styles "^3.2.1"
973
-
escape-string-regexp "^1.0.5"
974
-
supports-color "^5.3.0"
975
-
976
-
chownr@^1.0.1, chownr@^1.1.1:
977
-
version "1.1.1"
978
-
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
979
-
integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==
980
-
981
-
ci-env@^1.4.0:
982
-
version "1.7.0"
983
-
resolved "https://registry.yarnpkg.com/ci-env/-/ci-env-1.7.0.tgz#55cc9f8ff7bb4380de298cbed3ae27c35dcdfd8e"
984
-
integrity sha512-ifHfV5JmACoTnoPxwjKjUUAekL1UCKZ9EU27GaaSkLVopkV3H1w0eYIpY+aAiX31SVEtTrZFMS94EFETSj0vIA==
985
-
986
-
ci-info@^1.5.0:
987
-
version "1.6.0"
988
-
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497"
989
-
integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==
990
-
991
-
clap@^1.0.9:
992
-
version "1.2.3"
993
-
resolved "https://registry.yarnpkg.com/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51"
994
-
integrity sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==
995
-
dependencies:
996
-
chalk "^1.1.3"
997
-
998
-
class-utils@^0.3.5:
999
-
version "0.3.6"
1000
-
resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
1001
-
integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
1002
-
dependencies:
1003
-
arr-union "^3.1.0"
1004
-
define-property "^0.2.5"
1005
-
isobject "^3.0.0"
1006
-
static-extend "^0.1.1"
1007
-
1008
-
cliui@^4.0.0:
1009
-
version "4.1.0"
1010
-
resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
1011
-
integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==
1012
-
dependencies:
1013
-
string-width "^2.1.1"
1014
-
strip-ansi "^4.0.0"
1015
-
wrap-ansi "^2.0.0"
1016
-
1017
-
clone@^1.0.2:
1018
-
version "1.0.4"
1019
-
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
1020
-
integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4=
1021
-
1022
-
co@^4.6.0:
1023
-
version "4.6.0"
1024
-
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
1025
-
integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=
1026
-
1027
-
coa@~1.0.1:
1028
-
version "1.0.4"
1029
-
resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.4.tgz#a9ef153660d6a86a8bdec0289a5c684d217432fd"
1030
-
integrity sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=
1031
-
dependencies:
1032
-
q "^1.1.2"
1033
-
1034
-
coa@~2.0.1:
1035
-
version "2.0.2"
1036
-
resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
1037
-
integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
1038
-
dependencies:
1039
-
"@types/q" "^1.5.1"
1040
-
chalk "^2.4.1"
1041
-
q "^1.1.2"
1042
-
1043
-
code-point-at@^1.0.0:
1044
-
version "1.1.0"
1045
-
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
1046
-
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
1047
-
1048
-
collection-visit@^1.0.0:
1049
-
version "1.0.0"
1050
-
resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
1051
-
integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=
1052
-
dependencies:
1053
-
map-visit "^1.0.0"
1054
-
object-visit "^1.0.0"
1055
-
1056
-
color-convert@^1.3.0, color-convert@^1.9.0, color-convert@^1.9.1:
1057
-
version "1.9.3"
1058
-
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
1059
-
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
1060
-
dependencies:
1061
-
color-name "1.1.3"
1062
-
1063
-
color-name@1.1.3:
1064
-
version "1.1.3"
1065
-
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
1066
-
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
1067
-
1068
-
color-name@^1.0.0:
1069
-
version "1.1.4"
1070
-
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
1071
-
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
1072
-
1073
-
color-string@^0.3.0:
1074
-
version "0.3.0"
1075
-
resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
1076
-
integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=
1077
-
dependencies:
1078
-
color-name "^1.0.0"
1079
-
1080
-
color-string@^1.5.2:
1081
-
version "1.5.3"
1082
-
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
1083
-
integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==
1084
-
dependencies:
1085
-
color-name "^1.0.0"
1086
-
simple-swizzle "^0.2.2"
1087
-
1088
-
color@^0.11.0:
1089
-
version "0.11.4"
1090
-
resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
1091
-
integrity sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=
1092
-
dependencies:
1093
-
clone "^1.0.2"
1094
-
color-convert "^1.3.0"
1095
-
color-string "^0.3.0"
1096
-
1097
-
color@^3.0.0:
1098
-
version "3.1.0"
1099
-
resolved "https://registry.yarnpkg.com/color/-/color-3.1.0.tgz#d8e9fb096732875774c84bf922815df0308d0ffc"
1100
-
integrity sha512-CwyopLkuRYO5ei2EpzpIh6LqJMt6Mt+jZhO5VI5f/wJLZriXQE32/SSqzmrh+QB+AZT81Cj8yv+7zwToW8ahZg==
1101
-
dependencies:
1102
-
color-convert "^1.9.1"
1103
-
color-string "^1.5.2"
1104
-
1105
-
colormin@^1.0.5:
1106
-
version "1.1.2"
1107
-
resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
1108
-
integrity sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=
1109
-
dependencies:
1110
-
color "^0.11.0"
1111
-
css-color-names "0.0.4"
1112
-
has "^1.0.1"
1113
-
1114
-
colors@~1.1.2:
1115
-
version "1.1.2"
1116
-
resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
1117
-
integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM=
1118
-
1119
-
combined-stream@^1.0.6, combined-stream@~1.0.6:
1120
-
version "1.0.7"
1121
-
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
1122
-
integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==
1123
-
dependencies:
1124
-
delayed-stream "~1.0.0"
1125
-
1126
-
commander@^2.11.0:
1127
-
version "2.19.0"
1128
-
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
1129
-
integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
1130
-
1131
-
commander@~2.17.1:
1132
-
version "2.17.1"
1133
-
resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
1134
-
integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
1135
-
1136
-
component-emitter@^1.2.1:
1137
-
version "1.2.1"
1138
-
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
1139
-
integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=
1140
-
1141
-
concat-map@0.0.1:
1142
-
version "0.0.1"
1143
-
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
1144
-
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
1145
-
1146
-
concat-with-sourcemaps@^1.0.5:
1147
-
version "1.1.0"
1148
-
resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e"
1149
-
integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==
1150
-
dependencies:
1151
-
source-map "^0.6.1"
1152
-
1153
-
console-control-strings@^1.0.0, console-control-strings@~1.1.0:
1154
-
version "1.1.0"
1155
-
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
1156
-
integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=
1157
-
1158
-
convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.5.1:
1159
-
version "1.6.0"
1160
-
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20"
1161
-
integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==
1162
-
dependencies:
1163
-
safe-buffer "~5.1.1"
1164
-
1165
-
copy-descriptor@^0.1.0:
1166
-
version "0.1.1"
1167
-
resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
1168
-
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
1169
-
1170
-
core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.7:
1171
-
version "2.6.2"
1172
-
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.2.tgz#267988d7268323b349e20b4588211655f0e83944"
1173
-
integrity sha512-NdBPF/RVwPW6jr0NCILuyN9RiqLo2b1mddWHkUL+VnvcB7dzlnBJ1bXYntjpTGOgkZiiLWj2JxmOr7eGE3qK6g==
1174
-
1175
-
core-util-is@1.0.2, core-util-is@~1.0.0:
1176
-
version "1.0.2"
1177
-
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
1178
-
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
1179
-
1180
-
cosmiconfig@^2.1.0, cosmiconfig@^2.1.1:
1181
-
version "2.2.2"
1182
-
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-2.2.2.tgz#6173cebd56fac042c1f4390edf7af6c07c7cb892"
1183
-
integrity sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==
1184
-
dependencies:
1185
-
is-directory "^0.3.1"
1186
-
js-yaml "^3.4.3"
1187
-
minimist "^1.2.0"
1188
-
object-assign "^4.1.0"
1189
-
os-homedir "^1.0.1"
1190
-
parse-json "^2.2.0"
1191
-
require-from-string "^1.1.0"
1192
-
1193
-
cosmiconfig@^5.0.0:
1194
-
version "5.0.7"
1195
-
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.0.7.tgz#39826b292ee0d78eda137dfa3173bd1c21a43b04"
1196
-
integrity sha512-PcLqxTKiDmNT6pSpy4N6KtuPwb53W+2tzNvwOZw0WH9N6O0vLIBq0x8aj8Oj75ere4YcGi48bDFCL+3fRJdlNA==
1197
-
dependencies:
1198
-
import-fresh "^2.0.0"
1199
-
is-directory "^0.3.1"
1200
-
js-yaml "^3.9.0"
1201
-
parse-json "^4.0.0"
1202
-
1203
-
coveralls@^3.0.0:
1204
-
version "3.0.2"
1205
-
resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.2.tgz#f5a0bcd90ca4e64e088b710fa8dda640aea4884f"
1206
-
integrity sha512-Tv0LKe/MkBOilH2v7WBiTBdudg2ChfGbdXafc/s330djpF3zKOmuehTeRwjXWc7pzfj9FrDUTA7tEx6Div8NFw==
1207
-
dependencies:
1208
-
growl "~> 1.10.0"
1209
-
js-yaml "^3.11.0"
1210
-
lcov-parse "^0.0.10"
1211
-
log-driver "^1.2.7"
1212
-
minimist "^1.2.0"
1213
-
request "^2.85.0"
1214
-
1215
-
cross-spawn@^5.0.1:
1216
-
version "5.1.0"
1217
-
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
1218
-
integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=
1219
-
dependencies:
1220
-
lru-cache "^4.0.1"
1221
-
shebang-command "^1.2.0"
1222
-
which "^1.2.9"
1223
-
1224
-
cross-spawn@^6.0.5:
1225
-
version "6.0.5"
1226
-
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
1227
-
integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
1228
-
dependencies:
1229
-
nice-try "^1.0.4"
1230
-
path-key "^2.0.1"
1231
-
semver "^5.5.0"
1232
-
shebang-command "^1.2.0"
1233
-
which "^1.2.9"
1234
-
1235
-
css-color-names@0.0.4, css-color-names@^0.0.4:
1236
-
version "0.0.4"
1237
-
resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
1238
-
integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=
1239
-
1240
-
css-declaration-sorter@^4.0.1:
1241
-
version "4.0.1"
1242
-
resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22"
1243
-
integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==
1244
-
dependencies:
1245
-
postcss "^7.0.1"
1246
-
timsort "^0.3.0"
1247
-
1248
-
css-modules-loader-core@^1.1.0:
1249
-
version "1.1.0"
1250
-
resolved "https://registry.yarnpkg.com/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz#5908668294a1becd261ae0a4ce21b0b551f21d16"
1251
-
integrity sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=
1252
-
dependencies:
1253
-
icss-replace-symbols "1.1.0"
1254
-
postcss "6.0.1"
1255
-
postcss-modules-extract-imports "1.1.0"
1256
-
postcss-modules-local-by-default "1.2.0"
1257
-
postcss-modules-scope "1.1.0"
1258
-
postcss-modules-values "1.3.0"
1259
-
1260
-
css-select-base-adapter@~0.1.0:
1261
-
version "0.1.1"
1262
-
resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
1263
-
integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
1264
-
1265
-
css-select@^2.0.0:
1266
-
version "2.0.2"
1267
-
resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede"
1268
-
integrity sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==
1269
-
dependencies:
1270
-
boolbase "^1.0.0"
1271
-
css-what "^2.1.2"
1272
-
domutils "^1.7.0"
1273
-
nth-check "^1.0.2"
1274
-
1275
-
css-selector-tokenizer@^0.7.0:
1276
-
version "0.7.1"
1277
-
resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d"
1278
-
integrity sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==
1279
-
dependencies:
1280
-
cssesc "^0.1.0"
1281
-
fastparse "^1.1.1"
1282
-
regexpu-core "^1.0.0"
1283
-
1284
-
css-tree@1.0.0-alpha.28:
1285
-
version "1.0.0-alpha.28"
1286
-
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz#8e8968190d886c9477bc8d61e96f61af3f7ffa7f"
1287
-
integrity sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==
1288
-
dependencies:
1289
-
mdn-data "~1.1.0"
1290
-
source-map "^0.5.3"
1291
-
1292
-
css-tree@1.0.0-alpha.29:
1293
-
version "1.0.0-alpha.29"
1294
-
resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39"
1295
-
integrity sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==
1296
-
dependencies:
1297
-
mdn-data "~1.1.0"
1298
-
source-map "^0.5.3"
1299
-
1300
-
css-unit-converter@^1.1.1:
1301
-
version "1.1.1"
1302
-
resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996"
1303
-
integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=
1304
-
1305
-
css-url-regex@^1.1.0:
1306
-
version "1.1.0"
1307
-
resolved "https://registry.yarnpkg.com/css-url-regex/-/css-url-regex-1.1.0.tgz#83834230cc9f74c457de59eebd1543feeb83b7ec"
1308
-
integrity sha1-g4NCMMyfdMRX3lnuvRVD/uuDt+w=
1309
-
1310
-
css-what@^2.1.2:
1311
-
version "2.1.2"
1312
-
resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.2.tgz#c0876d9d0480927d7d4920dcd72af3595649554d"
1313
-
integrity sha512-wan8dMWQ0GUeF7DGEPVjhHemVW/vy6xUYmFzRY8RYqgA0JtXC9rJmbScBjqSu6dg9q0lwPQy6ZAmJVr3PPTvqQ==
1314
-
1315
-
cssesc@^0.1.0:
1316
-
version "0.1.0"
1317
-
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
1318
-
integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=
1319
-
1320
-
cssesc@^2.0.0:
1321
-
version "2.0.0"
1322
-
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703"
1323
-
integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==
1324
-
1325
-
cssnano-preset-default@^4.0.6:
1326
-
version "4.0.6"
1327
-
resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.6.tgz#92379e2a6db4a91c0ea727f5f556eeac693eab6a"
1328
-
integrity sha512-UPboYbFaJFtDUhJ4fqctThWbbyF4q01/7UhsZbLzp35l+nUxtzh1SifoVlEfyLM3n3Z0htd8B1YlCxy9i+bQvg==
1329
-
dependencies:
1330
-
css-declaration-sorter "^4.0.1"
1331
-
cssnano-util-raw-cache "^4.0.1"
1332
-
postcss "^7.0.0"
1333
-
postcss-calc "^7.0.0"
1334
-
postcss-colormin "^4.0.2"
1335
-
postcss-convert-values "^4.0.1"
1336
-
postcss-discard-comments "^4.0.1"
1337
-
postcss-discard-duplicates "^4.0.2"
1338
-
postcss-discard-empty "^4.0.1"
1339
-
postcss-discard-overridden "^4.0.1"
1340
-
postcss-merge-longhand "^4.0.10"
1341
-
postcss-merge-rules "^4.0.2"
1342
-
postcss-minify-font-values "^4.0.2"
1343
-
postcss-minify-gradients "^4.0.1"
1344
-
postcss-minify-params "^4.0.1"
1345
-
postcss-minify-selectors "^4.0.1"
1346
-
postcss-normalize-charset "^4.0.1"
1347
-
postcss-normalize-display-values "^4.0.1"
1348
-
postcss-normalize-positions "^4.0.1"
1349
-
postcss-normalize-repeat-style "^4.0.1"
1350
-
postcss-normalize-string "^4.0.1"
1351
-
postcss-normalize-timing-functions "^4.0.1"
1352
-
postcss-normalize-unicode "^4.0.1"
1353
-
postcss-normalize-url "^4.0.1"
1354
-
postcss-normalize-whitespace "^4.0.1"
1355
-
postcss-ordered-values "^4.1.1"
1356
-
postcss-reduce-initial "^4.0.2"
1357
-
postcss-reduce-transforms "^4.0.1"
1358
-
postcss-svgo "^4.0.1"
1359
-
postcss-unique-selectors "^4.0.1"
1360
-
1361
-
cssnano-util-get-arguments@^4.0.0:
1362
-
version "4.0.0"
1363
-
resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f"
1364
-
integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=
1365
-
1366
-
cssnano-util-get-match@^4.0.0:
1367
-
version "4.0.0"
1368
-
resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d"
1369
-
integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=
1370
-
1371
-
cssnano-util-raw-cache@^4.0.1:
1372
-
version "4.0.1"
1373
-
resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282"
1374
-
integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==
1375
-
dependencies:
1376
-
postcss "^7.0.0"
1377
-
1378
-
cssnano-util-same-parent@^4.0.0:
1379
-
version "4.0.1"
1380
-
resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3"
1381
-
integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==
1382
-
1383
-
cssnano@^3.10.0:
1384
-
version "3.10.0"
1385
-
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.10.0.tgz#4f38f6cea2b9b17fa01490f23f1dc68ea65c1c38"
1386
-
integrity sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=
1387
-
dependencies:
1388
-
autoprefixer "^6.3.1"
1389
-
decamelize "^1.1.2"
1390
-
defined "^1.0.0"
1391
-
has "^1.0.1"
1392
-
object-assign "^4.0.1"
1393
-
postcss "^5.0.14"
1394
-
postcss-calc "^5.2.0"
1395
-
postcss-colormin "^2.1.8"
1396
-
postcss-convert-values "^2.3.4"
1397
-
postcss-discard-comments "^2.0.4"
1398
-
postcss-discard-duplicates "^2.0.1"
1399
-
postcss-discard-empty "^2.0.1"
1400
-
postcss-discard-overridden "^0.1.1"
1401
-
postcss-discard-unused "^2.2.1"
1402
-
postcss-filter-plugins "^2.0.0"
1403
-
postcss-merge-idents "^2.1.5"
1404
-
postcss-merge-longhand "^2.0.1"
1405
-
postcss-merge-rules "^2.0.3"
1406
-
postcss-minify-font-values "^1.0.2"
1407
-
postcss-minify-gradients "^1.0.1"
1408
-
postcss-minify-params "^1.0.4"
1409
-
postcss-minify-selectors "^2.0.4"
1410
-
postcss-normalize-charset "^1.1.0"
1411
-
postcss-normalize-url "^3.0.7"
1412
-
postcss-ordered-values "^2.1.0"
1413
-
postcss-reduce-idents "^2.2.2"
1414
-
postcss-reduce-initial "^1.0.0"
1415
-
postcss-reduce-transforms "^1.0.3"
1416
-
postcss-svgo "^2.1.1"
1417
-
postcss-unique-selectors "^2.0.2"
1418
-
postcss-value-parser "^3.2.3"
1419
-
postcss-zindex "^2.0.1"
1420
-
1421
-
cssnano@^4.1.7:
1422
-
version "4.1.8"
1423
-
resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.8.tgz#8014989679d5fd42491e4499a521dbfb85c95fd1"
1424
-
integrity sha512-5GIY0VzAHORpbKiL3rMXp4w4M1Ki+XlXgEXyuWXVd3h6hlASb+9Vo76dNP56/elLMVBBsUfusCo1q56uW0UWig==
1425
-
dependencies:
1426
-
cosmiconfig "^5.0.0"
1427
-
cssnano-preset-default "^4.0.6"
1428
-
is-resolvable "^1.0.0"
1429
-
postcss "^7.0.0"
1430
-
1431
-
csso@^3.5.0:
1432
-
version "3.5.1"
1433
-
resolved "https://registry.yarnpkg.com/csso/-/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b"
1434
-
integrity sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==
1435
-
dependencies:
1436
-
css-tree "1.0.0-alpha.29"
1437
-
1438
-
csso@~2.3.1:
1439
-
version "2.3.2"
1440
-
resolved "https://registry.yarnpkg.com/csso/-/csso-2.3.2.tgz#ddd52c587033f49e94b71fc55569f252e8ff5f85"
1441
-
integrity sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=
1442
-
dependencies:
1443
-
clap "^1.0.9"
1444
-
source-map "^0.5.3"
1445
-
1446
-
cssom@0.3.x, "cssom@>= 0.3.2 < 0.4.0":
1447
-
version "0.3.4"
1448
-
resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.4.tgz#8cd52e8a3acfd68d3aed38ee0a640177d2f9d797"
1449
-
integrity sha512-+7prCSORpXNeR4/fUP3rL+TzqtiFfhMvTd7uEqMdgPvLPt4+uzFUeufx5RHjGTACCargg/DiEt/moMQmvnfkog==
1450
-
1451
-
cssstyle@^1.0.0:
1452
-
version "1.1.1"
1453
-
resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.1.1.tgz#18b038a9c44d65f7a8e428a653b9f6fe42faf5fb"
1454
-
integrity sha512-364AI1l/M5TYcFH83JnOH/pSqgaNnKmYgKrm0didZMGKWjQB60dymwWy1rKUgL3J1ffdq9xVi2yGLHdSjjSNog==
1455
-
dependencies:
1456
-
cssom "0.3.x"
1457
-
1458
-
dashdash@^1.12.0:
1459
-
version "1.14.1"
1460
-
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
1461
-
integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
1462
-
dependencies:
1463
-
assert-plus "^1.0.0"
1464
-
1465
-
data-urls@^1.0.0:
1466
-
version "1.1.0"
1467
-
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe"
1468
-
integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==
1469
-
dependencies:
1470
-
abab "^2.0.0"
1471
-
whatwg-mimetype "^2.2.0"
1472
-
whatwg-url "^7.0.0"
1473
-
1474
-
debug@=3.1.0:
1475
-
version "3.1.0"
1476
-
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
1477
-
integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
1478
-
dependencies:
1479
-
ms "2.0.0"
1480
-
1481
-
debug@^2.1.2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9:
1482
-
version "2.6.9"
1483
-
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
1484
-
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
1485
-
dependencies:
1486
-
ms "2.0.0"
1487
-
1488
-
debug@^3.1.0:
1489
-
version "3.2.6"
1490
-
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
1491
-
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
1492
-
dependencies:
1493
-
ms "^2.1.1"
1494
-
1495
-
debug@^4.1.0:
1496
-
version "4.1.1"
1497
-
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
1498
-
integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
1499
-
dependencies:
1500
-
ms "^2.1.1"
1501
-
1502
-
decamelize@^1.1.1, decamelize@^1.1.2:
1503
-
version "1.2.0"
1504
-
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
1505
-
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
1506
-
1507
-
decode-uri-component@^0.2.0:
1508
-
version "0.2.0"
1509
-
resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
1510
-
integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=
1511
-
1512
-
decompress-response@^3.3.0:
1513
-
version "3.3.0"
1514
-
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
1515
-
integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=
1516
-
dependencies:
1517
-
mimic-response "^1.0.0"
1518
-
1519
-
deep-extend@^0.6.0:
1520
-
version "0.6.0"
1521
-
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
1522
-
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
1523
-
1524
-
deep-is@~0.1.3:
1525
-
version "0.1.3"
1526
-
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
1527
-
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
1528
-
1529
-
default-require-extensions@^1.0.0:
1530
-
version "1.0.0"
1531
-
resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-1.0.0.tgz#f37ea15d3e13ffd9b437d33e1a75b5fb97874cb8"
1532
-
integrity sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=
1533
-
dependencies:
1534
-
strip-bom "^2.0.0"
1535
-
1536
-
define-properties@^1.1.2, define-properties@^1.1.3:
1537
-
version "1.1.3"
1538
-
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1"
1539
-
integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==
1540
-
dependencies:
1541
-
object-keys "^1.0.12"
1542
-
1543
-
define-property@^0.2.5:
1544
-
version "0.2.5"
1545
-
resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
1546
-
integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=
1547
-
dependencies:
1548
-
is-descriptor "^0.1.0"
1549
-
1550
-
define-property@^1.0.0:
1551
-
version "1.0.0"
1552
-
resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
1553
-
integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY=
1554
-
dependencies:
1555
-
is-descriptor "^1.0.0"
1556
-
1557
-
define-property@^2.0.2:
1558
-
version "2.0.2"
1559
-
resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
1560
-
integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
1561
-
dependencies:
1562
-
is-descriptor "^1.0.2"
1563
-
isobject "^3.0.1"
1564
-
1565
-
defined@^1.0.0:
1566
-
version "1.0.0"
1567
-
resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
1568
-
integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=
1569
-
1570
-
delayed-stream@~1.0.0:
1571
-
version "1.0.0"
1572
-
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
1573
-
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
1574
-
1575
-
delegates@^1.0.0:
1576
-
version "1.0.0"
1577
-
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
1578
-
integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=
1579
-
1580
-
detect-indent@^4.0.0:
1581
-
version "4.0.0"
1582
-
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
1583
-
integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg=
1584
-
dependencies:
1585
-
repeating "^2.0.0"
1586
-
1587
-
detect-libc@^0.2.0:
1588
-
version "0.2.0"
1589
-
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-0.2.0.tgz#47fdf567348a17ec25fcbf0b9e446348a76f9fb5"
1590
-
integrity sha1-R/31ZzSKF+wl/L8LnkRjSKdvn7U=
1591
-
1592
-
detect-libc@^1.0.2, detect-libc@^1.0.3:
1593
-
version "1.0.3"
1594
-
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
1595
-
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
1596
-
1597
-
detect-newline@^2.1.0:
1598
-
version "2.1.0"
1599
-
resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
1600
-
integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=
1601
-
1602
-
diff@^3.2.0:
1603
-
version "3.5.0"
1604
-
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
1605
-
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
1606
-
1607
-
dom-serializer@0:
1608
-
version "0.1.0"
1609
-
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
1610
-
integrity sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=
1611
-
dependencies:
1612
-
domelementtype "~1.1.1"
1613
-
entities "~1.1.1"
1614
-
1615
-
domelementtype@1:
1616
-
version "1.3.1"
1617
-
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
1618
-
integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
1619
-
1620
-
domelementtype@~1.1.1:
1621
-
version "1.1.3"
1622
-
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
1623
-
integrity sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=
1624
-
1625
-
domexception@^1.0.1:
1626
-
version "1.0.1"
1627
-
resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
1628
-
integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==
1629
-
dependencies:
1630
-
webidl-conversions "^4.0.2"
1631
-
1632
-
domutils@^1.7.0:
1633
-
version "1.7.0"
1634
-
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
1635
-
integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
1636
-
dependencies:
1637
-
dom-serializer "0"
1638
-
domelementtype "1"
1639
-
1640
-
dot-prop@^4.1.1:
1641
-
version "4.2.0"
1642
-
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57"
1643
-
integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==
1644
-
dependencies:
1645
-
is-obj "^1.0.0"
1646
-
1647
-
duplexer@^0.1.1:
1648
-
version "0.1.1"
1649
-
resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
1650
-
integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=
1651
-
1652
-
ecc-jsbn@~0.1.1:
1653
-
version "0.1.2"
1654
-
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
1655
-
integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
1656
-
dependencies:
1657
-
jsbn "~0.1.0"
1658
-
safer-buffer "^2.1.0"
1659
-
1660
-
electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.100:
1661
-
version "1.3.102"
1662
-
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.102.tgz#3ac43a037c8a63bca3dfa189eb3d90f097196787"
1663
-
integrity sha512-2nzZuXw/KBPnI3QX3UOCSRvJiVy7o9+VHRDQ3D/EHCvVc89X6aj/GlNmEgiR2GBIhmSWXIi4W1M5okA5ScSlNg==
1664
-
1665
-
emojis-list@^2.0.0:
1666
-
version "2.1.0"
1667
-
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
1668
-
integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k=
1669
-
1670
-
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
1671
-
version "1.4.1"
1672
-
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43"
1673
-
integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==
1674
-
dependencies:
1675
-
once "^1.4.0"
1676
-
1677
-
entities@~1.1.1:
1678
-
version "1.1.2"
1679
-
resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
1680
-
integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
1681
-
1682
-
error-ex@^1.2.0, error-ex@^1.3.1:
1683
-
version "1.3.2"
1684
-
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
1685
-
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
1686
-
dependencies:
1687
-
is-arrayish "^0.2.1"
1688
-
1689
-
es-abstract@^1.12.0, es-abstract@^1.4.3, es-abstract@^1.5.1:
1690
-
version "1.13.0"
1691
-
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9"
1692
-
integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
1693
-
dependencies:
1694
-
es-to-primitive "^1.2.0"
1695
-
function-bind "^1.1.1"
1696
-
has "^1.0.3"
1697
-
is-callable "^1.1.4"
1698
-
is-regex "^1.0.4"
1699
-
object-keys "^1.0.12"
1700
-
1701
-
es-to-primitive@^1.2.0:
1702
-
version "1.2.0"
1703
-
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
1704
-
integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
1705
-
dependencies:
1706
-
is-callable "^1.1.4"
1707
-
is-date-object "^1.0.1"
1708
-
is-symbol "^1.0.2"
1709
-
1710
-
es6-promisify@^6.0.1:
1711
-
version "6.0.1"
1712
-
resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-6.0.1.tgz#6edaa45f3bd570ffe08febce66f7116be4b1cdb6"
1713
-
integrity sha512-J3ZkwbEnnO+fGAKrjVpeUAnZshAdfZvbhQpqfIH9kSAspReRC4nJnu8ewm55b4y9ElyeuhCTzJD0XiH8Tsbhlw==
1714
-
1715
-
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
1716
-
version "1.0.5"
1717
-
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
1718
-
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
1719
-
1720
-
escodegen@^1.9.1:
1721
-
version "1.11.0"
1722
-
resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.0.tgz#b27a9389481d5bfd5bec76f7bb1eb3f8f4556589"
1723
-
integrity sha512-IeMV45ReixHS53K/OmfKAIztN/igDHzTJUhZM3k1jMhIZWjk45SMwAtBsEXiJp3vSPmTcu6CXn7mDvFHRN66fw==
1724
-
dependencies:
1725
-
esprima "^3.1.3"
1726
-
estraverse "^4.2.0"
1727
-
esutils "^2.0.2"
1728
-
optionator "^0.8.1"
1729
-
optionalDependencies:
1730
-
source-map "~0.6.1"
1731
-
1732
-
esprima@^2.6.0:
1733
-
version "2.7.3"
1734
-
resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
1735
-
integrity sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=
1736
-
1737
-
esprima@^3.1.3:
1738
-
version "3.1.3"
1739
-
resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633"
1740
-
integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=
1741
-
1742
-
esprima@^4.0.0:
1743
-
version "4.0.1"
1744
-
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
1745
-
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
1746
-
1747
-
estraverse@^4.2.0:
1748
-
version "4.2.0"
1749
-
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
1750
-
integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=
1751
-
1752
-
estree-walker@^0.2.1:
1753
-
version "0.2.1"
1754
-
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.2.1.tgz#bdafe8095383d8414d5dc2ecf4c9173b6db9412e"
1755
-
integrity sha1-va/oCVOD2EFNXcLs9MkXO225QS4=
1756
-
1757
-
estree-walker@^0.5.2:
1758
-
version "0.5.2"
1759
-
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39"
1760
-
integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==
1761
-
1762
-
esutils@^2.0.2:
1763
-
version "2.0.2"
1764
-
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
1765
-
integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=
1766
-
1767
-
exec-sh@^0.2.0:
1768
-
version "0.2.2"
1769
-
resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.2.2.tgz#2a5e7ffcbd7d0ba2755bdecb16e5a427dfbdec36"
1770
-
integrity sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==
1771
-
dependencies:
1772
-
merge "^1.2.0"
1773
-
1774
-
execa@^0.7.0:
1775
-
version "0.7.0"
1776
-
resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
1777
-
integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=
1778
-
dependencies:
1779
-
cross-spawn "^5.0.1"
1780
-
get-stream "^3.0.0"
1781
-
is-stream "^1.1.0"
1782
-
npm-run-path "^2.0.0"
1783
-
p-finally "^1.0.0"
1784
-
signal-exit "^3.0.0"
1785
-
strip-eof "^1.0.0"
1786
-
1787
-
exit@^0.1.2:
1788
-
version "0.1.2"
1789
-
resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
1790
-
integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=
1791
-
1792
-
expand-brackets@^0.1.4:
1793
-
version "0.1.5"
1794
-
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
1795
-
integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=
1796
-
dependencies:
1797
-
is-posix-bracket "^0.1.0"
1798
-
1799
-
expand-brackets@^2.1.4:
1800
-
version "2.1.4"
1801
-
resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
1802
-
integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI=
1803
-
dependencies:
1804
-
debug "^2.3.3"
1805
-
define-property "^0.2.5"
1806
-
extend-shallow "^2.0.1"
1807
-
posix-character-classes "^0.1.0"
1808
-
regex-not "^1.0.0"
1809
-
snapdragon "^0.8.1"
1810
-
to-regex "^3.0.1"
1811
-
1812
-
expand-range@^1.8.1:
1813
-
version "1.8.2"
1814
-
resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
1815
-
integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=
1816
-
dependencies:
1817
-
fill-range "^2.1.0"
1818
-
1819
-
expand-template@^1.0.2:
1820
-
version "1.1.1"
1821
-
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-1.1.1.tgz#981f188c0c3a87d2e28f559bc541426ff94f21dd"
1822
-
integrity sha512-cebqLtV8KOZfw0UI8TEFWxtczxxC1jvyUvx6H4fyp1K1FN7A4Q+uggVUlOsI1K8AGU0rwOGqP8nCapdrw8CYQg==
1823
-
1824
-
expand-template@^2.0.3:
1825
-
version "2.0.3"
1826
-
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
1827
-
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
1828
-
1829
-
expect@^23.6.0:
1830
-
version "23.6.0"
1831
-
resolved "https://registry.yarnpkg.com/expect/-/expect-23.6.0.tgz#1e0c8d3ba9a581c87bd71fb9bc8862d443425f98"
1832
-
integrity sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==
1833
-
dependencies:
1834
-
ansi-styles "^3.2.0"
1835
-
jest-diff "^23.6.0"
1836
-
jest-get-type "^22.1.0"
1837
-
jest-matcher-utils "^23.6.0"
1838
-
jest-message-util "^23.4.0"
1839
-
jest-regex-util "^23.3.0"
1840
-
1841
-
extend-shallow@^2.0.1:
1842
-
version "2.0.1"
1843
-
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
1844
-
integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=
1845
-
dependencies:
1846
-
is-extendable "^0.1.0"
1847
-
1848
-
extend-shallow@^3.0.0, extend-shallow@^3.0.2:
1849
-
version "3.0.2"
1850
-
resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
1851
-
integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=
1852
-
dependencies:
1853
-
assign-symbols "^1.0.0"
1854
-
is-extendable "^1.0.1"
1855
-
1856
-
extend@~3.0.2:
1857
-
version "3.0.2"
1858
-
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
1859
-
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
1860
-
1861
-
extglob@^0.3.1:
1862
-
version "0.3.2"
1863
-
resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
1864
-
integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=
1865
-
dependencies:
1866
-
is-extglob "^1.0.0"
1867
-
1868
-
extglob@^2.0.4:
1869
-
version "2.0.4"
1870
-
resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
1871
-
integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
1872
-
dependencies:
1873
-
array-unique "^0.3.2"
1874
-
define-property "^1.0.0"
1875
-
expand-brackets "^2.1.4"
1876
-
extend-shallow "^2.0.1"
1877
-
fragment-cache "^0.2.1"
1878
-
regex-not "^1.0.0"
1879
-
snapdragon "^0.8.1"
1880
-
to-regex "^3.0.1"
1881
-
1882
-
extsprintf@1.3.0:
1883
-
version "1.3.0"
1884
-
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
1885
-
integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
1886
-
1887
-
extsprintf@^1.2.0:
1888
-
version "1.4.0"
1889
-
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
1890
-
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
1891
-
1892
-
fast-deep-equal@^2.0.1:
1893
-
version "2.0.1"
1894
-
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49"
1895
-
integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=
1896
-
1897
-
fast-json-stable-stringify@^2.0.0:
1898
-
version "2.0.0"
1899
-
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
1900
-
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
1901
-
1902
-
fast-levenshtein@~2.0.4:
1903
-
version "2.0.6"
1904
-
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
1905
-
integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
1906
-
1907
-
fastparse@^1.1.1:
1908
-
version "1.1.2"
1909
-
resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9"
1910
-
integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==
1911
-
1912
-
fb-watchman@^2.0.0:
1913
-
version "2.0.0"
1914
-
resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.0.tgz#54e9abf7dfa2f26cd9b1636c588c1afc05de5d58"
1915
-
integrity sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=
1916
-
dependencies:
1917
-
bser "^2.0.0"
1918
-
1919
-
figures@^1.0.1:
1920
-
version "1.7.0"
1921
-
resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e"
1922
-
integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=
1923
-
dependencies:
1924
-
escape-string-regexp "^1.0.5"
1925
-
object-assign "^4.1.0"
1926
-
1927
-
filename-regex@^2.0.0:
1928
-
version "2.0.1"
1929
-
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
1930
-
integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=
1931
-
1932
-
fileset@^2.0.2:
1933
-
version "2.0.3"
1934
-
resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0"
1935
-
integrity sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=
1936
-
dependencies:
1937
-
glob "^7.0.3"
1938
-
minimatch "^3.0.3"
1939
-
1940
-
filesize@^3.5.11:
1941
-
version "3.6.1"
1942
-
resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317"
1943
-
integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==
1944
-
1945
-
fill-range@^2.1.0:
1946
-
version "2.2.4"
1947
-
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565"
1948
-
integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==
1949
-
dependencies:
1950
-
is-number "^2.1.0"
1951
-
isobject "^2.0.0"
1952
-
randomatic "^3.0.0"
1953
-
repeat-element "^1.1.2"
1954
-
repeat-string "^1.5.2"
1955
-
1956
-
fill-range@^4.0.0:
1957
-
version "4.0.0"
1958
-
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
1959
-
integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=
1960
-
dependencies:
1961
-
extend-shallow "^2.0.1"
1962
-
is-number "^3.0.0"
1963
-
repeat-string "^1.6.1"
1964
-
to-regex-range "^2.1.0"
1965
-
1966
-
find-up@^1.0.0:
1967
-
version "1.1.2"
1968
-
resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
1969
-
integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
1970
-
dependencies:
1971
-
path-exists "^2.0.0"
1972
-
pinkie-promise "^2.0.0"
1973
-
1974
-
find-up@^2.0.0, find-up@^2.1.0:
1975
-
version "2.1.0"
1976
-
resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7"
1977
-
integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c=
1978
-
dependencies:
1979
-
locate-path "^2.0.0"
1980
-
1981
-
flatten@^1.0.2:
1982
-
version "1.0.2"
1983
-
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
1984
-
integrity sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=
1985
-
1986
-
flow-remove-types@^1.1.0:
1987
-
version "1.2.3"
1988
-
resolved "https://registry.yarnpkg.com/flow-remove-types/-/flow-remove-types-1.2.3.tgz#6131aefc7da43364bb8b479758c9dec7735d1a18"
1989
-
integrity sha512-ypq/U3V+t9atYiOuSJd40tekCra03EHKoRsiK/wXGrsZimuum0kdwVY7Yv0HTaoXgHW1WiayomYd+Q3kkvPl9Q==
1990
-
dependencies:
1991
-
babylon "^6.15.0"
1992
-
vlq "^0.2.1"
1993
-
1994
-
follow-redirects@1.0.0:
1995
-
version "1.0.0"
1996
-
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.0.0.tgz#8e34298cbd2e176f254effec75a1c78cc849fd37"
1997
-
integrity sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=
1998
-
dependencies:
1999
-
debug "^2.2.0"
2000
-
2001
-
follow-redirects@^1.2.5:
2002
-
version "1.6.1"
2003
-
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.6.1.tgz#514973c44b5757368bad8bddfe52f81f015c94cb"
2004
-
integrity sha512-t2JCjbzxQpWvbhts3l6SH1DKzSrx8a+SsaVf4h6bG4kOXUuPYS/kg2Lr4gQSb7eemaHqJkOThF1BGyjlUkO1GQ==
2005
-
dependencies:
2006
-
debug "=3.1.0"
2007
-
2008
-
for-in@^1.0.1, for-in@^1.0.2:
2009
-
version "1.0.2"
2010
-
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
2011
-
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
2012
-
2013
-
for-own@^0.1.4:
2014
-
version "0.1.5"
2015
-
resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
2016
-
integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=
2017
-
dependencies:
2018
-
for-in "^1.0.1"
2019
-
2020
-
forever-agent@~0.6.1:
2021
-
version "0.6.1"
2022
-
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
2023
-
integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
2024
-
2025
-
form-data@~2.3.2:
2026
-
version "2.3.3"
2027
-
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
2028
-
integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
2029
-
dependencies:
2030
-
asynckit "^0.4.0"
2031
-
combined-stream "^1.0.6"
2032
-
mime-types "^2.1.12"
2033
-
2034
-
fragment-cache@^0.2.1:
2035
-
version "0.2.1"
2036
-
resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
2037
-
integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=
2038
-
dependencies:
2039
-
map-cache "^0.2.2"
2040
-
2041
-
fs-constants@^1.0.0:
2042
-
version "1.0.0"
2043
-
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
2044
-
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
2045
-
2046
-
fs-extra@7.0.0:
2047
-
version "7.0.0"
2048
-
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.0.tgz#8cc3f47ce07ef7b3593a11b9fb245f7e34c041d6"
2049
-
integrity sha512-EglNDLRpmaTWiD/qraZn6HREAEAHJcJOmxNEYwq6xeMKnVMAy3GUcFB+wXt2C6k4CNvB/mP1y/U3dzvKKj5OtQ==
2050
-
dependencies:
2051
-
graceful-fs "^4.1.2"
2052
-
jsonfile "^4.0.0"
2053
-
universalify "^0.1.0"
2054
-
2055
-
fs-extra@^5.0.0:
2056
-
version "5.0.0"
2057
-
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd"
2058
-
integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==
2059
-
dependencies:
2060
-
graceful-fs "^4.1.2"
2061
-
jsonfile "^4.0.0"
2062
-
universalify "^0.1.0"
2063
-
2064
-
fs-minipass@^1.2.5:
2065
-
version "1.2.5"
2066
-
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
2067
-
integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==
2068
-
dependencies:
2069
-
minipass "^2.2.1"
2070
-
2071
-
fs.realpath@^1.0.0:
2072
-
version "1.0.0"
2073
-
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
2074
-
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
2075
-
2076
-
fsevents@^1.2.3:
2077
-
version "1.2.4"
2078
-
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.4.tgz#f41dcb1af2582af3692da36fc55cbd8e1041c426"
2079
-
integrity sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==
2080
-
dependencies:
2081
-
nan "^2.9.2"
2082
-
node-pre-gyp "^0.10.0"
2083
-
2084
-
fstream@^1.0.0, fstream@^1.0.2:
2085
-
version "1.0.11"
2086
-
resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
2087
-
integrity sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=
2088
-
dependencies:
2089
-
graceful-fs "^4.1.2"
2090
-
inherits "~2.0.0"
2091
-
mkdirp ">=0.5 0"
2092
-
rimraf "2"
2093
-
2094
-
function-bind@^1.0.2, function-bind@^1.1.1:
2095
-
version "1.1.1"
2096
-
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
2097
-
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
2098
-
2099
-
gauge@~2.7.3:
2100
-
version "2.7.4"
2101
-
resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7"
2102
-
integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=
2103
-
dependencies:
2104
-
aproba "^1.0.3"
2105
-
console-control-strings "^1.0.0"
2106
-
has-unicode "^2.0.0"
2107
-
object-assign "^4.1.0"
2108
-
signal-exit "^3.0.0"
2109
-
string-width "^1.0.1"
2110
-
strip-ansi "^3.0.1"
2111
-
wide-align "^1.1.0"
2112
-
2113
-
generic-names@^1.0.3:
2114
-
version "1.0.3"
2115
-
resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-1.0.3.tgz#2d786a121aee508876796939e8e3bff836c20917"
2116
-
integrity sha1-LXhqEhruUIh2eWk56OO/+DbCCRc=
2117
-
dependencies:
2118
-
loader-utils "^0.2.16"
2119
-
2120
-
get-caller-file@^1.0.1:
2121
-
version "1.0.3"
2122
-
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
2123
-
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
2124
-
2125
-
get-stream@^3.0.0:
2126
-
version "3.0.0"
2127
-
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
2128
-
integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
2129
-
2130
-
get-value@^2.0.3, get-value@^2.0.6:
2131
-
version "2.0.6"
2132
-
resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
2133
-
integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=
2134
-
2135
-
getpass@^0.1.1:
2136
-
version "0.1.7"
2137
-
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
2138
-
integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
2139
-
dependencies:
2140
-
assert-plus "^1.0.0"
2141
-
2142
-
github-build@^1.2.0:
2143
-
version "1.2.0"
2144
-
resolved "https://registry.yarnpkg.com/github-build/-/github-build-1.2.0.tgz#b0bdb705ae4088218577e863c1a301030211051f"
2145
-
integrity sha512-Iq7NialLYz5yRZDkiX8zaOWd+N3BssJJfUvG7wd8r4MeLCN88SdxEYo2esseMLpLtP4vNXhgamg1eRm7hw59qw==
2146
-
dependencies:
2147
-
axios "0.15.3"
2148
-
2149
-
github-from-package@0.0.0:
2150
-
version "0.0.0"
2151
-
resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce"
2152
-
integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=
2153
-
2154
-
glob-base@^0.3.0:
2155
-
version "0.3.0"
2156
-
resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
2157
-
integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=
2158
-
dependencies:
2159
-
glob-parent "^2.0.0"
2160
-
is-glob "^2.0.0"
2161
-
2162
-
glob-parent@^2.0.0:
2163
-
version "2.0.0"
2164
-
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
2165
-
integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=
2166
-
dependencies:
2167
-
is-glob "^2.0.0"
2168
-
2169
-
glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
2170
-
version "7.1.3"
2171
-
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
2172
-
integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
2173
-
dependencies:
2174
-
fs.realpath "^1.0.0"
2175
-
inflight "^1.0.4"
2176
-
inherits "2"
2177
-
minimatch "^3.0.4"
2178
-
once "^1.3.0"
2179
-
path-is-absolute "^1.0.0"
2180
-
2181
-
globals@^11.1.0:
2182
-
version "11.10.0"
2183
-
resolved "https://registry.yarnpkg.com/globals/-/globals-11.10.0.tgz#1e09776dffda5e01816b3bb4077c8b59c24eaa50"
2184
-
integrity sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==
2185
-
2186
-
globals@^9.18.0:
2187
-
version "9.18.0"
2188
-
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
2189
-
integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==
2190
-
2191
-
globalyzer@^0.1.0:
2192
-
version "0.1.0"
2193
-
resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465"
2194
-
integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==
2195
-
2196
-
globrex@^0.1.1:
2197
-
version "0.1.2"
2198
-
resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098"
2199
-
integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==
2200
-
2201
-
graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
2202
-
version "4.1.15"
2203
-
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00"
2204
-
integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==
2205
-
2206
-
"growl@~> 1.10.0":
2207
-
version "1.10.5"
2208
-
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
2209
-
integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
2210
-
2211
-
growly@^1.3.0:
2212
-
version "1.3.0"
2213
-
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
2214
-
integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
2215
-
2216
-
gzip-size@^3.0.0:
2217
-
version "3.0.0"
2218
-
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520"
2219
-
integrity sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=
2220
-
dependencies:
2221
-
duplexer "^0.1.1"
2222
-
2223
-
gzip-size@^4.0.0:
2224
-
version "4.1.0"
2225
-
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-4.1.0.tgz#8ae096257eabe7d69c45be2b67c448124ffb517c"
2226
-
integrity sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=
2227
-
dependencies:
2228
-
duplexer "^0.1.1"
2229
-
pify "^3.0.0"
2230
-
2231
-
gzip-size@^5.0.0:
2232
-
version "5.0.0"
2233
-
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.0.0.tgz#a55ecd99222f4c48fd8c01c625ce3b349d0a0e80"
2234
-
integrity sha512-5iI7omclyqrnWw4XbXAmGhPsABkSIDQonv2K0h61lybgofWa6iZyvrI3r2zsJH4P8Nb64fFVzlvfhs0g7BBxAA==
2235
-
dependencies:
2236
-
duplexer "^0.1.1"
2237
-
pify "^3.0.0"
2238
-
2239
-
handlebars@^4.0.3:
2240
-
version "4.0.12"
2241
-
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.12.tgz#2c15c8a96d46da5e266700518ba8cb8d919d5bc5"
2242
-
integrity sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==
2243
-
dependencies:
2244
-
async "^2.5.0"
2245
-
optimist "^0.6.1"
2246
-
source-map "^0.6.1"
2247
-
optionalDependencies:
2248
-
uglify-js "^3.1.4"
2249
-
2250
-
har-schema@^2.0.0:
2251
-
version "2.0.0"
2252
-
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
2253
-
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
2254
-
2255
-
har-validator@~5.1.0:
2256
-
version "5.1.3"
2257
-
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
2258
-
integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
2259
-
dependencies:
2260
-
ajv "^6.5.5"
2261
-
har-schema "^2.0.0"
2262
-
2263
-
has-ansi@^2.0.0:
2264
-
version "2.0.0"
2265
-
resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
2266
-
integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=
2267
-
dependencies:
2268
-
ansi-regex "^2.0.0"
2269
-
2270
-
has-flag@^1.0.0:
2271
-
version "1.0.0"
2272
-
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
2273
-
integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=
2274
-
2275
-
has-flag@^2.0.0:
2276
-
version "2.0.0"
2277
-
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
2278
-
integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=
2279
-
2280
-
has-flag@^3.0.0:
2281
-
version "3.0.0"
2282
-
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
2283
-
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
2284
-
2285
-
has-symbols@^1.0.0:
2286
-
version "1.0.0"
2287
-
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44"
2288
-
integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=
2289
-
2290
-
has-unicode@^2.0.0:
2291
-
version "2.0.1"
2292
-
resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
2293
-
integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=
2294
-
2295
-
has-value@^0.3.1:
2296
-
version "0.3.1"
2297
-
resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
2298
-
integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=
2299
-
dependencies:
2300
-
get-value "^2.0.3"
2301
-
has-values "^0.1.4"
2302
-
isobject "^2.0.0"
2303
-
2304
-
has-value@^1.0.0:
2305
-
version "1.0.0"
2306
-
resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
2307
-
integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=
2308
-
dependencies:
2309
-
get-value "^2.0.6"
2310
-
has-values "^1.0.0"
2311
-
isobject "^3.0.0"
2312
-
2313
-
has-values@^0.1.4:
2314
-
version "0.1.4"
2315
-
resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
2316
-
integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E=
2317
-
2318
-
has-values@^1.0.0:
2319
-
version "1.0.0"
2320
-
resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
2321
-
integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=
2322
-
dependencies:
2323
-
is-number "^3.0.0"
2324
-
kind-of "^4.0.0"
2325
-
2326
-
has@^1.0.0, has@^1.0.1, has@^1.0.3:
2327
-
version "1.0.3"
2328
-
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
2329
-
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
2330
-
dependencies:
2331
-
function-bind "^1.1.1"
2332
-
2333
-
hex-color-regex@^1.1.0:
2334
-
version "1.1.0"
2335
-
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
2336
-
integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
2337
-
2338
-
home-or-tmp@^2.0.0:
2339
-
version "2.0.0"
2340
-
resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
2341
-
integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg=
2342
-
dependencies:
2343
-
os-homedir "^1.0.0"
2344
-
os-tmpdir "^1.0.1"
2345
-
2346
-
hosted-git-info@^2.1.4:
2347
-
version "2.7.1"
2348
-
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
2349
-
integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==
2350
-
2351
-
hsl-regex@^1.0.0:
2352
-
version "1.0.0"
2353
-
resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e"
2354
-
integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=
2355
-
2356
-
hsla-regex@^1.0.0:
2357
-
version "1.0.0"
2358
-
resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38"
2359
-
integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg=
2360
-
2361
-
html-comment-regex@^1.1.0:
2362
-
version "1.1.2"
2363
-
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
2364
-
integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
2365
-
2366
-
html-encoding-sniffer@^1.0.2:
2367
-
version "1.0.2"
2368
-
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
2369
-
integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==
2370
-
dependencies:
2371
-
whatwg-encoding "^1.0.1"
2372
-
2373
-
http-signature@~1.2.0:
2374
-
version "1.2.0"
2375
-
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
2376
-
integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
2377
-
dependencies:
2378
-
assert-plus "^1.0.0"
2379
-
jsprim "^1.2.2"
2380
-
sshpk "^1.7.0"
2381
-
2382
-
iconv-lite@0.4.24, iconv-lite@^0.4.4:
2383
-
version "0.4.24"
2384
-
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
2385
-
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
2386
-
dependencies:
2387
-
safer-buffer ">= 2.1.2 < 3"
2388
-
2389
-
icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0:
2390
-
version "1.1.0"
2391
-
resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded"
2392
-
integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=
2393
-
2394
-
ignore-walk@^3.0.1:
2395
-
version "3.0.1"
2396
-
resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8"
2397
-
integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==
2398
-
dependencies:
2399
-
minimatch "^3.0.4"
2400
-
2401
-
iltorb@^1.0.9:
2402
-
version "1.3.10"
2403
-
resolved "https://registry.yarnpkg.com/iltorb/-/iltorb-1.3.10.tgz#a0d9e4e7d52bf510741442236cbe0cc4230fc9f8"
2404
-
integrity sha512-nyB4+ru1u8CQqQ6w7YjasboKN3NQTN8GH/V/eEssNRKhW6UbdxdWhB9fJ5EEdjJfezKY0qPrcwLyIcgjL8hHxA==
2405
-
dependencies:
2406
-
detect-libc "^0.2.0"
2407
-
nan "^2.6.2"
2408
-
node-gyp "^3.6.2"
2409
-
prebuild-install "^2.3.0"
2410
-
2411
-
iltorb@^2.0.5:
2412
-
version "2.4.1"
2413
-
resolved "https://registry.yarnpkg.com/iltorb/-/iltorb-2.4.1.tgz#3ae14f0a76ba880503884a2fe630b1f748eb4c17"
2414
-
integrity sha512-huyAN7dSNe2b7VAl5AyvaeZ8XTcDTSF1b8JVYDggl+SBfHsORq3qMZeesZW7zoEy21s15SiERAITWT5cwxu1Uw==
2415
-
dependencies:
2416
-
detect-libc "^1.0.3"
2417
-
npmlog "^4.1.2"
2418
-
prebuild-install "^5.2.1"
2419
-
which-pm-runs "^1.0.0"
2420
-
2421
-
import-cwd@^2.1.0:
2422
-
version "2.1.0"
2423
-
resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
2424
-
integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=
2425
-
dependencies:
2426
-
import-from "^2.1.0"
2427
-
2428
-
import-fresh@^2.0.0:
2429
-
version "2.0.0"
2430
-
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
2431
-
integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY=
2432
-
dependencies:
2433
-
caller-path "^2.0.0"
2434
-
resolve-from "^3.0.0"
2435
-
2436
-
import-from@^2.1.0:
2437
-
version "2.1.0"
2438
-
resolved "https://registry.yarnpkg.com/import-from/-/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1"
2439
-
integrity sha1-M1238qev/VOqpHHUuAId7ja387E=
2440
-
dependencies:
2441
-
resolve-from "^3.0.0"
2442
-
2443
-
import-local@^1.0.0:
2444
-
version "1.0.0"
2445
-
resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc"
2446
-
integrity sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==
2447
-
dependencies:
2448
-
pkg-dir "^2.0.0"
2449
-
resolve-cwd "^2.0.0"
2450
-
2451
-
imurmurhash@^0.1.4:
2452
-
version "0.1.4"
2453
-
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
2454
-
integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
2455
-
2456
-
indexes-of@^1.0.1:
2457
-
version "1.0.1"
2458
-
resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
2459
-
integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc=
2460
-
2461
-
inflight@^1.0.4:
2462
-
version "1.0.6"
2463
-
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
2464
-
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
2465
-
dependencies:
2466
-
once "^1.3.0"
2467
-
wrappy "1"
2468
-
2469
-
inherits@2, inherits@~2.0.0, inherits@~2.0.3:
2470
-
version "2.0.3"
2471
-
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
2472
-
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
2473
-
2474
-
ini@~1.3.0:
2475
-
version "1.3.5"
2476
-
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
2477
-
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
2478
-
2479
-
invariant@^2.2.2, invariant@^2.2.4:
2480
-
version "2.2.4"
2481
-
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
2482
-
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
2483
-
dependencies:
2484
-
loose-envify "^1.0.0"
2485
-
2486
-
invert-kv@^1.0.0:
2487
-
version "1.0.0"
2488
-
resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
2489
-
integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
2490
-
2491
-
ip-regex@^3.0.0:
2492
-
version "3.0.0"
2493
-
resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-3.0.0.tgz#0a934694b4066558c46294244a23cc33116bf732"
2494
-
integrity sha512-T8wDtjy+Qf2TAPDQmBp0eGKJ8GavlWlUnamr3wRn6vvdZlKVuJXXMlSncYFRYgVHOM3If5NR1H4+OvVQU9Idvg==
2495
-
2496
-
is-absolute-url@^2.0.0:
2497
-
version "2.1.0"
2498
-
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
2499
-
integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=
2500
-
2501
-
is-accessor-descriptor@^0.1.6:
2502
-
version "0.1.6"
2503
-
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6"
2504
-
integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=
2505
-
dependencies:
2506
-
kind-of "^3.0.2"
2507
-
2508
-
is-accessor-descriptor@^1.0.0:
2509
-
version "1.0.0"
2510
-
resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656"
2511
-
integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==
2512
-
dependencies:
2513
-
kind-of "^6.0.0"
2514
-
2515
-
is-arrayish@^0.2.1:
2516
-
version "0.2.1"
2517
-
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
2518
-
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
2519
-
2520
-
is-arrayish@^0.3.1:
2521
-
version "0.3.2"
2522
-
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
2523
-
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
2524
-
2525
-
is-buffer@^1.1.5:
2526
-
version "1.1.6"
2527
-
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
2528
-
integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
2529
-
2530
-
is-builtin-module@^1.0.0:
2531
-
version "1.0.0"
2532
-
resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
2533
-
integrity sha1-VAVy0096wxGfj3bDDLwbHgN6/74=
2534
-
dependencies:
2535
-
builtin-modules "^1.0.0"
2536
-
2537
-
is-callable@^1.1.4:
2538
-
version "1.1.4"
2539
-
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75"
2540
-
integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
2541
-
2542
-
is-ci@^1.0.10:
2543
-
version "1.2.1"
2544
-
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
2545
-
integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==
2546
-
dependencies:
2547
-
ci-info "^1.5.0"
2548
-
2549
-
is-color-stop@^1.0.0:
2550
-
version "1.1.0"
2551
-
resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
2552
-
integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=
2553
-
dependencies:
2554
-
css-color-names "^0.0.4"
2555
-
hex-color-regex "^1.1.0"
2556
-
hsl-regex "^1.0.0"
2557
-
hsla-regex "^1.0.0"
2558
-
rgb-regex "^1.0.1"
2559
-
rgba-regex "^1.0.0"
2560
-
2561
-
is-data-descriptor@^0.1.4:
2562
-
version "0.1.4"
2563
-
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56"
2564
-
integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=
2565
-
dependencies:
2566
-
kind-of "^3.0.2"
2567
-
2568
-
is-data-descriptor@^1.0.0:
2569
-
version "1.0.0"
2570
-
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7"
2571
-
integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==
2572
-
dependencies:
2573
-
kind-of "^6.0.0"
2574
-
2575
-
is-date-object@^1.0.1:
2576
-
version "1.0.1"
2577
-
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16"
2578
-
integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
2579
-
2580
-
is-descriptor@^0.1.0:
2581
-
version "0.1.6"
2582
-
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca"
2583
-
integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==
2584
-
dependencies:
2585
-
is-accessor-descriptor "^0.1.6"
2586
-
is-data-descriptor "^0.1.4"
2587
-
kind-of "^5.0.0"
2588
-
2589
-
is-descriptor@^1.0.0, is-descriptor@^1.0.2:
2590
-
version "1.0.2"
2591
-
resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec"
2592
-
integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==
2593
-
dependencies:
2594
-
is-accessor-descriptor "^1.0.0"
2595
-
is-data-descriptor "^1.0.0"
2596
-
kind-of "^6.0.2"
2597
-
2598
-
is-directory@^0.3.1:
2599
-
version "0.3.1"
2600
-
resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1"
2601
-
integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=
2602
-
2603
-
is-dotfile@^1.0.0:
2604
-
version "1.0.3"
2605
-
resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
2606
-
integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=
2607
-
2608
-
is-equal-shallow@^0.1.3:
2609
-
version "0.1.3"
2610
-
resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
2611
-
integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=
2612
-
dependencies:
2613
-
is-primitive "^2.0.0"
2614
-
2615
-
is-extendable@^0.1.0, is-extendable@^0.1.1:
2616
-
version "0.1.1"
2617
-
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
2618
-
integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=
2619
-
2620
-
is-extendable@^1.0.1:
2621
-
version "1.0.1"
2622
-
resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
2623
-
integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
2624
-
dependencies:
2625
-
is-plain-object "^2.0.4"
2626
-
2627
-
is-extglob@^1.0.0:
2628
-
version "1.0.0"
2629
-
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
2630
-
integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=
2631
-
2632
-
is-finite@^1.0.0:
2633
-
version "1.0.2"
2634
-
resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
2635
-
integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=
2636
-
dependencies:
2637
-
number-is-nan "^1.0.0"
2638
-
2639
-
is-fullwidth-code-point@^1.0.0:
2640
-
version "1.0.0"
2641
-
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
2642
-
integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
2643
-
dependencies:
2644
-
number-is-nan "^1.0.0"
2645
-
2646
-
is-fullwidth-code-point@^2.0.0:
2647
-
version "2.0.0"
2648
-
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
2649
-
integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
2650
-
2651
-
is-generator-fn@^1.0.0:
2652
-
version "1.0.0"
2653
-
resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-1.0.0.tgz#969d49e1bb3329f6bb7f09089be26578b2ddd46a"
2654
-
integrity sha1-lp1J4bszKfa7fwkIm+JleLLd1Go=
2655
-
2656
-
is-glob@^2.0.0, is-glob@^2.0.1:
2657
-
version "2.0.1"
2658
-
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
2659
-
integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=
2660
-
dependencies:
2661
-
is-extglob "^1.0.0"
2662
-
2663
-
is-module@^1.0.0:
2664
-
version "1.0.0"
2665
-
resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
2666
-
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
2667
-
2668
-
is-number@^2.1.0:
2669
-
version "2.1.0"
2670
-
resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
2671
-
integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=
2672
-
dependencies:
2673
-
kind-of "^3.0.2"
2674
-
2675
-
is-number@^3.0.0:
2676
-
version "3.0.0"
2677
-
resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
2678
-
integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=
2679
-
dependencies:
2680
-
kind-of "^3.0.2"
2681
-
2682
-
is-number@^4.0.0:
2683
-
version "4.0.0"
2684
-
resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff"
2685
-
integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==
2686
-
2687
-
is-obj@^1.0.0:
2688
-
version "1.0.1"
2689
-
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
2690
-
integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
2691
-
2692
-
is-plain-obj@^1.0.0:
2693
-
version "1.1.0"
2694
-
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
2695
-
integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
2696
-
2697
-
is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4:
2698
-
version "2.0.4"
2699
-
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
2700
-
integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
2701
-
dependencies:
2702
-
isobject "^3.0.1"
2703
-
2704
-
is-posix-bracket@^0.1.0:
2705
-
version "0.1.1"
2706
-
resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
2707
-
integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=
2708
-
2709
-
is-primitive@^2.0.0:
2710
-
version "2.0.0"
2711
-
resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
2712
-
integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU=
2713
-
2714
-
is-regex@^1.0.4:
2715
-
version "1.0.4"
2716
-
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491"
2717
-
integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
2718
-
dependencies:
2719
-
has "^1.0.1"
2720
-
2721
-
is-resolvable@^1.0.0:
2722
-
version "1.1.0"
2723
-
resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88"
2724
-
integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==
2725
-
2726
-
is-stream@^1.1.0:
2727
-
version "1.1.0"
2728
-
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
2729
-
integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
2730
-
2731
-
is-svg@^2.0.0:
2732
-
version "2.1.0"
2733
-
resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.1.0.tgz#cf61090da0d9efbcab8722deba6f032208dbb0e9"
2734
-
integrity sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=
2735
-
dependencies:
2736
-
html-comment-regex "^1.1.0"
2737
-
2738
-
is-svg@^3.0.0:
2739
-
version "3.0.0"
2740
-
resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75"
2741
-
integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==
2742
-
dependencies:
2743
-
html-comment-regex "^1.1.0"
2744
-
2745
-
is-symbol@^1.0.2:
2746
-
version "1.0.2"
2747
-
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38"
2748
-
integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
2749
-
dependencies:
2750
-
has-symbols "^1.0.0"
2751
-
2752
-
is-typedarray@~1.0.0:
2753
-
version "1.0.0"
2754
-
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
2755
-
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
2756
-
2757
-
is-utf8@^0.2.0:
2758
-
version "0.2.1"
2759
-
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
2760
-
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
2761
-
2762
-
is-windows@^1.0.2:
2763
-
version "1.0.2"
2764
-
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
2765
-
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
2766
-
2767
-
isarray@1.0.0, isarray@~1.0.0:
2768
-
version "1.0.0"
2769
-
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
2770
-
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
2771
-
2772
-
isexe@^2.0.0:
2773
-
version "2.0.0"
2774
-
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
2775
-
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
2776
-
2777
-
isobject@^2.0.0:
2778
-
version "2.1.0"
2779
-
resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
2780
-
integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=
2781
-
dependencies:
2782
-
isarray "1.0.0"
2783
-
2784
-
isobject@^3.0.0, isobject@^3.0.1:
2785
-
version "3.0.1"
2786
-
resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
2787
-
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
2788
-
2789
-
isstream@~0.1.2:
2790
-
version "0.1.2"
2791
-
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
2792
-
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
2793
-
2794
-
istanbul-api@^1.3.1:
2795
-
version "1.3.7"
2796
-
resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.3.7.tgz#a86c770d2b03e11e3f778cd7aedd82d2722092aa"
2797
-
integrity sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==
2798
-
dependencies:
2799
-
async "^2.1.4"
2800
-
fileset "^2.0.2"
2801
-
istanbul-lib-coverage "^1.2.1"
2802
-
istanbul-lib-hook "^1.2.2"
2803
-
istanbul-lib-instrument "^1.10.2"
2804
-
istanbul-lib-report "^1.1.5"
2805
-
istanbul-lib-source-maps "^1.2.6"
2806
-
istanbul-reports "^1.5.1"
2807
-
js-yaml "^3.7.0"
2808
-
mkdirp "^0.5.1"
2809
-
once "^1.4.0"
2810
-
2811
-
istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1:
2812
-
version "1.2.1"
2813
-
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0"
2814
-
integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==
2815
-
2816
-
istanbul-lib-hook@^1.2.2:
2817
-
version "1.2.2"
2818
-
resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz#bc6bf07f12a641fbf1c85391d0daa8f0aea6bf86"
2819
-
integrity sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==
2820
-
dependencies:
2821
-
append-transform "^0.4.0"
2822
-
2823
-
istanbul-lib-instrument@^1.10.1, istanbul-lib-instrument@^1.10.2:
2824
-
version "1.10.2"
2825
-
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz#1f55ed10ac3c47f2bdddd5307935126754d0a9ca"
2826
-
integrity sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==
2827
-
dependencies:
2828
-
babel-generator "^6.18.0"
2829
-
babel-template "^6.16.0"
2830
-
babel-traverse "^6.18.0"
2831
-
babel-types "^6.18.0"
2832
-
babylon "^6.18.0"
2833
-
istanbul-lib-coverage "^1.2.1"
2834
-
semver "^5.3.0"
2835
-
2836
-
istanbul-lib-report@^1.1.5:
2837
-
version "1.1.5"
2838
-
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c"
2839
-
integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==
2840
-
dependencies:
2841
-
istanbul-lib-coverage "^1.2.1"
2842
-
mkdirp "^0.5.1"
2843
-
path-parse "^1.0.5"
2844
-
supports-color "^3.1.2"
2845
-
2846
-
istanbul-lib-source-maps@^1.2.4, istanbul-lib-source-maps@^1.2.6:
2847
-
version "1.2.6"
2848
-
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz#37b9ff661580f8fca11232752ee42e08c6675d8f"
2849
-
integrity sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==
2850
-
dependencies:
2851
-
debug "^3.1.0"
2852
-
istanbul-lib-coverage "^1.2.1"
2853
-
mkdirp "^0.5.1"
2854
-
rimraf "^2.6.1"
2855
-
source-map "^0.5.3"
2856
-
2857
-
istanbul-reports@^1.5.1:
2858
-
version "1.5.1"
2859
-
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a"
2860
-
integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==
2861
-
dependencies:
2862
-
handlebars "^4.0.3"
2863
-
2864
-
jest-changed-files@^23.4.2:
2865
-
version "23.4.2"
2866
-
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-23.4.2.tgz#1eed688370cd5eebafe4ae93d34bb3b64968fe83"
2867
-
integrity sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==
2868
-
dependencies:
2869
-
throat "^4.0.0"
2870
-
2871
-
jest-cli@^23.6.0:
2872
-
version "23.6.0"
2873
-
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-23.6.0.tgz#61ab917744338f443ef2baa282ddffdd658a5da4"
2874
-
integrity sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==
2875
-
dependencies:
2876
-
ansi-escapes "^3.0.0"
2877
-
chalk "^2.0.1"
2878
-
exit "^0.1.2"
2879
-
glob "^7.1.2"
2880
-
graceful-fs "^4.1.11"
2881
-
import-local "^1.0.0"
2882
-
is-ci "^1.0.10"
2883
-
istanbul-api "^1.3.1"
2884
-
istanbul-lib-coverage "^1.2.0"
2885
-
istanbul-lib-instrument "^1.10.1"
2886
-
istanbul-lib-source-maps "^1.2.4"
2887
-
jest-changed-files "^23.4.2"
2888
-
jest-config "^23.6.0"
2889
-
jest-environment-jsdom "^23.4.0"
2890
-
jest-get-type "^22.1.0"
2891
-
jest-haste-map "^23.6.0"
2892
-
jest-message-util "^23.4.0"
2893
-
jest-regex-util "^23.3.0"
2894
-
jest-resolve-dependencies "^23.6.0"
2895
-
jest-runner "^23.6.0"
2896
-
jest-runtime "^23.6.0"
2897
-
jest-snapshot "^23.6.0"
2898
-
jest-util "^23.4.0"
2899
-
jest-validate "^23.6.0"
2900
-
jest-watcher "^23.4.0"
2901
-
jest-worker "^23.2.0"
2902
-
micromatch "^2.3.11"
2903
-
node-notifier "^5.2.1"
2904
-
prompts "^0.1.9"
2905
-
realpath-native "^1.0.0"
2906
-
rimraf "^2.5.4"
2907
-
slash "^1.0.0"
2908
-
string-length "^2.0.0"
2909
-
strip-ansi "^4.0.0"
2910
-
which "^1.2.12"
2911
-
yargs "^11.0.0"
2912
-
2913
-
jest-config@^23.6.0:
2914
-
version "23.6.0"
2915
-
resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-23.6.0.tgz#f82546a90ade2d8c7026fbf6ac5207fc22f8eb1d"
2916
-
integrity sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==
2917
-
dependencies:
2918
-
babel-core "^6.0.0"
2919
-
babel-jest "^23.6.0"
2920
-
chalk "^2.0.1"
2921
-
glob "^7.1.1"
2922
-
jest-environment-jsdom "^23.4.0"
2923
-
jest-environment-node "^23.4.0"
2924
-
jest-get-type "^22.1.0"
2925
-
jest-jasmine2 "^23.6.0"
2926
-
jest-regex-util "^23.3.0"
2927
-
jest-resolve "^23.6.0"
2928
-
jest-util "^23.4.0"
2929
-
jest-validate "^23.6.0"
2930
-
micromatch "^2.3.11"
2931
-
pretty-format "^23.6.0"
2932
-
2933
-
jest-diff@^23.6.0:
2934
-
version "23.6.0"
2935
-
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-23.6.0.tgz#1500f3f16e850bb3d71233408089be099f610c7d"
2936
-
integrity sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==
2937
-
dependencies:
2938
-
chalk "^2.0.1"
2939
-
diff "^3.2.0"
2940
-
jest-get-type "^22.1.0"
2941
-
pretty-format "^23.6.0"
2942
-
2943
-
jest-docblock@^23.2.0:
2944
-
version "23.2.0"
2945
-
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7"
2946
-
integrity sha1-8IXh8YVI2Z/dabICB+b9VdkTg6c=
2947
-
dependencies:
2948
-
detect-newline "^2.1.0"
2949
-
2950
-
jest-each@^23.6.0:
2951
-
version "23.6.0"
2952
-
resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-23.6.0.tgz#ba0c3a82a8054387016139c733a05242d3d71575"
2953
-
integrity sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==
2954
-
dependencies:
2955
-
chalk "^2.0.1"
2956
-
pretty-format "^23.6.0"
2957
-
2958
-
jest-environment-jsdom@^23.4.0:
2959
-
version "23.4.0"
2960
-
resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz#056a7952b3fea513ac62a140a2c368c79d9e6023"
2961
-
integrity sha1-BWp5UrP+pROsYqFAosNox52eYCM=
2962
-
dependencies:
2963
-
jest-mock "^23.2.0"
2964
-
jest-util "^23.4.0"
2965
-
jsdom "^11.5.1"
2966
-
2967
-
jest-environment-node@^23.4.0:
2968
-
version "23.4.0"
2969
-
resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-23.4.0.tgz#57e80ed0841dea303167cce8cd79521debafde10"
2970
-
integrity sha1-V+gO0IQd6jAxZ8zozXlSHeuv3hA=
2971
-
dependencies:
2972
-
jest-mock "^23.2.0"
2973
-
jest-util "^23.4.0"
2974
-
2975
-
jest-get-type@^22.1.0:
2976
-
version "22.4.3"
2977
-
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-22.4.3.tgz#e3a8504d8479342dd4420236b322869f18900ce4"
2978
-
integrity sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==
2979
-
2980
-
jest-haste-map@^23.6.0:
2981
-
version "23.6.0"
2982
-
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-23.6.0.tgz#2e3eb997814ca696d62afdb3f2529f5bbc935e16"
2983
-
integrity sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==
2984
-
dependencies:
2985
-
fb-watchman "^2.0.0"
2986
-
graceful-fs "^4.1.11"
2987
-
invariant "^2.2.4"
2988
-
jest-docblock "^23.2.0"
2989
-
jest-serializer "^23.0.1"
2990
-
jest-worker "^23.2.0"
2991
-
micromatch "^2.3.11"
2992
-
sane "^2.0.0"
2993
-
2994
-
jest-jasmine2@^23.6.0:
2995
-
version "23.6.0"
2996
-
resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz#840e937f848a6c8638df24360ab869cc718592e0"
2997
-
integrity sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==
2998
-
dependencies:
2999
-
babel-traverse "^6.0.0"
3000
-
chalk "^2.0.1"
3001
-
co "^4.6.0"
3002
-
expect "^23.6.0"
3003
-
is-generator-fn "^1.0.0"
3004
-
jest-diff "^23.6.0"
3005
-
jest-each "^23.6.0"
3006
-
jest-matcher-utils "^23.6.0"
3007
-
jest-message-util "^23.4.0"
3008
-
jest-snapshot "^23.6.0"
3009
-
jest-util "^23.4.0"
3010
-
pretty-format "^23.6.0"
3011
-
3012
-
jest-leak-detector@^23.6.0:
3013
-
version "23.6.0"
3014
-
resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz#e4230fd42cf381a1a1971237ad56897de7e171de"
3015
-
integrity sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==
3016
-
dependencies:
3017
-
pretty-format "^23.6.0"
3018
-
3019
-
jest-matcher-utils@^23.6.0:
3020
-
version "23.6.0"
3021
-
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz#726bcea0c5294261a7417afb6da3186b4b8cac80"
3022
-
integrity sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==
3023
-
dependencies:
3024
-
chalk "^2.0.1"
3025
-
jest-get-type "^22.1.0"
3026
-
pretty-format "^23.6.0"
3027
-
3028
-
jest-message-util@^23.4.0:
3029
-
version "23.4.0"
3030
-
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-23.4.0.tgz#17610c50942349508d01a3d1e0bda2c079086a9f"
3031
-
integrity sha1-F2EMUJQjSVCNAaPR4L2iwHkIap8=
3032
-
dependencies:
3033
-
"@babel/code-frame" "^7.0.0-beta.35"
3034
-
chalk "^2.0.1"
3035
-
micromatch "^2.3.11"
3036
-
slash "^1.0.0"
3037
-
stack-utils "^1.0.1"
3038
-
3039
-
jest-mock@^23.2.0:
3040
-
version "23.2.0"
3041
-
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-23.2.0.tgz#ad1c60f29e8719d47c26e1138098b6d18b261134"
3042
-
integrity sha1-rRxg8p6HGdR8JuETgJi20YsmETQ=
3043
-
3044
-
jest-regex-util@^23.3.0:
3045
-
version "23.3.0"
3046
-
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-23.3.0.tgz#5f86729547c2785c4002ceaa8f849fe8ca471bc5"
3047
-
integrity sha1-X4ZylUfCeFxAAs6qj4Sf6MpHG8U=
3048
-
3049
-
jest-resolve-dependencies@^23.6.0:
3050
-
version "23.6.0"
3051
-
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz#b4526af24c8540d9a3fab102c15081cf509b723d"
3052
-
integrity sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==
3053
-
dependencies:
3054
-
jest-regex-util "^23.3.0"
3055
-
jest-snapshot "^23.6.0"
3056
-
3057
-
jest-resolve@^23.6.0:
3058
-
version "23.6.0"
3059
-
resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-23.6.0.tgz#cf1d1a24ce7ee7b23d661c33ba2150f3aebfa0ae"
3060
-
integrity sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==
3061
-
dependencies:
3062
-
browser-resolve "^1.11.3"
3063
-
chalk "^2.0.1"
3064
-
realpath-native "^1.0.0"
3065
-
3066
-
jest-runner@^23.6.0:
3067
-
version "23.6.0"
3068
-
resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-23.6.0.tgz#3894bd219ffc3f3cb94dc48a4170a2e6f23a5a38"
3069
-
integrity sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==
3070
-
dependencies:
3071
-
exit "^0.1.2"
3072
-
graceful-fs "^4.1.11"
3073
-
jest-config "^23.6.0"
3074
-
jest-docblock "^23.2.0"
3075
-
jest-haste-map "^23.6.0"
3076
-
jest-jasmine2 "^23.6.0"
3077
-
jest-leak-detector "^23.6.0"
3078
-
jest-message-util "^23.4.0"
3079
-
jest-runtime "^23.6.0"
3080
-
jest-util "^23.4.0"
3081
-
jest-worker "^23.2.0"
3082
-
source-map-support "^0.5.6"
3083
-
throat "^4.0.0"
3084
-
3085
-
jest-runtime@^23.6.0:
3086
-
version "23.6.0"
3087
-
resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-23.6.0.tgz#059e58c8ab445917cd0e0d84ac2ba68de8f23082"
3088
-
integrity sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==
3089
-
dependencies:
3090
-
babel-core "^6.0.0"
3091
-
babel-plugin-istanbul "^4.1.6"
3092
-
chalk "^2.0.1"
3093
-
convert-source-map "^1.4.0"
3094
-
exit "^0.1.2"
3095
-
fast-json-stable-stringify "^2.0.0"
3096
-
graceful-fs "^4.1.11"
3097
-
jest-config "^23.6.0"
3098
-
jest-haste-map "^23.6.0"
3099
-
jest-message-util "^23.4.0"
3100
-
jest-regex-util "^23.3.0"
3101
-
jest-resolve "^23.6.0"
3102
-
jest-snapshot "^23.6.0"
3103
-
jest-util "^23.4.0"
3104
-
jest-validate "^23.6.0"
3105
-
micromatch "^2.3.11"
3106
-
realpath-native "^1.0.0"
3107
-
slash "^1.0.0"
3108
-
strip-bom "3.0.0"
3109
-
write-file-atomic "^2.1.0"
3110
-
yargs "^11.0.0"
3111
-
3112
-
jest-serializer@^23.0.1:
3113
-
version "23.0.1"
3114
-
resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-23.0.1.tgz#a3776aeb311e90fe83fab9e533e85102bd164165"
3115
-
integrity sha1-o3dq6zEekP6D+rnlM+hRAr0WQWU=
3116
-
3117
-
jest-snapshot@^23.6.0:
3118
-
version "23.6.0"
3119
-
resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-23.6.0.tgz#f9c2625d1b18acda01ec2d2b826c0ce58a5aa17a"
3120
-
integrity sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==
3121
-
dependencies:
3122
-
babel-types "^6.0.0"
3123
-
chalk "^2.0.1"
3124
-
jest-diff "^23.6.0"
3125
-
jest-matcher-utils "^23.6.0"
3126
-
jest-message-util "^23.4.0"
3127
-
jest-resolve "^23.6.0"
3128
-
mkdirp "^0.5.1"
3129
-
natural-compare "^1.4.0"
3130
-
pretty-format "^23.6.0"
3131
-
semver "^5.5.0"
3132
-
3133
-
jest-util@^23.4.0:
3134
-
version "23.4.0"
3135
-
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-23.4.0.tgz#4d063cb927baf0a23831ff61bec2cbbf49793561"
3136
-
integrity sha1-TQY8uSe68KI4Mf9hvsLLv0l5NWE=
3137
-
dependencies:
3138
-
callsites "^2.0.0"
3139
-
chalk "^2.0.1"
3140
-
graceful-fs "^4.1.11"
3141
-
is-ci "^1.0.10"
3142
-
jest-message-util "^23.4.0"
3143
-
mkdirp "^0.5.1"
3144
-
slash "^1.0.0"
3145
-
source-map "^0.6.0"
3146
-
3147
-
jest-validate@^23.6.0:
3148
-
version "23.6.0"
3149
-
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-23.6.0.tgz#36761f99d1ed33fcd425b4e4c5595d62b6597474"
3150
-
integrity sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==
3151
-
dependencies:
3152
-
chalk "^2.0.1"
3153
-
jest-get-type "^22.1.0"
3154
-
leven "^2.1.0"
3155
-
pretty-format "^23.6.0"
3156
-
3157
-
jest-watcher@^23.4.0:
3158
-
version "23.4.0"
3159
-
resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-23.4.0.tgz#d2e28ce74f8dad6c6afc922b92cabef6ed05c91c"
3160
-
integrity sha1-0uKM50+NrWxq/JIrksq+9u0FyRw=
3161
-
dependencies:
3162
-
ansi-escapes "^3.0.0"
3163
-
chalk "^2.0.1"
3164
-
string-length "^2.0.0"
3165
-
3166
-
jest-worker@^23.2.0:
3167
-
version "23.2.0"
3168
-
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-23.2.0.tgz#faf706a8da36fae60eb26957257fa7b5d8ea02b9"
3169
-
integrity sha1-+vcGqNo2+uYOsmlXJX+ntdjqArk=
3170
-
dependencies:
3171
-
merge-stream "^1.0.1"
3172
-
3173
-
jest@^23.5.0:
3174
-
version "23.6.0"
3175
-
resolved "https://registry.yarnpkg.com/jest/-/jest-23.6.0.tgz#ad5835e923ebf6e19e7a1d7529a432edfee7813d"
3176
-
integrity sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==
3177
-
dependencies:
3178
-
import-local "^1.0.0"
3179
-
jest-cli "^23.6.0"
3180
-
3181
-
js-base64@^2.1.9:
3182
-
version "2.5.0"
3183
-
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.0.tgz#42255ba183ab67ce59a0dee640afdc00ab5ae93e"
3184
-
integrity sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==
3185
-
3186
-
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
3187
-
version "4.0.0"
3188
-
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
3189
-
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
3190
-
3191
-
js-tokens@^3.0.2:
3192
-
version "3.0.2"
3193
-
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
3194
-
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
3195
-
3196
-
js-yaml@^3.11.0, js-yaml@^3.12.0, js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.9.0:
3197
-
version "3.12.1"
3198
-
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600"
3199
-
integrity sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==
3200
-
dependencies:
3201
-
argparse "^1.0.7"
3202
-
esprima "^4.0.0"
3203
-
3204
-
js-yaml@~3.7.0:
3205
-
version "3.7.0"
3206
-
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80"
3207
-
integrity sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=
3208
-
dependencies:
3209
-
argparse "^1.0.7"
3210
-
esprima "^2.6.0"
3211
-
3212
-
jsbn@~0.1.0:
3213
-
version "0.1.1"
3214
-
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
3215
-
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
3216
-
3217
-
jsdom@^11.5.1:
3218
-
version "11.12.0"
3219
-
resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-11.12.0.tgz#1a80d40ddd378a1de59656e9e6dc5a3ba8657bc8"
3220
-
integrity sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==
3221
-
dependencies:
3222
-
abab "^2.0.0"
3223
-
acorn "^5.5.3"
3224
-
acorn-globals "^4.1.0"
3225
-
array-equal "^1.0.0"
3226
-
cssom ">= 0.3.2 < 0.4.0"
3227
-
cssstyle "^1.0.0"
3228
-
data-urls "^1.0.0"
3229
-
domexception "^1.0.1"
3230
-
escodegen "^1.9.1"
3231
-
html-encoding-sniffer "^1.0.2"
3232
-
left-pad "^1.3.0"
3233
-
nwsapi "^2.0.7"
3234
-
parse5 "4.0.0"
3235
-
pn "^1.1.0"
3236
-
request "^2.87.0"
3237
-
request-promise-native "^1.0.5"
3238
-
sax "^1.2.4"
3239
-
symbol-tree "^3.2.2"
3240
-
tough-cookie "^2.3.4"
3241
-
w3c-hr-time "^1.0.1"
3242
-
webidl-conversions "^4.0.2"
3243
-
whatwg-encoding "^1.0.3"
3244
-
whatwg-mimetype "^2.1.0"
3245
-
whatwg-url "^6.4.1"
3246
-
ws "^5.2.0"
3247
-
xml-name-validator "^3.0.0"
3248
-
3249
-
jsesc@^1.3.0:
3250
-
version "1.3.0"
3251
-
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
3252
-
integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s=
3253
-
3254
-
jsesc@^2.5.1:
3255
-
version "2.5.2"
3256
-
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
3257
-
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
3258
-
3259
-
jsesc@~0.5.0:
3260
-
version "0.5.0"
3261
-
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
3262
-
integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=
3263
-
3264
-
json-parse-better-errors@^1.0.1:
3265
-
version "1.0.2"
3266
-
resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9"
3267
-
integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==
3268
-
3269
-
json-schema-traverse@^0.4.1:
3270
-
version "0.4.1"
3271
-
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
3272
-
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
3273
-
3274
-
json-schema@0.2.3:
3275
-
version "0.2.3"
3276
-
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
3277
-
integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
3278
-
3279
-
json-stringify-safe@~5.0.1:
3280
-
version "5.0.1"
3281
-
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
3282
-
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
3283
-
3284
-
json5@^0.5.0, json5@^0.5.1:
3285
-
version "0.5.1"
3286
-
resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821"
3287
-
integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=
3288
-
3289
-
json5@^2.1.0:
3290
-
version "2.1.0"
3291
-
resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850"
3292
-
integrity sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==
3293
-
dependencies:
3294
-
minimist "^1.2.0"
3295
-
3296
-
jsonfile@^4.0.0:
3297
-
version "4.0.0"
3298
-
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
3299
-
integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
3300
-
optionalDependencies:
3301
-
graceful-fs "^4.1.6"
3302
-
3303
-
jsonify@~0.0.0:
3304
-
version "0.0.0"
3305
-
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
3306
-
integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=
3307
-
3308
-
jsprim@^1.2.2:
3309
-
version "1.4.1"
3310
-
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
3311
-
integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
3312
-
dependencies:
3313
-
assert-plus "1.0.0"
3314
-
extsprintf "1.3.0"
3315
-
json-schema "0.2.3"
3316
-
verror "1.10.0"
3317
-
3318
-
kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
3319
-
version "3.2.2"
3320
-
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
3321
-
integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=
3322
-
dependencies:
3323
-
is-buffer "^1.1.5"
3324
-
3325
-
kind-of@^4.0.0:
3326
-
version "4.0.0"
3327
-
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
3328
-
integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc=
3329
-
dependencies:
3330
-
is-buffer "^1.1.5"
3331
-
3332
-
kind-of@^5.0.0:
3333
-
version "5.1.0"
3334
-
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
3335
-
integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
3336
-
3337
-
kind-of@^6.0.0, kind-of@^6.0.2:
3338
-
version "6.0.2"
3339
-
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
3340
-
integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
3341
-
3342
-
kleur@^2.0.1:
3343
-
version "2.0.2"
3344
-
resolved "https://registry.yarnpkg.com/kleur/-/kleur-2.0.2.tgz#b704f4944d95e255d038f0cb05fb8a602c55a300"
3345
-
integrity sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==
3346
-
3347
-
lcid@^1.0.0:
3348
-
version "1.0.0"
3349
-
resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
3350
-
integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
3351
-
dependencies:
3352
-
invert-kv "^1.0.0"
3353
-
3354
-
lcov-parse@^0.0.10:
3355
-
version "0.0.10"
3356
-
resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-0.0.10.tgz#1b0b8ff9ac9c7889250582b70b71315d9da6d9a3"
3357
-
integrity sha1-GwuP+ayceIklBYK3C3ExXZ2m2aM=
3358
-
3359
-
left-pad@^1.3.0:
3360
-
version "1.3.0"
3361
-
resolved "https://registry.yarnpkg.com/left-pad/-/left-pad-1.3.0.tgz#5b8a3a7765dfe001261dde915589e782f8c94d1e"
3362
-
integrity sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==
3363
-
3364
-
leven@^2.1.0:
3365
-
version "2.1.0"
3366
-
resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
3367
-
integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA=
3368
-
3369
-
levn@~0.3.0:
3370
-
version "0.3.0"
3371
-
resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
3372
-
integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
3373
-
dependencies:
3374
-
prelude-ls "~1.1.2"
3375
-
type-check "~0.3.2"
3376
-
3377
-
load-json-file@^1.0.0:
3378
-
version "1.1.0"
3379
-
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
3380
-
integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
3381
-
dependencies:
3382
-
graceful-fs "^4.1.2"
3383
-
parse-json "^2.2.0"
3384
-
pify "^2.0.0"
3385
-
pinkie-promise "^2.0.0"
3386
-
strip-bom "^2.0.0"
3387
-
3388
-
load-json-file@^4.0.0:
3389
-
version "4.0.0"
3390
-
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b"
3391
-
integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs=
3392
-
dependencies:
3393
-
graceful-fs "^4.1.2"
3394
-
parse-json "^4.0.0"
3395
-
pify "^3.0.0"
3396
-
strip-bom "^3.0.0"
3397
-
3398
-
loader-utils@^0.2.16:
3399
-
version "0.2.17"
3400
-
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348"
3401
-
integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=
3402
-
dependencies:
3403
-
big.js "^3.1.3"
3404
-
emojis-list "^2.0.0"
3405
-
json5 "^0.5.0"
3406
-
object-assign "^4.0.1"
3407
-
3408
-
locate-path@^2.0.0:
3409
-
version "2.0.0"
3410
-
resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e"
3411
-
integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=
3412
-
dependencies:
3413
-
p-locate "^2.0.0"
3414
-
path-exists "^3.0.0"
3415
-
3416
-
lodash.camelcase@^4.3.0:
3417
-
version "4.3.0"
3418
-
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
3419
-
integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY=
3420
-
3421
-
lodash.foreach@^4.5.0:
3422
-
version "4.5.0"
3423
-
resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53"
3424
-
integrity sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=
3425
-
3426
-
lodash.memoize@^4.1.2:
3427
-
version "4.1.2"
3428
-
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
3429
-
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
3430
-
3431
-
lodash.sortby@^4.7.0:
3432
-
version "4.7.0"
3433
-
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
3434
-
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=
3435
-
3436
-
lodash.sumby@^4.6.0:
3437
-
version "4.6.0"
3438
-
resolved "https://registry.yarnpkg.com/lodash.sumby/-/lodash.sumby-4.6.0.tgz#7d87737ddb216da2f7e5e7cd2dd9c403a7887346"
3439
-
integrity sha1-fYdzfdshbaL35efNLdnEA6eIc0Y=
3440
-
3441
-
lodash.uniq@^4.5.0:
3442
-
version "4.5.0"
3443
-
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
3444
-
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
3445
-
3446
-
lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.4:
3447
-
version "4.17.11"
3448
-
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d"
3449
-
integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==
3450
-
3451
-
log-driver@^1.2.7:
3452
-
version "1.2.7"
3453
-
resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8"
3454
-
integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==
3455
-
3456
-
loose-envify@^1.0.0:
3457
-
version "1.4.0"
3458
-
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
3459
-
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
3460
-
dependencies:
3461
-
js-tokens "^3.0.0 || ^4.0.0"
3462
-
3463
-
lru-cache@^4.0.1:
3464
-
version "4.1.5"
3465
-
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
3466
-
integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
3467
-
dependencies:
3468
-
pseudomap "^1.0.2"
3469
-
yallist "^2.1.2"
3470
-
3471
-
magic-string@^0.22.4:
3472
-
version "0.22.5"
3473
-
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e"
3474
-
integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==
3475
-
dependencies:
3476
-
vlq "^0.2.2"
3477
-
3478
-
magic-string@^0.25.1:
3479
-
version "0.25.1"
3480
-
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.1.tgz#b1c248b399cd7485da0fe7385c2fc7011843266e"
3481
-
integrity sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==
3482
-
dependencies:
3483
-
sourcemap-codec "^1.4.1"
3484
-
3485
-
makeerror@1.0.x:
3486
-
version "1.0.11"
3487
-
resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c"
3488
-
integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=
3489
-
dependencies:
3490
-
tmpl "1.0.x"
3491
-
3492
-
map-cache@^0.2.2:
3493
-
version "0.2.2"
3494
-
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
3495
-
integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
3496
-
3497
-
map-visit@^1.0.0:
3498
-
version "1.0.0"
3499
-
resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
3500
-
integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=
3501
-
dependencies:
3502
-
object-visit "^1.0.0"
3503
-
3504
-
math-expression-evaluator@^1.2.14:
3505
-
version "1.2.17"
3506
-
resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz#de819fdbcd84dccd8fae59c6aeb79615b9d266ac"
3507
-
integrity sha1-3oGf282E3M2PrlnGrreWFbnSZqw=
3508
-
3509
-
math-random@^1.0.1:
3510
-
version "1.0.1"
3511
-
resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.1.tgz#8b3aac588b8a66e4975e3cdea67f7bb329601fac"
3512
-
integrity sha1-izqsWIuKZuSXXjzepn97sylgH6w=
3513
-
3514
-
maxmin@^2.1.0:
3515
-
version "2.1.0"
3516
-
resolved "https://registry.yarnpkg.com/maxmin/-/maxmin-2.1.0.tgz#4d3b220903d95eee7eb7ac7fa864e72dc09a3166"
3517
-
integrity sha1-TTsiCQPZXu5+t6x/qGTnLcCaMWY=
3518
-
dependencies:
3519
-
chalk "^1.0.0"
3520
-
figures "^1.0.1"
3521
-
gzip-size "^3.0.0"
3522
-
pretty-bytes "^3.0.0"
3523
-
3524
-
mdn-data@~1.1.0:
3525
-
version "1.1.4"
3526
-
resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01"
3527
-
integrity sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==
3528
-
3529
-
mem@^1.1.0:
3530
-
version "1.1.0"
3531
-
resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76"
3532
-
integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=
3533
-
dependencies:
3534
-
mimic-fn "^1.0.0"
3535
-
3536
-
memorystream@^0.3.1:
3537
-
version "0.3.1"
3538
-
resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2"
3539
-
integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI=
3540
-
3541
-
merge-stream@^1.0.1:
3542
-
version "1.0.1"
3543
-
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-1.0.1.tgz#4041202d508a342ba00174008df0c251b8c135e1"
3544
-
integrity sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=
3545
-
dependencies:
3546
-
readable-stream "^2.0.1"
3547
-
3548
-
merge@^1.2.0:
3549
-
version "1.2.1"
3550
-
resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.1.tgz#38bebf80c3220a8a487b6fcfb3941bb11720c145"
3551
-
integrity sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==
3552
-
3553
-
microbundle@^0.9.0:
3554
-
version "0.9.0"
3555
-
resolved "https://registry.yarnpkg.com/microbundle/-/microbundle-0.9.0.tgz#bbec53047ff238c592aba0e5fd8fea3ce7654de3"
3556
-
integrity sha512-wceG5fWCig3AKUpYmlzBSGrPgtbO1y5zFxpgLQxQq67crWYYKAvjH6qRFHgIbslrhWckomu9B410fdfECdeXWw==
3557
-
dependencies:
3558
-
"@babel/core" "^7.1.6"
3559
-
"@babel/plugin-proposal-class-properties" "7.1.0"
3560
-
"@babel/plugin-syntax-jsx" "^7.0.0"
3561
-
"@babel/polyfill" "^7.0.0"
3562
-
asyncro "^3.0.0"
3563
-
autoprefixer "^9.0.0"
3564
-
babel-plugin-transform-async-to-promises "^0.8.3"
3565
-
brotli-size "^0.0.3"
3566
-
camelcase "^5.0.0"
3567
-
chalk "^2.4.0"
3568
-
cssnano "^4.1.7"
3569
-
es6-promisify "^6.0.1"
3570
-
gzip-size "^5.0.0"
3571
-
pretty-bytes "^5.1.0"
3572
-
rollup "^0.67.3"
3573
-
rollup-plugin-babel "^4.1.0-0"
3574
-
rollup-plugin-buble "^0.19.4"
3575
-
rollup-plugin-bundle-size "^1.0.1"
3576
-
rollup-plugin-commonjs "^9.0.0"
3577
-
rollup-plugin-es3 "^1.1.0"
3578
-
rollup-plugin-flow "^1.1.1"
3579
-
rollup-plugin-json "^3.1.0"
3580
-
rollup-plugin-node-resolve "^3.3.0"
3581
-
rollup-plugin-postcss "^1.6.1"
3582
-
rollup-plugin-preserve-shebang "^0.1.6"
3583
-
rollup-plugin-sizes "^0.4.2"
3584
-
rollup-plugin-terser "^3.0.0"
3585
-
rollup-plugin-typescript2 "^0.18.0"
3586
-
sade "^1.4.0"
3587
-
tiny-glob "^0.2.6"
3588
-
tslib "^1.9.0"
3589
-
typescript ">=2.8.3"
3590
-
3591
-
micromatch@^2.3.11:
3592
-
version "2.3.11"
3593
-
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
3594
-
integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=
3595
-
dependencies:
3596
-
arr-diff "^2.0.0"
3597
-
array-unique "^0.2.1"
3598
-
braces "^1.8.2"
3599
-
expand-brackets "^0.1.4"
3600
-
extglob "^0.3.1"
3601
-
filename-regex "^2.0.0"
3602
-
is-extglob "^1.0.0"
3603
-
is-glob "^2.0.1"
3604
-
kind-of "^3.0.2"
3605
-
normalize-path "^2.0.1"
3606
-
object.omit "^2.0.0"
3607
-
parse-glob "^3.0.4"
3608
-
regex-cache "^0.4.2"
3609
-
3610
-
micromatch@^3.1.4:
3611
-
version "3.1.10"
3612
-
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
3613
-
integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
3614
-
dependencies:
3615
-
arr-diff "^4.0.0"
3616
-
array-unique "^0.3.2"
3617
-
braces "^2.3.1"
3618
-
define-property "^2.0.2"
3619
-
extend-shallow "^3.0.2"
3620
-
extglob "^2.0.4"
3621
-
fragment-cache "^0.2.1"
3622
-
kind-of "^6.0.2"
3623
-
nanomatch "^1.2.9"
3624
-
object.pick "^1.3.0"
3625
-
regex-not "^1.0.0"
3626
-
snapdragon "^0.8.1"
3627
-
to-regex "^3.0.2"
3628
-
3629
-
mime-db@~1.37.0:
3630
-
version "1.37.0"
3631
-
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.37.0.tgz#0b6a0ce6fdbe9576e25f1f2d2fde8830dc0ad0d8"
3632
-
integrity sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==
3633
-
3634
-
mime-types@^2.1.12, mime-types@~2.1.19:
3635
-
version "2.1.21"
3636
-
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.21.tgz#28995aa1ecb770742fe6ae7e58f9181c744b3f96"
3637
-
integrity sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==
3638
-
dependencies:
3639
-
mime-db "~1.37.0"
3640
-
3641
-
mimic-fn@^1.0.0:
3642
-
version "1.2.0"
3643
-
resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
3644
-
integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
3645
-
3646
-
mimic-response@^1.0.0:
3647
-
version "1.0.1"
3648
-
resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b"
3649
-
integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==
3650
-
3651
-
minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4:
3652
-
version "3.0.4"
3653
-
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
3654
-
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
3655
-
dependencies:
3656
-
brace-expansion "^1.1.7"
3657
-
3658
-
minimist@0.0.8:
3659
-
version "0.0.8"
3660
-
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
3661
-
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
3662
-
3663
-
minimist@^1.1.1, minimist@^1.2.0:
3664
-
version "1.2.0"
3665
-
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
3666
-
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
3667
-
3668
-
minimist@~0.0.1:
3669
-
version "0.0.10"
3670
-
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
3671
-
integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=
3672
-
3673
-
minipass@^2.2.1, minipass@^2.3.4:
3674
-
version "2.3.5"
3675
-
resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848"
3676
-
integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==
3677
-
dependencies:
3678
-
safe-buffer "^5.1.2"
3679
-
yallist "^3.0.0"
3680
-
3681
-
minizlib@^1.1.1:
3682
-
version "1.2.1"
3683
-
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614"
3684
-
integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==
3685
-
dependencies:
3686
-
minipass "^2.2.1"
3687
-
3688
-
mixin-deep@^1.2.0:
3689
-
version "1.3.1"
3690
-
resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe"
3691
-
integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==
3692
-
dependencies:
3693
-
for-in "^1.0.2"
3694
-
is-extendable "^1.0.1"
3695
-
3696
-
"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1:
3697
-
version "0.5.1"
3698
-
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
3699
-
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
3700
-
dependencies:
3701
-
minimist "0.0.8"
3702
-
3703
-
module-details-from-path@^1.0.3:
3704
-
version "1.0.3"
3705
-
resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b"
3706
-
integrity sha1-EUyUlnPiqKNenTV4hSeqN7Z52is=
3707
-
3708
-
mri@^1.1.0:
3709
-
version "1.1.4"
3710
-
resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a"
3711
-
integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==
3712
-
3713
-
ms@2.0.0:
3714
-
version "2.0.0"
3715
-
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
3716
-
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
3717
-
3718
-
ms@^2.1.1:
3719
-
version "2.1.1"
3720
-
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
3721
-
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
3722
-
3723
-
nan@^2.6.2, nan@^2.9.2:
3724
-
version "2.12.1"
3725
-
resolved "https://registry.yarnpkg.com/nan/-/nan-2.12.1.tgz#7b1aa193e9aa86057e3c7bbd0ac448e770925552"
3726
-
integrity sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==
3727
-
3728
-
nanomatch@^1.2.9:
3729
-
version "1.2.13"
3730
-
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
3731
-
integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
3732
-
dependencies:
3733
-
arr-diff "^4.0.0"
3734
-
array-unique "^0.3.2"
3735
-
define-property "^2.0.2"
3736
-
extend-shallow "^3.0.2"
3737
-
fragment-cache "^0.2.1"
3738
-
is-windows "^1.0.2"
3739
-
kind-of "^6.0.2"
3740
-
object.pick "^1.3.0"
3741
-
regex-not "^1.0.0"
3742
-
snapdragon "^0.8.1"
3743
-
to-regex "^3.0.1"
3744
-
3745
-
napi-build-utils@^1.0.1:
3746
-
version "1.0.1"
3747
-
resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.1.tgz#1381a0f92c39d66bf19852e7873432fc2123e508"
3748
-
integrity sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA==
3749
-
3750
-
natural-compare@^1.4.0:
3751
-
version "1.4.0"
3752
-
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
3753
-
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
3754
-
3755
-
needle@^2.2.1:
3756
-
version "2.2.4"
3757
-
resolved "https://registry.yarnpkg.com/needle/-/needle-2.2.4.tgz#51931bff82533b1928b7d1d69e01f1b00ffd2a4e"
3758
-
integrity sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==
3759
-
dependencies:
3760
-
debug "^2.1.2"
3761
-
iconv-lite "^0.4.4"
3762
-
sax "^1.2.4"
3763
-
3764
-
nice-try@^1.0.4:
3765
-
version "1.0.5"
3766
-
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
3767
-
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
3768
-
3769
-
node-abi@^2.2.0:
3770
-
version "2.5.1"
3771
-
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.5.1.tgz#bb17288fc3b2f68fea0ed9897c66979fd754ed47"
3772
-
integrity sha512-oDbFc7vCFx0RWWCweTer3hFm1u+e60N5FtGnmRV6QqvgATGFH/XRR6vqWIeBVosCYCqt6YdIr2L0exLZuEdVcQ==
3773
-
dependencies:
3774
-
semver "^5.4.1"
3775
-
3776
-
node-gyp@^3.6.2:
3777
-
version "3.8.0"
3778
-
resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c"
3779
-
integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==
3780
-
dependencies:
3781
-
fstream "^1.0.0"
3782
-
glob "^7.0.3"
3783
-
graceful-fs "^4.1.2"
3784
-
mkdirp "^0.5.0"
3785
-
nopt "2 || 3"
3786
-
npmlog "0 || 1 || 2 || 3 || 4"
3787
-
osenv "0"
3788
-
request "^2.87.0"
3789
-
rimraf "2"
3790
-
semver "~5.3.0"
3791
-
tar "^2.0.0"
3792
-
which "1"
3793
-
3794
-
node-int64@^0.4.0:
3795
-
version "0.4.0"
3796
-
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
3797
-
integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
3798
-
3799
-
node-notifier@^5.2.1:
3800
-
version "5.3.0"
3801
-
resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-5.3.0.tgz#c77a4a7b84038733d5fb351aafd8a268bfe19a01"
3802
-
integrity sha512-AhENzCSGZnZJgBARsUjnQ7DnZbzyP+HxlVXuD0xqAnvL8q+OqtSX7lGg9e8nHzwXkMMXNdVeqq4E2M3EUAqX6Q==
3803
-
dependencies:
3804
-
growly "^1.3.0"
3805
-
semver "^5.5.0"
3806
-
shellwords "^0.1.1"
3807
-
which "^1.3.0"
3808
-
3809
-
node-pre-gyp@^0.10.0:
3810
-
version "0.10.3"
3811
-
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.10.3.tgz#3070040716afdc778747b61b6887bf78880b80fc"
3812
-
integrity sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==
3813
-
dependencies:
3814
-
detect-libc "^1.0.2"
3815
-
mkdirp "^0.5.1"
3816
-
needle "^2.2.1"
3817
-
nopt "^4.0.1"
3818
-
npm-packlist "^1.1.6"
3819
-
npmlog "^4.0.2"
3820
-
rc "^1.2.7"
3821
-
rimraf "^2.6.1"
3822
-
semver "^5.3.0"
3823
-
tar "^4"
3824
-
3825
-
node-releases@^1.1.3:
3826
-
version "1.1.3"
3827
-
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.3.tgz#aad9ce0dcb98129c753f772c0aa01360fb90fbd2"
3828
-
integrity sha512-6VrvH7z6jqqNFY200kdB6HdzkgM96Oaj9v3dqGfgp6mF+cHmU4wyQKZ2/WPDRVoR0Jz9KqbamaBN0ZhdUaysUQ==
3829
-
dependencies:
3830
-
semver "^5.3.0"
3831
-
3832
-
noop-logger@^0.1.1:
3833
-
version "0.1.1"
3834
-
resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2"
3835
-
integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=
3836
-
3837
-
"nopt@2 || 3":
3838
-
version "3.0.6"
3839
-
resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
3840
-
integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k=
3841
-
dependencies:
3842
-
abbrev "1"
3843
-
3844
-
nopt@^4.0.1:
3845
-
version "4.0.1"
3846
-
resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
3847
-
integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=
3848
-
dependencies:
3849
-
abbrev "1"
3850
-
osenv "^0.1.4"
3851
-
3852
-
normalize-package-data@^2.3.2:
3853
-
version "2.4.0"
3854
-
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
3855
-
integrity sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==
3856
-
dependencies:
3857
-
hosted-git-info "^2.1.4"
3858
-
is-builtin-module "^1.0.0"
3859
-
semver "2 || 3 || 4 || 5"
3860
-
validate-npm-package-license "^3.0.1"
3861
-
3862
-
normalize-path@^2.0.1, normalize-path@^2.1.1:
3863
-
version "2.1.1"
3864
-
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
3865
-
integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=
3866
-
dependencies:
3867
-
remove-trailing-separator "^1.0.1"
3868
-
3869
-
normalize-range@^0.1.2:
3870
-
version "0.1.2"
3871
-
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
3872
-
integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
3873
-
3874
-
normalize-url@^1.4.0:
3875
-
version "1.9.1"
3876
-
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.9.1.tgz#2cc0d66b31ea23036458436e3620d85954c66c3c"
3877
-
integrity sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=
3878
-
dependencies:
3879
-
object-assign "^4.0.1"
3880
-
prepend-http "^1.0.0"
3881
-
query-string "^4.1.0"
3882
-
sort-keys "^1.0.0"
3883
-
3884
-
normalize-url@^3.0.0:
3885
-
version "3.3.0"
3886
-
resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559"
3887
-
integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==
3888
-
3889
-
npm-bundled@^1.0.1:
3890
-
version "1.0.5"
3891
-
resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979"
3892
-
integrity sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==
3893
-
3894
-
npm-packlist@^1.1.6:
3895
-
version "1.2.0"
3896
-
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.2.0.tgz#55a60e793e272f00862c7089274439a4cc31fc7f"
3897
-
integrity sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==
3898
-
dependencies:
3899
-
ignore-walk "^3.0.1"
3900
-
npm-bundled "^1.0.1"
3901
-
3902
-
npm-run-all@^4.1.5:
3903
-
version "4.1.5"
3904
-
resolved "https://registry.yarnpkg.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba"
3905
-
integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==
3906
-
dependencies:
3907
-
ansi-styles "^3.2.1"
3908
-
chalk "^2.4.1"
3909
-
cross-spawn "^6.0.5"
3910
-
memorystream "^0.3.1"
3911
-
minimatch "^3.0.4"
3912
-
pidtree "^0.3.0"
3913
-
read-pkg "^3.0.0"
3914
-
shell-quote "^1.6.1"
3915
-
string.prototype.padend "^3.0.0"
3916
-
3917
-
npm-run-path@^2.0.0:
3918
-
version "2.0.2"
3919
-
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
3920
-
integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=
3921
-
dependencies:
3922
-
path-key "^2.0.0"
3923
-
3924
-
"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.1, npmlog@^4.0.2, npmlog@^4.1.2:
3925
-
version "4.1.2"
3926
-
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
3927
-
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
3928
-
dependencies:
3929
-
are-we-there-yet "~1.1.2"
3930
-
console-control-strings "~1.1.0"
3931
-
gauge "~2.7.3"
3932
-
set-blocking "~2.0.0"
3933
-
3934
-
nth-check@^1.0.2:
3935
-
version "1.0.2"
3936
-
resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
3937
-
integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
3938
-
dependencies:
3939
-
boolbase "~1.0.0"
3940
-
3941
-
num2fraction@^1.2.2:
3942
-
version "1.2.2"
3943
-
resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
3944
-
integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=
3945
-
3946
-
number-is-nan@^1.0.0:
3947
-
version "1.0.1"
3948
-
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
3949
-
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
3950
-
3951
-
nwsapi@^2.0.7:
3952
-
version "2.0.9"
3953
-
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.0.9.tgz#77ac0cdfdcad52b6a1151a84e73254edc33ed016"
3954
-
integrity sha512-nlWFSCTYQcHk/6A9FFnfhKc14c3aFhfdNBXgo8Qgi9QTBu/qg3Ww+Uiz9wMzXd1T8GFxPc2QIHB6Qtf2XFryFQ==
3955
-
3956
-
oauth-sign@~0.9.0:
3957
-
version "0.9.0"
3958
-
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
3959
-
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
3960
-
3961
-
object-assign@^4.0.1, object-assign@^4.1.0:
3962
-
version "4.1.1"
3963
-
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
3964
-
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
3965
-
3966
-
object-copy@^0.1.0:
3967
-
version "0.1.0"
3968
-
resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
3969
-
integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw=
3970
-
dependencies:
3971
-
copy-descriptor "^0.1.0"
3972
-
define-property "^0.2.5"
3973
-
kind-of "^3.0.3"
3974
-
3975
-
object-keys@^1.0.12:
3976
-
version "1.0.12"
3977
-
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.12.tgz#09c53855377575310cca62f55bb334abff7b3ed2"
3978
-
integrity sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==
3979
-
3980
-
object-visit@^1.0.0:
3981
-
version "1.0.1"
3982
-
resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
3983
-
integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=
3984
-
dependencies:
3985
-
isobject "^3.0.0"
3986
-
3987
-
object.getownpropertydescriptors@^2.0.3:
3988
-
version "2.0.3"
3989
-
resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16"
3990
-
integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=
3991
-
dependencies:
3992
-
define-properties "^1.1.2"
3993
-
es-abstract "^1.5.1"
3994
-
3995
-
object.omit@^2.0.0:
3996
-
version "2.0.1"
3997
-
resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
3998
-
integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=
3999
-
dependencies:
4000
-
for-own "^0.1.4"
4001
-
is-extendable "^0.1.1"
4002
-
4003
-
object.pick@^1.3.0:
4004
-
version "1.3.0"
4005
-
resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
4006
-
integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=
4007
-
dependencies:
4008
-
isobject "^3.0.1"
4009
-
4010
-
object.values@^1.0.4:
4011
-
version "1.1.0"
4012
-
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9"
4013
-
integrity sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==
4014
-
dependencies:
4015
-
define-properties "^1.1.3"
4016
-
es-abstract "^1.12.0"
4017
-
function-bind "^1.1.1"
4018
-
has "^1.0.3"
4019
-
4020
-
once@^1.3.0, once@^1.3.1, once@^1.4.0:
4021
-
version "1.4.0"
4022
-
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
4023
-
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
4024
-
dependencies:
4025
-
wrappy "1"
4026
-
4027
-
optimist@^0.6.1:
4028
-
version "0.6.1"
4029
-
resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
4030
-
integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY=
4031
-
dependencies:
4032
-
minimist "~0.0.1"
4033
-
wordwrap "~0.0.2"
4034
-
4035
-
optionator@^0.8.1:
4036
-
version "0.8.2"
4037
-
resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
4038
-
integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=
4039
-
dependencies:
4040
-
deep-is "~0.1.3"
4041
-
fast-levenshtein "~2.0.4"
4042
-
levn "~0.3.0"
4043
-
prelude-ls "~1.1.2"
4044
-
type-check "~0.3.2"
4045
-
wordwrap "~1.0.0"
4046
-
4047
-
os-homedir@^1.0.0, os-homedir@^1.0.1:
4048
-
version "1.0.2"
4049
-
resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
4050
-
integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M=
4051
-
4052
-
os-locale@^2.0.0:
4053
-
version "2.1.0"
4054
-
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2"
4055
-
integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==
4056
-
dependencies:
4057
-
execa "^0.7.0"
4058
-
lcid "^1.0.0"
4059
-
mem "^1.1.0"
4060
-
4061
-
os-tmpdir@^1.0.0, os-tmpdir@^1.0.1:
4062
-
version "1.0.2"
4063
-
resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
4064
-
integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=
4065
-
4066
-
osenv@0, osenv@^0.1.4:
4067
-
version "0.1.5"
4068
-
resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410"
4069
-
integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==
4070
-
dependencies:
4071
-
os-homedir "^1.0.0"
4072
-
os-tmpdir "^1.0.0"
4073
-
4074
-
p-finally@^1.0.0:
4075
-
version "1.0.0"
4076
-
resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
4077
-
integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=
4078
-
4079
-
p-limit@^1.1.0:
4080
-
version "1.3.0"
4081
-
resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8"
4082
-
integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==
4083
-
dependencies:
4084
-
p-try "^1.0.0"
4085
-
4086
-
p-locate@^2.0.0:
4087
-
version "2.0.0"
4088
-
resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43"
4089
-
integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=
4090
-
dependencies:
4091
-
p-limit "^1.1.0"
4092
-
4093
-
p-queue@^2.4.2:
4094
-
version "2.4.2"
4095
-
resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-2.4.2.tgz#03609826682b743be9a22dba25051bd46724fc34"
4096
-
integrity sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng==
4097
-
4098
-
p-try@^1.0.0:
4099
-
version "1.0.0"
4100
-
resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3"
4101
-
integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=
4102
-
4103
-
parse-glob@^3.0.4:
4104
-
version "3.0.4"
4105
-
resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
4106
-
integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw=
4107
-
dependencies:
4108
-
glob-base "^0.3.0"
4109
-
is-dotfile "^1.0.0"
4110
-
is-extglob "^1.0.0"
4111
-
is-glob "^2.0.0"
4112
-
4113
-
parse-json@^2.2.0:
4114
-
version "2.2.0"
4115
-
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
4116
-
integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
4117
-
dependencies:
4118
-
error-ex "^1.2.0"
4119
-
4120
-
parse-json@^4.0.0:
4121
-
version "4.0.0"
4122
-
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0"
4123
-
integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=
4124
-
dependencies:
4125
-
error-ex "^1.3.1"
4126
-
json-parse-better-errors "^1.0.1"
4127
-
4128
-
parse5@4.0.0:
4129
-
version "4.0.0"
4130
-
resolved "https://registry.yarnpkg.com/parse5/-/parse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608"
4131
-
integrity sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==
4132
-
4133
-
pascalcase@^0.1.1:
4134
-
version "0.1.1"
4135
-
resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
4136
-
integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=
4137
-
4138
-
path-exists@^2.0.0:
4139
-
version "2.1.0"
4140
-
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
4141
-
integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
4142
-
dependencies:
4143
-
pinkie-promise "^2.0.0"
4144
-
4145
-
path-exists@^3.0.0:
4146
-
version "3.0.0"
4147
-
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
4148
-
integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
4149
-
4150
-
path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
4151
-
version "1.0.1"
4152
-
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
4153
-
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
4154
-
4155
-
path-key@^2.0.0, path-key@^2.0.1:
4156
-
version "2.0.1"
4157
-
resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
4158
-
integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
4159
-
4160
-
path-parse@^1.0.5, path-parse@^1.0.6:
4161
-
version "1.0.6"
4162
-
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
4163
-
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
4164
-
4165
-
path-type@^1.0.0:
4166
-
version "1.1.0"
4167
-
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
4168
-
integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
4169
-
dependencies:
4170
-
graceful-fs "^4.1.2"
4171
-
pify "^2.0.0"
4172
-
pinkie-promise "^2.0.0"
4173
-
4174
-
path-type@^3.0.0:
4175
-
version "3.0.0"
4176
-
resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f"
4177
-
integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==
4178
-
dependencies:
4179
-
pify "^3.0.0"
4180
-
4181
-
performance-now@^2.1.0:
4182
-
version "2.1.0"
4183
-
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
4184
-
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
4185
-
4186
-
pidtree@^0.3.0:
4187
-
version "0.3.0"
4188
-
resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.3.0.tgz#f6fada10fccc9f99bf50e90d0b23d72c9ebc2e6b"
4189
-
integrity sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==
4190
-
4191
-
pify@^2.0.0:
4192
-
version "2.3.0"
4193
-
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
4194
-
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
4195
-
4196
-
pify@^3.0.0:
4197
-
version "3.0.0"
4198
-
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
4199
-
integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=
4200
-
4201
-
pinkie-promise@^2.0.0:
4202
-
version "2.0.1"
4203
-
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
4204
-
integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
4205
-
dependencies:
4206
-
pinkie "^2.0.0"
4207
-
4208
-
pinkie@^2.0.0:
4209
-
version "2.0.4"
4210
-
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
4211
-
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
4212
-
4213
-
pkg-dir@^2.0.0:
4214
-
version "2.0.0"
4215
-
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
4216
-
integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
4217
-
dependencies:
4218
-
find-up "^2.1.0"
4219
-
4220
-
pn@^1.1.0:
4221
-
version "1.1.0"
4222
-
resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb"
4223
-
integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==
4224
-
4225
-
posix-character-classes@^0.1.0:
4226
-
version "0.1.1"
4227
-
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
4228
-
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
4229
-
4230
-
postcss-calc@^5.2.0:
4231
-
version "5.3.1"
4232
-
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
4233
-
integrity sha1-d7rnypKK2FcW4v2kLyYb98HWW14=
4234
-
dependencies:
4235
-
postcss "^5.0.2"
4236
-
postcss-message-helpers "^2.0.0"
4237
-
reduce-css-calc "^1.2.6"
4238
-
4239
-
postcss-calc@^7.0.0:
4240
-
version "7.0.1"
4241
-
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436"
4242
-
integrity sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==
4243
-
dependencies:
4244
-
css-unit-converter "^1.1.1"
4245
-
postcss "^7.0.5"
4246
-
postcss-selector-parser "^5.0.0-rc.4"
4247
-
postcss-value-parser "^3.3.1"
4248
-
4249
-
postcss-colormin@^2.1.8:
4250
-
version "2.2.2"
4251
-
resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.2.tgz#6631417d5f0e909a3d7ec26b24c8a8d1e4f96e4b"
4252
-
integrity sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=
4253
-
dependencies:
4254
-
colormin "^1.0.5"
4255
-
postcss "^5.0.13"
4256
-
postcss-value-parser "^3.2.3"
4257
-
4258
-
postcss-colormin@^4.0.2:
4259
-
version "4.0.2"
4260
-
resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.2.tgz#93cd1fa11280008696887db1a528048b18e7ed99"
4261
-
integrity sha512-1QJc2coIehnVFsz0otges8kQLsryi4lo19WD+U5xCWvXd0uw/Z+KKYnbiNDCnO9GP+PvErPHCG0jNvWTngk9Rw==
4262
-
dependencies:
4263
-
browserslist "^4.0.0"
4264
-
color "^3.0.0"
4265
-
has "^1.0.0"
4266
-
postcss "^7.0.0"
4267
-
postcss-value-parser "^3.0.0"
4268
-
4269
-
postcss-convert-values@^2.3.4:
4270
-
version "2.6.1"
4271
-
resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz#bbd8593c5c1fd2e3d1c322bb925dcae8dae4d62d"
4272
-
integrity sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=
4273
-
dependencies:
4274
-
postcss "^5.0.11"
4275
-
postcss-value-parser "^3.1.2"
4276
-
4277
-
postcss-convert-values@^4.0.1:
4278
-
version "4.0.1"
4279
-
resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f"
4280
-
integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==
4281
-
dependencies:
4282
-
postcss "^7.0.0"
4283
-
postcss-value-parser "^3.0.0"
4284
-
4285
-
postcss-discard-comments@^2.0.4:
4286
-
version "2.0.4"
4287
-
resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
4288
-
integrity sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=
4289
-
dependencies:
4290
-
postcss "^5.0.14"
4291
-
4292
-
postcss-discard-comments@^4.0.1:
4293
-
version "4.0.1"
4294
-
resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.1.tgz#30697735b0c476852a7a11050eb84387a67ef55d"
4295
-
integrity sha512-Ay+rZu1Sz6g8IdzRjUgG2NafSNpp2MSMOQUb+9kkzzzP+kh07fP0yNbhtFejURnyVXSX3FYy2nVNW1QTnNjgBQ==
4296
-
dependencies:
4297
-
postcss "^7.0.0"
4298
-
4299
-
postcss-discard-duplicates@^2.0.1:
4300
-
version "2.1.0"
4301
-
resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz#b9abf27b88ac188158a5eb12abcae20263b91932"
4302
-
integrity sha1-uavye4isGIFYpesSq8riAmO5GTI=
4303
-
dependencies:
4304
-
postcss "^5.0.4"
4305
-
4306
-
postcss-discard-duplicates@^4.0.2:
4307
-
version "4.0.2"
4308
-
resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb"
4309
-
integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==
4310
-
dependencies:
4311
-
postcss "^7.0.0"
4312
-
4313
-
postcss-discard-empty@^2.0.1:
4314
-
version "2.1.0"
4315
-
resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5"
4316
-
integrity sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=
4317
-
dependencies:
4318
-
postcss "^5.0.14"
4319
-
4320
-
postcss-discard-empty@^4.0.1:
4321
-
version "4.0.1"
4322
-
resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765"
4323
-
integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==
4324
-
dependencies:
4325
-
postcss "^7.0.0"
4326
-
4327
-
postcss-discard-overridden@^0.1.1:
4328
-
version "0.1.1"
4329
-
resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58"
4330
-
integrity sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=
4331
-
dependencies:
4332
-
postcss "^5.0.16"
4333
-
4334
-
postcss-discard-overridden@^4.0.1:
4335
-
version "4.0.1"
4336
-
resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57"
4337
-
integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==
4338
-
dependencies:
4339
-
postcss "^7.0.0"
4340
-
4341
-
postcss-discard-unused@^2.2.1:
4342
-
version "2.2.3"
4343
-
resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz#bce30b2cc591ffc634322b5fb3464b6d934f4433"
4344
-
integrity sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=
4345
-
dependencies:
4346
-
postcss "^5.0.14"
4347
-
uniqs "^2.0.0"
4348
-
4349
-
postcss-filter-plugins@^2.0.0:
4350
-
version "2.0.3"
4351
-
resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz#82245fdf82337041645e477114d8e593aa18b8ec"
4352
-
integrity sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==
4353
-
dependencies:
4354
-
postcss "^5.0.4"
4355
-
4356
-
postcss-load-config@^1.2.0:
4357
-
version "1.2.0"
4358
-
resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-1.2.0.tgz#539e9afc9ddc8620121ebf9d8c3673e0ce50d28a"
4359
-
integrity sha1-U56a/J3chiASHr+djDZz4M5Q0oo=
4360
-
dependencies:
4361
-
cosmiconfig "^2.1.0"
4362
-
object-assign "^4.1.0"
4363
-
postcss-load-options "^1.2.0"
4364
-
postcss-load-plugins "^2.3.0"
4365
-
4366
-
postcss-load-options@^1.2.0:
4367
-
version "1.2.0"
4368
-
resolved "https://registry.yarnpkg.com/postcss-load-options/-/postcss-load-options-1.2.0.tgz#b098b1559ddac2df04bc0bb375f99a5cfe2b6d8c"
4369
-
integrity sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=
4370
-
dependencies:
4371
-
cosmiconfig "^2.1.0"
4372
-
object-assign "^4.1.0"
4373
-
4374
-
postcss-load-plugins@^2.3.0:
4375
-
version "2.3.0"
4376
-
resolved "https://registry.yarnpkg.com/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz#745768116599aca2f009fad426b00175049d8d92"
4377
-
integrity sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=
4378
-
dependencies:
4379
-
cosmiconfig "^2.1.1"
4380
-
object-assign "^4.1.0"
4381
-
4382
-
postcss-merge-idents@^2.1.5:
4383
-
version "2.1.7"
4384
-
resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
4385
-
integrity sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=
4386
-
dependencies:
4387
-
has "^1.0.1"
4388
-
postcss "^5.0.10"
4389
-
postcss-value-parser "^3.1.1"
4390
-
4391
-
postcss-merge-longhand@^2.0.1:
4392
-
version "2.0.2"
4393
-
resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz#23d90cd127b0a77994915332739034a1a4f3d658"
4394
-
integrity sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=
4395
-
dependencies:
4396
-
postcss "^5.0.4"
4397
-
4398
-
postcss-merge-longhand@^4.0.10:
4399
-
version "4.0.10"
4400
-
resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.10.tgz#c4d63ab57bdc054ab4067ab075d488c8c2978380"
4401
-
integrity sha512-hME10s6CSjm9nlVIcO1ukR7Jr5RisTaaC1y83jWCivpuBtPohA3pZE7cGTIVSYjXvLnXozHTiVOkG4dnnl756g==
4402
-
dependencies:
4403
-
css-color-names "0.0.4"
4404
-
postcss "^7.0.0"
4405
-
postcss-value-parser "^3.0.0"
4406
-
stylehacks "^4.0.0"
4407
-
4408
-
postcss-merge-rules@^2.0.3:
4409
-
version "2.1.2"
4410
-
resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz#d1df5dfaa7b1acc3be553f0e9e10e87c61b5f721"
4411
-
integrity sha1-0d9d+qexrMO+VT8OnhDofGG19yE=
4412
-
dependencies:
4413
-
browserslist "^1.5.2"
4414
-
caniuse-api "^1.5.2"
4415
-
postcss "^5.0.4"
4416
-
postcss-selector-parser "^2.2.2"
4417
-
vendors "^1.0.0"
4418
-
4419
-
postcss-merge-rules@^4.0.2:
4420
-
version "4.0.2"
4421
-
resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.2.tgz#2be44401bf19856f27f32b8b12c0df5af1b88e74"
4422
-
integrity sha512-UiuXwCCJtQy9tAIxsnurfF0mrNHKc4NnNx6NxqmzNNjXpQwLSukUxELHTRF0Rg1pAmcoKLih8PwvZbiordchag==
4423
-
dependencies:
4424
-
browserslist "^4.0.0"
4425
-
caniuse-api "^3.0.0"
4426
-
cssnano-util-same-parent "^4.0.0"
4427
-
postcss "^7.0.0"
4428
-
postcss-selector-parser "^3.0.0"
4429
-
vendors "^1.0.0"
4430
-
4431
-
postcss-message-helpers@^2.0.0:
4432
-
version "2.0.0"
4433
-
resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
4434
-
integrity sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=
4435
-
4436
-
postcss-minify-font-values@^1.0.2:
4437
-
version "1.0.5"
4438
-
resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69"
4439
-
integrity sha1-S1jttWZB66fIR0qzUmyv17vey2k=
4440
-
dependencies:
4441
-
object-assign "^4.0.1"
4442
-
postcss "^5.0.4"
4443
-
postcss-value-parser "^3.0.2"
4444
-
4445
-
postcss-minify-font-values@^4.0.2:
4446
-
version "4.0.2"
4447
-
resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6"
4448
-
integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==
4449
-
dependencies:
4450
-
postcss "^7.0.0"
4451
-
postcss-value-parser "^3.0.0"
4452
-
4453
-
postcss-minify-gradients@^1.0.1:
4454
-
version "1.0.5"
4455
-
resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz#5dbda11373703f83cfb4a3ea3881d8d75ff5e6e1"
4456
-
integrity sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=
4457
-
dependencies:
4458
-
postcss "^5.0.12"
4459
-
postcss-value-parser "^3.3.0"
4460
-
4461
-
postcss-minify-gradients@^4.0.1:
4462
-
version "4.0.1"
4463
-
resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.1.tgz#6da95c6e92a809f956bb76bf0c04494953e1a7dd"
4464
-
integrity sha512-pySEW3E6Ly5mHm18rekbWiAjVi/Wj8KKt2vwSfVFAWdW6wOIekgqxKxLU7vJfb107o3FDNPkaYFCxGAJBFyogA==
4465
-
dependencies:
4466
-
cssnano-util-get-arguments "^4.0.0"
4467
-
is-color-stop "^1.0.0"
4468
-
postcss "^7.0.0"
4469
-
postcss-value-parser "^3.0.0"
4470
-
4471
-
postcss-minify-params@^1.0.4:
4472
-
version "1.2.2"
4473
-
resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3"
4474
-
integrity sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=
4475
-
dependencies:
4476
-
alphanum-sort "^1.0.1"
4477
-
postcss "^5.0.2"
4478
-
postcss-value-parser "^3.0.2"
4479
-
uniqs "^2.0.0"
4480
-
4481
-
postcss-minify-params@^4.0.1:
4482
-
version "4.0.1"
4483
-
resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.1.tgz#5b2e2d0264dd645ef5d68f8fec0d4c38c1cf93d2"
4484
-
integrity sha512-h4W0FEMEzBLxpxIVelRtMheskOKKp52ND6rJv+nBS33G1twu2tCyurYj/YtgU76+UDCvWeNs0hs8HFAWE2OUFg==
4485
-
dependencies:
4486
-
alphanum-sort "^1.0.0"
4487
-
browserslist "^4.0.0"
4488
-
cssnano-util-get-arguments "^4.0.0"
4489
-
postcss "^7.0.0"
4490
-
postcss-value-parser "^3.0.0"
4491
-
uniqs "^2.0.0"
4492
-
4493
-
postcss-minify-selectors@^2.0.4:
4494
-
version "2.1.1"
4495
-
resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz#b2c6a98c0072cf91b932d1a496508114311735bf"
4496
-
integrity sha1-ssapjAByz5G5MtGkllCBFDEXNb8=
4497
-
dependencies:
4498
-
alphanum-sort "^1.0.2"
4499
-
has "^1.0.1"
4500
-
postcss "^5.0.14"
4501
-
postcss-selector-parser "^2.0.0"
4502
-
4503
-
postcss-minify-selectors@^4.0.1:
4504
-
version "4.0.1"
4505
-
resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.1.tgz#a891c197977cc37abf60b3ea06b84248b1c1e9cd"
4506
-
integrity sha512-8+plQkomve3G+CodLCgbhAKrb5lekAnLYuL1d7Nz+/7RANpBEVdgBkPNwljfSKvZ9xkkZTZITd04KP+zeJTJqg==
4507
-
dependencies:
4508
-
alphanum-sort "^1.0.0"
4509
-
has "^1.0.0"
4510
-
postcss "^7.0.0"
4511
-
postcss-selector-parser "^3.0.0"
4512
-
4513
-
postcss-modules-extract-imports@1.1.0:
4514
-
version "1.1.0"
4515
-
resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb"
4516
-
integrity sha1-thTJcgvmgW6u41+zpfqh26agXds=
4517
-
dependencies:
4518
-
postcss "^6.0.1"
4519
-
4520
-
postcss-modules-local-by-default@1.2.0:
4521
-
version "1.2.0"
4522
-
resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069"
4523
-
integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=
4524
-
dependencies:
4525
-
css-selector-tokenizer "^0.7.0"
4526
-
postcss "^6.0.1"
4527
-
4528
-
postcss-modules-scope@1.1.0:
4529
-
version "1.1.0"
4530
-
resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90"
4531
-
integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A=
4532
-
dependencies:
4533
-
css-selector-tokenizer "^0.7.0"
4534
-
postcss "^6.0.1"
4535
-
4536
-
postcss-modules-values@1.3.0:
4537
-
version "1.3.0"
4538
-
resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20"
4539
-
integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=
4540
-
dependencies:
4541
-
icss-replace-symbols "^1.1.0"
4542
-
postcss "^6.0.1"
4543
-
4544
-
postcss-modules@^1.1.0:
4545
-
version "1.4.1"
4546
-
resolved "https://registry.yarnpkg.com/postcss-modules/-/postcss-modules-1.4.1.tgz#8aa35bd3461db67e27377a7ce770d77b654a84ef"
4547
-
integrity sha512-btTrbK+Xc3NBuYF8TPBjCMRSp5h6NoQ1iVZ6WiDQENIze6KIYCSf0+UFQuV3yJ7gRHA+4AAtF8i2jRvUpbBMMg==
4548
-
dependencies:
4549
-
css-modules-loader-core "^1.1.0"
4550
-
generic-names "^1.0.3"
4551
-
lodash.camelcase "^4.3.0"
4552
-
postcss "^7.0.1"
4553
-
string-hash "^1.1.1"
4554
-
4555
-
postcss-normalize-charset@^1.1.0:
4556
-
version "1.1.1"
4557
-
resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz#ef9ee71212d7fe759c78ed162f61ed62b5cb93f1"
4558
-
integrity sha1-757nEhLX/nWceO0WL2HtYrXLk/E=
4559
-
dependencies:
4560
-
postcss "^5.0.5"
4561
-
4562
-
postcss-normalize-charset@^4.0.1:
4563
-
version "4.0.1"
4564
-
resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4"
4565
-
integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==
4566
-
dependencies:
4567
-
postcss "^7.0.0"
4568
-
4569
-
postcss-normalize-display-values@^4.0.1:
4570
-
version "4.0.1"
4571
-
resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.1.tgz#d9a83d47c716e8a980f22f632c8b0458cfb48a4c"
4572
-
integrity sha512-R5mC4vaDdvsrku96yXP7zak+O3Mm9Y8IslUobk7IMP+u/g+lXvcN4jngmHY5zeJnrQvE13dfAg5ViU05ZFDwdg==
4573
-
dependencies:
4574
-
cssnano-util-get-match "^4.0.0"
4575
-
postcss "^7.0.0"
4576
-
postcss-value-parser "^3.0.0"
4577
-
4578
-
postcss-normalize-positions@^4.0.1:
4579
-
version "4.0.1"
4580
-
resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.1.tgz#ee2d4b67818c961964c6be09d179894b94fd6ba1"
4581
-
integrity sha512-GNoOaLRBM0gvH+ZRb2vKCIujzz4aclli64MBwDuYGU2EY53LwiP7MxOZGE46UGtotrSnmarPPZ69l2S/uxdaWA==
4582
-
dependencies:
4583
-
cssnano-util-get-arguments "^4.0.0"
4584
-
has "^1.0.0"
4585
-
postcss "^7.0.0"
4586
-
postcss-value-parser "^3.0.0"
4587
-
4588
-
postcss-normalize-repeat-style@^4.0.1:
4589
-
version "4.0.1"
4590
-
resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.1.tgz#5293f234b94d7669a9f805495d35b82a581c50e5"
4591
-
integrity sha512-fFHPGIjBUyUiswY2rd9rsFcC0t3oRta4wxE1h3lpwfQZwFeFjXFSiDtdJ7APCmHQOnUZnqYBADNRPKPwFAONgA==
4592
-
dependencies:
4593
-
cssnano-util-get-arguments "^4.0.0"
4594
-
cssnano-util-get-match "^4.0.0"
4595
-
postcss "^7.0.0"
4596
-
postcss-value-parser "^3.0.0"
4597
-
4598
-
postcss-normalize-string@^4.0.1:
4599
-
version "4.0.1"
4600
-
resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.1.tgz#23c5030c2cc24175f66c914fa5199e2e3c10fef3"
4601
-
integrity sha512-IJoexFTkAvAq5UZVxWXAGE0yLoNN/012v7TQh5nDo6imZJl2Fwgbhy3J2qnIoaDBrtUP0H7JrXlX1jjn2YcvCQ==
4602
-
dependencies:
4603
-
has "^1.0.0"
4604
-
postcss "^7.0.0"
4605
-
postcss-value-parser "^3.0.0"
4606
-
4607
-
postcss-normalize-timing-functions@^4.0.1:
4608
-
version "4.0.1"
4609
-
resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.1.tgz#8be83e0b9cb3ff2d1abddee032a49108f05f95d7"
4610
-
integrity sha512-1nOtk7ze36+63ONWD8RCaRDYsnzorrj+Q6fxkQV+mlY5+471Qx9kspqv0O/qQNMeApg8KNrRf496zHwJ3tBZ7w==
4611
-
dependencies:
4612
-
cssnano-util-get-match "^4.0.0"
4613
-
postcss "^7.0.0"
4614
-
postcss-value-parser "^3.0.0"
4615
-
4616
-
postcss-normalize-unicode@^4.0.1:
4617
-
version "4.0.1"
4618
-
resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb"
4619
-
integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==
4620
-
dependencies:
4621
-
browserslist "^4.0.0"
4622
-
postcss "^7.0.0"
4623
-
postcss-value-parser "^3.0.0"
4624
-
4625
-
postcss-normalize-url@^3.0.7:
4626
-
version "3.0.8"
4627
-
resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz#108f74b3f2fcdaf891a2ffa3ea4592279fc78222"
4628
-
integrity sha1-EI90s/L82viRov+j6kWSJ5/HgiI=
4629
-
dependencies:
4630
-
is-absolute-url "^2.0.0"
4631
-
normalize-url "^1.4.0"
4632
-
postcss "^5.0.14"
4633
-
postcss-value-parser "^3.2.3"
4634
-
4635
-
postcss-normalize-url@^4.0.1:
4636
-
version "4.0.1"
4637
-
resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1"
4638
-
integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==
4639
-
dependencies:
4640
-
is-absolute-url "^2.0.0"
4641
-
normalize-url "^3.0.0"
4642
-
postcss "^7.0.0"
4643
-
postcss-value-parser "^3.0.0"
4644
-
4645
-
postcss-normalize-whitespace@^4.0.1:
4646
-
version "4.0.1"
4647
-
resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.1.tgz#d14cb639b61238418ac8bc8d3b7bdd65fc86575e"
4648
-
integrity sha512-U8MBODMB2L+nStzOk6VvWWjZgi5kQNShCyjRhMT3s+W9Jw93yIjOnrEkKYD3Ul7ChWbEcjDWmXq0qOL9MIAnAw==
4649
-
dependencies:
4650
-
postcss "^7.0.0"
4651
-
postcss-value-parser "^3.0.0"
4652
-
4653
-
postcss-ordered-values@^2.1.0:
4654
-
version "2.2.3"
4655
-
resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz#eec6c2a67b6c412a8db2042e77fe8da43f95c11d"
4656
-
integrity sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=
4657
-
dependencies:
4658
-
postcss "^5.0.4"
4659
-
postcss-value-parser "^3.0.1"
4660
-
4661
-
postcss-ordered-values@^4.1.1:
4662
-
version "4.1.1"
4663
-
resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.1.tgz#2e3b432ef3e489b18333aeca1f1295eb89be9fc2"
4664
-
integrity sha512-PeJiLgJWPzkVF8JuKSBcylaU+hDJ/TX3zqAMIjlghgn1JBi6QwQaDZoDIlqWRcCAI8SxKrt3FCPSRmOgKRB97Q==
4665
-
dependencies:
4666
-
cssnano-util-get-arguments "^4.0.0"
4667
-
postcss "^7.0.0"
4668
-
postcss-value-parser "^3.0.0"
4669
-
4670
-
postcss-reduce-idents@^2.2.2:
4671
-
version "2.4.0"
4672
-
resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz#c2c6d20cc958284f6abfbe63f7609bf409059ad3"
4673
-
integrity sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=
4674
-
dependencies:
4675
-
postcss "^5.0.4"
4676
-
postcss-value-parser "^3.0.2"
4677
-
4678
-
postcss-reduce-initial@^1.0.0:
4679
-
version "1.0.1"
4680
-
resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz#68f80695f045d08263a879ad240df8dd64f644ea"
4681
-
integrity sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=
4682
-
dependencies:
4683
-
postcss "^5.0.4"
4684
-
4685
-
postcss-reduce-initial@^4.0.2:
4686
-
version "4.0.2"
4687
-
resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.2.tgz#bac8e325d67510ee01fa460676dc8ea9e3b40f15"
4688
-
integrity sha512-epUiC39NonKUKG+P3eAOKKZtm5OtAtQJL7Ye0CBN1f+UQTHzqotudp+hki7zxXm7tT0ZAKDMBj1uihpPjP25ug==
4689
-
dependencies:
4690
-
browserslist "^4.0.0"
4691
-
caniuse-api "^3.0.0"
4692
-
has "^1.0.0"
4693
-
postcss "^7.0.0"
4694
-
4695
-
postcss-reduce-transforms@^1.0.3:
4696
-
version "1.0.4"
4697
-
resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz#ff76f4d8212437b31c298a42d2e1444025771ae1"
4698
-
integrity sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=
4699
-
dependencies:
4700
-
has "^1.0.1"
4701
-
postcss "^5.0.8"
4702
-
postcss-value-parser "^3.0.1"
4703
-
4704
-
postcss-reduce-transforms@^4.0.1:
4705
-
version "4.0.1"
4706
-
resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.1.tgz#8600d5553bdd3ad640f43bff81eb52f8760d4561"
4707
-
integrity sha512-sZVr3QlGs0pjh6JAIe6DzWvBaqYw05V1t3d9Tp+VnFRT5j+rsqoWsysh/iSD7YNsULjq9IAylCznIwVd5oU/zA==
4708
-
dependencies:
4709
-
cssnano-util-get-match "^4.0.0"
4710
-
has "^1.0.0"
4711
-
postcss "^7.0.0"
4712
-
postcss-value-parser "^3.0.0"
4713
-
4714
-
postcss-selector-parser@^2.0.0, postcss-selector-parser@^2.2.2:
4715
-
version "2.2.3"
4716
-
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
4717
-
integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=
4718
-
dependencies:
4719
-
flatten "^1.0.2"
4720
-
indexes-of "^1.0.1"
4721
-
uniq "^1.0.1"
4722
-
4723
-
postcss-selector-parser@^3.0.0:
4724
-
version "3.1.1"
4725
-
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865"
4726
-
integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=
4727
-
dependencies:
4728
-
dot-prop "^4.1.1"
4729
-
indexes-of "^1.0.1"
4730
-
uniq "^1.0.1"
4731
-
4732
-
postcss-selector-parser@^5.0.0-rc.4:
4733
-
version "5.0.0"
4734
-
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c"
4735
-
integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==
4736
-
dependencies:
4737
-
cssesc "^2.0.0"
4738
-
indexes-of "^1.0.1"
4739
-
uniq "^1.0.1"
4740
-
4741
-
postcss-svgo@^2.1.1:
4742
-
version "2.1.6"
4743
-
resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.6.tgz#b6df18aa613b666e133f08adb5219c2684ac108d"
4744
-
integrity sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=
4745
-
dependencies:
4746
-
is-svg "^2.0.0"
4747
-
postcss "^5.0.14"
4748
-
postcss-value-parser "^3.2.3"
4749
-
svgo "^0.7.0"
4750
-
4751
-
postcss-svgo@^4.0.1:
4752
-
version "4.0.1"
4753
-
resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.1.tgz#5628cdb38f015de6b588ce6d0bf0724b492b581d"
4754
-
integrity sha512-YD5uIk5NDRySy0hcI+ZJHwqemv2WiqqzDgtvgMzO8EGSkK5aONyX8HMVFRFJSdO8wUWTuisUFn/d7yRRbBr5Qw==
4755
-
dependencies:
4756
-
is-svg "^3.0.0"
4757
-
postcss "^7.0.0"
4758
-
postcss-value-parser "^3.0.0"
4759
-
svgo "^1.0.0"
4760
-
4761
-
postcss-unique-selectors@^2.0.2:
4762
-
version "2.0.2"
4763
-
resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d"
4764
-
integrity sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=
4765
-
dependencies:
4766
-
alphanum-sort "^1.0.1"
4767
-
postcss "^5.0.4"
4768
-
uniqs "^2.0.0"
4769
-
4770
-
postcss-unique-selectors@^4.0.1:
4771
-
version "4.0.1"
4772
-
resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac"
4773
-
integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==
4774
-
dependencies:
4775
-
alphanum-sort "^1.0.0"
4776
-
postcss "^7.0.0"
4777
-
uniqs "^2.0.0"
4778
-
4779
-
postcss-value-parser@^3.0.0, postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1:
4780
-
version "3.3.1"
4781
-
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281"
4782
-
integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
4783
-
4784
-
postcss-zindex@^2.0.1:
4785
-
version "2.2.0"
4786
-
resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.2.0.tgz#d2109ddc055b91af67fc4cb3b025946639d2af22"
4787
-
integrity sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=
4788
-
dependencies:
4789
-
has "^1.0.1"
4790
-
postcss "^5.0.4"
4791
-
uniqs "^2.0.0"
4792
-
4793
-
postcss@6.0.1:
4794
-
version "6.0.1"
4795
-
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.1.tgz#000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2"
4796
-
integrity sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=
4797
-
dependencies:
4798
-
chalk "^1.1.3"
4799
-
source-map "^0.5.6"
4800
-
supports-color "^3.2.3"
4801
-
4802
-
postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.8, postcss@^5.2.16:
4803
-
version "5.2.18"
4804
-
resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
4805
-
integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==
4806
-
dependencies:
4807
-
chalk "^1.1.3"
4808
-
js-base64 "^2.1.9"
4809
-
source-map "^0.5.6"
4810
-
supports-color "^3.2.3"
4811
-
4812
-
postcss@^6.0.1, postcss@^6.0.21:
4813
-
version "6.0.23"
4814
-
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
4815
-
integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==
4816
-
dependencies:
4817
-
chalk "^2.4.1"
4818
-
source-map "^0.6.1"
4819
-
supports-color "^5.4.0"
4820
-
4821
-
postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.5:
4822
-
version "7.0.11"
4823
-
resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.11.tgz#f63c513b78026d66263bb2ca995bf02e3d1a697d"
4824
-
integrity sha512-9AXb//5UcjeOEof9T+yPw3XTa5SL207ZOIC/lHYP4mbUTEh4M0rDAQekQpVANCZdwQwKhBtFZCk3i3h3h2hdWg==
4825
-
dependencies:
4826
-
chalk "^2.4.2"
4827
-
source-map "^0.6.1"
4828
-
supports-color "^6.1.0"
4829
-
4830
-
prebuild-install@^2.3.0:
4831
-
version "2.5.3"
4832
-
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-2.5.3.tgz#9f65f242782d370296353710e9bc843490c19f69"
4833
-
integrity sha512-/rI36cN2g7vDQnKWN8Uzupi++KjyqS9iS+/fpwG4Ea8d0Pip0PQ5bshUNzVwt+/D2MRfhVAplYMMvWLqWrCF/g==
4834
-
dependencies:
4835
-
detect-libc "^1.0.3"
4836
-
expand-template "^1.0.2"
4837
-
github-from-package "0.0.0"
4838
-
minimist "^1.2.0"
4839
-
mkdirp "^0.5.1"
4840
-
node-abi "^2.2.0"
4841
-
noop-logger "^0.1.1"
4842
-
npmlog "^4.0.1"
4843
-
os-homedir "^1.0.1"
4844
-
pump "^2.0.1"
4845
-
rc "^1.1.6"
4846
-
simple-get "^2.7.0"
4847
-
tar-fs "^1.13.0"
4848
-
tunnel-agent "^0.6.0"
4849
-
which-pm-runs "^1.0.0"
4850
-
4851
-
prebuild-install@^5.2.1:
4852
-
version "5.2.2"
4853
-
resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.2.2.tgz#237888f21bfda441d0ee5f5612484390bccd4046"
4854
-
integrity sha512-4e8VJnP3zJdZv/uP0eNWmr2r9urp4NECw7Mt1OSAi3rcLrbBRxGiAkfUFtre2MhQ5wfREAjRV+K1gubvs/GPsA==
4855
-
dependencies:
4856
-
detect-libc "^1.0.3"
4857
-
expand-template "^2.0.3"
4858
-
github-from-package "0.0.0"
4859
-
minimist "^1.2.0"
4860
-
mkdirp "^0.5.1"
4861
-
napi-build-utils "^1.0.1"
4862
-
node-abi "^2.2.0"
4863
-
noop-logger "^0.1.1"
4864
-
npmlog "^4.0.1"
4865
-
os-homedir "^1.0.1"
4866
-
pump "^2.0.1"
4867
-
rc "^1.2.7"
4868
-
simple-get "^2.7.0"
4869
-
tar-fs "^1.13.0"
4870
-
tunnel-agent "^0.6.0"
4871
-
which-pm-runs "^1.0.0"
4872
-
4873
-
prelude-ls@~1.1.2:
4874
-
version "1.1.2"
4875
-
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
4876
-
integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
4877
-
4878
-
prepend-http@^1.0.0:
4879
-
version "1.0.4"
4880
-
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
4881
-
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
4882
-
4883
-
preserve@^0.2.0:
4884
-
version "0.2.0"
4885
-
resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
4886
-
integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=
4887
-
4888
-
prettier@^1.15.3:
4889
-
version "1.15.3"
4890
-
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.15.3.tgz#1feaac5bdd181237b54dbe65d874e02a1472786a"
4891
-
integrity sha512-gAU9AGAPMaKb3NNSUUuhhFAS7SCO4ALTN4nRIn6PJ075Qd28Yn2Ig2ahEJWdJwJmlEBTUfC7mMUSFy8MwsOCfg==
4892
-
4893
-
pretty-bytes@^3.0.0:
4894
-
version "3.0.1"
4895
-
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-3.0.1.tgz#27d0008d778063a0b4811bb35c79f1bd5d5fbccf"
4896
-
integrity sha1-J9AAjXeAY6C0gRuzXHnxvV1fvM8=
4897
-
dependencies:
4898
-
number-is-nan "^1.0.0"
4899
-
4900
-
pretty-bytes@^5.1.0:
4901
-
version "5.1.0"
4902
-
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.1.0.tgz#6237ecfbdc6525beaef4de722cc60a58ae0e6c6d"
4903
-
integrity sha512-wa5+qGVg9Yt7PB6rYm3kXlKzgzgivYTLRandezh43jjRqgyDyP+9YxfJpJiLs9yKD1WeU8/OvtToWpW7255FtA==
4904
-
4905
-
pretty-format@^23.6.0:
4906
-
version "23.6.0"
4907
-
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760"
4908
-
integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==
4909
-
dependencies:
4910
-
ansi-regex "^3.0.0"
4911
-
ansi-styles "^3.2.0"
4912
-
4913
-
prettycli@^1.4.3:
4914
-
version "1.4.3"
4915
-
resolved "https://registry.yarnpkg.com/prettycli/-/prettycli-1.4.3.tgz#b28ec2aad9de07ae1fd75ef294fb54cbdee07ed5"
4916
-
integrity sha512-KLiwAXXfSWXZqGmZlnKPuGMTFp+0QbcySplL1ft9gfteT/BNsG64Xo8u2Qr9r+qnsIZWBQ66Zs8tg+8s2fmzvw==
4917
-
dependencies:
4918
-
chalk "2.1.0"
4919
-
4920
-
private@^0.1.8:
4921
-
version "0.1.8"
4922
-
resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
4923
-
integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==
4924
-
4925
-
process-nextick-args@~2.0.0:
4926
-
version "2.0.0"
4927
-
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
4928
-
integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==
4929
-
4930
-
promise.series@^0.2.0:
4931
-
version "0.2.0"
4932
-
resolved "https://registry.yarnpkg.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd"
4933
-
integrity sha1-LMfr6Vn8OmYZwEq029yeRS2GS70=
4934
-
4935
-
prompts@^0.1.9:
4936
-
version "0.1.14"
4937
-
resolved "https://registry.yarnpkg.com/prompts/-/prompts-0.1.14.tgz#a8e15c612c5c9ec8f8111847df3337c9cbd443b2"
4938
-
integrity sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==
4939
-
dependencies:
4940
-
kleur "^2.0.1"
4941
-
sisteransi "^0.1.1"
4942
-
4943
-
pseudomap@^1.0.2:
4944
-
version "1.0.2"
4945
-
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
4946
-
integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
4947
-
4948
-
psl@^1.1.24, psl@^1.1.28:
4949
-
version "1.1.31"
4950
-
resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184"
4951
-
integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==
4952
-
4953
-
pump@^1.0.0:
4954
-
version "1.0.3"
4955
-
resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954"
4956
-
integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==
4957
-
dependencies:
4958
-
end-of-stream "^1.1.0"
4959
-
once "^1.3.1"
4960
-
4961
-
pump@^2.0.1:
4962
-
version "2.0.1"
4963
-
resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909"
4964
-
integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==
4965
-
dependencies:
4966
-
end-of-stream "^1.1.0"
4967
-
once "^1.3.1"
4968
-
4969
-
punycode@^1.4.1:
4970
-
version "1.4.1"
4971
-
resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
4972
-
integrity sha1-wNWmOycYgArY4esPpSachN1BhF4=
4973
-
4974
-
punycode@^2.1.0, punycode@^2.1.1:
4975
-
version "2.1.1"
4976
-
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
4977
-
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
4978
-
4979
-
q@^1.1.2:
4980
-
version "1.5.1"
4981
-
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
4982
-
integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=
4983
-
4984
-
qs@~6.5.2:
4985
-
version "6.5.2"
4986
-
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
4987
-
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
4988
-
4989
-
query-string@^4.1.0:
4990
-
version "4.3.4"
4991
-
resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
4992
-
integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s=
4993
-
dependencies:
4994
-
object-assign "^4.1.0"
4995
-
strict-uri-encode "^1.0.0"
4996
-
4997
-
randomatic@^3.0.0:
4998
-
version "3.1.1"
4999
-
resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed"
5000
-
integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==
5001
-
dependencies:
5002
-
is-number "^4.0.0"
5003
-
kind-of "^6.0.0"
5004
-
math-random "^1.0.1"
5005
-
5006
-
rc@^1.1.6, rc@^1.2.7:
5007
-
version "1.2.8"
5008
-
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
5009
-
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
5010
-
dependencies:
5011
-
deep-extend "^0.6.0"
5012
-
ini "~1.3.0"
5013
-
minimist "^1.2.0"
5014
-
strip-json-comments "~2.0.1"
5015
-
5016
-
read-pkg-up@^1.0.1:
5017
-
version "1.0.1"
5018
-
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
5019
-
integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
5020
-
dependencies:
5021
-
find-up "^1.0.0"
5022
-
read-pkg "^1.0.0"
5023
-
5024
-
read-pkg-up@^3.0.0:
5025
-
version "3.0.0"
5026
-
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07"
5027
-
integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=
5028
-
dependencies:
5029
-
find-up "^2.0.0"
5030
-
read-pkg "^3.0.0"
5031
-
5032
-
read-pkg@^1.0.0:
5033
-
version "1.1.0"
5034
-
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
5035
-
integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
5036
-
dependencies:
5037
-
load-json-file "^1.0.0"
5038
-
normalize-package-data "^2.3.2"
5039
-
path-type "^1.0.0"
5040
-
5041
-
read-pkg@^3.0.0:
5042
-
version "3.0.0"
5043
-
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389"
5044
-
integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=
5045
-
dependencies:
5046
-
load-json-file "^4.0.0"
5047
-
normalize-package-data "^2.3.2"
5048
-
path-type "^3.0.0"
5049
-
5050
-
readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.3.0, readable-stream@^2.3.5:
5051
-
version "2.3.6"
5052
-
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
5053
-
integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==
5054
-
dependencies:
5055
-
core-util-is "~1.0.0"
5056
-
inherits "~2.0.3"
5057
-
isarray "~1.0.0"
5058
-
process-nextick-args "~2.0.0"
5059
-
safe-buffer "~5.1.1"
5060
-
string_decoder "~1.1.1"
5061
-
util-deprecate "~1.0.1"
5062
-
5063
-
realpath-native@^1.0.0:
5064
-
version "1.0.2"
5065
-
resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-1.0.2.tgz#cd51ce089b513b45cf9b1516c82989b51ccc6560"
5066
-
integrity sha512-+S3zTvVt9yTntFrBpm7TQmQ3tzpCrnA1a/y+3cUHAc9ZR6aIjG0WNLR+Rj79QpJktY+VeW/TQtFlQ1bzsehI8g==
5067
-
dependencies:
5068
-
util.promisify "^1.0.0"
5069
-
5070
-
reduce-css-calc@^1.2.6:
5071
-
version "1.3.0"
5072
-
resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716"
5073
-
integrity sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=
5074
-
dependencies:
5075
-
balanced-match "^0.4.2"
5076
-
math-expression-evaluator "^1.2.14"
5077
-
reduce-function-call "^1.0.1"
5078
-
5079
-
reduce-function-call@^1.0.1:
5080
-
version "1.0.2"
5081
-
resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.2.tgz#5a200bf92e0e37751752fe45b0ab330fd4b6be99"
5082
-
integrity sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=
5083
-
dependencies:
5084
-
balanced-match "^0.4.2"
5085
-
5086
-
regenerate-unicode-properties@^7.0.0:
5087
-
version "7.0.0"
5088
-
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c"
5089
-
integrity sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==
5090
-
dependencies:
5091
-
regenerate "^1.4.0"
5092
-
5093
-
regenerate@^1.2.1, regenerate@^1.4.0:
5094
-
version "1.4.0"
5095
-
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11"
5096
-
integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==
5097
-
5098
-
regenerator-runtime@^0.11.0:
5099
-
version "0.11.1"
5100
-
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
5101
-
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
5102
-
5103
-
regenerator-runtime@^0.12.0:
5104
-
version "0.12.1"
5105
-
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de"
5106
-
integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==
5107
-
5108
-
regex-cache@^0.4.2:
5109
-
version "0.4.4"
5110
-
resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
5111
-
integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==
5112
-
dependencies:
5113
-
is-equal-shallow "^0.1.3"
5114
-
5115
-
regex-not@^1.0.0, regex-not@^1.0.2:
5116
-
version "1.0.2"
5117
-
resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
5118
-
integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
5119
-
dependencies:
5120
-
extend-shallow "^3.0.2"
5121
-
safe-regex "^1.1.0"
5122
-
5123
-
regexpu-core@^1.0.0:
5124
-
version "1.0.0"
5125
-
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
5126
-
integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=
5127
-
dependencies:
5128
-
regenerate "^1.2.1"
5129
-
regjsgen "^0.2.0"
5130
-
regjsparser "^0.1.4"
5131
-
5132
-
regexpu-core@^4.2.0:
5133
-
version "4.4.0"
5134
-
resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.4.0.tgz#8d43e0d1266883969720345e70c275ee0aec0d32"
5135
-
integrity sha512-eDDWElbwwI3K0Lo6CqbQbA6FwgtCz4kYTarrri1okfkRLZAqstU+B3voZBCjg8Fl6iq0gXrJG6MvRgLthfvgOA==
5136
-
dependencies:
5137
-
regenerate "^1.4.0"
5138
-
regenerate-unicode-properties "^7.0.0"
5139
-
regjsgen "^0.5.0"
5140
-
regjsparser "^0.6.0"
5141
-
unicode-match-property-ecmascript "^1.0.4"
5142
-
unicode-match-property-value-ecmascript "^1.0.2"
5143
-
5144
-
regjsgen@^0.2.0:
5145
-
version "0.2.0"
5146
-
resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
5147
-
integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=
5148
-
5149
-
regjsgen@^0.5.0:
5150
-
version "0.5.0"
5151
-
resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd"
5152
-
integrity sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==
5153
-
5154
-
regjsparser@^0.1.4:
5155
-
version "0.1.5"
5156
-
resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
5157
-
integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=
5158
-
dependencies:
5159
-
jsesc "~0.5.0"
5160
-
5161
-
regjsparser@^0.6.0:
5162
-
version "0.6.0"
5163
-
resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c"
5164
-
integrity sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==
5165
-
dependencies:
5166
-
jsesc "~0.5.0"
5167
-
5168
-
remove-trailing-separator@^1.0.1:
5169
-
version "1.1.0"
5170
-
resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
5171
-
integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8=
5172
-
5173
-
repeat-element@^1.1.2:
5174
-
version "1.1.3"
5175
-
resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce"
5176
-
integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==
5177
-
5178
-
repeat-string@^1.5.2, repeat-string@^1.6.1:
5179
-
version "1.6.1"
5180
-
resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
5181
-
integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc=
5182
-
5183
-
repeating@^2.0.0:
5184
-
version "2.0.1"
5185
-
resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
5186
-
integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
5187
-
dependencies:
5188
-
is-finite "^1.0.0"
5189
-
5190
-
request-promise-core@1.1.1:
5191
-
version "1.1.1"
5192
-
resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.1.tgz#3eee00b2c5aa83239cfb04c5700da36f81cd08b6"
5193
-
integrity sha1-Pu4AssWqgyOc+wTFcA2jb4HNCLY=
5194
-
dependencies:
5195
-
lodash "^4.13.1"
5196
-
5197
-
request-promise-native@^1.0.5:
5198
-
version "1.0.5"
5199
-
resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.5.tgz#5281770f68e0c9719e5163fd3fab482215f4fda5"
5200
-
integrity sha1-UoF3D2jgyXGeUWP9P6tIIhX0/aU=
5201
-
dependencies:
5202
-
request-promise-core "1.1.1"
5203
-
stealthy-require "^1.1.0"
5204
-
tough-cookie ">=2.3.3"
5205
-
5206
-
request@^2.85.0, request@^2.87.0:
5207
-
version "2.88.0"
5208
-
resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
5209
-
integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==
5210
-
dependencies:
5211
-
aws-sign2 "~0.7.0"
5212
-
aws4 "^1.8.0"
5213
-
caseless "~0.12.0"
5214
-
combined-stream "~1.0.6"
5215
-
extend "~3.0.2"
5216
-
forever-agent "~0.6.1"
5217
-
form-data "~2.3.2"
5218
-
har-validator "~5.1.0"
5219
-
http-signature "~1.2.0"
5220
-
is-typedarray "~1.0.0"
5221
-
isstream "~0.1.2"
5222
-
json-stringify-safe "~5.0.1"
5223
-
mime-types "~2.1.19"
5224
-
oauth-sign "~0.9.0"
5225
-
performance-now "^2.1.0"
5226
-
qs "~6.5.2"
5227
-
safe-buffer "^5.1.2"
5228
-
tough-cookie "~2.4.3"
5229
-
tunnel-agent "^0.6.0"
5230
-
uuid "^3.3.2"
5231
-
5232
-
require-directory@^2.1.1:
5233
-
version "2.1.1"
5234
-
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
5235
-
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
5236
-
5237
-
require-from-string@^1.1.0:
5238
-
version "1.2.1"
5239
-
resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418"
5240
-
integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=
5241
-
5242
-
require-main-filename@^1.0.1:
5243
-
version "1.0.1"
5244
-
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
5245
-
integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
5246
-
5247
-
reserved-words@^0.1.2:
5248
-
version "0.1.2"
5249
-
resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1"
5250
-
integrity sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=
5251
-
5252
-
resolve-cwd@^2.0.0:
5253
-
version "2.0.0"
5254
-
resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
5255
-
integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=
5256
-
dependencies:
5257
-
resolve-from "^3.0.0"
5258
-
5259
-
resolve-from@^3.0.0:
5260
-
version "3.0.0"
5261
-
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748"
5262
-
integrity sha1-six699nWiBvItuZTM17rywoYh0g=
5263
-
5264
-
resolve-url@^0.2.1:
5265
-
version "0.2.1"
5266
-
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
5267
-
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
5268
-
5269
-
resolve@1.1.7:
5270
-
version "1.1.7"
5271
-
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
5272
-
integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=
5273
-
5274
-
resolve@1.8.1:
5275
-
version "1.8.1"
5276
-
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.8.1.tgz#82f1ec19a423ac1fbd080b0bab06ba36e84a7a26"
5277
-
integrity sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==
5278
-
dependencies:
5279
-
path-parse "^1.0.5"
5280
-
5281
-
resolve@^1.1.6, resolve@^1.3.2, resolve@^1.5.0, resolve@^1.8.1:
5282
-
version "1.9.0"
5283
-
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.9.0.tgz#a14c6fdfa8f92a7df1d996cb7105fa744658ea06"
5284
-
integrity sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==
5285
-
dependencies:
5286
-
path-parse "^1.0.6"
5287
-
5288
-
ret@~0.1.10:
5289
-
version "0.1.15"
5290
-
resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
5291
-
integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
5292
-
5293
-
rgb-regex@^1.0.1:
5294
-
version "1.0.1"
5295
-
resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1"
5296
-
integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE=
5297
-
5298
-
rgba-regex@^1.0.0:
5299
-
version "1.0.0"
5300
-
resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3"
5301
-
integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=
5302
-
5303
-
rimraf@2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.3:
5304
-
version "2.6.3"
5305
-
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
5306
-
integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
5307
-
dependencies:
5308
-
glob "^7.1.3"
5309
-
5310
-
rollup-plugin-babel@^4.1.0-0:
5311
-
version "4.3.0"
5312
-
resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.3.0.tgz#1900e66af70c3975fef26a54111b87ee22a50974"
5313
-
integrity sha512-HoNMaLA56MPZ9XCeG+RD2QzTySVe168R/k6bPEm8noB9PSK8wBnY4matFluwmH2Bj3PQdqYAknV1jDqw8GAc8g==
5314
-
dependencies:
5315
-
"@babel/helper-module-imports" "^7.0.0"
5316
-
rollup-pluginutils "^2.3.0"
5317
-
5318
-
rollup-plugin-buble@^0.19.4:
5319
-
version "0.19.6"
5320
-
resolved "https://registry.yarnpkg.com/rollup-plugin-buble/-/rollup-plugin-buble-0.19.6.tgz#55ee0995d8870d536f01f4277c3eef4276e8747e"
5321
-
integrity sha512-El5Fut4/wEO17ZN/n9BZvqd7DXXB2WbJr/DKvr89LXChC/cHllE0XwiUDeAalrTkgr0WrnyLDTCQvEv+cGywWQ==
5322
-
dependencies:
5323
-
buble "^0.19.6"
5324
-
rollup-pluginutils "^2.3.3"
5325
-
5326
-
rollup-plugin-bundle-size@^1.0.1:
5327
-
version "1.0.2"
5328
-
resolved "https://registry.yarnpkg.com/rollup-plugin-bundle-size/-/rollup-plugin-bundle-size-1.0.2.tgz#9943ad2c7629d7d71cfeff18b0ee07a96b3b9388"
5329
-
integrity sha512-yWeab5WeTAIIV0dI3wLkTBrwsLkC33/VnMRRpItPbsPDK99YK4sSkaSdw/4kzs86FA5ZFl21bVFaxnqlPVZr1g==
5330
-
dependencies:
5331
-
chalk "^1.1.3"
5332
-
maxmin "^2.1.0"
5333
-
5334
-
rollup-plugin-commonjs@^9.0.0:
5335
-
version "9.2.0"
5336
-
resolved "https://registry.yarnpkg.com/rollup-plugin-commonjs/-/rollup-plugin-commonjs-9.2.0.tgz#4604e25069e0c78a09e08faa95dc32dec27f7c89"
5337
-
integrity sha512-0RM5U4Vd6iHjL6rLvr3lKBwnPsaVml+qxOGaaNUWN1lSq6S33KhITOfHmvxV3z2vy9Mk4t0g4rNlVaJJsNQPWA==
5338
-
dependencies:
5339
-
estree-walker "^0.5.2"
5340
-
magic-string "^0.25.1"
5341
-
resolve "^1.8.1"
5342
-
rollup-pluginutils "^2.3.3"
5343
-
5344
-
rollup-plugin-es3@^1.1.0:
5345
-
version "1.1.0"
5346
-
resolved "https://registry.yarnpkg.com/rollup-plugin-es3/-/rollup-plugin-es3-1.1.0.tgz#f866f91b4db839e5b475d8e4a7b9d4c77ecade14"
5347
-
integrity sha512-jTMqQgMZ/tkjRW4scf4ln5c0OiTSi+Lx/IEyFd41ldgGoLvvg9AQxmVOl93+KaoyB7XRYToYjiHDvO40NPF/fA==
5348
-
dependencies:
5349
-
magic-string "^0.22.4"
5350
-
5351
-
rollup-plugin-flow@^1.1.1:
5352
-
version "1.1.1"
5353
-
resolved "https://registry.yarnpkg.com/rollup-plugin-flow/-/rollup-plugin-flow-1.1.1.tgz#6ce568f1dd559666b77ab76b4bae251407528db6"
5354
-
integrity sha1-bOVo8d1Vlma3erdrS64lFAdSjbY=
5355
-
dependencies:
5356
-
flow-remove-types "^1.1.0"
5357
-
rollup-pluginutils "^1.5.1"
5358
-
5359
-
rollup-plugin-json@^3.1.0:
5360
-
version "3.1.0"
5361
-
resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-3.1.0.tgz#7c1daf60c46bc21021ea016bd00863561a03321b"
5362
-
integrity sha512-BlYk5VspvGpjz7lAwArVzBXR60JK+4EKtPkCHouAWg39obk9S61hZYJDBfMK+oitPdoe11i69TlxKlMQNFC/Uw==
5363
-
dependencies:
5364
-
rollup-pluginutils "^2.3.1"
5365
-
5366
-
rollup-plugin-node-resolve@^3.3.0:
5367
-
version "3.4.0"
5368
-
resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz#908585eda12e393caac7498715a01e08606abc89"
5369
-
integrity sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==
5370
-
dependencies:
5371
-
builtin-modules "^2.0.0"
5372
-
is-module "^1.0.0"
5373
-
resolve "^1.1.6"
5374
-
5375
-
rollup-plugin-postcss@^1.6.1:
5376
-
version "1.6.3"
5377
-
resolved "https://registry.yarnpkg.com/rollup-plugin-postcss/-/rollup-plugin-postcss-1.6.3.tgz#18256ba66f29ecd9d42a68f4ef136b92b939ddb8"
5378
-
integrity sha512-se1qftVETua9ZGViud4A4gbgEQenjYnLPvjh3kTqbBZU+f0mQ9YvJptIuzPhEk5kZAHZhkwIkk2jk+byrn1XPA==
5379
-
dependencies:
5380
-
chalk "^2.0.0"
5381
-
concat-with-sourcemaps "^1.0.5"
5382
-
cssnano "^3.10.0"
5383
-
fs-extra "^5.0.0"
5384
-
import-cwd "^2.1.0"
5385
-
p-queue "^2.4.2"
5386
-
pify "^3.0.0"
5387
-
postcss "^6.0.21"
5388
-
postcss-load-config "^1.2.0"
5389
-
postcss-modules "^1.1.0"
5390
-
promise.series "^0.2.0"
5391
-
reserved-words "^0.1.2"
5392
-
resolve "^1.5.0"
5393
-
rollup-pluginutils "^2.0.1"
5394
-
style-inject "^0.3.0"
5395
-
5396
-
rollup-plugin-preserve-shebang@^0.1.6:
5397
-
version "0.1.6"
5398
-
resolved "https://registry.yarnpkg.com/rollup-plugin-preserve-shebang/-/rollup-plugin-preserve-shebang-0.1.6.tgz#8cfc4c555d4ca87b9fbb7712869158db0e080d4a"
5399
-
integrity sha512-b+psdlXZOjmlnKmL6/YAkR8PR15VPcUNXdT35urBRJ8jE6UxHyb4HXeeN3qRZJbMJJaX1eRP72XwH6IvGFh5Jw==
5400
-
dependencies:
5401
-
magic-string "^0.22.4"
5402
-
5403
-
rollup-plugin-sizes@^0.4.2:
5404
-
version "0.4.2"
5405
-
resolved "https://registry.yarnpkg.com/rollup-plugin-sizes/-/rollup-plugin-sizes-0.4.2.tgz#1d97ecda2667a43afbb19d801e2476f80f67d12f"
5406
-
integrity sha512-6VsnWb4aBPcW++3IBMNPo4NLSheoaXh+itXk1OcaolLhYemoQFb7A9hVNocwa0j2BctdmPNFcP7UJ3g///VVaA==
5407
-
dependencies:
5408
-
filesize "^3.5.11"
5409
-
lodash.foreach "^4.5.0"
5410
-
lodash.sumby "^4.6.0"
5411
-
module-details-from-path "^1.0.3"
5412
-
5413
-
rollup-plugin-terser@^3.0.0:
5414
-
version "3.0.0"
5415
-
resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-3.0.0.tgz#045bd7cf625ee1affcfe6971dab6fffe6fb48c65"
5416
-
integrity sha512-Ed9zRD7OoCBnh0XGlEAJle5TCUsFXMLClwKzZWnS1zbNO4MelHjfCSdFZxCAdH70M40nhZ1nRrY2GZQJhSMcjA==
5417
-
dependencies:
5418
-
"@babel/code-frame" "^7.0.0"
5419
-
jest-worker "^23.2.0"
5420
-
serialize-javascript "^1.5.0"
5421
-
terser "^3.8.2"
5422
-
5423
-
rollup-plugin-typescript2@^0.18.0:
5424
-
version "0.18.1"
5425
-
resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.18.1.tgz#921865828080a254c088c6bc181ca654e5ef73c6"
5426
-
integrity sha512-aR2m5NCCAUV/KpcKgCWX6Giy8rTko9z92b5t0NX9eZyjOftCvcdDFa1C9Ze/9yp590hnRymr5hG0O9SAXi1oUg==
5427
-
dependencies:
5428
-
fs-extra "7.0.0"
5429
-
resolve "1.8.1"
5430
-
rollup-pluginutils "2.3.3"
5431
-
tslib "1.9.3"
5432
-
5433
-
rollup-pluginutils@2.3.3, rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.0, rollup-pluginutils@^2.3.1, rollup-pluginutils@^2.3.3:
5434
-
version "2.3.3"
5435
-
resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz#3aad9b1eb3e7fe8262820818840bf091e5ae6794"
5436
-
integrity sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==
5437
-
dependencies:
5438
-
estree-walker "^0.5.2"
5439
-
micromatch "^2.3.11"
5440
-
5441
-
rollup-pluginutils@^1.5.1:
5442
-
version "1.5.2"
5443
-
resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz#1e156e778f94b7255bfa1b3d0178be8f5c552408"
5444
-
integrity sha1-HhVud4+UtyVb+hs9AXi+j1xVJAg=
5445
-
dependencies:
5446
-
estree-walker "^0.2.1"
5447
-
minimatch "^3.0.2"
5448
-
5449
-
rollup@^0.67.3:
5450
-
version "0.67.4"
5451
-
resolved "https://registry.yarnpkg.com/rollup/-/rollup-0.67.4.tgz#8ed6b0993337f84ec8a0387f824fa6c197e833ec"
5452
-
integrity sha512-AVuP73mkb4BBMUmksQ3Jw0jTrBTU1i7rLiUYjFxLZGb3xiFmtVEg40oByphkZAsiL0bJC3hRAJUQos/e5EBd+w==
5453
-
dependencies:
5454
-
"@types/estree" "0.0.39"
5455
-
"@types/node" "*"
5456
-
5457
-
rsvp@^3.3.3:
5458
-
version "3.6.2"
5459
-
resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a"
5460
-
integrity sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==
5461
-
5462
-
sade@^1.4.0:
5463
-
version "1.4.2"
5464
-
resolved "https://registry.yarnpkg.com/sade/-/sade-1.4.2.tgz#b1946ef9ec62450b74e17d9fec30156c94f193a6"
5465
-
integrity sha512-MTrQm+Nhl4m1mbssYDgAculC/HbShjj08QtHnA2GTpzivfU5aUp8EoHlECmrIHEaa8hZRZSp2Gygv8VMlpXEBw==
5466
-
dependencies:
5467
-
mri "^1.1.0"
5468
-
5469
-
safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
5470
-
version "5.1.2"
5471
-
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
5472
-
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
5473
-
5474
-
safe-regex@^1.1.0:
5475
-
version "1.1.0"
5476
-
resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
5477
-
integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4=
5478
-
dependencies:
5479
-
ret "~0.1.10"
5480
-
5481
-
"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
5482
-
version "2.1.2"
5483
-
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
5484
-
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
5485
-
5486
-
sane@^2.0.0:
5487
-
version "2.5.2"
5488
-
resolved "https://registry.yarnpkg.com/sane/-/sane-2.5.2.tgz#b4dc1861c21b427e929507a3e751e2a2cb8ab3fa"
5489
-
integrity sha1-tNwYYcIbQn6SlQej51HiosuKs/o=
5490
-
dependencies:
5491
-
anymatch "^2.0.0"
5492
-
capture-exit "^1.2.0"
5493
-
exec-sh "^0.2.0"
5494
-
fb-watchman "^2.0.0"
5495
-
micromatch "^3.1.4"
5496
-
minimist "^1.1.1"
5497
-
walker "~1.0.5"
5498
-
watch "~0.18.0"
5499
-
optionalDependencies:
5500
-
fsevents "^1.2.3"
5501
-
5502
-
sax@^1.2.4, sax@~1.2.1, sax@~1.2.4:
5503
-
version "1.2.4"
5504
-
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
5505
-
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
5506
-
5507
-
"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0:
5508
-
version "5.6.0"
5509
-
resolved "https://registry.yarnpkg.com/semver/-/semver-5.6.0.tgz#7e74256fbaa49c75aa7c7a205cc22799cac80004"
5510
-
integrity sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
5511
-
5512
-
semver@~5.3.0:
5513
-
version "5.3.0"
5514
-
resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
5515
-
integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8=
5516
-
5517
-
serialize-javascript@^1.5.0:
5518
-
version "1.6.1"
5519
-
resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-1.6.1.tgz#4d1f697ec49429a847ca6f442a2a755126c4d879"
5520
-
integrity sha512-A5MOagrPFga4YaKQSWHryl7AXvbQkEqpw4NNYMTNYUNV51bA8ABHgYFpqKx+YFFrw59xMV1qGH1R4AgoNIVgCw==
5521
-
5522
-
set-blocking@^2.0.0, set-blocking@~2.0.0:
5523
-
version "2.0.0"
5524
-
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
5525
-
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
5526
-
5527
-
set-value@^0.4.3:
5528
-
version "0.4.3"
5529
-
resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1"
5530
-
integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE=
5531
-
dependencies:
5532
-
extend-shallow "^2.0.1"
5533
-
is-extendable "^0.1.1"
5534
-
is-plain-object "^2.0.1"
5535
-
to-object-path "^0.3.0"
5536
-
5537
-
set-value@^2.0.0:
5538
-
version "2.0.0"
5539
-
resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274"
5540
-
integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==
5541
-
dependencies:
5542
-
extend-shallow "^2.0.1"
5543
-
is-extendable "^0.1.1"
5544
-
is-plain-object "^2.0.3"
5545
-
split-string "^3.0.1"
5546
-
5547
-
shebang-command@^1.2.0:
5548
-
version "1.2.0"
5549
-
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
5550
-
integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=
5551
-
dependencies:
5552
-
shebang-regex "^1.0.0"
5553
-
5554
-
shebang-regex@^1.0.0:
5555
-
version "1.0.0"
5556
-
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
5557
-
integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=
5558
-
5559
-
shell-quote@^1.6.1:
5560
-
version "1.6.1"
5561
-
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767"
5562
-
integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=
5563
-
dependencies:
5564
-
array-filter "~0.0.0"
5565
-
array-map "~0.0.0"
5566
-
array-reduce "~0.0.0"
5567
-
jsonify "~0.0.0"
5568
-
5569
-
shellwords@^0.1.1:
5570
-
version "0.1.1"
5571
-
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
5572
-
integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
5573
-
5574
-
signal-exit@^3.0.0, signal-exit@^3.0.2:
5575
-
version "3.0.2"
5576
-
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
5577
-
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
5578
-
5579
-
simple-concat@^1.0.0:
5580
-
version "1.0.0"
5581
-
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6"
5582
-
integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=
5583
-
5584
-
simple-get@^2.7.0:
5585
-
version "2.8.1"
5586
-
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d"
5587
-
integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==
5588
-
dependencies:
5589
-
decompress-response "^3.3.0"
5590
-
once "^1.3.1"
5591
-
simple-concat "^1.0.0"
5592
-
5593
-
simple-swizzle@^0.2.2:
5594
-
version "0.2.2"
5595
-
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
5596
-
integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
5597
-
dependencies:
5598
-
is-arrayish "^0.3.1"
5599
-
5600
-
sisteransi@^0.1.1:
5601
-
version "0.1.1"
5602
-
resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-0.1.1.tgz#5431447d5f7d1675aac667ccd0b865a4994cb3ce"
5603
-
integrity sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==
5604
-
5605
-
slash@^1.0.0:
5606
-
version "1.0.0"
5607
-
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
5608
-
integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=
5609
-
5610
-
snapdragon-node@^2.0.1:
5611
-
version "2.1.1"
5612
-
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
5613
-
integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
5614
-
dependencies:
5615
-
define-property "^1.0.0"
5616
-
isobject "^3.0.0"
5617
-
snapdragon-util "^3.0.1"
5618
-
5619
-
snapdragon-util@^3.0.1:
5620
-
version "3.0.1"
5621
-
resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
5622
-
integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
5623
-
dependencies:
5624
-
kind-of "^3.2.0"
5625
-
5626
-
snapdragon@^0.8.1:
5627
-
version "0.8.2"
5628
-
resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
5629
-
integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
5630
-
dependencies:
5631
-
base "^0.11.1"
5632
-
debug "^2.2.0"
5633
-
define-property "^0.2.5"
5634
-
extend-shallow "^2.0.1"
5635
-
map-cache "^0.2.2"
5636
-
source-map "^0.5.6"
5637
-
source-map-resolve "^0.5.0"
5638
-
use "^3.1.0"
5639
-
5640
-
sort-keys@^1.0.0:
5641
-
version "1.1.2"
5642
-
resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
5643
-
integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0=
5644
-
dependencies:
5645
-
is-plain-obj "^1.0.0"
5646
-
5647
-
source-map-resolve@^0.5.0:
5648
-
version "0.5.2"
5649
-
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259"
5650
-
integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==
5651
-
dependencies:
5652
-
atob "^2.1.1"
5653
-
decode-uri-component "^0.2.0"
5654
-
resolve-url "^0.2.1"
5655
-
source-map-url "^0.4.0"
5656
-
urix "^0.1.0"
5657
-
5658
-
source-map-support@^0.4.15:
5659
-
version "0.4.18"
5660
-
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f"
5661
-
integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==
5662
-
dependencies:
5663
-
source-map "^0.5.6"
5664
-
5665
-
source-map-support@^0.5.6:
5666
-
version "0.5.9"
5667
-
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.9.tgz#41bc953b2534267ea2d605bccfa7bfa3111ced5f"
5668
-
integrity sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==
5669
-
dependencies:
5670
-
buffer-from "^1.0.0"
5671
-
source-map "^0.6.0"
5672
-
5673
-
source-map-support@~0.5.6:
5674
-
version "0.5.10"
5675
-
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.10.tgz#2214080bc9d51832511ee2bab96e3c2f9353120c"
5676
-
integrity sha512-YfQ3tQFTK/yzlGJuX8pTwa4tifQj4QS2Mj7UegOu8jAz59MqIiMGPXxQhVQiIMNzayuUSF/jEuVnfFF5JqybmQ==
5677
-
dependencies:
5678
-
buffer-from "^1.0.0"
5679
-
source-map "^0.6.0"
5680
-
5681
-
source-map-url@^0.4.0:
5682
-
version "0.4.0"
5683
-
resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3"
5684
-
integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=
5685
-
5686
-
source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7:
5687
-
version "0.5.7"
5688
-
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
5689
-
integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=
5690
-
5691
-
source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
5692
-
version "0.6.1"
5693
-
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
5694
-
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
5695
-
5696
-
sourcemap-codec@^1.4.1:
5697
-
version "1.4.4"
5698
-
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz#c63ea927c029dd6bd9a2b7fa03b3fec02ad56e9f"
5699
-
integrity sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==
5700
-
5701
-
spdx-correct@^3.0.0:
5702
-
version "3.1.0"
5703
-
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4"
5704
-
integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==
5705
-
dependencies:
5706
-
spdx-expression-parse "^3.0.0"
5707
-
spdx-license-ids "^3.0.0"
5708
-
5709
-
spdx-exceptions@^2.1.0:
5710
-
version "2.2.0"
5711
-
resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977"
5712
-
integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==
5713
-
5714
-
spdx-expression-parse@^3.0.0:
5715
-
version "3.0.0"
5716
-
resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
5717
-
integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==
5718
-
dependencies:
5719
-
spdx-exceptions "^2.1.0"
5720
-
spdx-license-ids "^3.0.0"
5721
-
5722
-
spdx-license-ids@^3.0.0:
5723
-
version "3.0.3"
5724
-
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz#81c0ce8f21474756148bbb5f3bfc0f36bf15d76e"
5725
-
integrity sha512-uBIcIl3Ih6Phe3XHK1NqboJLdGfwr1UN3k6wSD1dZpmPsIkb8AGNbZYJ1fOBk834+Gxy8rpfDxrS6XLEMZMY2g==
5726
-
5727
-
split-string@^3.0.1, split-string@^3.0.2:
5728
-
version "3.1.0"
5729
-
resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
5730
-
integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
5731
-
dependencies:
5732
-
extend-shallow "^3.0.0"
5733
-
5734
-
sprintf-js@~1.0.2:
5735
-
version "1.0.3"
5736
-
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
5737
-
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
5738
-
5739
-
sshpk@^1.7.0:
5740
-
version "1.16.0"
5741
-
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.0.tgz#1d4963a2fbffe58050aa9084ca20be81741c07de"
5742
-
integrity sha512-Zhev35/y7hRMcID/upReIvRse+I9SVhyVre/KTJSJQWMz3C3+G+HpO7m1wK/yckEtujKZ7dS4hkVxAnmHaIGVQ==
5743
-
dependencies:
5744
-
asn1 "~0.2.3"
5745
-
assert-plus "^1.0.0"
5746
-
bcrypt-pbkdf "^1.0.0"
5747
-
dashdash "^1.12.0"
5748
-
ecc-jsbn "~0.1.1"
5749
-
getpass "^0.1.1"
5750
-
jsbn "~0.1.0"
5751
-
safer-buffer "^2.0.2"
5752
-
tweetnacl "~0.14.0"
5753
-
5754
-
stable@~0.1.6:
5755
-
version "0.1.8"
5756
-
resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
5757
-
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
5758
-
5759
-
stack-utils@^1.0.1:
5760
-
version "1.0.2"
5761
-
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8"
5762
-
integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==
5763
-
5764
-
static-extend@^0.1.1:
5765
-
version "0.1.2"
5766
-
resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
5767
-
integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=
5768
-
dependencies:
5769
-
define-property "^0.2.5"
5770
-
object-copy "^0.1.0"
5771
-
5772
-
stealthy-require@^1.1.0:
5773
-
version "1.1.1"
5774
-
resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b"
5775
-
integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=
5776
-
5777
-
strict-uri-encode@^1.0.0:
5778
-
version "1.1.0"
5779
-
resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
5780
-
integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=
5781
-
5782
-
string-hash@^1.1.1:
5783
-
version "1.1.3"
5784
-
resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b"
5785
-
integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=
5786
-
5787
-
string-length@^2.0.0:
5788
-
version "2.0.0"
5789
-
resolved "https://registry.yarnpkg.com/string-length/-/string-length-2.0.0.tgz#d40dbb686a3ace960c1cffca562bf2c45f8363ed"
5790
-
integrity sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=
5791
-
dependencies:
5792
-
astral-regex "^1.0.0"
5793
-
strip-ansi "^4.0.0"
5794
-
5795
-
string-width@^1.0.1:
5796
-
version "1.0.2"
5797
-
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
5798
-
integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
5799
-
dependencies:
5800
-
code-point-at "^1.0.0"
5801
-
is-fullwidth-code-point "^1.0.0"
5802
-
strip-ansi "^3.0.0"
5803
-
5804
-
"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1:
5805
-
version "2.1.1"
5806
-
resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
5807
-
integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
5808
-
dependencies:
5809
-
is-fullwidth-code-point "^2.0.0"
5810
-
strip-ansi "^4.0.0"
5811
-
5812
-
string.prototype.padend@^3.0.0:
5813
-
version "3.0.0"
5814
-
resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0"
5815
-
integrity sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA=
5816
-
dependencies:
5817
-
define-properties "^1.1.2"
5818
-
es-abstract "^1.4.3"
5819
-
function-bind "^1.0.2"
5820
-
5821
-
string_decoder@~1.1.1:
5822
-
version "1.1.1"
5823
-
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
5824
-
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
5825
-
dependencies:
5826
-
safe-buffer "~5.1.0"
5827
-
5828
-
strip-ansi@^3.0.0, strip-ansi@^3.0.1:
5829
-
version "3.0.1"
5830
-
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
5831
-
integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
5832
-
dependencies:
5833
-
ansi-regex "^2.0.0"
5834
-
5835
-
strip-ansi@^4.0.0:
5836
-
version "4.0.0"
5837
-
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
5838
-
integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
5839
-
dependencies:
5840
-
ansi-regex "^3.0.0"
5841
-
5842
-
strip-bom@3.0.0, strip-bom@^3.0.0:
5843
-
version "3.0.0"
5844
-
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
5845
-
integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=
5846
-
5847
-
strip-bom@^2.0.0:
5848
-
version "2.0.0"
5849
-
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
5850
-
integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
5851
-
dependencies:
5852
-
is-utf8 "^0.2.0"
5853
-
5854
-
strip-eof@^1.0.0:
5855
-
version "1.0.0"
5856
-
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
5857
-
integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=
5858
-
5859
-
strip-json-comments@~2.0.1:
5860
-
version "2.0.1"
5861
-
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
5862
-
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
5863
-
5864
-
style-inject@^0.3.0:
5865
-
version "0.3.0"
5866
-
resolved "https://registry.yarnpkg.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3"
5867
-
integrity sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==
5868
-
5869
-
stylehacks@^4.0.0:
5870
-
version "4.0.1"
5871
-
resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.1.tgz#3186595d047ab0df813d213e51c8b94e0b9010f2"
5872
-
integrity sha512-TK5zEPeD9NyC1uPIdjikzsgWxdQQN/ry1X3d1iOz1UkYDCmcr928gWD1KHgyC27F50UnE0xCTrBOO1l6KR8M4w==
5873
-
dependencies:
5874
-
browserslist "^4.0.0"
5875
-
postcss "^7.0.0"
5876
-
postcss-selector-parser "^3.0.0"
5877
-
5878
-
supports-color@^2.0.0:
5879
-
version "2.0.0"
5880
-
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
5881
-
integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
5882
-
5883
-
supports-color@^3.1.2, supports-color@^3.2.3:
5884
-
version "3.2.3"
5885
-
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
5886
-
integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=
5887
-
dependencies:
5888
-
has-flag "^1.0.0"
5889
-
5890
-
supports-color@^4.0.0:
5891
-
version "4.5.0"
5892
-
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b"
5893
-
integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=
5894
-
dependencies:
5895
-
has-flag "^2.0.0"
5896
-
5897
-
supports-color@^5.3.0, supports-color@^5.4.0:
5898
-
version "5.5.0"
5899
-
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
5900
-
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
5901
-
dependencies:
5902
-
has-flag "^3.0.0"
5903
-
5904
-
supports-color@^6.1.0:
5905
-
version "6.1.0"
5906
-
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3"
5907
-
integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==
5908
-
dependencies:
5909
-
has-flag "^3.0.0"
5910
-
5911
-
svgo@^0.7.0:
5912
-
version "0.7.2"
5913
-
resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.2.tgz#9f5772413952135c6fefbf40afe6a4faa88b4bb5"
5914
-
integrity sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=
5915
-
dependencies:
5916
-
coa "~1.0.1"
5917
-
colors "~1.1.2"
5918
-
csso "~2.3.1"
5919
-
js-yaml "~3.7.0"
5920
-
mkdirp "~0.5.1"
5921
-
sax "~1.2.1"
5922
-
whet.extend "~0.9.9"
5923
-
5924
-
svgo@^1.0.0:
5925
-
version "1.1.1"
5926
-
resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.1.1.tgz#12384b03335bcecd85cfa5f4e3375fed671cb985"
5927
-
integrity sha512-GBkJbnTuFpM4jFbiERHDWhZc/S/kpHToqmZag3aEBjPYK44JAN2QBjvrGIxLOoCyMZjuFQIfTO2eJd8uwLY/9g==
5928
-
dependencies:
5929
-
coa "~2.0.1"
5930
-
colors "~1.1.2"
5931
-
css-select "^2.0.0"
5932
-
css-select-base-adapter "~0.1.0"
5933
-
css-tree "1.0.0-alpha.28"
5934
-
css-url-regex "^1.1.0"
5935
-
csso "^3.5.0"
5936
-
js-yaml "^3.12.0"
5937
-
mkdirp "~0.5.1"
5938
-
object.values "^1.0.4"
5939
-
sax "~1.2.4"
5940
-
stable "~0.1.6"
5941
-
unquote "~1.1.1"
5942
-
util.promisify "~1.0.0"
5943
-
5944
-
symbol-tree@^3.2.2:
5945
-
version "3.2.2"
5946
-
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6"
5947
-
integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=
5948
-
5949
-
tar-fs@^1.13.0:
5950
-
version "1.16.3"
5951
-
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509"
5952
-
integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==
5953
-
dependencies:
5954
-
chownr "^1.0.1"
5955
-
mkdirp "^0.5.1"
5956
-
pump "^1.0.0"
5957
-
tar-stream "^1.1.2"
5958
-
5959
-
tar-stream@^1.1.2:
5960
-
version "1.6.2"
5961
-
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555"
5962
-
integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==
5963
-
dependencies:
5964
-
bl "^1.0.0"
5965
-
buffer-alloc "^1.2.0"
5966
-
end-of-stream "^1.0.0"
5967
-
fs-constants "^1.0.0"
5968
-
readable-stream "^2.3.0"
5969
-
to-buffer "^1.1.1"
5970
-
xtend "^4.0.0"
5971
-
5972
-
tar@^2.0.0:
5973
-
version "2.2.1"
5974
-
resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
5975
-
integrity sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=
5976
-
dependencies:
5977
-
block-stream "*"
5978
-
fstream "^1.0.2"
5979
-
inherits "2"
5980
-
5981
-
tar@^4:
5982
-
version "4.4.8"
5983
-
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d"
5984
-
integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==
5985
-
dependencies:
5986
-
chownr "^1.1.1"
5987
-
fs-minipass "^1.2.5"
5988
-
minipass "^2.3.4"
5989
-
minizlib "^1.1.1"
5990
-
mkdirp "^0.5.0"
5991
-
safe-buffer "^5.1.2"
5992
-
yallist "^3.0.2"
5993
-
5994
-
terser@^3.14.1, terser@^3.8.2:
5995
-
version "3.14.1"
5996
-
resolved "https://registry.yarnpkg.com/terser/-/terser-3.14.1.tgz#cc4764014af570bc79c79742358bd46926018a32"
5997
-
integrity sha512-NSo3E99QDbYSMeJaEk9YW2lTg3qS9V0aKGlb+PlOrei1X02r1wSBHCNX/O+yeTRFSWPKPIGj6MqvvdqV4rnVGw==
5998
-
dependencies:
5999
-
commander "~2.17.1"
6000
-
source-map "~0.6.1"
6001
-
source-map-support "~0.5.6"
6002
-
6003
-
test-exclude@^4.2.1:
6004
-
version "4.2.3"
6005
-
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-4.2.3.tgz#a9a5e64474e4398339245a0a769ad7c2f4a97c20"
6006
-
integrity sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==
6007
-
dependencies:
6008
-
arrify "^1.0.1"
6009
-
micromatch "^2.3.11"
6010
-
object-assign "^4.1.0"
6011
-
read-pkg-up "^1.0.1"
6012
-
require-main-filename "^1.0.1"
6013
-
6014
-
throat@^4.0.0:
6015
-
version "4.1.0"
6016
-
resolved "https://registry.yarnpkg.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a"
6017
-
integrity sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=
6018
-
6019
-
timsort@^0.3.0:
6020
-
version "0.3.0"
6021
-
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
6022
-
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
6023
-
6024
-
tiny-glob@^0.2.6:
6025
-
version "0.2.6"
6026
-
resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.6.tgz#9e056e169d9788fe8a734dfa1ff02e9b92ed7eda"
6027
-
integrity sha512-A7ewMqPu1B5PWwC3m7KVgAu96Ch5LA0w4SnEN/LbDREj/gAD0nPWboRbn8YoP9ISZXqeNAlMvKSKoEuhcfK3Pw==
6028
-
dependencies:
6029
-
globalyzer "^0.1.0"
6030
-
globrex "^0.1.1"
6031
-
6032
-
tmpl@1.0.x:
6033
-
version "1.0.4"
6034
-
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1"
6035
-
integrity sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=
6036
-
6037
-
to-buffer@^1.1.1:
6038
-
version "1.1.1"
6039
-
resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
6040
-
integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==
6041
-
6042
-
to-fast-properties@^1.0.3:
6043
-
version "1.0.3"
6044
-
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47"
6045
-
integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=
6046
-
6047
-
to-fast-properties@^2.0.0:
6048
-
version "2.0.0"
6049
-
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
6050
-
integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=
6051
-
6052
-
to-object-path@^0.3.0:
6053
-
version "0.3.0"
6054
-
resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
6055
-
integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=
6056
-
dependencies:
6057
-
kind-of "^3.0.2"
6058
-
6059
-
to-regex-range@^2.1.0:
6060
-
version "2.1.1"
6061
-
resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
6062
-
integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=
6063
-
dependencies:
6064
-
is-number "^3.0.0"
6065
-
repeat-string "^1.6.1"
6066
-
6067
-
to-regex@^3.0.1, to-regex@^3.0.2:
6068
-
version "3.0.2"
6069
-
resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
6070
-
integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
6071
-
dependencies:
6072
-
define-property "^2.0.2"
6073
-
extend-shallow "^3.0.2"
6074
-
regex-not "^1.0.2"
6075
-
safe-regex "^1.1.0"
6076
-
6077
-
tough-cookie@>=2.3.3:
6078
-
version "3.0.0"
6079
-
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-3.0.0.tgz#d2bceddebde633153ff20a52fa844a0dc71dacef"
6080
-
integrity sha512-LHMvg+RBP/mAVNqVbOX8t+iJ+tqhBA/t49DuI7+IDAWHrASnesqSu1vWbKB7UrE2yk+HMFUBMadRGMkB4VCfog==
6081
-
dependencies:
6082
-
ip-regex "^3.0.0"
6083
-
psl "^1.1.28"
6084
-
punycode "^2.1.1"
6085
-
6086
-
tough-cookie@^2.3.4:
6087
-
version "2.5.0"
6088
-
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
6089
-
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
6090
-
dependencies:
6091
-
psl "^1.1.28"
6092
-
punycode "^2.1.1"
6093
-
6094
-
tough-cookie@~2.4.3:
6095
-
version "2.4.3"
6096
-
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
6097
-
integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==
6098
-
dependencies:
6099
-
psl "^1.1.24"
6100
-
punycode "^1.4.1"
6101
-
6102
-
tr46@^1.0.1:
6103
-
version "1.0.1"
6104
-
resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
6105
-
integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=
6106
-
dependencies:
6107
-
punycode "^2.1.0"
6108
-
6109
-
trim-right@^1.0.1:
6110
-
version "1.0.1"
6111
-
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
6112
-
integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
6113
-
6114
-
tslib@1.9.3, tslib@^1.9.0:
6115
-
version "1.9.3"
6116
-
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
6117
-
integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
6118
-
6119
-
tunnel-agent@^0.6.0:
6120
-
version "0.6.0"
6121
-
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
6122
-
integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
6123
-
dependencies:
6124
-
safe-buffer "^5.0.1"
6125
-
6126
-
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
6127
-
version "0.14.5"
6128
-
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
6129
-
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
6130
-
6131
-
type-check@~0.3.2:
6132
-
version "0.3.2"
6133
-
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
6134
-
integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
6135
-
dependencies:
6136
-
prelude-ls "~1.1.2"
6137
-
6138
-
typescript@>=2.8.3:
6139
-
version "3.2.2"
6140
-
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.2.2.tgz#fe8101c46aa123f8353523ebdcf5730c2ae493e5"
6141
-
integrity sha512-VCj5UiSyHBjwfYacmDuc/NOk4QQixbE+Wn7MFJuS0nRuPQbof132Pw4u53dm264O8LPc2MVsc7RJNml5szurkg==
6142
-
6143
-
uglify-js@^3.1.4:
6144
-
version "3.4.9"
6145
-
resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.4.9.tgz#af02f180c1207d76432e473ed24a28f4a782bae3"
6146
-
integrity sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==
6147
-
dependencies:
6148
-
commander "~2.17.1"
6149
-
source-map "~0.6.1"
6150
-
6151
-
unicode-canonical-property-names-ecmascript@^1.0.4:
6152
-
version "1.0.4"
6153
-
resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818"
6154
-
integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==
6155
-
6156
-
unicode-match-property-ecmascript@^1.0.4:
6157
-
version "1.0.4"
6158
-
resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c"
6159
-
integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==
6160
-
dependencies:
6161
-
unicode-canonical-property-names-ecmascript "^1.0.4"
6162
-
unicode-property-aliases-ecmascript "^1.0.4"
6163
-
6164
-
unicode-match-property-value-ecmascript@^1.0.2:
6165
-
version "1.0.2"
6166
-
resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4"
6167
-
integrity sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==
6168
-
6169
-
unicode-property-aliases-ecmascript@^1.0.4:
6170
-
version "1.0.4"
6171
-
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0"
6172
-
integrity sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==
6173
-
6174
-
union-value@^1.0.0:
6175
-
version "1.0.0"
6176
-
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
6177
-
integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=
6178
-
dependencies:
6179
-
arr-union "^3.1.0"
6180
-
get-value "^2.0.6"
6181
-
is-extendable "^0.1.1"
6182
-
set-value "^0.4.3"
6183
-
6184
-
uniq@^1.0.1:
6185
-
version "1.0.1"
6186
-
resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
6187
-
integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=
6188
-
6189
-
uniqs@^2.0.0:
6190
-
version "2.0.0"
6191
-
resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
6192
-
integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI=
6193
-
6194
-
universalify@^0.1.0:
6195
-
version "0.1.2"
6196
-
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
6197
-
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
6198
-
6199
-
unquote@~1.1.1:
6200
-
version "1.1.1"
6201
-
resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
6202
-
integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=
6203
-
6204
-
unset-value@^1.0.0:
6205
-
version "1.0.0"
6206
-
resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
6207
-
integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=
6208
-
dependencies:
6209
-
has-value "^0.3.1"
6210
-
isobject "^3.0.0"
6211
-
6212
-
uri-js@^4.2.2:
6213
-
version "4.2.2"
6214
-
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
6215
-
integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
6216
-
dependencies:
6217
-
punycode "^2.1.0"
6218
-
6219
-
urix@^0.1.0:
6220
-
version "0.1.0"
6221
-
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
6222
-
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
6223
-
6224
-
use@^3.1.0:
6225
-
version "3.1.1"
6226
-
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
6227
-
integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
6228
-
6229
-
util-deprecate@~1.0.1:
6230
-
version "1.0.2"
6231
-
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
6232
-
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
6233
-
6234
-
util.promisify@^1.0.0, util.promisify@~1.0.0:
6235
-
version "1.0.0"
6236
-
resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030"
6237
-
integrity sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==
6238
-
dependencies:
6239
-
define-properties "^1.1.2"
6240
-
object.getownpropertydescriptors "^2.0.3"
6241
-
6242
-
uuid@^3.3.2:
6243
-
version "3.3.2"
6244
-
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
6245
-
integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==
6246
-
6247
-
validate-npm-package-license@^3.0.1:
6248
-
version "3.0.4"
6249
-
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
6250
-
integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
6251
-
dependencies:
6252
-
spdx-correct "^3.0.0"
6253
-
spdx-expression-parse "^3.0.0"
6254
-
6255
-
vendors@^1.0.0:
6256
-
version "1.0.2"
6257
-
resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.2.tgz#7fcb5eef9f5623b156bcea89ec37d63676f21801"
6258
-
integrity sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==
6259
-
6260
-
verror@1.10.0:
6261
-
version "1.10.0"
6262
-
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
6263
-
integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
6264
-
dependencies:
6265
-
assert-plus "^1.0.0"
6266
-
core-util-is "1.0.2"
6267
-
extsprintf "^1.2.0"
6268
-
6269
-
vlq@^0.2.1, vlq@^0.2.2:
6270
-
version "0.2.3"
6271
-
resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26"
6272
-
integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==
6273
-
6274
-
vlq@^1.0.0:
6275
-
version "1.0.0"
6276
-
resolved "https://registry.yarnpkg.com/vlq/-/vlq-1.0.0.tgz#8101be90843422954c2b13eb27f2f3122bdcc806"
6277
-
integrity sha512-o3WmXySo+oI5thgqr7Qy8uBkT/v9Zr+sRyrh1lr8aWPUkgDWdWt4Nae2WKBrLsocgE8BuWWD0jLc+VW8LeU+2g==
6278
-
6279
-
w3c-hr-time@^1.0.1:
6280
-
version "1.0.1"
6281
-
resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz#82ac2bff63d950ea9e3189a58a65625fedf19045"
6282
-
integrity sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=
6283
-
dependencies:
6284
-
browser-process-hrtime "^0.1.2"
6285
-
6286
-
walker@~1.0.5:
6287
-
version "1.0.7"
6288
-
resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb"
6289
-
integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=
6290
-
dependencies:
6291
-
makeerror "1.0.x"
6292
-
6293
-
watch@~0.18.0:
6294
-
version "0.18.0"
6295
-
resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986"
6296
-
integrity sha1-KAlUdsbffJDJYxOJkMClQj60uYY=
6297
-
dependencies:
6298
-
exec-sh "^0.2.0"
6299
-
minimist "^1.2.0"
6300
-
6301
-
webidl-conversions@^4.0.2:
6302
-
version "4.0.2"
6303
-
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
6304
-
integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
6305
-
6306
-
whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.3:
6307
-
version "1.0.5"
6308
-
resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
6309
-
integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
6310
-
dependencies:
6311
-
iconv-lite "0.4.24"
6312
-
6313
-
whatwg-mimetype@^2.1.0, whatwg-mimetype@^2.2.0:
6314
-
version "2.3.0"
6315
-
resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
6316
-
integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
6317
-
6318
-
whatwg-url@^6.4.1:
6319
-
version "6.5.0"
6320
-
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-6.5.0.tgz#f2df02bff176fd65070df74ad5ccbb5a199965a8"
6321
-
integrity sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==
6322
-
dependencies:
6323
-
lodash.sortby "^4.7.0"
6324
-
tr46 "^1.0.1"
6325
-
webidl-conversions "^4.0.2"
6326
-
6327
-
whatwg-url@^7.0.0:
6328
-
version "7.0.0"
6329
-
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.0.0.tgz#fde926fa54a599f3adf82dff25a9f7be02dc6edd"
6330
-
integrity sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==
6331
-
dependencies:
6332
-
lodash.sortby "^4.7.0"
6333
-
tr46 "^1.0.1"
6334
-
webidl-conversions "^4.0.2"
6335
-
6336
-
whet.extend@~0.9.9:
6337
-
version "0.9.9"
6338
-
resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
6339
-
integrity sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=
6340
-
6341
-
which-module@^2.0.0:
6342
-
version "2.0.0"
6343
-
resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a"
6344
-
integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
6345
-
6346
-
which-pm-runs@^1.0.0:
6347
-
version "1.0.0"
6348
-
resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb"
6349
-
integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=
6350
-
6351
-
which@1, which@^1.2.12, which@^1.2.9, which@^1.3.0:
6352
-
version "1.3.1"
6353
-
resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
6354
-
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
6355
-
dependencies:
6356
-
isexe "^2.0.0"
6357
-
6358
-
wide-align@^1.1.0:
6359
-
version "1.1.3"
6360
-
resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
6361
-
integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
6362
-
dependencies:
6363
-
string-width "^1.0.2 || 2"
6364
-
6365
-
wordwrap@~0.0.2:
6366
-
version "0.0.3"
6367
-
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
6368
-
integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc=
6369
-
6370
-
wordwrap@~1.0.0:
6371
-
version "1.0.0"
6372
-
resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
6373
-
integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=
6374
-
6375
-
wrap-ansi@^2.0.0:
6376
-
version "2.1.0"
6377
-
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85"
6378
-
integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=
6379
-
dependencies:
6380
-
string-width "^1.0.1"
6381
-
strip-ansi "^3.0.1"
6382
-
6383
-
wrappy@1:
6384
-
version "1.0.2"
6385
-
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
6386
-
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
6387
-
6388
-
write-file-atomic@^2.1.0:
6389
-
version "2.3.0"
6390
-
resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.3.0.tgz#1ff61575c2e2a4e8e510d6fa4e243cce183999ab"
6391
-
integrity sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==
6392
-
dependencies:
6393
-
graceful-fs "^4.1.11"
6394
-
imurmurhash "^0.1.4"
6395
-
signal-exit "^3.0.2"
6396
-
6397
-
ws@^5.2.0:
6398
-
version "5.2.2"
6399
-
resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f"
6400
-
integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==
6401
-
dependencies:
6402
-
async-limiter "~1.0.0"
6403
-
6404
-
xml-name-validator@^3.0.0:
6405
-
version "3.0.0"
6406
-
resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
6407
-
integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
6408
-
6409
-
xtend@^4.0.0:
6410
-
version "4.0.1"
6411
-
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
6412
-
integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68=
6413
-
6414
-
y18n@^3.2.1:
6415
-
version "3.2.1"
6416
-
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
6417
-
integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
6418
-
6419
-
yallist@^2.1.2:
6420
-
version "2.1.2"
6421
-
resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
6422
-
integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
6423
-
6424
-
yallist@^3.0.0, yallist@^3.0.2:
6425
-
version "3.0.3"
6426
-
resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9"
6427
-
integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==
6428
-
6429
-
yargs-parser@^9.0.2:
6430
-
version "9.0.2"
6431
-
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077"
6432
-
integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=
6433
-
dependencies:
6434
-
camelcase "^4.1.0"
6435
-
6436
-
yargs@^11.0.0:
6437
-
version "11.1.0"
6438
-
resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77"
6439
-
integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A==
6440
-
dependencies:
6441
-
cliui "^4.0.0"
6442
-
decamelize "^1.1.1"
6443
-
find-up "^2.1.0"
6444
-
get-caller-file "^1.0.1"
6445
-
os-locale "^2.0.0"
6446
-
require-directory "^2.1.1"
6447
-
require-main-filename "^1.0.1"
6448
-
set-blocking "^2.0.0"
6449
-
string-width "^2.0.0"
6450
-
which-module "^2.0.0"
6451
-
y18n "^3.2.1"
6452
-
yargs-parser "^9.0.2"