@untemps/react-vocal 1.7.37 → 2.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@untemps/react-vocal",
3
- "version": "1.7.37",
3
+ "version": "2.0.0-beta.10",
4
4
  "author": "Vincent Le Badezet <v.lebadezet@untemps.net>",
5
5
  "repository": "git@github.com:untemps/react-vocal.git",
6
6
  "license": "MIT",
@@ -20,71 +20,51 @@
20
20
  "publishConfig": {
21
21
  "access": "public"
22
22
  },
23
+ "files": [
24
+ "dist/index.js",
25
+ "dist/index.es.js",
26
+ "CHANGELOG.md"
27
+ ],
23
28
  "main": "dist/index.js",
24
29
  "module": "dist/index.es.js",
25
30
  "engines": {
26
- "node": ">=18.0.0"
31
+ "node": "^20.19.0 || >=22.12.0"
27
32
  },
28
33
  "devDependencies": {
29
- "@babel/cli": "^7.12.10",
30
- "@babel/core": "^7.12.10",
31
- "@babel/plugin-proposal-class-properties": "^7.12.1",
32
- "@babel/plugin-transform-react-jsx": "^7.12.12",
33
- "@babel/plugin-transform-runtime": "^7.12.10",
34
- "@babel/preset-env": "^7.12.11",
35
- "@babel/preset-react": "^7.12.10",
36
- "@commitlint/cli": "^9.1.1",
37
- "@commitlint/config-conventional": "^9.1.1",
38
- "@rollup/plugin-babel": "^5.2.2",
39
- "@rollup/plugin-commonjs": "^17.0.0",
40
- "@rollup/plugin-node-resolve": "^11.0.1",
34
+ "@commitlint/cli": "^20.5.3",
35
+ "fuse.js": "^7.3.0",
36
+ "@commitlint/config-conventional": "^20.5.3",
41
37
  "@semantic-release/changelog": "^6.0.3",
42
38
  "@semantic-release/git": "^10.0.1",
43
39
  "@semantic-release/github": "^12.0.6",
44
- "@testing-library/dom": "^7.29.0",
45
- "@testing-library/jest-dom": "^5.11.6",
46
- "@testing-library/react": "^11.2.2",
47
- "@testing-library/react-hooks": "^3.7.0",
48
- "@untemps/utils": "^2.0.0-beta.1",
49
- "babel-jest": "^28.0.0-alpha.11",
50
- "cross-env": "^7.0.3",
51
- "husky": "^4.3.6",
52
- "jest": "^28.0.0-alpha.11",
53
- "jest-environment-jsdom": "^28.0.0-alpha.11",
54
- "prettier": "^2.2.1",
55
- "prop-types": "^15.7.2",
56
- "react": "^17.0.1",
57
- "react-dom": "^17.0.1",
58
- "react-test-renderer": "^17.0.1",
59
- "rimraf": "^3.0.2",
60
- "rollup": "^2.35.1",
61
- "rollup-plugin-sizes": "^1.0.4",
62
- "rollup-plugin-terser": "^7.0.2",
63
- "rollup-plugin-visualizer": "^5.14.0",
64
- "semantic-release": "^25.0.3"
40
+ "@testing-library/dom": "^10.4.1",
41
+ "@testing-library/jest-dom": "^6.9.1",
42
+ "@testing-library/react": "^16.3.2",
43
+ "@untemps/utils": "^3.2.0",
44
+ "@vitejs/plugin-react": "^6.0.1",
45
+ "@vitest/coverage-v8": "^4.1.5",
46
+ "husky": "^9.1.7",
47
+ "jsdom": "^29.1.1",
48
+ "prettier": "^3.8.3",
49
+ "react": "^19.2.5",
50
+ "react-dom": "^19.2.5",
51
+ "semantic-release": "^25.0.3",
52
+ "vite": "^8.0.10",
53
+ "vitest": "^4.1.5"
65
54
  },
66
55
  "peerDependencies": {
67
- "react": "^16.13.1",
68
- "react-dom": "^16.13.1"
69
- },
70
- "dependencies": {
71
- "@untemps/vocal": "^1.3.0",
72
- "fuse.js": "^6.4.6"
73
- },
74
- "jest": {
75
- "coverageDirectory": "./coverage/",
76
- "collectCoverage": true,
77
- "setupFilesAfterEnv": [
78
- "<rootDir>/jest/jest.setup.js"
79
- ],
80
- "restoreMocks": true
56
+ "fuse.js": ">=6.0.0",
57
+ "react": ">=16.13.1",
58
+ "react-dom": ">=16.13.1"
81
59
  },
