Jensen-holm commited on
Commit
c2ccf60
·
1 Parent(s): 24f2542

cutting the front end mess and just using this as a backend api

Browse files
README.md DELETED
@@ -1,19 +0,0 @@
1
- ## Flask-Tailwindcss-Template
2
-
3
- ### Preparing for your project
4
- 1. `git clone https://github.com/Jensen-holm/Flask-Tailwindcss-Template && cd Flask-Tailwindcss-Template` <br>
5
- 2. `rm -rf .git` <br>
6
- 3. `mv * ..` <br>
7
- 4. `cd ..` <br>
8
- 5. `rm -rf Flask-Tailwindcss-Template` <br>
9
-
10
- ### Develop
11
- 1. `pip3 install -r requirements.txt` <br>
12
- 2. `npm install` <br>
13
- (in one terminal window)
14
- 3. `npx tailwindcss -i ./static/src/input.css -o ./static/dist/css/output.css --watch` <br>
15
- <br>
16
- (in another terminal window) <br>
17
- 4. `chmod +x run.sh` <br>
18
- 5. `./run.sh` <br>
19
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app.py CHANGED
@@ -1,4 +1,4 @@
1
- from flask import Flask, render_template, request
2
  import numpy as np
3
 
4
  from opts import options
@@ -10,40 +10,28 @@ app = Flask(
10
  )
11
 
12
 
13
- def random_dataset(rows: int, features: int):
14
- """
15
- Initializes a training and a testing dataset in the form of numpy arrays
16
- """
17
- rng = np.random.default_rng()
18
- X = rng.normal(size=(rows, features))
19
- y = rng.integers(5, size=(rows, 1))
20
- return X, y
21
-
22
-
23
- @app.route("/")
24
  def index():
25
- return render_template("index.html")
26
 
 
 
 
 
 
27
 
28
- @app.route("/select_algorithm", methods=["GET", "POST"])
29
- def select_algorithm():
30
- return
31
 
 
32
 
33
- @app.route("/process_algorithm", methods=["GET", "POST"])
34
- def process_algorithm():
35
- alg = request.form.get('model-select')
36
- func = options[alg]
37
 
38
- # have a form for options based on the algorithm the user chose
39
- # and set it as the args variable, make a 'go' button for this funcitonality
40
- # to start the algorithm
41
- args = request.form.get("params")
42
- if args:
43
- # create random numpy array dataset
44
- X, y = random_dataset(100, 3)
45
- func(X, y, args)
46
 
47
 
48
  if __name__ == '__main__':
49
- app.run(debug=True)
 
 
 
1
+ from flask import Flask, request
2
  import numpy as np
3
 
4
  from opts import options
 
10
  )
11
 
12
 
13
+ @app.route("/", methods=["GET"])
 
 
 
 
 
 
 
 
 
 
14
  def index():
 
15
 
16
+ # make sure the request is valid
17
+ def is_valid():
18
+ if request.method == "GET":
19
+ return True
20
+ return False
21
 
22
+ if not is_valid():
23
+ return # bad request status code and error message
 
24
 
25
+ # parse arguments
26
 
27
+ # perform analysis of choice
 
 
 
28
 
29
+ # return results
30
+
31
+ return
 
 
 
 
 
32
 
33
 
34
  if __name__ == '__main__':
35
+ app.run(
36
+ debug=True,
37
+ )
build_dev.sh DELETED
@@ -1,2 +0,0 @@
1
- #!/bin/bash
2
- npx tailwindcss -i ./static/src/input.css -o ./static/dist/css/output.css --watch
 
 
 
