Yann commited on
Commit
78fee96
·
1 Parent(s): f23825d
This view is limited to 50 files because it contains too many changes.   See raw diff
.firebaserc ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "projects": {
3
+ "default": "signal-9546d"
4
+ }
5
+ }
.gitattributes DELETED
@@ -1,35 +0,0 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.gitignore CHANGED
@@ -44,3 +44,5 @@ testdata/format0.mid
44
  .vscode/launch.json
45
  .vscode/settings.json
46
  .vscode/tasks.json
 
 
 
44
  .vscode/launch.json
45
  .vscode/settings.json
46
  .vscode/tasks.json
47
+ public/A320U_drums.sf2
48
+ public/A320U.sf2
.prettierrc.json ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "semi": false
3
+ }
LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 ryohey
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
README.md CHANGED
@@ -1,10 +1,24 @@
1
- ---
2
- title: Midi-Demo
3
- emoji: 💗
4
- colorFrom: purple
5
- colorTo: pink
6
- sdk: docker
7
- pinned: false
8
- ---
9
-
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ![Node.js CI](https://github.com/ryohey/signal/workflows/Node.js%20CI/badge.svg) [![Join the chat at https://discord.gg/XQxzNdDJse](https://img.shields.io/badge/Discord-%235865F2.svg?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/XQxzNdDJse)
2
+
3
+ # Signal
4
+
5
+ A friendly music sequencer application built with web technology.
6
+
7
+ ## Goals
8
+
9
+ - Cross-platform
10
+ - NOT complicated UI
11
+ - MIDI format compatible
12
+
13
+ ## Concepts
14
+
15
+ Recording and finishing is the role of the DAW, making it an app that can be used quickly at the composition and sketching stages.
16
+ The following restrictions are given so that you can concentrate on composing without being distracted by the selection of sound sources and adjustment of effects.
17
+
18
+ - No high-quality sound
19
+ - No Fx
20
+ - Make it as lightweight as possible
21
+
22
+ ## Contribution
23
+
24
+ Any kind of contribution is welcome.
babel.config.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ module.exports = {
2
+ presets: [
3
+ [
4
+ "@babel/preset-env",
5
+ {
6
+ targets: {
7
+ browsers: [">0.25%", "not ie 11", "not op_mini all"],
8
+ },
9
+ },
10
+ ],
11
+ ["@babel/preset-typescript", { allowDeclareFields: true }],
12
+ [
13
+ "@babel/preset-react",
14
+ {
15
+ runtime: "automatic",
16
+ },
17
+ ],
18
+ ],
19
+ plugins: ["lodash", "@emotion", "inline-react-svg"],
20
+ }
firebase.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "firestore": {
3
+ "rules": "firestore.rules",
4
+ "indexes": "firestore.indexes.json"
5
+ },
6
+ "emulators": {
7
+ "auth": {
8
+ "port": 9099
9
+ },
10
+ "firestore": {
11
+ "port": 8080
12
+ },
13
+ "ui": {
14
+ "enabled": true
15
+ }
16
+ }
17
+ }
firestore.indexes.json ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ {
2
+ "indexes": [],
3
+ "fieldOverrides": []
4
+ }
firestore.rules ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ rules_version = '2';
2
+ service cloud.firestore {
3
+ match /databases/{database}/documents {
4
+ match /songs/{songId} {
5
+ allow read, delete: if request.auth != null && request.auth.uid == resource.data.userId;
6
+ allow update: if request.auth != null && request.auth.uid == resource.data.userId && !('uid' in request.writeFields);
7
+ allow create: if request.auth != null && request.auth.uid == request.resource.data.userId;
8
+ }
9
+ match /songData/{songDataId} {
10
+ allow read, delete: if request.auth != null && request.auth.uid == resource.data.userId;
11
+ allow update: if request.auth != null && request.auth.uid == resource.data.userId && !('uid' in request.writeFields);
12
+ allow create: if request.auth != null && request.auth.uid == request.resource.data.userId;
13
+ }
14
+ }
15
+ }
jest.config.js ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ module.exports = {
2
+ testEnvironment: "./src/test/CustomEnvironment.ts",
3
+ preset: "ts-jest/presets/js-with-babel-esm",
4
+ moduleFileExtensions: ["ts", "tsx", "js", "jsx"],
5
+ transformIgnorePatterns: ["/node_modules/(?!midifile-ts)"],
6
+ }
main.py DELETED
@@ -1,20 +0,0 @@
1
- from fastapi import FastAPI
2
- from fastapi.staticfiles import StaticFiles
3
- from fastapi.responses import FileResponse
4
-
5
- from transformers import pipeline
6
-
7
- app = FastAPI()
8
-
9
- pipe_flan = pipeline("text2text-generation", model="google/flan-t5-small")
10
-
11
- @app.get("/infer_t5")
12
- def t5(input):
13
- output = pipe_flan(input)
14
- return {"output": output[0]["generated_text"]}
15
-
16
- app.mount("/", StaticFiles(directory="static", html=True), name="static")
17
-
18
- @app.get("/")
19
- def index() -> FileResponse:
20
- return FileResponse(path="/app/static/index.html", media_type="text/html")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
package-lock.json ADDED
The diff for this file is too large to render. See raw diff
 