82
- "husky": {
83
- "hooks": {
84
- "pre-commit": "yarn test:ci && yarn prettier",
85
- "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
60
+ "peerDependenciesMeta": {
61
+ "fuse.js": {
62
+ "optional": true
86
63
  }
87
64
  },
65
+ "dependencies": {
66
+ "@untemps/vocal": "^2.0.1"
67
+ },
88
68
  "release": {
89
69
  "branches": [
90
70
  "main",
@@ -120,10 +100,6 @@
120
100
  {
121
101
  "path": "dist/index.es.js",
122
102
  "label": "ES distribution"
123
- },
124
- {
125
- "path": "dist/index.umd.js",
126
- "label": "UMD distribution"
127
103
  }
128
104
  ]
129
105
  }
@@ -131,13 +107,11 @@
131
107
  ]
132
108
  },
133
109
  "scripts": {
134
- "dev": "cd dev && rimraf dist && yarn && yarn start",
135
- "test": "jest -u --watch",
136
- "test:ci": "jest -u -b --ci --coverage",
137
- "build": "rimraf dist && yarn build:cjs && yarn build:es && yarn build:umd",
138
- "build:cjs": "cross-env NODE_ENV=production BABEL_ENV=cjs rollup -c",
139
- "build:es": "cross-env NODE_ENV=production BABEL_ENV=es rollup -c",
140
- "build:umd": "cross-env NODE_ENV=production BABEL_ENV=umd rollup -c",
141
- "prettier": "prettier \"*/**/*.js\" --ignore-path ./.prettierignore --write && git add . && git status"
110
+ "dev": "cd dev && yarn && yarn dev",
111
+ "test": "vitest",
112
+ "test:ci": "vitest run --coverage",
113
+ "build": "vite build",
114
+ "prepare": "husky",
115
+ "prettier": "prettier \"*/**/*.js\" --ignore-path ./.prettierignore --write && git add -u && git status"
142
116
  }
143
117
  }
