@untemps/react-vocal 2.0.0-beta.1 → 2.0.0-beta.11

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/README.md +55 -21
  3. package/dist/index.cjs +7 -0
  4. package/dist/index.es.js +330 -1914
  5. package/package.json +25 -9
  6. package/.github/workflows/publish.yml +0 -32
  7. package/.husky/commit-msg +0 -1
  8. package/.husky/pre-commit +0 -1
  9. package/.prettierignore +0 -3
  10. package/.prettierrc +0 -29
  11. package/CLAUDE.md +0 -59
  12. package/assets/icon-idle.png +0 -0
  13. package/assets/icon-listening.png +0 -0
  14. package/assets/microphone.png +0 -0
  15. package/assets/react-vocal.png +0 -0
  16. package/commitlint.config.js +0 -7
  17. package/dev/index.html +0 -24
  18. package/dev/package.json +0 -18
  19. package/dev/public/index.html +0 -24
  20. package/dev/src/index.jsx +0 -45
  21. package/dev/vite.config.js +0 -10
  22. package/dev/yarn.lock +0 -201
  23. package/dist/index.es.js.map +0 -1
  24. package/dist/index.js +0 -9
  25. package/dist/index.js.map +0 -1
  26. package/dist/index.umd.js +0 -9
  27. package/dist/index.umd.js.map +0 -1
  28. package/src/components/Icon.jsx +0 -24
  29. package/src/components/Vocal.jsx +0 -168
  30. package/src/components/__tests__/Icon.test.jsx +0 -38
  31. package/src/components/__tests__/Vocal.test.jsx +0 -270
  32. package/src/components/__tests__/VocalWithMockedUseVocal.test.jsx +0 -38
  33. package/src/components/__tests__/__snapshots__/Icon.test.jsx.snap +0 -21
  34. package/src/components/__tests__/__snapshots__/Vocal.test.jsx.snap +0 -28
  35. package/src/hooks/__tests__/useCommands.test.js +0 -64
  36. package/src/hooks/__tests__/useTimeout.test.js +0 -69
  37. package/src/hooks/__tests__/useVocal.test.js +0 -197
  38. package/src/hooks/useCommands.js +0 -21
  39. package/src/hooks/useTimeout.js +0 -21
  40. package/src/hooks/useVocal.js +0 -56
  41. package/src/index.js +0 -7
  42. package/vite.config.js +0 -35
  43. package/vitest.setup.js +0 -71
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@untemps/react-vocal",
3
- "version": "2.0.0-beta.1",
3
+ "version": "2.0.0-beta.11",
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,13 +20,28 @@
20
20
  "publishConfig": {
21
21
  "access": "public"
22
22
  },
23
- "main": "dist/index.js",
23
+ "files": [
24
+ "dist/index.cjs",
25
+ "dist/index.es.js",
26
+ "CHANGELOG.md"
27
+ ],
28
+ "type": "module",
29
+ "main": "dist/index.cjs",
24
30
  "module": "dist/index.es.js",
31
+ "sideEffects": false,
32
+ "exports": {
33
+ ".": {
34
+ "import": "./dist/index.es.js",
35
+ "require": "./dist/index.cjs",
36
+ "default": "./dist/index.es.js"
37
+ }
38
+ },
25
39
  "engines": {
26
40
  "node": "^20.19.0 || >=22.12.0"
27
41
  },
28
42
  "devDependencies": {
29
43
  "@commitlint/cli": "^20.5.3",
44
+ "fuse.js": "^7.3.0",
30
45
  "@commitlint/config-conventional": "^20.5.3",
31
46
  "@semantic-release/changelog": "^6.0.3",
32
47
  "@semantic-release/git": "^10.0.1",
@@ -47,12 +62,17 @@
47
62
  "vitest": "^4.1.5"
48
63
  },
49
64
  "peerDependencies": {
65
+ "fuse.js": ">=6.0.0",
50
66
  "react": ">=16.13.1",
51
67
  "react-dom": ">=16.13.1"
52
68
  },
69
+ "peerDependenciesMeta": {
70
+ "fuse.js": {
71
+ "optional": true
72
+ }
73
+ },
53
74
  "dependencies": {
54
- "@untemps/vocal": "^1.3.0",
55
- "fuse.js": "^7.3.0"
75
+ "@untemps/vocal": "^2.0.1"
56
76
  },