public/A320U-license.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ Copyright 2005 by Milton Paredes
2
+ Released under GNU GPL v2, see /usr/share/soundfonts/COPYING
public/carbon.css ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #carbonads * {
2
+ margin: initial;
3
+ padding: initial;
4
+ }
5
+
6
+ #carbonads {
7
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
8
+ Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", Helvetica, Arial,
9
+ sans-serif;
10
+ }
11
+
12
+ #carbonads {
13
+ padding: 10px 0 0 10px;
14
+ display: flex;
15
+ max-width: 330px;
16
+ background-color: #28292a;
17
+ border: 1px solid #1e2021;
18
+ }
19
+
20
+ #carbonads a {
21
+ color: #ddd;
22
+ text-decoration: none;
23
+ }
24
+
25
+ #carbonads a:hover {
26
+ color: #ddd;
27
+ }
28
+
29
+ #carbonads span {
30
+ position: relative;
31
+ display: block;
32
+ overflow: hidden;
33
+ }
34
+
35
+ #carbonads .carbon-wrap {
36
+ display: flex;
37
+ }
38
+
39
+ #carbonads .carbon-img {
40
+ display: block;
41
+ margin: 0 0 10px 0;
42
+ line-height: 1;
43
+ }
44
+
45
+ #carbonads .carbon-img img {
46
+ display: block;
47
+ }
48
+
49
+ #carbonads .carbon-text {
50
+ padding: 10px;
51
+ text-align: left;
52
+ font-size: 13px;
53
+ margin-bottom: 16px;
54
+ line-height: 1.5;
55
+ }
56
+
57
+ #carbonads .carbon-poweredby {
58
+ display: block;
59
+ padding: 6px 8px;
60
+ background: #1e2021;
61
+ color: #aaa;
62
+ text-align: center;
63
+ text-transform: uppercase;
64
+ letter-spacing: 0.5px;
65
+ font-weight: 600;
66
+ font-size: 8px;
67
+ line-height: 1;
68
+ position: absolute;
69
+ bottom: 0;
70
+ right: 0;
71
+ border-top-left-radius: 6px;
72
+ }
public/community.html ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+
7
+ <link rel="canonical" href="https://signal.vercel.app/" />
8
+ <link
9
+ rel="alternate"
10
+ hreflang="x-default"
11
+ href="https://signal.vercel.app/"
12
+ />
13
+ <link
14
+ rel="alternate"
15
+ hreflang="en"
16
+ href="https://signal.vercel.app/?lang=en"
17
+ />
18
+ <link
19
+ rel="alternate"
20
+ hreflang="ja"
21
+ href="https://signal.vercel.app/?lang=ja"
22
+ />
23
+
24
+ <meta name="twitter:card" content="summary" />
25
+ <meta property="og:title" content="signal" />
26
+ <meta
27
+ property="og:description"
28
+ content="Fully Open-sourced Online MIDI Editor"
29
+ />
30
+ <meta
31
+ property="og:image"
32
+ content="https://signal.vercel.app/twitter-card.png"
33
+ />
34
+ <title data-i18n="community-title">signal - Online MIDI Editor</title>
35
+
36
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
37
+ <link
38
+ href="https://fonts.googleapis.com/css2?family=Inter:wght@300;600;800&display=swap"
39
+ rel="stylesheet"
40
+ />
41
+
42
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
43
+
44
+ <!-- Global site tag (gtag.js) - Google Analytics -->
45
+ <script
46
+ async
47
+ src="https://www.googletagmanager.com/gtag/js?id=UA-179088031-1"
48
+ ></script>
49
+ <script>
50
+ window.dataLayer = window.dataLayer || []
51
+ function gtag() {
52
+ dataLayer.push(arguments)
53
+ }
54
+ gtag("js", new Date())
55
+
56
+ gtag("config", "UA-179088031-1")
57
+ </script>
58
+ </head>
59
+ <body>
60
+ <div id="root"></div>
61
+ </body>
62
+ </html>
public/cursor-pencil.svg ADDED
public/edit.html ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <meta charset="UTF-8" />
3
+ <title>signal</title>
4
+ <head>
5
+ <meta
6
+ content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"
7
+ name="viewport"
8
+ />
9
+ <!-- Global site tag (gtag.js) - Google Analytics -->
10
+ <script
11
+ async
12
+ src="https://www.googletagmanager.com/gtag/js?id=UA-179088031-1"
13
+ ></script>
14
+ <script>
15
+ window.dataLayer = window.dataLayer || []
16
+ function gtag() {
17
+ dataLayer.push(arguments)
18
+ }
19
+ gtag("js", new Date())
20
+
21
+ gtag("config", "UA-179088031-1")
22
+ </script>
23
+
24
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
25
+ <link
26
+ href="https://fonts.googleapis.com/css2?family=Inter:wght@300;600;800&display=swap"
27
+ rel="stylesheet"
28
+ />
29
+ <link
30
+ href="https://fonts.googleapis.com/css2?family=Roboto+Mono&display=swap"
31
+ rel="stylesheet"
32
+ />
33
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
34
+
35
+ <!-- PWA -->
36
+ <link rel="manifest" href="/manifest.webmanifest" />
37
+ <script>
38
+ if ("serviceWorker" in navigator) {
39
+ navigator.serviceWorker
40
+ .register("/service-worker.js", {
41
+ scope: "/edit",
42
+ })
43
+ .then(() => console.log("service worker loaded successfully"))
44
+ .catch((e) => console.error(e))
45
+ }
46
+ </script>
47
+ <meta name="apple-mobile-web-app-capable" content="yes" />
48
+ <meta name="mobile-web-app-capable" content="yes" />
49
+ <meta name="theme-color" content="#272a36" />
50
+ <link rel="apple-touch-icon" sizes="192x192" href="/icon-192x192.png" />
51
+ </head>
52
+ <body>
53
+ <div id="root"></div>
54
+ </body>
public/favicon.svg ADDED
public/general-midi-logo.svg ADDED
public/github-icon.svg ADDED
public/icon-192x192.png ADDED
public/icon-256x256.png ADDED
public/icon-384x384.png ADDED
public/icon-512x512.png ADDED
public/icon-maskable.png ADDED
public/iconmonstr-chart-21.svg ADDED
public/iconmonstr-favorite-4.svg ADDED
public/iconmonstr-twitter-1.svg ADDED
public/index.html ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+
7
+ <link rel="canonical" href="https://signal.vercel.app/" />
8
+ <link
9
+ rel="alternate"
10
+ hreflang="x-default"
11
+ href="https://signal.vercel.app/"
12
+ />
13
+ <link
14
+ rel="alternate"
15
+ hreflang="en"
16
+ href="https://signal.vercel.app/?lang=en"
17
+ />
18
+ <link
19
+ rel="alternate"
20
+ hreflang="ja"
21
+ href="https://signal.vercel.app/?lang=ja"
22
+ />
23
+ <link
24
+ rel="alternate"
25
+ hreflang="zh"
26
+ href="https://signal.vercel.app/?lang=zh"
27
+ />
28
+
29
+ <meta name="twitter:card" content="summary" />
30
+ <meta property="og:title" content="signal" />
31
+ <meta
32
+ property="og:description"
33
+ content="Fully Open-sourced Online MIDI Editor"
34
+ />
35
+ <meta
36
+ property="og:image"
37
+ content="https://signal.vercel.app/twitter-card.png"
38
+ />
39
+ <title data-i18n="landing-title">signal - Online MIDI Editor</title>
40
+
41
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
42
+ <link
43
+ href="https://fonts.googleapis.com/css2?family=Inter:wght@300;600;800&display=swap"
44
+ rel="stylesheet"
45
+ />
46
+
47
+ <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
48
+
49
+ <script>
50
+ // similar behavior as clicking on a link
51
+ window.location.href = "edit"
52
+ </script>
53
+
54
+ <link rel="stylesheet" href="/style.css" />
55
+ <link rel="stylesheet" href="/carbon.css" />
56
+ </head>
public/logo-white.svg ADDED
public/manifest.webmanifest ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "theme_color": "#4c41cc",
3
+ "background_color": "#272a36",
4
+ "display": "standalone",
5
+ "scope": "/edit",
6
+ "start_url": "/edit",
7
+ "name": "signal",
8
+ "short_name": "signal",
9
+ "icons": [
10
+ {
11
+ "src": "/icon-192x192.png",
12
+ "sizes": "192x192",
13
+ "type": "image/png"
14
+ },
15
+ {
16
+ "src": "/icon-256x256.png",
17
+ "sizes": "256x256",
18
+ "type": "image/png"
19
+ },
20
+ {
21
+ "src": "/icon-384x384.png",
22
+ "sizes": "384x384",
23
+ "type": "image/png"
24
+ },
25
+ {
26
+ "src": "/icon-512x512.png",
27
+ "sizes": "512x512",
28
+ "type": "image/png"
29
+ },
30
+ {
31
+ "src": "/icon-maskable.png",
32
+ "sizes": "1024x1024",
33
+ "type": "image/png",
34
+ "purpose": "maskable"
35
+ }
36
+ ]
37
+ }
public/midi-logo.svg ADDED
public/pwa-logo.svg ADDED
public/screenshot.png ADDED
public/service-worker.js ADDED
@@ -0,0 +1 @@
 
 
1
+ self.addEventListener("fetch", function (event) {})
public/style.css ADDED
@@ -0,0 +1,255 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ :root {
2
+ --themeColor: #5a4edf;
3
+ --themeColor2: #4c41cc;
4
+ }
5
+ body {
6
+ margin: 0;
7
+ font-family: "Inter", -apple-system, BlinkMacSystemFont, Helvetica Neue,
8
+ sans-serif;
9
+ line-height: 1.5;
10
+ -webkit-font-smoothing: antialiased;
11
+ background: hsl(245deg 5% 16%);
12
+ color: white;
13
+ }
14
+ a {
15
+ color: var(--themeColor);
16
+ }
17
+ .content {
18
+ max-width: 60rem;
19
+ width: 100%;
20
+ margin: 0 auto;
21
+ }
22
+ header {
23
+ background: var(--themeColor2);
24
+ }
25
+ header .content {
26
+ padding: 1rem 0;
27
+ display: flex;
28
+ justify-content: space-between;
29
+ align-items: center;
30
+ }
31
+ section .content {
32
+ padding: 5rem 0;
33
+ }
34
+ #title {
35
+ display: flex;
36
+ }
37
+ #title img {
38
+ height: 1.7rem;
39
+ }
40
+ #title:hover {
41
+ opacity: 0.7;
42
+ }
43
+ #hero {
44
+ background: var(--themeColor);
45
+ color: white;
46
+ overflow: hidden;
47
+ }
48
+ #hero .content {
49
+ display: flex;
50
+ }
51
+ #hero .text h1 {
52
+ font-weight: 800;
53
+ font-size: 3.2rem;
54
+ line-height: 1;
55
+ margin: 0 0 1rem 0;
56
+ }
57
+ #hero .image {
58
+ width: 35%;
59
+ padding-left: 2rem;
60
+ }
61
+ #hero .image img {
62
+ width: 34rem;
63
+ border-radius: 0.5rem;
64
+ box-shadow: 0 1rem 8rem #0000004f;
65
+ }
66
+ #hero .text .description {
67
+ font-size: 1.4rem;
68
+ line-height: 1;
69
+ }
70
+ #launch-button {
71
+ background: white;
72
+ padding: 0.8rem 2rem;
73
+ border-radius: 9999px;
74
+ text-decoration: none;
75
+ color: var(--themeColor);
76
+ font-weight: bold;
77
+ display: inline-block;
78
+ margin: 2rem 0 0 0;
79
+ font-size: 1.2rem;
80
+ border: 2px solid transparent;
81
+ transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease;
82
+ box-shadow: 0 1rem 7rem #0000004f;
83
+ }
84
+ #launch-button:hover {
85
+ border-color: white;
86
+ background: transparent;
87
+ color: white;
88
+ }
89
+ p.platform {
90
+ opacity: 0.8;
91
+ font-size: 0.9rem;
92
+ }
93
+ p.issue {
94
+ display: inline-block;
95
+ color: #ffb200;
96
+ background: #ffd4001f;
97
+ border: 1px solid #ffb200;
98
+ padding: 0.5em;
99
+ font-size: 0.8rem;
100
+ border-radius: 0.5rem;
101
+ margin: 0;
102
+ }
103
+ h3 {
104
+ font-size: 1.5rem;
105
+ }
106
+ .sponsor-intro {
107
+ width: 40em;
108
+ line-height: 1.9;
109
+ margin-bottom: 1.5em;
110
+ max-width: 100%;
111
+ }
112
+ section#features ul {
113
+ line-height: 2;
114
+ }
115
+
116
+ #features .content {
117
+ display: flex;
118
+ }
119
+
120
+ #features .content .left {
121
+ flex-grow: 1;
122
+ display: flex;
123
+ flex-direction: column;
124
+ }
125
+
126
+ #features .content .right {
127
+ flex-shrink: 0;
128
+ min-width: 342px;
129
+ }
130
+
131
+ #features .feature {
132
+ background: #ffffff0d;
133
+ padding: 2rem;
134
+ border-radius: 1rem;
135
+ margin-right: 2rem;
136
+ margin-bottom: 2rem;
137
+ box-shadow: 0 1rem 3rem 0 #0000000e;
138
+ }
139
+
140
+ #features .feature .icon {
141
+ display: inline-flex;
142
+ width: 4rem;
143
+ border-radius: 2rem;
144
+ height: 4rem;
145
+ overflow: hidden;
146
+ background: white;
147
+ align-items: center;
148
+ justify-content: center;
149
+ }
150
+
151
+ #features .feature .title {
152
+ font-size: 1.1rem;
153
+ font-weight: bold;
154
+ margin-top: 1rem;
155
+ margin-bottom: 1rem;
156
+ }
157
+
158
+ #features .feature .description {
159
+ opacity: 0.5;
160
+ }
161
+
162
+ #features .feature .icon img {
163
+ width: 2rem;
164
+ }
165
+
166
+ section#sponsor {
167
+ background: #1f1f23;
168
+ }
169
+ #github-link {
170
+ display: flex;
171
+ }
172
+ #github-link svg {
173
+ fill: white;
174
+ }
175
+
176
+ @media screen and (max-width: 896px) {
177
+ .content {
178
+ width: 90%;
179
+ }
180
+
181
+ #hero .content {
182
+ flex-direction: column;
183
+ }
184
+
185
+ #hero .text h1 {
186
+ font-size: 2.5rem;
187
+ }
188
+
189
+ #hero .image {
190
+ padding: 0;
191
+ width: 100%;
192
+ }
193
+
194
+ #hero .image img {
195
+ margin-top: 3rem;
196
+ width: 100%;
197
+ }
198
+
199
+ #features .content {
200
+ flex-direction: column-reverse;
201
+ }
202
+
203
+ #features .feature {
204
+ margin-right: 0;
205
+ }
206
+ }
207
+
208
+ a.external-link {
209
+ font-size: 0.9rem;
210
+ display: inline-flex;
211
+ border: #3b3b44 2px solid;
212
+ border-radius: 0.3em;
213
+ padding: 0.5em 1em;
214
+ color: white;
215
+ text-decoration: none;
216
+ align-items: center;
217
+ }
218
+
219
+ a.external-link img {
220
+ margin-right: 0.7em;
221
+ }
222
+
223
+ a.sponsor-button {
224
+ display: inline-flex;
225
+ align-items: center;
226
+ font-weight: 600;
227
+ background: #bb5d9029;
228
+ border-radius: 0.3em;
229
+ padding: 1em 1.5em;
230
+ color: white;
231
+ text-decoration: none;
232
+ border: 2px solid transparent;
233
+ transition: 0.2s ease;
234
+ }
235
+
236
+ a.sponsor-button:hover {
237
+ border-color: #bb5d90;
238
+ }
239
+
240
+ a.sponsor-button img {
241
+ margin-right: 0.7em;
242
+ width: 1.2em;
243
+ }
244
+
245
+ .support-row {
246
+ display: flex;
247
+ align-items: center;
248
+ margin-bottom: 1rem;
249
+ }
250
+
251
+ .support-row span {
252
+ padding-left: 1em;
253
+ font-size: 0.9rem;
254
+ opacity: 0.6;
255
+ }
public/synthesizer-keyboard-svgrepo-com.svg ADDED
public/twitter-card.png ADDED
public/wav-file.svg ADDED
requirements.txt DELETED
@@ -1,7 +0,0 @@
1
- fastapi==0.74.*
2
- requests==2.27.*
3
- sentencepiece==0.1.*
4
- torch==1.11.*
5
- transformers==4.*
6
- uvicorn[standard]==0.17.*
7
-
 
 
 
 
 
 
 
 
scripts/perf/.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ output
scripts/perf/README.md ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Automated Performance Measurement Script
2
+
3
+ By using puppeteer, measure performance metrics automatically.
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ cd path/to/signal
9
+ npm start
10
+ ```
11
+
12
+ Then run puppeteer
13
+
14
+ ```sh
15
+ cd path/to/signal/scripts/perf
16
+ npm start
17
+ ```
18
+
19
+ ## Test contents
20
+
21
+ 1. Launch the browser
22
+ 2. Open test.mid
23
+ 3. Play the entire song
24
+ 4. Shutdown the browser
25
+ 5. Save the metrics as a JSON file in the output directory
scripts/perf/empty.mid ADDED
Binary file (1.14 kB). View file
 
scripts/perf/index.js ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { existsSync } from "fs"
2
+ import fs from "fs/promises"
3
+ import path, { dirname } from "path"
4
+ import puppeteer from "puppeteer"
5
+ import { fileURLToPath } from "url"
6
+ const __filename = fileURLToPath(import.meta.url)
7
+ const __dirname = dirname(__filename)
8
+
9
+ const browser = await puppeteer.launch({
10
+ headless: false,
11
+ ignoreDefaultArgs: ["--mute-audio"],
12
+ args: ["--autoplay-policy=no-user-gesture-required"],
13
+ })
14
+ const page = await browser.newPage()
15
+ await page.goto("http://localhost:3000/edit?disableFileSystem=true", {
16
+ waitUntil: "networkidle0",
17
+ })
18
+
19
+ // open midi file
20
+
21
+ page.on("dialog", async (dialog) => {
22
+ console.log(dialog.type())
23
+ console.log(dialog.message())
24
+ console.log(dialog.defaultValue())
25
+ await dialog.accept()
26
+ })
27
+
28
+ await page.click("#tab-file", { delay: 200 })
29
+ const [fileChooser] = await Promise.all([
30
+ page.waitForFileChooser(),
31
+ page.click('label[for="OpenButtonInputFile"]'),
32
+ ])
33
+ const midiFilePath = path.resolve(__dirname, "test.mid")
34
+ await fileChooser?.accept([midiFilePath])
35
+
36
+ await page.click("#button-play")
37
+
38
+ await page.waitForTimeout(10000)
39
+
40
+ const metrics = await page.metrics()
41
+ const result = JSON.stringify(metrics, null, 2)
42
+
43
+ const writeFile = async (dir, prefix, content) => {
44
+ let count = 0
45
+ while (true) {
46
+ const filePath = path.resolve(dir, `${prefix}${count}.json`)
47
+ if (existsSync(filePath)) {
48
+ count++
49
+ } else {
50
+ await fs.mkdir(dir, { recursive: true })
51
+ await fs.writeFile(filePath, content, { encoding: "utf-8" })
52
+ break
53
+ }
54
+ }
55
+ }
56
+
57
+ await writeFile(path.resolve(__dirname, "output"), "metrics", result)
58
+
59
+ await browser.close()
scripts/perf/package-lock.json ADDED
@@ -0,0 +1,992 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "perf",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 2,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "perf",
9
+ "version": "1.0.0",
10
+ "license": "MIT",
11
+ "dependencies": {
12
+ "puppeteer": "^10.4.0"
13
+ }
14
+ },
15
+ "node_modules/@types/node": {
16
+ "version": "16.11.4",
17
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.4.tgz",
18
+ "integrity": "sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==",
19
+ "optional": true
20
+ },
21
+ "node_modules/@types/yauzl": {
22
+ "version": "2.9.2",
23
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz",
24
+ "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==",
25
+ "optional": true,
26
+ "dependencies": {
27
+ "@types/node": "*"
28
+ }
29
+ },
30
+ "node_modules/agent-base": {
31
+ "version": "6.0.2",
32
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
33
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
34
+ "dependencies": {
35
+ "debug": "4"
36
+ },
37
+ "engines": {
38
+ "node": ">= 6.0.0"
39
+ }
40
+ },
41
+ "node_modules/balanced-match": {
42
+ "version": "1.0.2",
43
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
44
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
45
+ },
46
+ "node_modules/base64-js": {
47
+ "version": "1.5.1",
48
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
49
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
50
+ "funding": [
51
+ {
52
+ "type": "github",
53
+ "url": "https://github.com/sponsors/feross"
54
+ },
55
+ {
56
+ "type": "patreon",
57
+ "url": "https://www.patreon.com/feross"
58
+ },
59
+ {
60
+ "type": "consulting",
61
+ "url": "https://feross.org/support"
62
+ }
63
+ ]
64
+ },
65
+ "node_modules/bl": {
66
+ "version": "4.1.0",
67
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
68
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
69
+ "dependencies": {
70
+ "buffer": "^5.5.0",
71
+ "inherits": "^2.0.4",
72
+ "readable-stream": "^3.4.0"
73
+ }
74
+ },
75
+ "node_modules/brace-expansion": {
76
+ "version": "1.1.11",
77
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
78
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
79
+ "dependencies": {
80
+ "balanced-match": "^1.0.0",
81
+ "concat-map": "0.0.1"
82
+ }
83
+ },
84
+ "node_modules/buffer": {
85
+ "version": "5.7.1",
86
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
87
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
88
+ "funding": [
89
+ {
90
+ "type": "github",
91
+ "url": "https://github.com/sponsors/feross"
92
+ },
93
+ {
94
+ "type": "patreon",
95
+ "url": "https://www.patreon.com/feross"
96
+ },
97
+ {
98
+ "type": "consulting",
99
+ "url": "https://feross.org/support"
100
+ }
101
+ ],
102
+ "dependencies": {
103
+ "base64-js": "^1.3.1",
104
+ "ieee754": "^1.1.13"
105
+ }
106
+ },
107
+ "node_modules/buffer-crc32": {
108
+ "version": "0.2.13",
109
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
110
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
111
+ "engines": {
112
+ "node": "*"
113
+ }
114
+ },
115
+ "node_modules/chownr": {
116
+ "version": "1.1.4",
117
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
118
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
119
+ },
120
+ "node_modules/concat-map": {
121
+ "version": "0.0.1",
122
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
123
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
124
+ },
125
+ "node_modules/debug": {
126
+ "version": "4.3.1",
127
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
128
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
129
+ "dependencies": {
130
+ "ms": "2.1.2"
131
+ },
132
+ "engines": {
133
+ "node": ">=6.0"
134
+ },
135
+ "peerDependenciesMeta": {
136
+ "supports-color": {
137
+ "optional": true
138
+ }
139
+ }
140
+ },
141
+ "node_modules/devtools-protocol": {
142
+ "version": "0.0.901419",
143
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz",
144
+ "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ=="
145
+ },
146
+ "node_modules/end-of-stream": {
147
+ "version": "1.4.4",
148
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
149
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
150
+ "dependencies": {
151
+ "once": "^1.4.0"
152
+ }
153
+ },
154
+ "node_modules/extract-zip": {
155
+ "version": "2.0.1",
156
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
157
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
158
+ "dependencies": {
159
+ "debug": "^4.1.1",
160
+ "get-stream": "^5.1.0",
161
+ "yauzl": "^2.10.0"
162
+ },
163
+ "bin": {
164
+ "extract-zip": "cli.js"
165
+ },
166
+ "engines": {
167
+ "node": ">= 10.17.0"
168
+ },
169
+ "optionalDependencies": {
170
+ "@types/yauzl": "^2.9.1"
171
+ }
172
+ },
173
+ "node_modules/fd-slicer": {
174
+ "version": "1.1.0",
175
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
176
+ "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
177
+ "dependencies": {
178
+ "pend": "~1.2.0"
179
+ }
180
+ },
181
+ "node_modules/find-up": {
182
+ "version": "4.1.0",
183
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
184
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
185
+ "dependencies": {
186
+ "locate-path": "^5.0.0",
187
+ "path-exists": "^4.0.0"
188
+ },
189
+ "engines": {
190
+ "node": ">=8"
191
+ }
192
+ },
193
+ "node_modules/fs-constants": {
194
+ "version": "1.0.0",
195
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
196
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
197
+ },
198
+ "node_modules/fs.realpath": {
199
+ "version": "1.0.0",
200
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
201
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
202
+ },
203
+ "node_modules/get-stream": {
204
+ "version": "5.2.0",
205
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
206
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
207
+ "dependencies": {
208
+ "pump": "^3.0.0"
209
+ },
210
+ "engines": {
211
+ "node": ">=8"
212
+ },
213
+ "funding": {
214
+ "url": "https://github.com/sponsors/sindresorhus"
215
+ }
216
+ },
217
+ "node_modules/glob": {
218
+ "version": "7.2.0",
219
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
220
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
221
+ "dependencies": {
222
+ "fs.realpath": "^1.0.0",
223
+ "inflight": "^1.0.4",
224
+ "inherits": "2",
225
+ "minimatch": "^3.0.4",
226
+ "once": "^1.3.0",
227
+ "path-is-absolute": "^1.0.0"
228
+ },
229
+ "engines": {
230
+ "node": "*"
231
+ },
232
+ "funding": {
233
+ "url": "https://github.com/sponsors/isaacs"
234
+ }
235
+ },
236
+ "node_modules/https-proxy-agent": {
237
+ "version": "5.0.0",
238
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
239
+ "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
240
+ "dependencies": {
241
+ "agent-base": "6",
242
+ "debug": "4"
243
+ },
244
+ "engines": {
245
+ "node": ">= 6"
246
+ }
247
+ },
248
+ "node_modules/ieee754": {
249
+ "version": "1.2.1",
250
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
251
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
252
+ "funding": [
253
+ {
254
+ "type": "github",
255
+ "url": "https://github.com/sponsors/feross"
256
+ },
257
+ {
258
+ "type": "patreon",
259
+ "url": "https://www.patreon.com/feross"
260
+ },
261
+ {
262
+ "type": "consulting",
263
+ "url": "https://feross.org/support"
264
+ }
265
+ ]
266
+ },
267
+ "node_modules/inflight": {
268
+ "version": "1.0.6",
269
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
270
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
271
+ "dependencies": {
272
+ "once": "^1.3.0",
273
+ "wrappy": "1"
274
+ }
275
+ },
276
+ "node_modules/inherits": {
277
+ "version": "2.0.4",
278
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
279
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
280
+ },
281
+ "node_modules/locate-path": {
282
+ "version": "5.0.0",
283
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
284
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
285
+ "dependencies": {
286
+ "p-locate": "^4.1.0"
287
+ },
288
+ "engines": {
289
+ "node": ">=8"
290
+ }
291
+ },
292
+ "node_modules/minimatch": {
293
+ "version": "3.0.4",
294
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
295
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
296
+ "dependencies": {
297
+ "brace-expansion": "^1.1.7"
298
+ },
299
+ "engines": {
300
+ "node": "*"
301
+ }
302
+ },
303
+ "node_modules/minimist": {
304
+ "version": "1.2.5",
305
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
306
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
307
+ },
308
+ "node_modules/mkdirp": {
309
+ "version": "0.5.5",
310
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
311
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
312
+ "dependencies": {
313
+ "minimist": "^1.2.5"
314
+ },
315
+ "bin": {
316
+ "mkdirp": "bin/cmd.js"
317
+ }
318
+ },
319
+ "node_modules/ms": {
320
+ "version": "2.1.2",
321
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
322
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
323
+ },
324
+ "node_modules/node-fetch": {
325
+ "version": "2.6.1",
326
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
327
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==",
328
+ "engines": {
329
+ "node": "4.x || >=6.0.0"
330
+ }
331
+ },
332
+ "node_modules/once": {
333
+ "version": "1.4.0",
334
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
335
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
336
+ "dependencies": {
337
+ "wrappy": "1"
338
+ }
339
+ },
340
+ "node_modules/p-limit": {
341
+ "version": "2.3.0",
342
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
343
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
344
+ "dependencies": {
345
+ "p-try": "^2.0.0"
346
+ },
347
+ "engines": {
348
+ "node": ">=6"
349
+ },
350
+ "funding": {
351
+ "url": "https://github.com/sponsors/sindresorhus"
352
+ }
353
+ },
354
+ "node_modules/p-locate": {
355
+ "version": "4.1.0",
356
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
357
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
358
+ "dependencies": {
359
+ "p-limit": "^2.2.0"
360
+ },
361
+ "engines": {
362
+ "node": ">=8"
363
+ }
364
+ },
365
+ "node_modules/p-try": {
366
+ "version": "2.2.0",
367
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
368
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
369
+ "engines": {
370
+ "node": ">=6"
371
+ }
372
+ },
373
+ "node_modules/path-exists": {
374
+ "version": "4.0.0",
375
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
376
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
377
+ "engines": {
378
+ "node": ">=8"
379
+ }
380
+ },
381
+ "node_modules/path-is-absolute": {
382
+ "version": "1.0.1",
383
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
384
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
385
+ "engines": {
386
+ "node": ">=0.10.0"
387
+ }
388
+ },
389
+ "node_modules/pend": {
390
+ "version": "1.2.0",
391
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
392
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
393
+ },
394
+ "node_modules/pkg-dir": {
395
+ "version": "4.2.0",
396
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
397
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
398
+ "dependencies": {
399
+ "find-up": "^4.0.0"
400
+ },
401
+ "engines": {
402
+ "node": ">=8"
403
+ }
404
+ },
405
+ "node_modules/progress": {
406
+ "version": "2.0.1",
407
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz",
408
+ "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg==",
409
+ "engines": {
410
+ "node": ">=0.4.0"
411
+ }
412
+ },
413
+ "node_modules/proxy-from-env": {
414
+ "version": "1.1.0",
415
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
416
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
417
+ },
418
+ "node_modules/pump": {
419
+ "version": "3.0.0",
420
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
421
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
422
+ "dependencies": {
423
+ "end-of-stream": "^1.1.0",
424
+ "once": "^1.3.1"
425
+ }
426
+ },
427
+ "node_modules/puppeteer": {
428
+ "version": "10.4.0",
429
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.4.0.tgz",
430
+ "integrity": "sha512-2cP8mBoqnu5gzAVpbZ0fRaobBWZM8GEUF4I1F6WbgHrKV/rz7SX8PG2wMymZgD0wo0UBlg2FBPNxlF/xlqW6+w==",
431
+ "hasInstallScript": true,
432
+ "dependencies": {
433
+ "debug": "4.3.1",
434
+ "devtools-protocol": "0.0.901419",
435
+ "extract-zip": "2.0.1",
436
+ "https-proxy-agent": "5.0.0",
437
+ "node-fetch": "2.6.1",
438
+ "pkg-dir": "4.2.0",
439
+ "progress": "2.0.1",
440
+ "proxy-from-env": "1.1.0",
441
+ "rimraf": "3.0.2",
442
+ "tar-fs": "2.0.0",
443
+ "unbzip2-stream": "1.3.3",
444
+ "ws": "7.4.6"
445
+ },
446
+ "engines": {
447
+ "node": ">=10.18.1"
448
+ }
449
+ },
450
+ "node_modules/readable-stream": {
451
+ "version": "3.6.0",
452
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
453
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
454
+ "dependencies": {
455
+ "inherits": "^2.0.3",
456
+ "string_decoder": "^1.1.1",
457
+ "util-deprecate": "^1.0.1"
458
+ },
459
+ "engines": {
460
+ "node": ">= 6"
461
+ }
462
+ },
463
+ "node_modules/rimraf": {
464
+ "version": "3.0.2",
465
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
466
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
467
+ "dependencies": {
468
+ "glob": "^7.1.3"
469
+ },
470
+ "bin": {
471
+ "rimraf": "bin.js"
472
+ },
473
+ "funding": {
474
+ "url": "https://github.com/sponsors/isaacs"
475
+ }
476
+ },
477
+ "node_modules/safe-buffer": {
478
+ "version": "5.2.1",
479
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
480
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
481
+ "funding": [
482
+ {
483
+ "type": "github",
484
+ "url": "https://github.com/sponsors/feross"
485
+ },
486
+ {
487
+ "type": "patreon",
488
+ "url": "https://www.patreon.com/feross"
489
+ },
490
+ {
491
+ "type": "consulting",
492
+ "url": "https://feross.org/support"
493
+ }
494
+ ]
495
+ },
496
+ "node_modules/string_decoder": {
497
+ "version": "1.3.0",
498
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
499
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
500
+ "dependencies": {
501
+ "safe-buffer": "~5.2.0"
502
+ }
503
+ },
504
+ "node_modules/tar-fs": {
505
+ "version": "2.0.0",
506
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz",
507
+ "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==",
508
+ "dependencies": {
509
+ "chownr": "^1.1.1",
510
+ "mkdirp": "^0.5.1",
511
+ "pump": "^3.0.0",
512
+ "tar-stream": "^2.0.0"
513
+ }
514
+ },
515
+ "node_modules/tar-stream": {
516
+ "version": "2.2.0",
517
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
518
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
519
+ "dependencies": {
520
+ "bl": "^4.0.3",
521
+ "end-of-stream": "^1.4.1",
522
+ "fs-constants": "^1.0.0",
523
+ "inherits": "^2.0.3",
524
+ "readable-stream": "^3.1.1"
525
+ },
526
+ "engines": {
527
+ "node": ">=6"
528
+ }
529
+ },
530
+ "node_modules/through": {
531
+ "version": "2.3.8",
532
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
533
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
534
+ },
535
+ "node_modules/unbzip2-stream": {
536
+ "version": "1.3.3",
537
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz",
538
+ "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==",
539
+ "dependencies": {
540
+ "buffer": "^5.2.1",
541
+ "through": "^2.3.8"
542
+ }
543
+ },
544
+ "node_modules/util-deprecate": {
545
+ "version": "1.0.2",
546
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
547
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
548
+ },
549
+ "node_modules/wrappy": {
550
+ "version": "1.0.2",
551
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
552
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
553
+ },
554
+ "node_modules/ws": {
555
+ "version": "7.4.6",
556
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
557
+ "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
558
+ "engines": {
559
+ "node": ">=8.3.0"
560
+ },
561
+ "peerDependencies": {
562
+ "bufferutil": "^4.0.1",
563
+ "utf-8-validate": "^5.0.2"
564
+ },
565
+ "peerDependenciesMeta": {
566
+ "bufferutil": {
567
+ "optional": true
568
+ },
569
+ "utf-8-validate": {
570
+ "optional": true
571
+ }
572
+ }
573
+ },
574
+ "node_modules/yauzl": {
575
+ "version": "2.10.0",
576
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
577
+ "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
578
+ "dependencies": {
579
+ "buffer-crc32": "~0.2.3",
580
+ "fd-slicer": "~1.1.0"
581
+ }
582
+ }
583
+ },
584
+ "dependencies": {
585
+ "@types/node": {
586
+ "version": "16.11.4",
587
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.4.tgz",
588
+ "integrity": "sha512-TMgXmy0v2xWyuCSCJM6NCna2snndD8yvQF67J29ipdzMcsPa9u+o0tjF5+EQNdhcuZplYuouYqpc4zcd5I6amQ==",
589
+ "optional": true
590
+ },
591
+ "@types/yauzl": {
592
+ "version": "2.9.2",
593
+ "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.2.tgz",
594
+ "integrity": "sha512-8uALY5LTvSuHgloDVUvWP3pIauILm+8/0pDMokuDYIoNsOkSwd5AiHBTSEJjKTDcZr5z8UpgOWZkxBF4iJftoA==",
595
+ "optional": true,
596
+ "requires": {
597
+ "@types/node": "*"
598
+ }
599
+ },
600
+ "agent-base": {
601
+ "version": "6.0.2",
602
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
603
+ "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
604
+ "requires": {
605
+ "debug": "4"
606
+ }
607
+ },
608
+ "balanced-match": {
609
+ "version": "1.0.2",
610
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
611
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
612
+ },
613
+ "base64-js": {
614
+ "version": "1.5.1",
615
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
616
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
617
+ },
618
+ "bl": {
619
+ "version": "4.1.0",
620
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
621
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
622
+ "requires": {
623
+ "buffer": "^5.5.0",
624
+ "inherits": "^2.0.4",
625
+ "readable-stream": "^3.4.0"
626
+ }
627
+ },
628
+ "brace-expansion": {
629
+ "version": "1.1.11",
630
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
631
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
632
+ "requires": {
633
+ "balanced-match": "^1.0.0",
634
+ "concat-map": "0.0.1"
635
+ }
636
+ },
637
+ "buffer": {
638
+ "version": "5.7.1",
639
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
640
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
641
+ "requires": {
642
+ "base64-js": "^1.3.1",
643
+ "ieee754": "^1.1.13"
644
+ }
645
+ },
646
+ "buffer-crc32": {
647
+ "version": "0.2.13",
648
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
649
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI="
650
+ },
651
+ "chownr": {
652
+ "version": "1.1.4",
653
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
654
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
655
+ },
656
+ "concat-map": {
657
+ "version": "0.0.1",
658
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
659
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
660
+ },
661
+ "debug": {
662
+ "version": "4.3.1",
663
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
664
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
665
+ "requires": {
666
+ "ms": "2.1.2"
667
+ }
668
+ },
669
+ "devtools-protocol": {
670
+ "version": "0.0.901419",
671
+ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.901419.tgz",
672
+ "integrity": "sha512-4INMPwNm9XRpBukhNbF7OB6fNTTCaI8pzy/fXg0xQzAy5h3zL1P8xT3QazgKqBrb/hAYwIBizqDBZ7GtJE74QQ=="
673
+ },
674
+ "end-of-stream": {
675
+ "version": "1.4.4",
676
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
677
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
678
+ "requires": {
679
+ "once": "^1.4.0"
680
+ }
681
+ },
682
+ "extract-zip": {
683
+ "version": "2.0.1",
684
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
685
+ "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
686
+ "requires": {
687
+ "@types/yauzl": "^2.9.1",
688
+ "debug": "^4.1.1",
689
+ "get-stream": "^5.1.0",
690
+ "yauzl": "^2.10.0"
691
+ }
692
+ },
693
+ "fd-slicer": {
694
+ "version": "1.1.0",
695
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
696
+ "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
697
+ "requires": {
698
+ "pend": "~1.2.0"
699
+ }
700
+ },
701
+ "find-up": {
702
+ "version": "4.1.0",
703
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
704
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
705
+ "requires": {
706
+ "locate-path": "^5.0.0",
707
+ "path-exists": "^4.0.0"
708
+ }
709
+ },
710
+ "fs-constants": {
711
+ "version": "1.0.0",
712
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
713
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
714
+ },
715
+ "fs.realpath": {
716
+ "version": "1.0.0",
717
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
718
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
719
+ },
720
+ "get-stream": {
721
+ "version": "5.2.0",
722
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
723
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
724
+ "requires": {
725
+ "pump": "^3.0.0"
726
+ }
727
+ },
728
+ "glob": {
729
+ "version": "7.2.0",
730
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
731
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
732
+ "requires": {
733
+ "fs.realpath": "^1.0.0",
734
+ "inflight": "^1.0.4",
735
+ "inherits": "2",
736
+ "minimatch": "^3.0.4",
737
+ "once": "^1.3.0",
738
+ "path-is-absolute": "^1.0.0"
739
+ }
740
+ },
741
+ "https-proxy-agent": {
742
+ "version": "5.0.0",
743
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz",
744
+ "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
745
+ "requires": {
746
+ "agent-base": "6",
747
+ "debug": "4"
748
+ }
749
+ },
750
+ "ieee754": {
751
+ "version": "1.2.1",
752
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
753
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
754
+ },
755
+ "inflight": {
756
+ "version": "1.0.6",
757
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
758
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
759
+ "requires": {
760
+ "once": "^1.3.0",
761
+ "wrappy": "1"
762
+ }
763
+ },
764
+ "inherits": {
765
+ "version": "2.0.4",
766
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
767
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
768
+ },
769
+ "locate-path": {
770
+ "version": "5.0.0",
771
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
772
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
773
+ "requires": {
774
+ "p-locate": "^4.1.0"
775
+ }
776
+ },
777
+ "minimatch": {
778
+ "version": "3.0.4",
779
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
780
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
781
+ "requires": {
782
+ "brace-expansion": "^1.1.7"
783
+ }
784
+ },
785
+ "minimist": {
786
+ "version": "1.2.5",
787
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
788
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
789
+ },
790
+ "mkdirp": {
791
+ "version": "0.5.5",
792
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
793
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
794
+ "requires": {
795
+ "minimist": "^1.2.5"
796
+ }
797
+ },
798
+ "ms": {
799
+ "version": "2.1.2",
800
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
801
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
802
+ },
803
+ "node-fetch": {
804
+ "version": "2.6.1",
805
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
806
+ "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
807
+ },
808
+ "once": {
809
+ "version": "1.4.0",
810
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
811
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
812
+ "requires": {
813
+ "wrappy": "1"
814
+ }
815
+ },
816
+ "p-limit": {
817
+ "version": "2.3.0",
818
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
819
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
820
+ "requires": {
821
+ "p-try": "^2.0.0"
822
+ }
823
+ },
824
+ "p-locate": {
825
+ "version": "4.1.0",
826
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
827
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
828
+ "requires": {
829
+ "p-limit": "^2.2.0"
830
+ }
831
+ },
832
+ "p-try": {
833
+ "version": "2.2.0",
834
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
835
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
836
+ },
837
+ "path-exists": {
838
+ "version": "4.0.0",
839
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
840
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
841
+ },
842
+ "path-is-absolute": {
843
+ "version": "1.0.1",
844
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
845
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
846
+ },
847
+ "pend": {
848
+ "version": "1.2.0",
849
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
850
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA="
851
+ },
852
+ "pkg-dir": {
853
+ "version": "4.2.0",
854
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
855
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
856
+ "requires": {
857
+ "find-up": "^4.0.0"
858
+ }
859
+ },
860
+ "progress": {
861
+ "version": "2.0.1",
862
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.1.tgz",
863
+ "integrity": "sha512-OE+a6vzqazc+K6LxJrX5UPyKFvGnL5CYmq2jFGNIBWHpc4QyE49/YOumcrpQFJpfejmvRtbJzgO1zPmMCqlbBg=="
864
+ },
865
+ "proxy-from-env": {
866
+ "version": "1.1.0",
867
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
868
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
869
+ },
870
+ "pump": {
871
+ "version": "3.0.0",
872
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
873
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
874
+ "requires": {
875
+ "end-of-stream": "^1.1.0",
876
+ "once": "^1.3.1"
877
+ }
878
+ },
879
+ "puppeteer": {
880
+ "version": "10.4.0",
881
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-10.4.0.tgz",
882
+ "integrity": "sha512-2cP8mBoqnu5gzAVpbZ0fRaobBWZM8GEUF4I1F6WbgHrKV/rz7SX8PG2wMymZgD0wo0UBlg2FBPNxlF/xlqW6+w==",
883
+ "requires": {
884
+ "debug": "4.3.1",
885
+ "devtools-protocol": "0.0.901419",
886
+ "extract-zip": "2.0.1",
887
+ "https-proxy-agent": "5.0.0",
888
+ "node-fetch": "2.6.1",
889
+ "pkg-dir": "4.2.0",
890
+ "progress": "2.0.1",
891
+ "proxy-from-env": "1.1.0",
892
+ "rimraf": "3.0.2",
893
+ "tar-fs": "2.0.0",
894
+ "unbzip2-stream": "1.3.3",
895
+ "ws": "7.4.6"
896
+ }
897
+ },
898
+ "readable-stream": {
899
+ "version": "3.6.0",
900
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
901
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
902
+ "requires": {
903
+ "inherits": "^2.0.3",
904
+ "string_decoder": "^1.1.1",
905
+ "util-deprecate": "^1.0.1"
906
+ }
907
+ },
908
+ "rimraf": {
909
+ "version": "3.0.2",
910
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
911
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
912
+ "requires": {
913
+ "glob": "^7.1.3"
914
+ }
915
+ },
916
+ "safe-buffer": {
917
+ "version": "5.2.1",
918
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
919
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
920
+ },
921
+ "string_decoder": {
922
+ "version": "1.3.0",
923
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
924
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
925
+ "requires": {
926
+ "safe-buffer": "~5.2.0"
927
+ }
928
+ },
929
+ "tar-fs": {
930
+ "version": "2.0.0",
931
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.0.tgz",
932
+ "integrity": "sha512-vaY0obB6Om/fso8a8vakQBzwholQ7v5+uy+tF3Ozvxv1KNezmVQAiWtcNmMHFSFPqL3dJA8ha6gdtFbfX9mcxA==",
933
+ "requires": {
934
+ "chownr": "^1.1.1",
935
+ "mkdirp": "^0.5.1",
936
+ "pump": "^3.0.0",
937
+ "tar-stream": "^2.0.0"
938
+ }
939
+ },
940
+ "tar-stream": {
941
+ "version": "2.2.0",
942
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
943
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
944
+ "requires": {
945
+ "bl": "^4.0.3",
946
+ "end-of-stream": "^1.4.1",
947
+ "fs-constants": "^1.0.0",
948
+ "inherits": "^2.0.3",
949
+ "readable-stream": "^3.1.1"
950
+ }
951
+ },
952
+ "through": {
953
+ "version": "2.3.8",
954
+ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
955
+ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
956
+ },
957
+ "unbzip2-stream": {
958
+ "version": "1.3.3",
959
+ "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz",
960
+ "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==",
961
+ "requires": {
962
+ "buffer": "^5.2.1",
963
+ "through": "^2.3.8"
964
+ }
965
+ },
966
+ "util-deprecate": {
967
+ "version": "1.0.2",
968
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
969
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
970
+ },
971
+ "wrappy": {
972
+ "version": "1.0.2",
973
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
974
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
975
+ },
976
+ "ws": {
977
+ "version": "7.4.6",
978
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
979
+ "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
980
+ "requires": {}
981
+ },
982
+ "yauzl": {
983
+ "version": "2.10.0",
984
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
985
+ "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
986
+ "requires": {
987
+ "buffer-crc32": "~0.2.3",
988
+ "fd-slicer": "~1.1.0"
989
+ }
990
+ }
991
+ }
992
+ }
scripts/perf/package.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "perf",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "type": "module",
7
+ "scripts": {
8
+ "start": "node index.js"
9
+ },
10
+ "keywords": [],
11
+ "author": "",
12
+ "license": "MIT",
13
+ "private": true,
14
+ "dependencies": {
15
+ "puppeteer": "^10.4.0"
16
+ }
17
+ }
scripts/perf/test.mid ADDED
Binary file (41.7 kB). View file
 
static/index.html DELETED
@@ -1,36 +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.0" />
6
- <title>Fast API 🤗 Space served with Uvicorn</title>
7
- <link rel="stylesheet" href="style.css" />
8
- <script type="module" src="script.js"></script>
9
- </head>
10
- <body>
11
- <main>
12
- <section id="text-gen">
13
- <h1>Text generation using Flan T5</h1>
14
- <p>
15
- Model:
16
- <a
17
- href="https://huggingface.co/google/flan-t5-small"
18
- rel="noreferrer"
19
- target="_blank"
20
- >google/flan-t5-small</a
21
- >
22
- </p>
23
- <form class="text-gen-form">
24
- <label for="text-gen-input">Text prompt</label>
25
- <input
26
- id="text-gen-input"
27
- type="text"
28
- value="English: Translate There are many ducks. German:"
29
- />
30
- <button id="text-gen-submit">Submit</button>
31
- <p class="text-gen-output"></p>
32
- </form>
33
- </section>
34
- </main>
35
- </body>
36
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
static/script.js DELETED
@@ -1,21 +0,0 @@
1
- const textGenForm = document.querySelector('.text-gen-form');
2
-
3
- const translateText = async (text) => {
4
- const inferResponse = await fetch(`infer_t5?input=${text}`);
5
- const inferJson = await inferResponse.json();
6
-
7
- return inferJson.output;
8
- };
9
-
10
- textGenForm.addEventListener('submit', async (event) => {
11
- event.preventDefault();
12
-
13
- const textGenInput = document.getElementById('text-gen-input');
14
- const textGenParagraph = document.querySelector('.text-gen-output');
15
-
16
- try {
17
- textGenParagraph.textContent = await translateText(textGenInput.value);
18
- } catch (err) {
19
- console.error(err);
20
- }
21
- });