cluster/heirarchical.py ADDED
File without changes
dataset/random.py ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+
3
+
4
+ def random_dataset(rows: int, features: int):
5
+ """
6
+ the random_dataset function is used to
7
+ generate a random normal distribution of
8
+ data for testing different machine learning
9
+ algorithms specific to this project
10
+ """
11
+ rng = np.random.default_rng()
12
+ X = rng.normal(size=(rows, features))
13
+ y = rng.integers(5, size=(rows, 1))
14
+ return X, y
neural_network/backprop.py CHANGED
@@ -20,7 +20,7 @@ def get_args(args: dict, wb: dict):
20
  def fp(
21
  X_train: np.array,
22
  y_train: np.array,
23
- actiavtion: callable,
24
  w1: np.array,
25
  w2: np.array,
26
  b1: np.array,
 
20
  def fp(
21
  X_train: np.array,
22
  y_train: np.array,
23
+ activation: callable,
24
  w1: np.array,
25
  w2: np.array,
26
  b1: np.array,
neural_network/main.py CHANGED
@@ -24,9 +24,9 @@ def init(
24
 
25
 
26
  def main(
27
- X: np.array,
28
- y: np.array,
29
- args,
30
  ) -> None:
31
  wb = init(X, args["hidden_size"])
32
  X_train, X_test, y_train, y_test = train_test_split(
 
24
 
25
 
26
  def main(
27
+ X: np.array,
28
+ y: np.array,
29
+ args,
30
  ) -> None:
31
  wb = init(X, args["hidden_size"])
32
  X_train, X_test, y_train, y_test = train_test_split(
package-lock.json DELETED
@@ -1,998 +0,0 @@
1
- {
2
- "name": "Data-Mining-Study",
3
- "lockfileVersion": 3,
4
- "requires": true,
5
- "packages": {
6
- "": {
7
- "devDependencies": {
8
- "tailwindcss": "^3.3.1"
9
- }
10
- },
11
- "node_modules/@jridgewell/gen-mapping": {
12
- "version": "0.3.3",
13
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
14
- "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
15
- "dev": true,
16
- "dependencies": {
17
- "@jridgewell/set-array": "^1.0.1",
18
- "@jridgewell/sourcemap-codec": "^1.4.10",
19
- "@jridgewell/trace-mapping": "^0.3.9"
20
- },
21
- "engines": {
22
- "node": ">=6.0.0"
23
- }
24
- },
25
- "node_modules/@jridgewell/resolve-uri": {
26
- "version": "3.1.0",
27
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
28
- "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
29
- "dev": true,
30
- "engines": {
31
- "node": ">=6.0.0"
32
- }
33
- },
34
- "node_modules/@jridgewell/set-array": {
35
- "version": "1.1.2",
36
- "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
37
- "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
38
- "dev": true,
39
- "engines": {
40
- "node": ">=6.0.0"
41
- }
42
- },
43
- "node_modules/@jridgewell/sourcemap-codec": {
44
- "version": "1.4.15",
45
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
46
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
47
- "dev": true
48
- },
49
- "node_modules/@jridgewell/trace-mapping": {
50
- "version": "0.3.18",
51
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
52
- "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
53
- "dev": true,
54
- "dependencies": {
55
- "@jridgewell/resolve-uri": "3.1.0",
56
- "@jridgewell/sourcemap-codec": "1.4.14"
57
- }
58
- },
59
- "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": {
60
- "version": "1.4.14",
61
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
62
- "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
63
- "dev": true
64
- },
65
- "node_modules/@nodelib/fs.scandir": {
66
- "version": "2.1.5",
67
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
68
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
69
- "dev": true,
70
- "dependencies": {
71
- "@nodelib/fs.stat": "2.0.5",
72
- "run-parallel": "^1.1.9"
73
- },
74
- "engines": {
75
- "node": ">= 8"
76
- }
77
- },
78
- "node_modules/@nodelib/fs.stat": {
79
- "version": "2.0.5",
80
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
81
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
82
- "dev": true,
83
- "engines": {
84
- "node": ">= 8"
85
- }
86
- },
87
- "node_modules/@nodelib/fs.walk": {
88
- "version": "1.2.8",
89
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
90
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
91
- "dev": true,
92
- "dependencies": {
93
- "@nodelib/fs.scandir": "2.1.5",
94
- "fastq": "^1.6.0"
95
- },
96
- "engines": {
97
- "node": ">= 8"
98
- }
99
- },
100
- "node_modules/any-promise": {
101
- "version": "1.3.0",
102
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
103
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
104
- "dev": true
105
- },
106
- "node_modules/anymatch": {
107
- "version": "3.1.3",
108
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
109
- "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
110
- "dev": true,
111
- "dependencies": {
112
- "normalize-path": "^3.0.0",
113
- "picomatch": "^2.0.4"
114
- },
115
- "engines": {
116
- "node": ">= 8"
117
- }
118
- },
119
- "node_modules/arg": {
120
- "version": "5.0.2",
121
- "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
122
- "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
123
- "dev": true
124
- },
125
- "node_modules/balanced-match": {
126
- "version": "1.0.2",
127
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
128
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
129
- "dev": true
130
- },
131
- "node_modules/binary-extensions": {
132
- "version": "2.2.0",
133
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
134
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
135
- "dev": true,
136
- "engines": {
137
- "node": ">=8"
138
- }
139
- },
140
- "node_modules/brace-expansion": {
141
- "version": "1.1.11",
142
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
143
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
144
- "dev": true,
145
- "dependencies": {
146
- "balanced-match": "^1.0.0",
147
- "concat-map": "0.0.1"
148
- }
149
- },
150
- "node_modules/braces": {
151
- "version": "3.0.2",
152
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
153
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
154
- "dev": true,
155
- "dependencies": {
156
- "fill-range": "^7.0.1"
157
- },
158
- "engines": {
159
- "node": ">=8"
160
- }
161
- },
162
- "node_modules/camelcase-css": {
163
- "version": "2.0.1",
164
- "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
165
- "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
166
- "dev": true,
167
- "engines": {
168
- "node": ">= 6"
169
- }
170
- },
171
- "node_modules/chokidar": {
172
- "version": "3.5.3",
173
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
174
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
175
- "dev": true,
176
- "funding": [
177
- {
178
- "type": "individual",
179
- "url": "https://paulmillr.com/funding/"
180
- }
181
- ],
182
- "dependencies": {
183
- "anymatch": "~3.1.2",
184
- "braces": "~3.0.2",
185
- "glob-parent": "~5.1.2",
186
- "is-binary-path": "~2.1.0",
187
- "is-glob": "~4.0.1",
188
- "normalize-path": "~3.0.0",
189
- "readdirp": "~3.6.0"
190
- },
191
- "engines": {
192
- "node": ">= 8.10.0"
193
- },
194
- "optionalDependencies": {
195
- "fsevents": "~2.3.2"
196
- }
197
- },
198
- "node_modules/chokidar/node_modules/glob-parent": {
199
- "version": "5.1.2",
200
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
201
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
202
- "dev": true,
203
- "dependencies": {
204
- "is-glob": "^4.0.1"
205
- },
206
- "engines": {
207
- "node": ">= 6"
208
- }
209
- },
210
- "node_modules/color-name": {
211
- "version": "1.1.4",
212
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
213
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
214
- "dev": true
215
- },
216
- "node_modules/commander": {
217
- "version": "4.1.1",
218
- "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
219
- "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
220
- "dev": true,
221
- "engines": {
222
- "node": ">= 6"
223
- }
224
- },
225
- "node_modules/concat-map": {
226
- "version": "0.0.1",
227
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
228
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
229
- "dev": true
230
- },
231
- "node_modules/cssesc": {
232
- "version": "3.0.0",
233
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
234
- "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
235
- "dev": true,
236
- "bin": {
237
- "cssesc": "bin/cssesc"
238
- },
239
- "engines": {
240
- "node": ">=4"
241
- }
242
- },
243
- "node_modules/didyoumean": {
244
- "version": "1.2.2",
245
- "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
246
- "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
247
- "dev": true
248
- },
249
- "node_modules/dlv": {
250
- "version": "1.1.3",
251
- "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
252
- "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
253
- "dev": true
254
- },
255
- "node_modules/fast-glob": {
256
- "version": "3.2.12",
257
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
258
- "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
259
- "dev": true,
260
- "dependencies": {
261
- "@nodelib/fs.stat": "^2.0.2",
262
- "@nodelib/fs.walk": "^1.2.3",
263
- "glob-parent": "^5.1.2",
264
- "merge2": "^1.3.0",
265
- "micromatch": "^4.0.4"
266
- },
267
- "engines": {
268
- "node": ">=8.6.0"
269
- }
270
- },
271
- "node_modules/fast-glob/node_modules/glob-parent": {
272
- "version": "5.1.2",
273
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
274
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
275
- "dev": true,
276
- "dependencies": {
277
- "is-glob": "^4.0.1"
278
- },
279
- "engines": {
280
- "node": ">= 6"
281
- }
282
- },
283
- "node_modules/fastq": {
284
- "version": "1.15.0",
285
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
286
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
287
- "dev": true,
288
- "dependencies": {
289
- "reusify": "^1.0.4"
290
- }
291
- },
292
- "node_modules/fill-range": {
293
- "version": "7.0.1",
294
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
295
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
296
- "dev": true,
297
- "dependencies": {
298
- "to-regex-range": "^5.0.1"
299
- },
300
- "engines": {
301
- "node": ">=8"
302
- }
303
- },
304
- "node_modules/fs.realpath": {
305
- "version": "1.0.0",
306
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
307
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
308
- "dev": true
309
- },
310
- "node_modules/fsevents": {
311
- "version": "2.3.2",
312
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
313
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
314
- "dev": true,
315
- "hasInstallScript": true,
316
- "optional": true,
317
- "os": [
318
- "darwin"
319
- ],
320
- "engines": {
321
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
322
- }
323
- },
324
- "node_modules/function-bind": {
325
- "version": "1.1.1",
326
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
327
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
328
- "dev": true
329
- },
330
- "node_modules/glob": {
331
- "version": "7.1.6",
332
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
333
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
334
- "dev": true,
335
- "dependencies": {
336
- "fs.realpath": "^1.0.0",
337
- "inflight": "^1.0.4",
338
- "inherits": "2",
339
- "minimatch": "^3.0.4",
340
- "once": "^1.3.0",
341
- "path-is-absolute": "^1.0.0"
342
- },
343
- "engines": {
344
- "node": "*"
345
- },
346
- "funding": {
347
- "url": "https://github.com/sponsors/isaacs"
348
- }
349
- },
350
- "node_modules/glob-parent": {
351
- "version": "6.0.2",
352
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
353
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
354
- "dev": true,
355
- "dependencies": {
356
- "is-glob": "^4.0.3"
357
- },
358
- "engines": {
359
- "node": ">=10.13.0"
360
- }
361
- },
362
- "node_modules/has": {
363
- "version": "1.0.3",
364
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
365
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
366
- "dev": true,
367
- "dependencies": {
368
- "function-bind": "^1.1.1"
369
- },
370
- "engines": {
371
- "node": ">= 0.4.0"
372
- }
373
- },
374
- "node_modules/inflight": {
375
- "version": "1.0.6",
376
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
377
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
378
- "dev": true,
379
- "dependencies": {
380
- "once": "^1.3.0",
381
- "wrappy": "1"
382
- }
383
- },
384
- "node_modules/inherits": {
385
- "version": "2.0.4",
386
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
387
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
388
- "dev": true
389
- },
390
- "node_modules/is-binary-path": {
391
- "version": "2.1.0",
392
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
393
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
394
- "dev": true,
395
- "dependencies": {
396
- "binary-extensions": "^2.0.0"
397
- },
398
- "engines": {
399
- "node": ">=8"
400
- }
401
- },
402
- "node_modules/is-core-module": {
403
- "version": "2.12.0",
404
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz",
405
- "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==",
406
- "dev": true,
407
- "dependencies": {
408
- "has": "^1.0.3"
409
- },
410
- "funding": {
411
- "url": "https://github.com/sponsors/ljharb"
412
- }
413
- },
414
- "node_modules/is-extglob": {
415
- "version": "2.1.1",
416
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
417
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
418
- "dev": true,
419
- "engines": {
420
- "node": ">=0.10.0"
421
- }
422
- },
423
- "node_modules/is-glob": {
424
- "version": "4.0.3",
425
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
426
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
427
- "dev": true,
428
- "dependencies": {
429
- "is-extglob": "^2.1.1"
430
- },
431
- "engines": {
432
- "node": ">=0.10.0"
433
- }
434
- },
435
- "node_modules/is-number": {
436
- "version": "7.0.0",
437
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
438
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
439
- "dev": true,
440
- "engines": {
441
- "node": ">=0.12.0"
442
- }
443
- },
444
- "node_modules/jiti": {
445
- "version": "1.18.2",
446
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz",
447
- "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==",
448
- "dev": true,
449
- "bin": {
450
- "jiti": "bin/jiti.js"
451
- }
452
- },
453
- "node_modules/lilconfig": {
454
- "version": "2.1.0",
455
- "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
456
- "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
457
- "dev": true,
458
- "engines": {
459
- "node": ">=10"
460
- }
461
- },
462
- "node_modules/lines-and-columns": {
463
- "version": "1.2.4",
464
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
465
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
466
- "dev": true
467
- },
468
- "node_modules/merge2": {
469
- "version": "1.4.1",
470
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
471
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
472
- "dev": true,
473
- "engines": {
474
- "node": ">= 8"
475
- }
476
- },
477
- "node_modules/micromatch": {
478
- "version": "4.0.5",
479
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
480
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
481
- "dev": true,
482
- "dependencies": {
483
- "braces": "^3.0.2",
484
- "picomatch": "^2.3.1"
485
- },
486
- "engines": {
487
- "node": ">=8.6"
488
- }
489
- },
490
- "node_modules/minimatch": {
491
- "version": "3.1.2",
492
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
493
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
494
- "dev": true,
495
- "dependencies": {
496
- "brace-expansion": "^1.1.7"
497
- },
498
- "engines": {
499
- "node": "*"
500
- }
501
- },
502
- "node_modules/mz": {
503
- "version": "2.7.0",
504
- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
505
- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
506
- "dev": true,
507
- "dependencies": {
508
- "any-promise": "^1.0.0",
509
- "object-assign": "^4.0.1",
510
- "thenify-all": "^1.0.0"
511
- }
512
- },
513
- "node_modules/nanoid": {
514
- "version": "3.3.6",
515
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
516
- "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
517
- "dev": true,
518
- "funding": [
519
- {
520
- "type": "github",
521
- "url": "https://github.com/sponsors/ai"
522
- }
523
- ],
524
- "bin": {
525
- "nanoid": "bin/nanoid.cjs"
526
- },
527
- "engines": {
528
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
529
- }
530
- },
531
- "node_modules/normalize-path": {
532
- "version": "3.0.0",
533
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
534
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
535
- "dev": true,
536
- "engines": {
537
- "node": ">=0.10.0"
538
- }
539
- },
540
- "node_modules/object-assign": {
541
- "version": "4.1.1",
542
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
543
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
544
- "dev": true,
545
- "engines": {
546
- "node": ">=0.10.0"
547
- }
548
- },
549
- "node_modules/object-hash": {
550
- "version": "3.0.0",
551
- "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
552
- "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
553
- "dev": true,
554
- "engines": {
555
- "node": ">= 6"
556
- }
557
- },
558
- "node_modules/once": {
559
- "version": "1.4.0",
560
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
561
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
562
- "dev": true,
563
- "dependencies": {
564
- "wrappy": "1"
565
- }
566
- },
567
- "node_modules/path-is-absolute": {
568
- "version": "1.0.1",
569
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
570
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
571
- "dev": true,
572
- "engines": {
573
- "node": ">=0.10.0"
574
- }
575
- },
576
- "node_modules/path-parse": {
577
- "version": "1.0.7",
578
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
579
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
580
- "dev": true
581
- },
582
- "node_modules/picocolors": {
583
- "version": "1.0.0",
584
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
585
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
586
- "dev": true
587
- },
588
- "node_modules/picomatch": {
589
- "version": "2.3.1",
590
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
591
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
592
- "dev": true,
593
- "engines": {
594
- "node": ">=8.6"
595
- },
596
- "funding": {
597
- "url": "https://github.com/sponsors/jonschlinkert"
598
- }
599
- },
600
- "node_modules/pify": {
601
- "version": "2.3.0",
602
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
603
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
604
- "dev": true,
605
- "engines": {
606
- "node": ">=0.10.0"
607
- }
608
- },
609
- "node_modules/pirates": {
610
- "version": "4.0.5",
611
- "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz",
612
- "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==",
613
- "dev": true,
614
- "engines": {
615
- "node": ">= 6"
616
- }
617
- },
618
- "node_modules/postcss": {
619
- "version": "8.4.23",
620
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz",
621
- "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==",
622
- "dev": true,
623
- "funding": [
624
- {
625
- "type": "opencollective",
626
- "url": "https://opencollective.com/postcss/"
627
- },
628
- {
629
- "type": "tidelift",
630
- "url": "https://tidelift.com/funding/github/npm/postcss"
631
- },
632
- {
633
- "type": "github",
634
- "url": "https://github.com/sponsors/ai"
635
- }
636
- ],
637
- "dependencies": {
638
- "nanoid": "^3.3.6",
639
- "picocolors": "^1.0.0",
640
- "source-map-js": "^1.0.2"
641
- },
642
- "engines": {
643
- "node": "^10 || ^12 || >=14"
644
- }
645
- },
646
- "node_modules/postcss-import": {
647
- "version": "14.1.0",
648
- "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
649
- "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
650
- "dev": true,
651
- "dependencies": {
652
- "postcss-value-parser": "^4.0.0",
653
- "read-cache": "^1.0.0",
654
- "resolve": "^1.1.7"
655
- },
656
- "engines": {
657
- "node": ">=10.0.0"
658
- },
659
- "peerDependencies": {
660
- "postcss": "^8.0.0"
661
- }
662
- },
663
- "node_modules/postcss-js": {
664
- "version": "4.0.1",
665
- "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
666
- "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
667
- "dev": true,
668
- "dependencies": {
669
- "camelcase-css": "^2.0.1"
670
- },
671
- "engines": {
672
- "node": "^12 || ^14 || >= 16"
673
- },
674
- "funding": {
675
- "type": "opencollective",
676
- "url": "https://opencollective.com/postcss/"
677
- },
678
- "peerDependencies": {
679
- "postcss": "^8.4.21"
680
- }
681
- },
682
- "node_modules/postcss-load-config": {
683
- "version": "3.1.4",
684
- "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
685
- "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
686
- "dev": true,
687
- "dependencies": {
688
- "lilconfig": "^2.0.5",
689
- "yaml": "^1.10.2"
690
- },
691
- "engines": {
692
- "node": ">= 10"
693
- },
694
- "funding": {
695
- "type": "opencollective",
696
- "url": "https://opencollective.com/postcss/"
697
- },
698
- "peerDependencies": {
699
- "postcss": ">=8.0.9",
700
- "ts-node": ">=9.0.0"
701
- },
702
- "peerDependenciesMeta": {
703
- "postcss": {
704
- "optional": true
705
- },
706
- "ts-node": {
707
- "optional": true
708
- }
709
- }
710
- },
711
- "node_modules/postcss-nested": {
712
- "version": "6.0.0",
713
- "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz",
714
- "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==",
715
- "dev": true,
716
- "dependencies": {
717
- "postcss-selector-parser": "^6.0.10"
718
- },
719
- "engines": {
720
- "node": ">=12.0"
721
- },
722
- "funding": {
723
- "type": "opencollective",
724
- "url": "https://opencollective.com/postcss/"
725
- },
726
- "peerDependencies": {
727
- "postcss": "^8.2.14"
728
- }
729
- },
730
- "node_modules/postcss-selector-parser": {
731
- "version": "6.0.11",
732
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
733
- "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
734
- "dev": true,
735
- "dependencies": {
736
- "cssesc": "^3.0.0",
737
- "util-deprecate": "^1.0.2"
738
- },
739
- "engines": {
740
- "node": ">=4"
741
- }
742
- },
743
- "node_modules/postcss-value-parser": {
744
- "version": "4.2.0",
745
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
746
- "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
747
- "dev": true
748
- },
749
- "node_modules/queue-microtask": {
750
- "version": "1.2.3",
751
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
752
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
753
- "dev": true,
754
- "funding": [
755
- {
756
- "type": "github",
757
- "url": "https://github.com/sponsors/feross"
758
- },
759
- {
760
- "type": "patreon",
761
- "url": "https://www.patreon.com/feross"
762
- },
763
- {
764
- "type": "consulting",
765
- "url": "https://feross.org/support"
766
- }
767
- ]
768
- },
769
- "node_modules/quick-lru": {
770
- "version": "5.1.1",
771
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
772
- "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
773
- "dev": true,
774
- "engines": {
775
- "node": ">=10"
776
- },
777
- "funding": {
778
- "url": "https://github.com/sponsors/sindresorhus"
779
- }
780
- },
781
- "node_modules/read-cache": {
782
- "version": "1.0.0",
783
- "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
784
- "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
785
- "dev": true,
786
- "dependencies": {
787
- "pify": "^2.3.0"
788
- }
789
- },
790
- "node_modules/readdirp": {
791
- "version": "3.6.0",
792
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
793
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
794
- "dev": true,
795
- "dependencies": {
796
- "picomatch": "^2.2.1"
797
- },
798
- "engines": {
799
- "node": ">=8.10.0"
800
- }
801
- },
802
- "node_modules/resolve": {
803
- "version": "1.22.2",
804
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
805
- "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==",
806
- "dev": true,
807
- "dependencies": {
808
- "is-core-module": "^2.11.0",
809
- "path-parse": "^1.0.7",
810
- "supports-preserve-symlinks-flag": "^1.0.0"
811
- },
812
- "bin": {
813
- "resolve": "bin/resolve"
814
- },
815
- "funding": {
816
- "url": "https://github.com/sponsors/ljharb"
817
- }
818
- },
819
- "node_modules/reusify": {
820
- "version": "1.0.4",
821
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
822
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
823
- "dev": true,
824
- "engines": {
825
- "iojs": ">=1.0.0",
826
- "node": ">=0.10.0"
827
- }
828
- },
829
- "node_modules/run-parallel": {
830
- "version": "1.2.0",
831
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
832
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
833
- "dev": true,
834
- "funding": [
835
- {
836
- "type": "github",
837
- "url": "https://github.com/sponsors/feross"
838
- },
839
- {
840
- "type": "patreon",
841
- "url": "https://www.patreon.com/feross"
842
- },
843
- {
844
- "type": "consulting",
845
- "url": "https://feross.org/support"
846
- }
847
- ],
848
- "dependencies": {
849
- "queue-microtask": "^1.2.2"
850
- }
851
- },
852
- "node_modules/source-map-js": {
853
- "version": "1.0.2",
854
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
855
- "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
856
- "dev": true,
857
- "engines": {
858
- "node": ">=0.10.0"
859
- }
860
- },
861
- "node_modules/sucrase": {
862
- "version": "3.32.0",
863
- "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz",
864
- "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==",
865
- "dev": true,
866
- "dependencies": {
867
- "@jridgewell/gen-mapping": "^0.3.2",
868
- "commander": "^4.0.0",
869
- "glob": "7.1.6",
870
- "lines-and-columns": "^1.1.6",
871
- "mz": "^2.7.0",
872
- "pirates": "^4.0.1",
873
- "ts-interface-checker": "^0.1.9"
874
- },
875
- "bin": {
876
- "sucrase": "bin/sucrase",
877
- "sucrase-node": "bin/sucrase-node"
878
- },
879
- "engines": {
880
- "node": ">=8"
881
- }
882
- },
883
- "node_modules/supports-preserve-symlinks-flag": {
884
- "version": "1.0.0",
885
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
886
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
887
- "dev": true,
888
- "engines": {
889
- "node": ">= 0.4"
890
- },
891
- "funding": {
892
- "url": "https://github.com/sponsors/ljharb"
893
- }
894
- },
895
- "node_modules/tailwindcss": {
896
- "version": "3.3.1",
897
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.1.tgz",
898
- "integrity": "sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==",
899
- "dev": true,
900
- "dependencies": {
901
- "arg": "^5.0.2",
902
- "chokidar": "^3.5.3",
903
- "color-name": "^1.1.4",
904
- "didyoumean": "^1.2.2",
905
- "dlv": "^1.1.3",
906
- "fast-glob": "^3.2.12",
907
- "glob-parent": "^6.0.2",
908
- "is-glob": "^4.0.3",
909
- "jiti": "^1.17.2",
910
- "lilconfig": "^2.0.6",
911
- "micromatch": "^4.0.5",
912
- "normalize-path": "^3.0.0",
913
- "object-hash": "^3.0.0",
914
- "picocolors": "^1.0.0",
915
- "postcss": "^8.0.9",
916
- "postcss-import": "^14.1.0",
917
- "postcss-js": "^4.0.0",
918
- "postcss-load-config": "^3.1.4",
919
- "postcss-nested": "6.0.0",
920
- "postcss-selector-parser": "^6.0.11",
921
- "postcss-value-parser": "^4.2.0",
922
- "quick-lru": "^5.1.1",
923
- "resolve": "^1.22.1",
924
- "sucrase": "^3.29.0"
925
- },
926
- "bin": {
927
- "tailwind": "lib/cli.js",
928
- "tailwindcss": "lib/cli.js"
929
- },
930
- "engines": {
931
- "node": ">=12.13.0"
932
- },
933
- "peerDependencies": {
934
- "postcss": "^8.0.9"
935
- }
936
- },
937
- "node_modules/thenify": {
938
- "version": "3.3.1",
939
- "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
940
- "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
941
- "dev": true,
942
- "dependencies": {
943
- "any-promise": "^1.0.0"
944
- }
945
- },
946
- "node_modules/thenify-all": {
947
- "version": "1.6.0",
948
- "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
949
- "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
950
- "dev": true,
951
- "dependencies": {
952
- "thenify": ">= 3.1.0 < 4"
953
- },
954
- "engines": {
955
- "node": ">=0.8"
956
- }
957
- },
958
- "node_modules/to-regex-range": {
959
- "version": "5.0.1",
960
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
961
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
962
- "dev": true,
963
- "dependencies": {
964
- "is-number": "^7.0.0"
965
- },
966
- "engines": {
967
- "node": ">=8.0"
968
- }
969
- },
970
- "node_modules/ts-interface-checker": {
971
- "version": "0.1.13",
972
- "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
973
- "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
974
- "dev": true
975
- },
976
- "node_modules/util-deprecate": {
977
- "version": "1.0.2",
978
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
979
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
980
- "dev": true
981
- },
982
- "node_modules/wrappy": {
983
- "version": "1.0.2",
984
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
985
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
986
- "dev": true
987
- },
988
- "node_modules/yaml": {
989
- "version": "1.10.2",
990
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
991
- "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
992
- "dev": true,
993
- "engines": {
994
- "node": ">= 6"
995
- }
996
- }
997
- }
998
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
package.json DELETED
@@ -1,5 +0,0 @@
1
- {
2
- "devDependencies": {
3
- "tailwindcss": "^3.3.1"
4
- }
5
- }
 
 
 
 
 
 
run.sh DELETED
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
- npx tailwindcss -i ./static/src/input.css -o ./static/dist/css/output.css
3
- gunicorn --bind :3000 --workers 1 --threads 8 --timeout 0 app:app
 
 
 
 
static/src/input.css DELETED
@@ -1,4 +0,0 @@
1
- @tailwind base;
2
- @tailwind components;
3
- @tailwind utilities;
4
-
 
 
 
 
 
tailwind.config.js DELETED
@@ -1,12 +0,0 @@
1
- /** @type {import('tailwindcss').Config} */
2
- module.exports = {
3
- content: [
4
- "./templates/**/*.html",
5
- "./static/src/**/*.js"
6
- ],
7
- theme: {
8
- extend: {},
9
- },
10
- plugins: [],
11
- }
12
-
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/index.html DELETED
@@ -1,34 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>Data Mining From Scratch</title>
6
- <link rel="stylesheet" href="{{ url_for('static', filename='dist/css/output.css') }}">
7
- <!-- Add Tailwind CSS -->
8
- <link rel="stylesheet" href="https://cdn.tailwindcss.com/css/tailwind.min.css">
9
- </head>
10
- <body class="bg-gray-100">
11
- <div class="container mx-auto flex flex-col items-center justify-center h-screen">
12
- <div class="text-center mb-8">
13
- <h1 class="text-4xl font-bold">Data Mining From Scratch</h1>
14
- <p class="text-gray-500">By: Jensen Holm</p>
15
- </div>
16
- <div class="w-full md:w-1/3">
17
- <form method="POST" action="{{ url_for('select_algorithm') }}">
18
- <label class="block font-medium text-gray-700 mb-2" for="model-select">
19
- Select Algorithm
20
- </label>
21
- <select id="model-select" name="model-select"
22
- class="form-select block w-full mt-1 rounded-md shadow-sm border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50">
23
- <option value="neural-network">Neural Network</option>
24
- <option value="kmeans-clustering">Kmeans Clustering</option>
25
- <option value="kmedoids-clustering">Kmedoids Clustering</option>
26
- </select>
27
- <button type="submit" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded mt-4">
28
- Go
29
- </button>
30
- </form>
31
- </div>
32
- </div>
33
- </body>
34
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
templates/opts.html DELETED
@@ -1,32 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>Data Mining From Scratch</title>
6
- <link rel="stylesheet" href="{{ url_for('static', filename='dist/css/output.css') }}">
7
- </head>
8
- <body class="bg-gray-100">
9
- <div class="container mx-auto flex flex-col items-center justify-center h-screen">
10
- <div class="text-center mb-8">
11
- <h1 class="text-4xl font-bold">Data Mining From Scratch</h1>
12
- <p class="text-gray-500">By: Jensen Holm</p>
13
- </div>
14
- <div class="w-full md:w-1/3">
15
- <form method="POST" action="{{ url_for('process_algorithm') }}">
16
- <label class="block font-medium text-gray-700 mb-2" for="model-select">
17
- Tune {{ alg }} Parameters
18
- </label>
19
- <select id="model-select" name="model-select"
20
- class="form-select block w-full mt-1 rounded-md shadow-sm border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50">
21
- {{% for i in opts %}}
22
- <option value="{{i}}">{{ i }}</option>
23
- {{% endfor %}}
24
- </select>
25
- <button type="submit" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded mt-4">
26
- Go
27
- </button>
28
- </form>
29
- </div>
30
- </div>
31
- </body>
32
- </html>