57
77
  "release": {
58
78
  "branches": [
@@ -83,16 +103,12 @@
83
103
  {
84
104
  "assets": [
85
105
  {
86
- "path": "dist/index.js",
106
+ "path": "dist/index.cjs",
87
107
  "label": "CJS distribution"
88
108
  },
89
109
  {
90
110
  "path": "dist/index.es.js",
91
111
  "label": "ES distribution"
92
- },
93
- {
94
- "path": "dist/index.umd.js",
95
- "label": "UMD distribution"
96
112
  }
97
113
  ]
98
114
  }
@@ -1,32 +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
- env:
16
- HUSKY: '0'
17
- steps:
18
- - uses: actions/checkout@v6
19
- with:
20
- fetch-depth: 0
21
- - uses: actions/setup-node@v6
22
- with:
23
- node-version: '24'
24
- - run: yarn install --frozen-lockfile
25
- - run: yarn test:ci
26
- - run: yarn build
27
- - run: npx semantic-release
28
- env:
29
- GITHUB_TOKEN: ${{ secrets.GH_TOKEN }}
30
- - uses: codecov/codecov-action@v5
31
- with:
32
- files: coverage/lcov.info
package/.husky/commit-msg DELETED
@@ -1 +0,0 @@
1
- npx --no -- commitlint --edit "$1"
package/.husky/pre-commit DELETED
@@ -1 +0,0 @@
1
- yarn test:ci && yarn prettier
package/.prettierignore DELETED
@@ -1,3 +0,0 @@
1
- dist/
2
- node_modules/
3
- coverage/
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,59 +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 (Vitest)
9
- yarn test:ci # CI mode with coverage (also runs in pre-commit hook)
10
- yarn build # build CJS + ES + UMD to dist/ (Vite library mode)
11
- yarn dev # dev server at http://localhost:10001/ (separate dev/ package)
12
- yarn prettier # format all JS files and stage tracked changes
13
- ```
14
-
15
- Run a single test file:
16
- ```bash
17
- yarn vitest src/hooks/__tests__/useVocal.test.js
18
- ```
19
-
20
- Build formats defined in `vite.config.js` `build.lib`: `cjs` → `dist/index.js`, `es` → `dist/index.es.js`, `umd` → `dist/index.umd.js`.
21
-
22
- ## Architecture
23
-
24
- 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.jsx`)
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
- All props have default values in the function signature (React 19: `defaultProps` no longer applied to function components). No `propTypes` — removed as deprecated in React 19.
48
-
49
- The `__rsInstance` prop (undocumented) injects a custom `SpeechRecognitionWrapper` instance, used exclusively in tests.
50
-
51
- ### Testing
52
-
53
- `vitest.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.
54
-
55
- Vitest globals are enabled (`globals: true`) — `describe`, `it`, `expect`, `vi` available without imports in test files.
56
-
57
- ## Commit convention
58
-
59
- Angular Conventional Commits (`feat`, `fix`, `chore`, `docs`, etc.). Enforced by commitlint on `commit-msg` hook.
Binary file
Binary file
Binary file
Binary file
@@ -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
- }
package/dev/index.html DELETED
@@ -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="react-vocal" />
8
- <title>react-vocal</title>
9
- <style>
10
- * {
11
- font-family: Arial, sans-serif;
12
- font-size: 12px;
13
- }
14
- body {
15
- padding: 32px;
16
- }
17
- </style>
18
- </head>
19
- <body>
20
- <noscript>You need to enable JavaScript to run this app.</noscript>
21
- <div id="root"></div>
22
- <script type="module" src="/src/index.jsx"></script>
23
- </body>
24
- </html>
package/dev/package.json DELETED
@@ -1,18 +0,0 @@
1
- {
2
- "name": "react-vocal-demo",
3
- "version": "1.0.0",
4
- "private": true,
5
- "scripts": {
6
- "dev": "vite",
7
- "build": "vite build",
8
- "preview": "vite preview"
9
- },
10
- "dependencies": {
11
- "react": "^19.2.5",
12
- "react-dom": "^19.2.5"
13
- },
14
- "devDependencies": {
15
- "@vitejs/plugin-react": "^6.0.1",
16
- "vite": "^8.0.10"
17
- }
18
- }
@@ -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>
package/dev/src/index.jsx DELETED
@@ -1,45 +0,0 @@
1
- import React, { useState } from 'react'
2
- import { createRoot } from 'react-dom/client'
3
-
4
- import Vocal from '../../src'
5
-
6
- const App = () => {
7
- const [logs, setLogs] = useState('')
8
- const [borderColor, setBorderColor] = useState()
9
-
10
- const _log = (value) => setLogs((logs) => `${logs}${logs.length > 0 ? '\n' : ''} ----- ${value}`)
11
-
12
- const _onVocalStart = () => {
13
- _log('start')
14
- }
15
-
16
- const _onVocalEnd = () => {
17
- _log(`end`)
18
- }
19
-
20
- const _onVocalResult = (result) => {
21
- _log(`result: "${result}"`)
22
- }
23
-
24
- const _onVocalError = (e) => {
25
- _log(e.message)
26
- }
27
-
28
- return (
29
- <>
30
- <Vocal
31
- lang="fr"
32
- commands={{
33
- 'Change la bordure en rouge': () => setBorderColor('red'),
34
- }}
35
- onStart={_onVocalStart}
36
- onEnd={_onVocalEnd}
37
- onResult={_onVocalResult}
38
- onError={_onVocalError}
39
- />
40
- <textarea value={logs} rows={30} disabled style={{ width: '100%', marginTop: 16, borderColor }} />
41
- </>
42
- )
43
- }
44
-
45
- createRoot(document.getElementById('root')).render(<App />)
@@ -1,10 +0,0 @@
1
- import { defineConfig } from 'vite'
2
- import react from '@vitejs/plugin-react'
3
-
4
- export default defineConfig({
5
- plugins: [react()],
6
- server: {
7
- port: 10001,
8
- open: true,
9
- },
10
- })
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"