@@ -1,30 +0,0 @@
1
- name: "Publish package"
2
- on:
3
- push:
4
- branches:
5
- - main
6
- - beta
7
- permissions:
8
- contents: write
9
- id-token: write
10
- pull-requests: write
11
- issues: write
12
- jobs:
13
- release:
14
- runs-on: ubuntu-latest
15
- steps:
16
- - uses: actions/checkout@v6
17
- with:
18
- fetch-depth: 0
19
- - uses: actions/setup-node@v6
20
- with:
21
- node-version: '24'
22
- - run: yarn install --frozen-lockfile
23
- - run: yarn test:ci
24
- - run: yarn build
25
- - run: npx semantic-release
26
- env:
27
- GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
28
- - uses: codecov/codecov-action@v5
29
- with:
30
- files: coverage/lcov.info
package/.prettierignore DELETED
@@ -1,2 +0,0 @@
1
- dist/
2
- node_modules/
package/.prettierrc DELETED
@@ -1,29 +0,0 @@
1
- {
2
- "printWidth": 120,
3
- "useTabs": true,
4
- "tabWidth": 4,
5
- "singleQuote": true,
6
- "semi": false,
7
- "trailingComma": "es5",
8
- "bracketSpacing": true,
9
- "overrides": [
10
- {
11
- "files": "./**/*.js",
12
- "options": {
13
- "parser": "babylon"
14
- }
15
- },
16
- {
17
- "files": "./**/*.json",
18
- "options": {
19
- "parser": "json"
20
- }
21
- },
22
- {
23
- "files": ".prettierrc",
24
- "options": {
25
- "parser": "json"
26
- }
27
- }
28
- ]
29
- }
package/CLAUDE.md DELETED
@@ -1,55 +0,0 @@
1
- # CLAUDE.md
2
-
3
- This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
-
5
- ## Commands
6
-
7
- ```bash
8
- yarn test # watch mode
9
- yarn test:ci # CI mode with coverage (also runs in pre-commit hook)
10
- yarn build # build CJS + ES + UMD to dist/
11
- yarn dev # dev server at http://localhost:10001/ (separate dev/ package)
12
- yarn prettier # format all JS files and stage changes
13
- ```
14
-
15
- Run a single test file:
16
- ```bash
17
- yarn jest src/hooks/__tests__/useVocal.test.js
18
- ```
19
-
20
- Build formats are driven by `BABEL_ENV`: `cjs` → `dist/index.js`, `es` → `dist/index.es.js`, `umd` → `dist/index.umd.js`.
21
-
22
- ## Architecture
23
-
24
- This is a React library wrapping the [Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API) via `@untemps/vocal` (the `SpeechRecognitionWrapper` class).
25
-
26
- ### Public API (`src/index.js`)
27
-
28
- - **`Vocal`** (default export) — the component
29
- - **`useVocal`** — named export, the hook
30
- - **`isSupported`** — boolean re-exported from `@untemps/vocal`
31
-
32
- ### Hook layer (`src/hooks/`)
33
-
34
- | Hook | Role |
35
- |------|------|
36
- | `useVocal` | Creates/manages a `SpeechRecognitionWrapper` instance in a ref. Returns `[ref, { start, stop, abort, subscribe, unsubscribe, clean }]`. Instance is re-created when `lang` or `grammars` change. |
37
- | `useCommands` | Fuzzy-matches a speech result string against a `commands` map using **fuse.js** (default score threshold `0.4` — lower = stricter). Keys are lowercased. |
38
- | `useTimeout` | Manages the recognition timeout: starts on `start` event, pauses on `speechstart`, restarts on `speechend`, fires `_onEnd` on expiry. |
39
-
40
- ### Component (`src/components/Vocal.js`)
41
-
42
- Composes the three hooks above. Three render modes depending on `children`:
43
- - **function** `(start, stop, isStarted) => element` — full control
44
- - **React element** — receives `onClick` injected via `cloneElement`
45
- - **no children** — renders the default `<Icon>` button
46
-
47
- The `__rsInstance` prop (undocumented) injects a custom `SpeechRecognitionWrapper` instance, used exclusively in tests.
48
-
49
- ### Testing
50
-
51
- `jest/jest.setup.js` globally mocks `SpeechRecognition`, `Permissions`, `MediaDevices`, and `SpeechGrammarList`. The mock exposes a custom `say(sentence)` method that fires the full `speechstart → result/nomatch → speechend` event sequence synchronously — use it to simulate recognition in tests.
52
-
53
- ## Commit convention
54
-
55
- Angular Conventional Commits (`feat`, `fix`, `chore`, `docs`, etc.). Enforced by commitlint on `commit-msg` hook.
Binary file
Binary file
Binary file
Binary file
package/babel.config.js DELETED
@@ -1,12 +0,0 @@
1
- module.exports = api => ({
2
- "presets": [
3
- "@babel/preset-env",
4
- "@babel/preset-react"
5
- ],
6
- "plugins": [
7
- "@babel/plugin-proposal-class-properties",
8
- "@babel/plugin-transform-react-jsx",
9
- ...(api.env('test') ? ["@babel/plugin-transform-runtime"] : [])
10
- ]
11
- })
12
-
@@ -1,7 +0,0 @@
1
- module.exports = {
2
- extends: ['@commitlint/config-conventional'],
3
- rules: {
4
- 'subject-case': [2, 'always', ['sentence-case']],
5
- 'scope-case': [2, 'always', ['lower-case', 'upper-case']]
6
- },
7
- }
@@ -1,4 +0,0 @@
1
- module.exports = {
2
- presets: ['@babel/preset-react'],
3
- plugins: ['@babel/plugin-proposal-class-properties', '@babel/plugin-transform-react-jsx'],
4
- }
package/dev/package.json DELETED
@@ -1,14 +0,0 @@
1
- {
2
- "name": "react-vocal-demo",
3
- "version": "1.0.0",
4
- "main": "index.js",
5
- "license": "MIT",
6
- "devDependencies": {
7
- "@rollup/plugin-replace": "^2.3.3",
8
- "rollup-plugin-livereload": "^2.0.0",
9
- "rollup-plugin-serve": "^1.0.4"
10
- },
11
- "scripts": {
12
- "start": "rollup -c -w"
13
- }
14
- }
@@ -1,24 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1" />
6
- <meta name="theme-color" content="#000000" />
7
- <meta name="description" content="Web site created using create-react-app" />
8
- <title>react-vocal</title>
9
- <script src="./index.js" type="module"></script>
10
- <style>
11
- * {
12
- font-family: Arial,sans-serif;
13
- font-size: 12px;
14
- }
15
- body {
16
- padding: 32px;
17
- }
18
- </style>
19
- </head>
20
- <body>
21
- <noscript>You need to enable JavaScript to run this app.</noscript>
22
- <div id="root"></div>
23
- </body>
24
- </html>
@@ -1,29 +0,0 @@
1
- import babel from '@rollup/plugin-babel'
2
- import resolve from '@rollup/plugin-node-resolve'
3
- import replace from '@rollup/plugin-replace'
4
- import serve from 'rollup-plugin-serve'
5
- import livereload from 'rollup-plugin-livereload'
6
- import commonjs from '@rollup/plugin-commonjs'
7
-
8
- export default {
9
- input: 'src/index.js',
10
- output: {
11
- file: 'dist/index.js',
12
- },
13
- plugins: [
14
- replace({
15
- 'process.env.NODE_ENV': JSON.stringify('development'),
16
- }),
17
- babel({
18
- exclude: 'node_modules/**',
19
- babelHelpers: 'bundled',
20
- }),
21
- resolve(),
22
- commonjs(),
23
- serve({
24
- open: true,
25
- contentBase: ['dist', 'public'],
26
- }),
27
- livereload(),
28
- ],
29
- }
package/dev/src/index.js DELETED
@@ -1,46 +0,0 @@
1
- import 'regenerator-runtime/runtime'
2
- import React, { useState } from 'react'
3
- import ReactDOM from 'react-dom'
4
-
5
- import Vocal from '../../src'
6
-
7
- const App = () => {
8
- const [logs, setLogs] = useState('')
9
- const [borderColor, setBorderColor] = useState()
10
-
11
- const _log = (value) => setLogs((logs) => `${logs}${logs.length > 0 ? '\n' : ''} ----- ${value}`)
12
-
13
- const _onVocalStart = () => {
14
- _log('start')
15
- }
16
-
17
- const _onVocalEnd = () => {
18
- _log(`end`)
19
- }
20
-
21
- const _onVocalResult = (result) => {
22
- _log(`result: "${result}"`)
23
- }
24
-
25
- const _onVocalError = (e) => {
26
- _log(e.message)
27
- }
28
-
29
- return (
30
- <>
31
- <Vocal
32
- lang="fr"
33
- commands={{
34
- 'Change la bordure en rouge': () => setBorderColor('red'),
35
- }}
36
- onStart={_onVocalStart}
37
- onEnd={_onVocalEnd}
38
- onResult={_onVocalResult}
39
- onError={_onVocalError}
40
- />
41
- <textarea value={logs} rows={30} disabled style={{ width: '100%', marginTop: 16, borderColor }} />
42
- </>
43
- )
44
- }
45
-
46
- ReactDOM.render(<App />, document.getElementById('root'))
package/dev/yarn.lock DELETED
@@ -1,201 +0,0 @@
1
- # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2
- # yarn lockfile v1
3
-
4
-
5
- "@rollup/plugin-replace@^2.3.3":
6
- version "2.3.3"
7
- resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.3.tgz#cd6bae39444de119f5d905322b91ebd4078562e7"
8
- integrity sha512-XPmVXZ7IlaoWaJLkSCDaa0Y6uVo5XQYHhiMFzOd5qSv5rE+t/UJToPIOE56flKIxBFQI27ONsxb7dqHnwSsjKQ==
9
- dependencies:
10
- "@rollup/pluginutils" "^3.0.8"
11
- magic-string "^0.25.5"
12
-
13
- "@rollup/pluginutils@^3.0.8":
14
- version "3.1.0"
15
- resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
16
- integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
17
- dependencies:
18
- "@types/estree" "0.0.39"
19
- estree-walker "^1.0.1"
20
- picomatch "^2.2.2"
21
-
22
- "@types/estree@0.0.39":
23
- version "0.0.39"
24
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
25
- integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
26
-
27
- anymatch@~3.1.1:
28
- version "3.1.1"
29
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142"
30
- integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==
31
- dependencies:
32
- normalize-path "^3.0.0"
33
- picomatch "^2.0.4"
34
-
35
- async-limiter@~1.0.0:
36
- version "1.0.1"
37
- resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
38
- integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
39
-
40
- binary-extensions@^2.0.0:
41
- version "2.1.0"
42
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9"
43
- integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==
44
-
45
- braces@~3.0.2:
46
- version "3.0.3"
47
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
48
- integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
49
- dependencies:
50
- fill-range "^7.1.1"
51
-
52
- chokidar@^3.3.0:
53
- version "3.4.2"
54
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d"
55
- integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==
56
- dependencies:
57
- anymatch "~3.1.1"
58
- braces "~3.0.2"
59
- glob-parent "~5.1.0"
60
- is-binary-path "~2.1.0"
61
- is-glob "~4.0.1"
62
- normalize-path "~3.0.0"
63
- readdirp "~3.4.0"
64
- optionalDependencies:
65
- fsevents "~2.1.2"
66
-
67
- estree-walker@^1.0.1:
68
- version "1.0.1"
69
- resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
70
- integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
71
-
72
- fill-range@^7.1.1:
73
- version "7.1.1"
74
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
75
- integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
76
- dependencies:
77
- to-regex-range "^5.0.1"
78
-
79
- fsevents@~2.1.2:
80
- version "2.1.3"
81
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e"
82
- integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==
83
-
84
- glob-parent@~5.1.0:
85
- version "5.1.2"
86
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
87
- integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
88
- dependencies:
89
- is-glob "^4.0.1"
90
-
91
- is-binary-path@~2.1.0:
92
- version "2.1.0"
93
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
94
- integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
95
- dependencies:
96
- binary-extensions "^2.0.0"
97
-
98
- is-extglob@^2.1.1:
99
- version "2.1.1"
100
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
101
- integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
102
-
103
- is-glob@^4.0.1, is-glob@~4.0.1:
104
- version "4.0.1"
105
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
106
- integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
107
- dependencies:
108
- is-extglob "^2.1.1"
109
-
110
- is-number@^7.0.0:
111
- version "7.0.0"
112
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
113
- integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
114
-
115
- livereload-js@^3.1.0:
116
- version "3.3.1"
117
- resolved "https://registry.yarnpkg.com/livereload-js/-/livereload-js-3.3.1.tgz#61f887468086762e61fb2987412cf9d1dda99202"
118
- integrity sha512-CBu1gTEfzVhlOK1WASKAAJ9Qx1fHECTq0SUB67sfxwQssopTyvzqTlgl+c0h9pZ6V+Fzd2rc510ppuNusg9teQ==
119
-
120
- livereload@^0.9.1:
121
- version "0.9.1"
122
- resolved "https://registry.yarnpkg.com/livereload/-/livereload-0.9.1.tgz#65125dabdf2db4fd3f1169e953fe56e3bcc6f477"
123
- integrity sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==
124
- dependencies:
125
- chokidar "^3.3.0"
126
- livereload-js "^3.1.0"
127
- opts ">= 1.2.0"
128
- ws "^6.2.1"
129
-
130
- magic-string@^0.25.5:
131
- version "0.25.7"
132
- resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
133
- integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==
134
- dependencies:
135
- sourcemap-codec "^1.4.4"
136
-
137
- mime@>=2.4.6:
138
- version "2.4.6"
139
- resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1"
140
- integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==
141
-
142
- normalize-path@^3.0.0, normalize-path@~3.0.0:
143
- version "3.0.0"
144
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
145
- integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
146
-
147
- opener@1:
148
- version "1.5.2"
149
- resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
150
- integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
151
-
152
- "opts@>= 1.2.0":
153
- version "2.0.2"
154
- resolved "https://registry.yarnpkg.com/opts/-/opts-2.0.2.tgz#a17e189fbbfee171da559edd8a42423bc5993ce1"
155
- integrity sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==
156
-
157
- picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2:
158
- version "2.3.2"
159
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.2.tgz#5a942915e26b372dc0f0e6753149a16e6b1c5601"
160
- integrity sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==
161
-
162
- readdirp@~3.4.0:
163
- version "3.4.0"
164
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada"
165
- integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==
166
- dependencies:
167
- picomatch "^2.2.1"
168
-
169
- rollup-plugin-livereload@^2.0.0:
170
- version "2.0.0"
171
- resolved "https://registry.yarnpkg.com/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.0.tgz#d3928d74e8cf2ae4286c5dd46b770fd3f3b82313"
172
- integrity sha512-oC/8NqumGYuphkqrfszOHUUIwzKsaHBICw6QRwT5uD07gvePTS+HW+GFwu6f9K8W02CUuTvtIM9AWJrbj4wE1A==
173
- dependencies:
174
- livereload "^0.9.1"
175
-
176
- rollup-plugin-serve@^1.0.4:
177
- version "1.0.4"
178
- resolved "https://registry.yarnpkg.com/rollup-plugin-serve/-/rollup-plugin-serve-1.0.4.tgz#17665974185f9007ecaeb0835c4e89612e04d234"
179
- integrity sha512-74Gh47+dGKhmy04MIu9deXwn8VGlWsk93HcGIbO+NCdZ9roRXVO7y4l/9MLAAujuYpzsWCopHHZT8/6PSRzGLg==
180
- dependencies:
181
- mime ">=2.4.6"
182
- opener "1"
183
-
184
- sourcemap-codec@^1.4.4:
185
- version "1.4.8"
186
- resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
187
- integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
188
-
189
- to-regex-range@^5.0.1:
190
- version "5.0.1"
191
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
192
- integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
193
- dependencies:
194
- is-number "^7.0.0"
195
-
196
- ws@^6.2.1:
197
- version "6.2.2"
198
- resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e"
199
- integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==
200
- dependencies:
201
- async-limiter "~1.0.0"