soiz1 commited on
Commit
5147be7
·
verified ·
1 Parent(s): 56ef938

Migrated from GitHub

Browse files
Files changed (9) hide show
  1. ORIGINAL_README.md +54 -0
  2. app.js +64 -0
  3. package-lock.json +1341 -0
  4. package.json +20 -0
  5. src/html/cloud.html +28 -0
  6. src/html/login.html +17 -0
  7. src/index.html +12 -0
  8. src/script.js +107 -0
  9. src/style.css +22 -0
ORIGINAL_README.md ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Scloudjs GUI edition
2
+ ## EN descriptioin
3
+ This is basically [ScloudJS](https://github.com/Frezledz/newscloudjs) but with Graphical user interface which means you can use ScloudJS without coding something. However, some features are resticted, so if you need more features, I recommend to use CUI edition.
4
+ ## requirements
5
+ Node.js
6
+ Needs to be able to use localhost Port number 3000 and 3001 on your computer
7
+ ## How to use
8
+ 1. Download files
9
+ ```
10
+ git clone https://github.com/Frezledz/newscloudjs.git
11
+ ```
12
+ or download zip
13
+ 2. Create bat file somewhere you like(like desktop)
14
+ ```
15
+ cd <scloudjs folder path>
16
+ npm start
17
+ ```
18
+ 3. Run these commands in terminal
19
+ ```
20
+ cd <scloudjs folder path>
21
+ npm i
22
+ ```
23
+
24
+ 4. Run bat file and follow instruction tha command prompt is shown.
25
+ You don't need to do instruction 1-3 After the second time to run Scloudjs.
26
+
27
+ ## JA description
28
+ [ScloudJS](https://github.com/Frezledz/newscloudjs)をブラウザ上で使用できるアプリケーションです。ただ、幾つかの機能を使うことができないため、それらの機能が必要な方はCUI版を使用することをお勧めします。
29
+ ## 前提
30
+ Node.js
31
+ localhostのポート番号 3000 と 3001が使用可能な状態であること
32
+ ## 使い方
33
+ 1. ファイルをダウンロード
34
+ ```
35
+ git clone https://github.com/Frezledz/newscloudjs.git
36
+ ```
37
+ or download zip
38
+ 2. batファイルをデスクトップなど好きなところに作成する
39
+ ```
40
+ cd <scloudjs folder path>
41
+ npm start
42
+ ```
43
+ 3. これらのコマンドをターミナル上で実行する
44
+ ```
45
+ cd <scloudjs folder path>
46
+ npm i
47
+ ```
48
+
49
+ 4. Batファイルを実行し、コマンドプロンプトに表示された指示に従う
50
+ 二回目以降は1-3の手順を踏む必要はありません。
51
+
52
+ ## Credits
53
+ libraries:express,ws
54
+ rest by me I guess
app.js ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const express = require("express");
2
+ const app = express();
3
+ const scloudjs = require("scloudjs");
4
+ const port = 3000;
5
+ app.use("/",express.static(__dirname+"/src"))
6
+ app.use(express.json());
7
+
8
+ app.listen(port,()=>{
9
+ console.log(`Application launched.\nOpen your browser and access to localhost:${port}`);
10
+ });
11
+
12
+ let adata = {
13
+ username:"",
14
+ password:"",
15
+ projectid:"",
16
+ process:"",
17
+ clouddatas:""
18
+ }
19
+
20
+ app.post('/login', async (req, res)=> {
21
+ const data = req.body;
22
+ adata.username = data.username;
23
+ adata.password=data.password;
24
+ scloudjs.setdatas(adata.username,adata.password,"",process,_clouddatas);
25
+ scloudjs.login().then(()=>{
26
+ res.sendStatus(200);
27
+ }).catch(result=>{
28
+ res.sendStatus(403);
29
+ });
30
+ });
31
+
32
+ let _clouddatas = new Object();
33
+ const process = (data)=>{
34
+ const temp = scloudjs.parsedata(data,_clouddatas);
35
+ _clouddatas = temp.clouddatas;
36
+ const changedlists = temp.changedlists;
37
+ wss.clients.forEach(client=>{
38
+ client.send(JSON.stringify({clouddatas:temp.clouddatas,changedlists:changedlists}));
39
+ });
40
+ };
41
+ app.get('/connect', (req, res)=> {
42
+ scloudjs.connect().then(result=>{
43
+ res.sendStatus(200);
44
+ })
45
+ });
46
+
47
+ const WebSocketServer = require('ws').Server;
48
+ const wss = new WebSocketServer({ port: 3001 });
49
+
50
+ app.post("/handshake",async(req,res)=>{
51
+ const data=req.body;
52
+ adata.projectid=data.projectid;
53
+ scloudjs.setdatas(adata.username,adata.password,adata.projectid,process,_clouddatas);
54
+ await scloudjs.handshake();
55
+ res.sendStatus(200);
56
+ })
57
+
58
+ app.post("/change",async(req,res)=>{
59
+ const data=req.body;
60
+ const name = data.name;
61
+ const val = data.value;
62
+ scloudjs.sendtocloud(name,val);
63
+ res.send(val);
64
+ });
package-lock.json ADDED
@@ -0,0 +1,1341 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "scloudjsgui",
3
+ "version": "1.0.0",
4
+ "lockfileVersion": 2,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "scloudjsgui",
9
+ "version": "1.0.0",
10
+ "license": "ISC",
11
+ "dependencies": {
12
+ "body-parser": "^1.20.1",
13
+ "ejs": "^3.1.8",
14
+ "express": "^4.18.2",
15
+ "scloudjs": "^1.2.11",
16
+ "ws": "^8.10.0"
17
+ }
18
+ },
19
+ "node_modules/accepts": {
20
+ "version": "1.3.8",
21
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
22
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
23
+ "dependencies": {
24
+ "mime-types": "~2.1.34",
25
+ "negotiator": "0.6.3"
26
+ },
27
+ "engines": {
28
+ "node": ">= 0.6"
29
+ }
30
+ },
31
+ "node_modules/ansi-styles": {
32
+ "version": "4.3.0",
33
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
34
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
35
+ "dependencies": {
36
+ "color-convert": "^2.0.1"
37
+ },
38
+ "engines": {
39
+ "node": ">=8"
40
+ },
41
+ "funding": {
42
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
43
+ }
44
+ },
45
+ "node_modules/array-flatten": {
46
+ "version": "1.1.1",
47
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
48
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
49
+ },
50
+ "node_modules/async": {
51
+ "version": "3.2.4",
52
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
53
+ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
54
+ },
55
+ "node_modules/balanced-match": {
56
+ "version": "1.0.2",
57
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
58
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
59
+ },
60
+ "node_modules/body-parser": {
61
+ "version": "1.20.1",
62
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
63
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
64
+ "dependencies": {
65
+ "bytes": "3.1.2",
66
+ "content-type": "~1.0.4",
67
+ "debug": "2.6.9",
68
+ "depd": "2.0.0",
69
+ "destroy": "1.2.0",
70
+ "http-errors": "2.0.0",
71
+ "iconv-lite": "0.4.24",
72
+ "on-finished": "2.4.1",
73
+ "qs": "6.11.0",
74
+ "raw-body": "2.5.1",
75
+ "type-is": "~1.6.18",
76
+ "unpipe": "1.0.0"
77
+ },
78
+ "engines": {
79
+ "node": ">= 0.8",
80
+ "npm": "1.2.8000 || >= 1.4.16"
81
+ }
82
+ },
83
+ "node_modules/brace-expansion": {
84
+ "version": "1.1.11",
85
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
86
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
87
+ "dependencies": {
88
+ "balanced-match": "^1.0.0",
89
+ "concat-map": "0.0.1"
90
+ }
91
+ },
92
+ "node_modules/bytes": {
93
+ "version": "3.1.2",
94
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
95
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
96
+ "engines": {
97
+ "node": ">= 0.8"
98
+ }
99
+ },
100
+ "node_modules/call-bind": {
101
+ "version": "1.0.2",
102
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
103
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
104
+ "dependencies": {
105
+ "function-bind": "^1.1.1",
106
+ "get-intrinsic": "^1.0.2"
107
+ },
108
+ "funding": {
109
+ "url": "https://github.com/sponsors/ljharb"
110
+ }
111
+ },
112
+ "node_modules/chalk": {
113
+ "version": "4.1.2",
114
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
115
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
116
+ "dependencies": {
117
+ "ansi-styles": "^4.1.0",
118
+ "supports-color": "^7.1.0"
119
+ },
120
+ "engines": {
121
+ "node": ">=10"
122
+ },
123
+ "funding": {
124
+ "url": "https://github.com/chalk/chalk?sponsor=1"
125
+ }
126
+ },
127
+ "node_modules/color-convert": {
128
+ "version": "2.0.1",
129
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
130
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
131
+ "dependencies": {
132
+ "color-name": "~1.1.4"
133
+ },
134
+ "engines": {
135
+ "node": ">=7.0.0"
136
+ }
137
+ },
138
+ "node_modules/color-name": {
139
+ "version": "1.1.4",
140
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
141
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
142
+ },
143
+ "node_modules/concat-map": {
144
+ "version": "0.0.1",
145
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
146
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
147
+ },
148
+ "node_modules/content-disposition": {
149
+ "version": "0.5.4",
150
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
151
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
152
+ "dependencies": {
153
+ "safe-buffer": "5.2.1"
154
+ },
155
+ "engines": {
156
+ "node": ">= 0.6"
157
+ }
158
+ },
159
+ "node_modules/content-type": {
160
+ "version": "1.0.4",
161
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
162
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
163
+ "engines": {
164
+ "node": ">= 0.6"
165
+ }
166
+ },
167
+ "node_modules/cookie": {
168
+ "version": "0.5.0",
169
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
170
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
171
+ "engines": {
172
+ "node": ">= 0.6"
173
+ }
174
+ },
175
+ "node_modules/cookie-signature": {
176
+ "version": "1.0.6",
177
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
178
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
179
+ },
180
+ "node_modules/debug": {
181
+ "version": "2.6.9",
182
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
183
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
184
+ "dependencies": {
185
+ "ms": "2.0.0"
186
+ }
187
+ },
188
+ "node_modules/depd": {
189
+ "version": "2.0.0",
190
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
191
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
192
+ "engines": {
193
+ "node": ">= 0.8"
194
+ }
195
+ },
196
+ "node_modules/destroy": {
197
+ "version": "1.2.0",
198
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
199
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
200
+ "engines": {
201
+ "node": ">= 0.8",
202
+ "npm": "1.2.8000 || >= 1.4.16"
203
+ }
204
+ },
205
+ "node_modules/ee-first": {
206
+ "version": "1.1.1",
207
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
208
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
209
+ },
210
+ "node_modules/ejs": {
211
+ "version": "3.1.8",
212
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz",
213
+ "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==",
214
+ "dependencies": {
215
+ "jake": "^10.8.5"
216
+ },
217
+ "bin": {
218
+ "ejs": "bin/cli.js"
219
+ },
220
+ "engines": {
221
+ "node": ">=0.10.0"
222
+ }
223
+ },
224
+ "node_modules/encodeurl": {
225
+ "version": "1.0.2",
226
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
227
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
228
+ "engines": {
229
+ "node": ">= 0.8"
230
+ }
231
+ },
232
+ "node_modules/escape-html": {
233
+ "version": "1.0.3",
234
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
235
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
236
+ },
237
+ "node_modules/etag": {
238
+ "version": "1.8.1",
239
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
240
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
241
+ "engines": {
242
+ "node": ">= 0.6"
243
+ }
244
+ },
245
+ "node_modules/express": {
246
+ "version": "4.18.2",
247
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
248
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
249
+ "dependencies": {
250
+ "accepts": "~1.3.8",
251
+ "array-flatten": "1.1.1",
252
+ "body-parser": "1.20.1",
253
+ "content-disposition": "0.5.4",
254
+ "content-type": "~1.0.4",
255
+ "cookie": "0.5.0",
256
+ "cookie-signature": "1.0.6",
257
+ "debug": "2.6.9",
258
+ "depd": "2.0.0",
259
+ "encodeurl": "~1.0.2",
260
+ "escape-html": "~1.0.3",
261
+ "etag": "~1.8.1",
262
+ "finalhandler": "1.2.0",
263
+ "fresh": "0.5.2",
264
+ "http-errors": "2.0.0",
265
+ "merge-descriptors": "1.0.1",
266
+ "methods": "~1.1.2",
267
+ "on-finished": "2.4.1",
268
+ "parseurl": "~1.3.3",
269
+ "path-to-regexp": "0.1.7",
270
+ "proxy-addr": "~2.0.7",
271
+ "qs": "6.11.0",
272
+ "range-parser": "~1.2.1",
273
+ "safe-buffer": "5.2.1",
274
+ "send": "0.18.0",
275
+ "serve-static": "1.15.0",
276
+ "setprototypeof": "1.2.0",
277
+ "statuses": "2.0.1",
278
+ "type-is": "~1.6.18",
279
+ "utils-merge": "1.0.1",
280
+ "vary": "~1.1.2"
281
+ },
282
+ "engines": {
283
+ "node": ">= 0.10.0"
284
+ }
285
+ },
286
+ "node_modules/filelist": {
287
+ "version": "1.0.4",
288
+ "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
289
+ "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
290
+ "dependencies": {
291
+ "minimatch": "^5.0.1"
292
+ }
293
+ },
294
+ "node_modules/filelist/node_modules/brace-expansion": {
295
+ "version": "2.0.1",
296
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
297
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
298
+ "dependencies": {
299
+ "balanced-match": "^1.0.0"
300
+ }
301
+ },
302
+ "node_modules/filelist/node_modules/minimatch": {
303
+ "version": "5.1.0",
304
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
305
+ "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
306
+ "dependencies": {
307
+ "brace-expansion": "^2.0.1"
308
+ },
309
+ "engines": {
310
+ "node": ">=10"
311
+ }
312
+ },
313
+ "node_modules/finalhandler": {
314
+ "version": "1.2.0",
315
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
316
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
317
+ "dependencies": {
318
+ "debug": "2.6.9",
319
+ "encodeurl": "~1.0.2",
320
+ "escape-html": "~1.0.3",
321
+ "on-finished": "2.4.1",
322
+ "parseurl": "~1.3.3",
323
+ "statuses": "2.0.1",
324
+ "unpipe": "~1.0.0"
325
+ },
326
+ "engines": {
327
+ "node": ">= 0.8"
328
+ }
329
+ },
330
+ "node_modules/forwarded": {
331
+ "version": "0.2.0",
332
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
333
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
334
+ "engines": {
335
+ "node": ">= 0.6"
336
+ }
337
+ },
338
+ "node_modules/fresh": {
339
+ "version": "0.5.2",
340
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
341
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
342
+ "engines": {
343
+ "node": ">= 0.6"
344
+ }
345
+ },
346
+ "node_modules/function-bind": {
347
+ "version": "1.1.1",
348
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
349
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
350
+ },
351
+ "node_modules/get-intrinsic": {
352
+ "version": "1.1.3",
353
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
354
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
355
+ "dependencies": {
356
+ "function-bind": "^1.1.1",
357
+ "has": "^1.0.3",
358
+ "has-symbols": "^1.0.3"
359
+ },
360
+ "funding": {
361
+ "url": "https://github.com/sponsors/ljharb"
362
+ }
363
+ },
364
+ "node_modules/has": {
365
+ "version": "1.0.3",
366
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
367
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
368
+ "dependencies": {
369
+ "function-bind": "^1.1.1"
370
+ },
371
+ "engines": {
372
+ "node": ">= 0.4.0"
373
+ }
374
+ },
375
+ "node_modules/has-flag": {
376
+ "version": "4.0.0",
377
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
378
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
379
+ "engines": {
380
+ "node": ">=8"
381
+ }
382
+ },
383
+ "node_modules/has-symbols": {
384
+ "version": "1.0.3",
385
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
386
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
387
+ "engines": {
388
+ "node": ">= 0.4"
389
+ },
390
+ "funding": {
391
+ "url": "https://github.com/sponsors/ljharb"
392
+ }
393
+ },
394
+ "node_modules/http-errors": {
395
+ "version": "2.0.0",
396
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
397
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
398
+ "dependencies": {
399
+ "depd": "2.0.0",
400
+ "inherits": "2.0.4",
401
+ "setprototypeof": "1.2.0",
402
+ "statuses": "2.0.1",
403
+ "toidentifier": "1.0.1"
404
+ },
405
+ "engines": {
406
+ "node": ">= 0.8"
407
+ }
408
+ },
409
+ "node_modules/iconv-lite": {
410
+ "version": "0.4.24",
411
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
412
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
413
+ "dependencies": {
414
+ "safer-buffer": ">= 2.1.2 < 3"
415
+ },
416
+ "engines": {
417
+ "node": ">=0.10.0"
418
+ }
419
+ },
420
+ "node_modules/inherits": {
421
+ "version": "2.0.4",
422
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
423
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
424
+ },
425
+ "node_modules/ipaddr.js": {
426
+ "version": "1.9.1",
427
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
428
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
429
+ "engines": {
430
+ "node": ">= 0.10"
431
+ }
432
+ },
433
+ "node_modules/jake": {
434
+ "version": "10.8.5",
435
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
436
+ "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
437
+ "dependencies": {
438
+ "async": "^3.2.3",
439
+ "chalk": "^4.0.2",
440
+ "filelist": "^1.0.1",
441
+ "minimatch": "^3.0.4"
442
+ },
443
+ "bin": {
444
+ "jake": "bin/cli.js"
445
+ },
446
+ "engines": {
447
+ "node": ">=10"
448
+ }
449
+ },
450
+ "node_modules/media-typer": {
451
+ "version": "0.3.0",
452
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
453
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
454
+ "engines": {
455
+ "node": ">= 0.6"
456
+ }
457
+ },
458
+ "node_modules/merge-descriptors": {
459
+ "version": "1.0.1",
460
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
461
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
462
+ },
463
+ "node_modules/methods": {
464
+ "version": "1.1.2",
465
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
466
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
467
+ "engines": {
468
+ "node": ">= 0.6"
469
+ }
470
+ },
471
+ "node_modules/mime": {
472
+ "version": "1.6.0",
473
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
474
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
475
+ "bin": {
476
+ "mime": "cli.js"
477
+ },
478
+ "engines": {
479
+ "node": ">=4"
480
+ }
481
+ },
482
+ "node_modules/mime-db": {
483
+ "version": "1.52.0",
484
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
485
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
486
+ "engines": {
487
+ "node": ">= 0.6"
488
+ }
489
+ },
490
+ "node_modules/mime-types": {
491
+ "version": "2.1.35",
492
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
493
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
494
+ "dependencies": {
495
+ "mime-db": "1.52.0"
496
+ },
497
+ "engines": {
498
+ "node": ">= 0.6"
499
+ }
500
+ },
501
+ "node_modules/minimatch": {
502
+ "version": "3.1.2",
503
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
504
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
505
+ "dependencies": {
506
+ "brace-expansion": "^1.1.7"
507
+ },
508
+ "engines": {
509
+ "node": "*"
510
+ }
511
+ },
512
+ "node_modules/ms": {
513
+ "version": "2.0.0",
514
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
515
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
516
+ },
517
+ "node_modules/negotiator": {
518
+ "version": "0.6.3",
519
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
520
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
521
+ "engines": {
522
+ "node": ">= 0.6"
523
+ }
524
+ },
525
+ "node_modules/object-inspect": {
526
+ "version": "1.12.2",
527
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
528
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
529
+ "funding": {
530
+ "url": "https://github.com/sponsors/ljharb"
531
+ }
532
+ },
533
+ "node_modules/on-finished": {
534
+ "version": "2.4.1",
535
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
536
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
537
+ "dependencies": {
538
+ "ee-first": "1.1.1"
539
+ },
540
+ "engines": {
541
+ "node": ">= 0.8"
542
+ }
543
+ },
544
+ "node_modules/parseurl": {
545
+ "version": "1.3.3",
546
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
547
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
548
+ "engines": {
549
+ "node": ">= 0.8"
550
+ }
551
+ },
552
+ "node_modules/path-to-regexp": {
553
+ "version": "0.1.7",
554
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
555
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
556
+ },
557
+ "node_modules/proxy-addr": {
558
+ "version": "2.0.7",
559
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
560
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
561
+ "dependencies": {
562
+ "forwarded": "0.2.0",
563
+ "ipaddr.js": "1.9.1"
564
+ },
565
+ "engines": {
566
+ "node": ">= 0.10"
567
+ }
568
+ },
569
+ "node_modules/qs": {
570
+ "version": "6.11.0",
571
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
572
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
573
+ "dependencies": {
574
+ "side-channel": "^1.0.4"
575
+ },
576
+ "engines": {
577
+ "node": ">=0.6"
578
+ },
579
+ "funding": {
580
+ "url": "https://github.com/sponsors/ljharb"
581
+ }
582
+ },
583
+ "node_modules/range-parser": {
584
+ "version": "1.2.1",
585
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
586
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
587
+ "engines": {
588
+ "node": ">= 0.6"
589
+ }
590
+ },
591
+ "node_modules/raw-body": {
592
+ "version": "2.5.1",
593
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
594
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
595
+ "dependencies": {
596
+ "bytes": "3.1.2",
597
+ "http-errors": "2.0.0",
598
+ "iconv-lite": "0.4.24",
599
+ "unpipe": "1.0.0"
600
+ },
601
+ "engines": {
602
+ "node": ">= 0.8"
603
+ }
604
+ },
605
+ "node_modules/safe-buffer": {
606
+ "version": "5.2.1",
607
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
608
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
609
+ "funding": [
610
+ {
611
+ "type": "github",
612
+ "url": "https://github.com/sponsors/feross"
613
+ },
614
+ {
615
+ "type": "patreon",
616
+ "url": "https://www.patreon.com/feross"
617
+ },
618
+ {
619
+ "type": "consulting",
620
+ "url": "https://feross.org/support"
621
+ }
622
+ ]
623
+ },
624
+ "node_modules/safer-buffer": {
625
+ "version": "2.1.2",
626
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
627
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
628
+ },
629
+ "node_modules/scloudjs": {
630
+ "version": "1.2.11",
631
+ "resolved": "https://registry.npmjs.org/scloudjs/-/scloudjs-1.2.11.tgz",
632
+ "integrity": "sha512-fJPsh+CV+4N7B4RXBhOwhWzZpsNPmCgmG5Wd4NihdQI11dIgF5JOZEiTNm2r4SdKG6spx7QnNO6cpG0TflwY4Q==",
633
+ "dependencies": {
634
+ "ws": "^8.10.0"
635
+ }
636
+ },
637
+ "node_modules/send": {
638
+ "version": "0.18.0",
639
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
640
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
641
+ "dependencies": {
642
+ "debug": "2.6.9",
643
+ "depd": "2.0.0",
644
+ "destroy": "1.2.0",
645
+ "encodeurl": "~1.0.2",
646
+ "escape-html": "~1.0.3",
647
+ "etag": "~1.8.1",
648
+ "fresh": "0.5.2",
649
+ "http-errors": "2.0.0",
650
+ "mime": "1.6.0",
651
+ "ms": "2.1.3",
652
+ "on-finished": "2.4.1",
653
+ "range-parser": "~1.2.1",
654
+ "statuses": "2.0.1"
655
+ },
656
+ "engines": {
657
+ "node": ">= 0.8.0"
658
+ }
659
+ },
660
+ "node_modules/send/node_modules/ms": {
661
+ "version": "2.1.3",
662
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
663
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
664
+ },
665
+ "node_modules/serve-static": {
666
+ "version": "1.15.0",
667
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
668
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
669
+ "dependencies": {
670
+ "encodeurl": "~1.0.2",
671
+ "escape-html": "~1.0.3",
672
+ "parseurl": "~1.3.3",
673
+ "send": "0.18.0"
674
+ },
675
+ "engines": {
676
+ "node": ">= 0.8.0"
677
+ }
678
+ },
679
+ "node_modules/setprototypeof": {
680
+ "version": "1.2.0",
681
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
682
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
683
+ },
684
+ "node_modules/side-channel": {
685
+ "version": "1.0.4",
686
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
687
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
688
+ "dependencies": {
689
+ "call-bind": "^1.0.0",
690
+ "get-intrinsic": "^1.0.2",
691
+ "object-inspect": "^1.9.0"
692
+ },
693
+ "funding": {
694
+ "url": "https://github.com/sponsors/ljharb"
695
+ }
696
+ },
697
+ "node_modules/statuses": {
698
+ "version": "2.0.1",
699
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
700
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
701
+ "engines": {
702
+ "node": ">= 0.8"
703
+ }
704
+ },
705
+ "node_modules/supports-color": {
706
+ "version": "7.2.0",
707
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
708
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
709
+ "dependencies": {
710
+ "has-flag": "^4.0.0"
711
+ },
712
+ "engines": {
713
+ "node": ">=8"
714
+ }
715
+ },
716
+ "node_modules/toidentifier": {
717
+ "version": "1.0.1",
718
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
719
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
720
+ "engines": {
721
+ "node": ">=0.6"
722
+ }
723
+ },
724
+ "node_modules/type-is": {
725
+ "version": "1.6.18",
726
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
727
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
728
+ "dependencies": {
729
+ "media-typer": "0.3.0",
730
+ "mime-types": "~2.1.24"
731
+ },
732
+ "engines": {
733
+ "node": ">= 0.6"
734
+ }
735
+ },
736
+ "node_modules/unpipe": {
737
+ "version": "1.0.0",
738
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
739
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
740
+ "engines": {
741
+ "node": ">= 0.8"
742
+ }
743
+ },
744
+ "node_modules/utils-merge": {
745
+ "version": "1.0.1",
746
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
747
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
748
+ "engines": {
749
+ "node": ">= 0.4.0"
750
+ }
751
+ },
752
+ "node_modules/vary": {
753
+ "version": "1.1.2",
754
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
755
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
756
+ "engines": {
757
+ "node": ">= 0.8"
758
+ }
759
+ },
760
+ "node_modules/ws": {
761
+ "version": "8.10.0",
762
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz",
763
+ "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==",
764
+ "engines": {
765
+ "node": ">=10.0.0"
766
+ },
767
+ "peerDependencies": {
768
+ "bufferutil": "^4.0.1",
769
+ "utf-8-validate": "^5.0.2"
770
+ },
771
+ "peerDependenciesMeta": {
772
+ "bufferutil": {
773
+ "optional": true
774
+ },
775
+ "utf-8-validate": {
776
+ "optional": true
777
+ }
778
+ }
779
+ }
780
+ },
781
+ "dependencies": {
782
+ "accepts": {
783
+ "version": "1.3.8",
784
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
785
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
786
+ "requires": {
787
+ "mime-types": "~2.1.34",
788
+ "negotiator": "0.6.3"
789
+ }
790
+ },
791
+ "ansi-styles": {
792
+ "version": "4.3.0",
793
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
794
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
795
+ "requires": {
796
+ "color-convert": "^2.0.1"
797
+ }
798
+ },
799
+ "array-flatten": {
800
+ "version": "1.1.1",
801
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
802
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
803
+ },
804
+ "async": {
805
+ "version": "3.2.4",
806
+ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
807
+ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
808
+ },
809
+ "balanced-match": {
810
+ "version": "1.0.2",
811
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
812
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
813
+ },
814
+ "body-parser": {
815
+ "version": "1.20.1",
816
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
817
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
818
+ "requires": {
819
+ "bytes": "3.1.2",
820
+ "content-type": "~1.0.4",
821
+ "debug": "2.6.9",
822
+ "depd": "2.0.0",
823
+ "destroy": "1.2.0",
824
+ "http-errors": "2.0.0",
825
+ "iconv-lite": "0.4.24",
826
+ "on-finished": "2.4.1",
827
+ "qs": "6.11.0",
828
+ "raw-body": "2.5.1",
829
+ "type-is": "~1.6.18",
830
+ "unpipe": "1.0.0"
831
+ }
832
+ },
833
+ "brace-expansion": {
834
+ "version": "1.1.11",
835
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
836
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
837
+ "requires": {
838
+ "balanced-match": "^1.0.0",
839
+ "concat-map": "0.0.1"
840
+ }
841
+ },
842
+ "bytes": {
843
+ "version": "3.1.2",
844
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
845
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
846
+ },
847
+ "call-bind": {
848
+ "version": "1.0.2",
849
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
850
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
851
+ "requires": {
852
+ "function-bind": "^1.1.1",
853
+ "get-intrinsic": "^1.0.2"
854
+ }
855
+ },
856
+ "chalk": {
857
+ "version": "4.1.2",
858
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
859
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
860
+ "requires": {
861
+ "ansi-styles": "^4.1.0",
862
+ "supports-color": "^7.1.0"
863
+ }
864
+ },
865
+ "color-convert": {
866
+ "version": "2.0.1",
867
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
868
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
869
+ "requires": {
870
+ "color-name": "~1.1.4"
871
+ }
872
+ },
873
+ "color-name": {
874
+ "version": "1.1.4",
875
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
876
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
877
+ },
878
+ "concat-map": {
879
+ "version": "0.0.1",
880
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
881
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
882
+ },
883
+ "content-disposition": {
884
+ "version": "0.5.4",
885
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
886
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
887
+ "requires": {
888
+ "safe-buffer": "5.2.1"
889
+ }
890
+ },
891
+ "content-type": {
892
+ "version": "1.0.4",
893
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
894
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
895
+ },
896
+ "cookie": {
897
+ "version": "0.5.0",
898
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
899
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
900
+ },
901
+ "cookie-signature": {
902
+ "version": "1.0.6",
903
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
904
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
905
+ },
906
+ "debug": {
907
+ "version": "2.6.9",
908
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
909
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
910
+ "requires": {
911
+ "ms": "2.0.0"
912
+ }
913
+ },
914
+ "depd": {
915
+ "version": "2.0.0",
916
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
917
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
918
+ },
919
+ "destroy": {
920
+ "version": "1.2.0",
921
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
922
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
923
+ },
924
+ "ee-first": {
925
+ "version": "1.1.1",
926
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
927
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
928
+ },
929
+ "ejs": {
930
+ "version": "3.1.8",
931
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz",
932
+ "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==",
933
+ "requires": {
934
+ "jake": "^10.8.5"
935
+ }
936
+ },
937
+ "encodeurl": {
938
+ "version": "1.0.2",
939
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
940
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
941
+ },
942
+ "escape-html": {
943
+ "version": "1.0.3",
944
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
945
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
946
+ },
947
+ "etag": {
948
+ "version": "1.8.1",
949
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
950
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
951
+ },
952
+ "express": {
953
+ "version": "4.18.2",
954
+ "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
955
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
956
+ "requires": {
957
+ "accepts": "~1.3.8",
958
+ "array-flatten": "1.1.1",
959
+ "body-parser": "1.20.1",
960
+ "content-disposition": "0.5.4",
961
+ "content-type": "~1.0.4",
962
+ "cookie": "0.5.0",
963
+ "cookie-signature": "1.0.6",
964
+ "debug": "2.6.9",
965
+ "depd": "2.0.0",
966
+ "encodeurl": "~1.0.2",
967
+ "escape-html": "~1.0.3",
968
+ "etag": "~1.8.1",
969
+ "finalhandler": "1.2.0",
970
+ "fresh": "0.5.2",
971
+ "http-errors": "2.0.0",
972
+ "merge-descriptors": "1.0.1",
973
+ "methods": "~1.1.2",
974
+ "on-finished": "2.4.1",
975
+ "parseurl": "~1.3.3",
976
+ "path-to-regexp": "0.1.7",
977
+ "proxy-addr": "~2.0.7",
978
+ "qs": "6.11.0",
979
+ "range-parser": "~1.2.1",
980
+ "safe-buffer": "5.2.1",
981
+ "send": "0.18.0",
982
+ "serve-static": "1.15.0",
983
+ "setprototypeof": "1.2.0",
984
+ "statuses": "2.0.1",
985
+ "type-is": "~1.6.18",
986
+ "utils-merge": "1.0.1",
987
+ "vary": "~1.1.2"
988
+ }
989
+ },
990
+ "filelist": {
991
+ "version": "1.0.4",
992
+ "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz",
993
+ "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==",
994
+ "requires": {
995
+ "minimatch": "^5.0.1"
996
+ },
997
+ "dependencies": {
998
+ "brace-expansion": {
999
+ "version": "2.0.1",
1000
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
1001
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
1002
+ "requires": {
1003
+ "balanced-match": "^1.0.0"
1004
+ }
1005
+ },
1006
+ "minimatch": {
1007
+ "version": "5.1.0",
1008
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz",
1009
+ "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==",
1010
+ "requires": {
1011
+ "brace-expansion": "^2.0.1"
1012
+ }
1013
+ }
1014
+ }
1015
+ },
1016
+ "finalhandler": {
1017
+ "version": "1.2.0",
1018
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
1019
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
1020
+ "requires": {
1021
+ "debug": "2.6.9",
1022
+ "encodeurl": "~1.0.2",
1023
+ "escape-html": "~1.0.3",
1024
+ "on-finished": "2.4.1",
1025
+ "parseurl": "~1.3.3",
1026
+ "statuses": "2.0.1",
1027
+ "unpipe": "~1.0.0"
1028
+ }
1029
+ },
1030
+ "forwarded": {
1031
+ "version": "0.2.0",
1032
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
1033
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
1034
+ },
1035
+ "fresh": {
1036
+ "version": "0.5.2",
1037
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
1038
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
1039
+ },
1040
+ "function-bind": {
1041
+ "version": "1.1.1",
1042
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1043
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
1044
+ },
1045
+ "get-intrinsic": {
1046
+ "version": "1.1.3",
1047
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz",
1048
+ "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==",
1049
+ "requires": {
1050
+ "function-bind": "^1.1.1",
1051
+ "has": "^1.0.3",
1052
+ "has-symbols": "^1.0.3"
1053
+ }
1054
+ },
1055
+ "has": {
1056
+ "version": "1.0.3",
1057
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1058
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1059
+ "requires": {
1060
+ "function-bind": "^1.1.1"
1061
+ }
1062
+ },
1063
+ "has-flag": {
1064
+ "version": "4.0.0",
1065
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1066
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
1067
+ },
1068
+ "has-symbols": {
1069
+ "version": "1.0.3",
1070
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
1071
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
1072
+ },
1073
+ "http-errors": {
1074
+ "version": "2.0.0",
1075
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
1076
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
1077
+ "requires": {
1078
+ "depd": "2.0.0",
1079
+ "inherits": "2.0.4",
1080
+ "setprototypeof": "1.2.0",
1081
+ "statuses": "2.0.1",
1082
+ "toidentifier": "1.0.1"
1083
+ }
1084
+ },
1085
+ "iconv-lite": {
1086
+ "version": "0.4.24",
1087
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1088
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1089
+ "requires": {
1090
+ "safer-buffer": ">= 2.1.2 < 3"
1091
+ }
1092
+ },
1093
+ "inherits": {
1094
+ "version": "2.0.4",
1095
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1096
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
1097
+ },
1098
+ "ipaddr.js": {
1099
+ "version": "1.9.1",
1100
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
1101
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
1102
+ },
1103
+ "jake": {
1104
+ "version": "10.8.5",
1105
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz",
1106
+ "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==",
1107
+ "requires": {
1108
+ "async": "^3.2.3",
1109
+ "chalk": "^4.0.2",
1110
+ "filelist": "^1.0.1",
1111
+ "minimatch": "^3.0.4"
1112
+ }
1113
+ },
1114
+ "media-typer": {
1115
+ "version": "0.3.0",
1116
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
1117
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
1118
+ },
1119
+ "merge-descriptors": {
1120
+ "version": "1.0.1",
1121
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
1122
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
1123
+ },
1124
+ "methods": {
1125
+ "version": "1.1.2",
1126
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
1127
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
1128
+ },
1129
+ "mime": {
1130
+ "version": "1.6.0",
1131
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
1132
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
1133
+ },
1134
+ "mime-db": {
1135
+ "version": "1.52.0",
1136
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
1137
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
1138
+ },
1139
+ "mime-types": {
1140
+ "version": "2.1.35",
1141
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
1142
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
1143
+ "requires": {
1144
+ "mime-db": "1.52.0"
1145
+ }
1146
+ },
1147
+ "minimatch": {
1148
+ "version": "3.1.2",
1149
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
1150
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
1151
+ "requires": {
1152
+ "brace-expansion": "^1.1.7"
1153
+ }
1154
+ },
1155
+ "ms": {
1156
+ "version": "2.0.0",
1157
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1158
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
1159
+ },
1160
+ "negotiator": {
1161
+ "version": "0.6.3",
1162
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
1163
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
1164
+ },
1165
+ "object-inspect": {
1166
+ "version": "1.12.2",
1167
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
1168
+ "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ=="
1169
+ },
1170
+ "on-finished": {
1171
+ "version": "2.4.1",
1172
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
1173
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
1174
+ "requires": {
1175
+ "ee-first": "1.1.1"
1176
+ }
1177
+ },
1178
+ "parseurl": {
1179
+ "version": "1.3.3",
1180
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
1181
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
1182
+ },
1183
+ "path-to-regexp": {
1184
+ "version": "0.1.7",
1185
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
1186
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
1187
+ },
1188
+ "proxy-addr": {
1189
+ "version": "2.0.7",
1190
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
1191
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
1192
+ "requires": {
1193
+ "forwarded": "0.2.0",
1194
+ "ipaddr.js": "1.9.1"
1195
+ }
1196
+ },
1197
+ "qs": {
1198
+ "version": "6.11.0",
1199
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
1200
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
1201
+ "requires": {
1202
+ "side-channel": "^1.0.4"
1203
+ }
1204
+ },
1205
+ "range-parser": {
1206
+ "version": "1.2.1",
1207
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
1208
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
1209
+ },
1210
+ "raw-body": {
1211
+ "version": "2.5.1",
1212
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
1213
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
1214
+ "requires": {
1215
+ "bytes": "3.1.2",
1216
+ "http-errors": "2.0.0",
1217
+ "iconv-lite": "0.4.24",
1218
+ "unpipe": "1.0.0"
1219
+ }
1220
+ },
1221
+ "safe-buffer": {
1222
+ "version": "5.2.1",
1223
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1224
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
1225
+ },
1226
+ "safer-buffer": {
1227
+ "version": "2.1.2",
1228
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
1229
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
1230
+ },
1231
+ "scloudjs": {
1232
+ "version": "1.2.11",
1233
+ "resolved": "https://registry.npmjs.org/scloudjs/-/scloudjs-1.2.11.tgz",
1234
+ "integrity": "sha512-fJPsh+CV+4N7B4RXBhOwhWzZpsNPmCgmG5Wd4NihdQI11dIgF5JOZEiTNm2r4SdKG6spx7QnNO6cpG0TflwY4Q==",
1235
+ "requires": {
1236
+ "ws": "^8.10.0"
1237
+ }
1238
+ },
1239
+ "send": {
1240
+ "version": "0.18.0",
1241
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
1242
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
1243
+ "requires": {
1244
+ "debug": "2.6.9",
1245
+ "depd": "2.0.0",
1246
+ "destroy": "1.2.0",
1247
+ "encodeurl": "~1.0.2",
1248
+ "escape-html": "~1.0.3",
1249
+ "etag": "~1.8.1",
1250
+ "fresh": "0.5.2",
1251
+ "http-errors": "2.0.0",
1252
+ "mime": "1.6.0",
1253
+ "ms": "2.1.3",
1254
+ "on-finished": "2.4.1",
1255
+ "range-parser": "~1.2.1",
1256
+ "statuses": "2.0.1"
1257
+ },
1258
+ "dependencies": {
1259
+ "ms": {
1260
+ "version": "2.1.3",
1261
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
1262
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
1263
+ }
1264
+ }
1265
+ },
1266
+ "serve-static": {
1267
+ "version": "1.15.0",
1268
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
1269
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
1270
+ "requires": {
1271
+ "encodeurl": "~1.0.2",
1272
+ "escape-html": "~1.0.3",
1273
+ "parseurl": "~1.3.3",
1274
+ "send": "0.18.0"
1275
+ }
1276
+ },
1277
+ "setprototypeof": {
1278
+ "version": "1.2.0",
1279
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
1280
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
1281
+ },
1282
+ "side-channel": {
1283
+ "version": "1.0.4",
1284
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
1285
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
1286
+ "requires": {
1287
+ "call-bind": "^1.0.0",
1288
+ "get-intrinsic": "^1.0.2",
1289
+ "object-inspect": "^1.9.0"
1290
+ }
1291
+ },
1292
+ "statuses": {
1293
+ "version": "2.0.1",
1294
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
1295
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
1296
+ },
1297
+ "supports-color": {
1298
+ "version": "7.2.0",
1299
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1300
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1301
+ "requires": {
1302
+ "has-flag": "^4.0.0"
1303
+ }
1304
+ },
1305
+ "toidentifier": {
1306
+ "version": "1.0.1",
1307
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
1308
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
1309
+ },
1310
+ "type-is": {
1311
+ "version": "1.6.18",
1312
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1313
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1314
+ "requires": {
1315
+ "media-typer": "0.3.0",
1316
+ "mime-types": "~2.1.24"
1317
+ }
1318
+ },
1319
+ "unpipe": {
1320
+ "version": "1.0.0",
1321
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1322
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
1323
+ },
1324
+ "utils-merge": {
1325
+ "version": "1.0.1",
1326
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1327
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
1328
+ },
1329
+ "vary": {
1330
+ "version": "1.1.2",
1331
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1332
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
1333
+ },
1334
+ "ws": {
1335
+ "version": "8.10.0",
1336
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz",
1337
+ "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==",
1338
+ "requires": {}
1339
+ }
1340
+ }
1341
+ }
package.json ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "scloudjsgui",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "app.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1",
8
+ "start": "node app.js"
9
+ },
10
+ "keywords": [],
11
+ "author": "",
12
+ "license": "ISC",
13
+ "dependencies": {
14
+ "body-parser": "^1.20.1",
15
+ "ejs": "^3.1.8",
16
+ "express": "^4.18.2",
17
+ "scloudjs": "^1.2.11",
18
+ "ws": "^8.10.0"
19
+ }
20
+ }
src/html/cloud.html ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h1>ScloudJS[GUI]</h1>
2
+ <div id ="container">
3
+ <div class="monitor">
4
+ <div class ="table">
5
+ <table border="2">
6
+ <tr class="title"><th>variable names</th><th>value</th></tr>
7
+
8
+ </table>
9
+ </div>
10
+ </div>
11
+ <div class="util">
12
+ <div class="changes">
13
+ <p>Signed in as <span></span></p>
14
+ <p>Currently connecting to the project :<span></span></p>
15
+ <p>Latest changes:<span></span></p>
16
+ </div>
17
+ <div class="box projectconnect">
18
+ <p>connect to project:</p><input type="text" class="projectid"><input type="button" value="connect!" class="projectbutton">
19
+ </div>
20
+ <div class="box changeval">
21
+ <p>change variable</p>
22
+ <select class="choice">
23
+ </select>
24
+ <p> to</p><input type="text" class="projectid"><input type="button" value="change!"class="button">
25
+ </div>
26
+ </div>
27
+
28
+ </div>
src/html/login.html ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h1>Login to scratch account</h1>
2
+ <div id = "loginbox">
3
+ <div class = "box">
4
+ username
5
+ <input type="text" class ="username">
6
+
7
+ </div>
8
+ <div class ="box">
9
+ password
10
+ <input type="password" class ="password">
11
+ </div>
12
+ <div class = "box">
13
+ <input type="button" class="loginbutton" value="Login">
14
+ <span class ="status"></span>
15
+ </div>
16
+
17
+ </div>
src/index.html ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <head>
3
+ <title>ScloudJS[GUI]</title>
4
+ <link rel ="stylesheet" href = "style.css">
5
+ </head>
6
+ <body>
7
+ <div>
8
+
9
+ </div>
10
+ <div class="copyright">©frezledz <a href="https://github.com/frezledz">source</a></div>
11
+ <script src = "script.js"></script>
12
+ </body>
src/script.js ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ let info={username:"",projectid:"",}
2
+ const loginfunc = async()=>{
3
+ await fetch("./html/login.html").then(res=>res.text()).then(res=>{document.body.getElementsByTagName("div")[0].innerHTML=res});
4
+ const loginbox = document.getElementById("loginbox");
5
+ const loginstatus = document.getElementsByClassName("box")[2];
6
+ const loginbutton = loginstatus.getElementsByClassName("loginbutton")[0];
7
+ loginbutton.addEventListener("click",()=>{
8
+ const username = loginbox.getElementsByClassName("username")[0].value;
9
+ info.username=username;
10
+ const password = loginbox.getElementsByClassName("password")[0].value;
11
+ loginstatus.getElementsByClassName("status")[0].innerText = "logging in...";
12
+ fetch("/login",{
13
+ headers: {
14
+ 'Accept': 'application/json',
15
+ 'Content-Type': 'application/json'
16
+ },
17
+ method: "POST",
18
+ body: JSON.stringify({username:username,password:password}),
19
+ }).then(res=>{
20
+ if(res.status==200){
21
+ loginstatus.getElementsByClassName("status")[0].innerText = "Login succeeded! Connecting to the cloud server...";
22
+ cloudfunc();
23
+ }else{
24
+ loginstatus.getElementsByClassName("status")[0].innerText = "try again";
25
+ setTimeout(() => {
26
+
27
+ loginstatus.getElementsByClassName("status")[0].innerText = null;
28
+ }, 2000);
29
+
30
+ }
31
+ })
32
+
33
+ })
34
+
35
+ }
36
+ loginfunc();
37
+
38
+ const cloudfunc = async ()=>{
39
+ await fetch("/connect");
40
+ await fetch("./html/cloud.html").then(res=>res.text()).then(res=>{document.getElementsByTagName("div")[0].innerHTML=res});
41
+ const util = document.getElementsByClassName("util")[0];
42
+ const table = document.getElementsByClassName("table")[0];
43
+ const changes = document.getElementsByClassName("changes")[0].getElementsByTagName("p");
44
+ const changeval = document.getElementsByClassName("changeval")[0];
45
+ const pconnect = document.getElementsByClassName("projectconnect")[0];
46
+ const changevals = {
47
+ choice:changeval.getElementsByClassName("choice")[0],
48
+ input:changeval.getElementsByClassName("projectid")[0],
49
+ button:changeval.getElementsByClassName("button")[0],
50
+ };
51
+ changes[0].getElementsByTagName("span")[0].innerHTML=`<a href ="https://scratch.mit.edu/users/${info.username}/">${info.username}</a>`;
52
+ const projectconnect = {
53
+ input:pconnect.getElementsByClassName("projectid")[0],
54
+ button:pconnect.getElementsByClassName("projectbutton")[0]
55
+ };
56
+
57
+ projectconnect.input.addEventListener("change",()=>{
58
+ projectconnect.input.value=projectconnect.input.value.match(/[0-9]/g).toString().replace(/,/g,"");;
59
+ });
60
+ projectconnect.button.addEventListener("click",()=>{
61
+ if(projectconnect.input.value !==""){
62
+ info.projectid = projectconnect.input.value;
63
+ fetch("/handshake",{
64
+ headers: {
65
+ 'Accept': 'application/json',
66
+ 'Content-Type': 'application/json'
67
+ },
68
+ method: "POST",
69
+ body: JSON.stringify({projectid:info.projectid}),
70
+ }).then(()=>{
71
+ changes[1].getElementsByTagName("span")[0].innerHTML=`<a href ="https://scratch.mit.edu/projects/${info.projectid}/">https://scratch.mit.edu/projects/${info.projectid}/</a>`;
72
+ const ws = new WebSocket('ws://localhost:3001');
73
+ ws.onmessage=e=>{
74
+ const data = JSON.parse(e.data);
75
+ const clouddatas = data.clouddatas;
76
+ const changedlists = data.changedlists;
77
+ const cloudkeys = Object.keys(clouddatas);
78
+ let str=`<tr class="title"><th>variable names</th><th>value</th></tr>`;
79
+ let str2="";
80
+ for(c of cloudkeys){
81
+ str = str+`<tr class="${c}"><td>${c}</td><td>${clouddatas[c].value}</td></tr>`;
82
+ str2=str2+`<option value="${c}">${c}</option>`
83
+ }
84
+ table.getElementsByTagName("table")[0].innerHTML=str;
85
+ changevals.choice.innerHTML=str2;
86
+ changes[2].getElementsByTagName("span").innerText=changedlists.toString();
87
+
88
+ }
89
+ })
90
+ }
91
+ })
92
+ changevals.input.addEventListener("change",()=>{
93
+ changevals.input.value=changevals.input.value.match(/[0-9]/g).toString().replace(/,/g,"");
94
+ });
95
+ changevals.button.addEventListener("click",()=>{
96
+ fetch("/change",{
97
+ headers: {
98
+ 'Accept': 'application/json',
99
+ 'Content-Type': 'application/json'
100
+ },
101
+ method: "POST",
102
+ body: JSON.stringify({name:changevals.choice.value,value:changevals.input.value}),
103
+ }).then(res=>{
104
+ table.getElementsByTagName("table")[0].getElementsByClassName(changevals.choice.value)[0].getElementsByTagName("td")[1].innerText=changevals.input.value;
105
+ })
106
+ })
107
+ }
src/style.css ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .box{
2
+ display: flex;
3
+ }
4
+ body{
5
+ font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
6
+ }
7
+ .loginbox{
8
+ display:block;
9
+ }
10
+ .monitor{
11
+ margin: 0px 50px;
12
+ }
13
+ .util.monitor{
14
+ display: block;
15
+ }
16
+ #container{
17
+ display: flex;
18
+ }
19
+ .copyright{
20
+ margin-top: 20px;
21
+ text-align: center;
22
+ }