create-cubing-app 0.36.4 → 0.43.5-c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,508 @@
1
+ {
2
+ "name": "app-template",
3
+ "lockfileVersion": 3,
4
+ "requires": true,
5
+ "packages": {
6
+ "": {
7
+ "dependencies": {
8
+ "cubing": "^0.43.5"
9
+ },
10
+ "devDependencies": {
11
+ "barely-a-dev-server": "^0.6.0"
12
+ }
13
+ },
14
+ "node_modules/@esbuild/android-arm": {
15
+ "version": "0.19.4",
16
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.4.tgz",
17
+ "integrity": "sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ==",
18
+ "cpu": [
19
+ "arm"
20
+ ],
21
+ "dev": true,
22
+ "optional": true,
23
+ "os": [
24
+ "android"
25
+ ],
26
+ "peer": true,
27
+ "engines": {
28
+ "node": ">=12"
29
+ }
30
+ },
31
+ "node_modules/@esbuild/android-arm64": {
32
+ "version": "0.19.4",
33
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.4.tgz",
34
+ "integrity": "sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg==",
35
+ "cpu": [
36
+ "arm64"
37
+ ],
38
+ "dev": true,
39
+ "optional": true,
40
+ "os": [
41
+ "android"
42
+ ],
43
+ "peer": true,
44
+ "engines": {
45
+ "node": ">=12"
46
+ }
47
+ },
48
+ "node_modules/@esbuild/android-x64": {
49
+ "version": "0.19.4",
50
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.4.tgz",
51
+ "integrity": "sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g==",
52
+ "cpu": [
53
+ "x64"
54
+ ],
55
+ "dev": true,
56
+ "optional": true,
57
+ "os": [
58
+ "android"
59
+ ],
60
+ "peer": true,
61
+ "engines": {
62
+ "node": ">=12"
63
+ }
64
+ },
65
+ "node_modules/@esbuild/darwin-arm64": {
66
+ "version": "0.19.4",
67
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.4.tgz",
68
+ "integrity": "sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==",
69
+ "cpu": [
70
+ "arm64"
71
+ ],
72
+ "dev": true,
73
+ "optional": true,
74
+ "os": [
75
+ "darwin"
76
+ ],
77
+ "peer": true,
78
+ "engines": {
79
+ "node": ">=12"
80
+ }
81
+ },
82
+ "node_modules/@esbuild/darwin-x64": {
83
+ "version": "0.19.4",
84
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.4.tgz",
85
+ "integrity": "sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw==",
86
+ "cpu": [
87
+ "x64"
88
+ ],
89
+ "dev": true,
90
+ "optional": true,
91
+ "os": [
92
+ "darwin"
93
+ ],
94
+ "peer": true,
95
+ "engines": {
96
+ "node": ">=12"
97
+ }
98
+ },
99
+ "node_modules/@esbuild/freebsd-arm64": {
100
+ "version": "0.19.4",
101
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.4.tgz",
102
+ "integrity": "sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ==",
103
+ "cpu": [
104
+ "arm64"
105
+ ],
106
+ "dev": true,
107
+ "optional": true,
108
+ "os": [
109
+ "freebsd"
110
+ ],
111
+ "peer": true,
112
+ "engines": {
113
+ "node": ">=12"
114
+ }
115
+ },
116
+ "node_modules/@esbuild/freebsd-x64": {
117
+ "version": "0.19.4",
118
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.4.tgz",
119
+ "integrity": "sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw==",
120
+ "cpu": [
121
+ "x64"
122
+ ],
123
+ "dev": true,
124
+ "optional": true,
125
+ "os": [
126
+ "freebsd"
127
+ ],
128
+ "peer": true,
129
+ "engines": {
130
+ "node": ">=12"
131
+ }
132
+ },
133
+ "node_modules/@esbuild/linux-arm": {
134
+ "version": "0.19.4",
135
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.4.tgz",
136
+ "integrity": "sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg==",
137
+ "cpu": [
138
+ "arm"
139
+ ],
140
+ "dev": true,
141
+ "optional": true,
142
+ "os": [
143
+ "linux"
144
+ ],
145
+ "peer": true,
146
+ "engines": {
147
+ "node": ">=12"
148
+ }
149
+ },
150
+ "node_modules/@esbuild/linux-arm64": {
151
+ "version": "0.19.4",
152
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.4.tgz",
153
+ "integrity": "sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA==",
154
+ "cpu": [
155
+ "arm64"
156
+ ],
157
+ "dev": true,
158
+ "optional": true,
159
+ "os": [
160
+ "linux"
161
+ ],
162
+ "peer": true,
163
+ "engines": {
164
+ "node": ">=12"
165
+ }
166
+ },
167
+ "node_modules/@esbuild/linux-ia32": {
168
+ "version": "0.19.4",
169
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.4.tgz",
170
+ "integrity": "sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ==",
171
+ "cpu": [
172
+ "ia32"
173
+ ],
174
+ "dev": true,
175
+ "optional": true,
176
+ "os": [
177
+ "linux"
178
+ ],
179
+ "peer": true,
180
+ "engines": {
181
+ "node": ">=12"
182
+ }
183
+ },
184
+ "node_modules/@esbuild/linux-loong64": {
185
+ "version": "0.19.4",
186
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.4.tgz",
187
+ "integrity": "sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg==",
188
+ "cpu": [
189
+ "loong64"
190
+ ],
191
+ "dev": true,
192
+ "optional": true,
193
+ "os": [
194
+ "linux"
195
+ ],
196
+ "peer": true,
197
+ "engines": {
198
+ "node": ">=12"
199
+ }
200
+ },
201
+ "node_modules/@esbuild/linux-mips64el": {
202
+ "version": "0.19.4",
203
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.4.tgz",
204
+ "integrity": "sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw==",
205
+ "cpu": [
206
+ "mips64el"
207
+ ],
208
+ "dev": true,
209
+ "optional": true,
210
+ "os": [
211
+ "linux"
212
+ ],
213
+ "peer": true,
214
+ "engines": {
215
+ "node": ">=12"
216
+ }
217
+ },
218
+ "node_modules/@esbuild/linux-ppc64": {
219
+ "version": "0.19.4",
220
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.4.tgz",
221
+ "integrity": "sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw==",
222
+ "cpu": [
223
+ "ppc64"
224
+ ],
225
+ "dev": true,
226
+ "optional": true,
227
+ "os": [
228
+ "linux"
229
+ ],
230
+ "peer": true,
231
+ "engines": {
232
+ "node": ">=12"
233
+ }
234
+ },
235
+ "node_modules/@esbuild/linux-riscv64": {
236
+ "version": "0.19.4",
237
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.4.tgz",
238
+ "integrity": "sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig==",
239
+ "cpu": [
240
+ "riscv64"
241
+ ],
242
+ "dev": true,
243
+ "optional": true,
244
+ "os": [
245
+ "linux"
246
+ ],
247
+ "peer": true,
248
+ "engines": {
249
+ "node": ">=12"
250
+ }
251
+ },
252
+ "node_modules/@esbuild/linux-s390x": {
253
+ "version": "0.19.4",
254
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.4.tgz",
255
+ "integrity": "sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg==",
256
+ "cpu": [
257
+ "s390x"
258
+ ],
259
+ "dev": true,
260
+ "optional": true,
261
+ "os": [
262
+ "linux"
263
+ ],
264
+ "peer": true,
265
+ "engines": {
266
+ "node": ">=12"
267
+ }
268
+ },
269
+ "node_modules/@esbuild/linux-x64": {
270
+ "version": "0.19.4",
271
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.4.tgz",
272
+ "integrity": "sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg==",
273
+ "cpu": [
274
+ "x64"
275
+ ],
276
+ "dev": true,
277
+ "optional": true,
278
+ "os": [
279
+ "linux"
280
+ ],
281
+ "peer": true,
282
+ "engines": {
283
+ "node": ">=12"
284
+ }
285
+ },
286
+ "node_modules/@esbuild/netbsd-x64": {
287
+ "version": "0.19.4",
288
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.4.tgz",
289
+ "integrity": "sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A==",
290
+ "cpu": [
291
+ "x64"
292
+ ],
293
+ "dev": true,
294
+ "optional": true,
295
+ "os": [
296
+ "netbsd"
297
+ ],
298
+ "peer": true,
299
+ "engines": {
300
+ "node": ">=12"
301
+ }
302
+ },
303
+ "node_modules/@esbuild/openbsd-x64": {
304
+ "version": "0.19.4",
305
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.4.tgz",
306
+ "integrity": "sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw==",
307
+ "cpu": [
308
+ "x64"
309
+ ],
310
+ "dev": true,
311
+ "optional": true,
312
+ "os": [
313
+ "openbsd"
314
+ ],
315
+ "peer": true,
316
+ "engines": {
317
+ "node": ">=12"
318
+ }
319
+ },
320
+ "node_modules/@esbuild/sunos-x64": {
321
+ "version": "0.19.4",
322
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.4.tgz",
323
+ "integrity": "sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw==",
324
+ "cpu": [
325
+ "x64"
326
+ ],
327
+ "dev": true,
328
+ "optional": true,
329
+ "os": [
330
+ "sunos"
331
+ ],
332
+ "peer": true,
333
+ "engines": {
334
+ "node": ">=12"
335
+ }
336
+ },
337
+ "node_modules/@esbuild/win32-arm64": {
338
+ "version": "0.19.4",
339
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.4.tgz",
340
+ "integrity": "sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w==",
341
+ "cpu": [
342
+ "arm64"
343
+ ],
344
+ "dev": true,
345
+ "optional": true,
346
+ "os": [
347
+ "win32"
348
+ ],
349
+ "peer": true,
350
+ "engines": {
351
+ "node": ">=12"
352
+ }
353
+ },
354
+ "node_modules/@esbuild/win32-ia32": {
355
+ "version": "0.19.4",
356
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.4.tgz",
357
+ "integrity": "sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg==",
358
+ "cpu": [
359
+ "ia32"
360
+ ],
361
+ "dev": true,
362
+ "optional": true,
363
+ "os": [
364
+ "win32"
365
+ ],
366
+ "peer": true,
367
+ "engines": {
368
+ "node": ">=12"
369
+ }
370
+ },
371
+ "node_modules/@esbuild/win32-x64": {
372
+ "version": "0.19.4",
373
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.4.tgz",
374
+ "integrity": "sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA==",
375
+ "cpu": [
376
+ "x64"
377
+ ],
378
+ "dev": true,
379
+ "optional": true,
380
+ "os": [
381
+ "win32"
382
+ ],
383
+ "peer": true,
384
+ "engines": {
385
+ "node": ">=12"
386
+ }
387
+ },
388
+ "node_modules/@types/stats.js": {
389
+ "version": "0.17.2",
390
+ "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.2.tgz",
391
+ "integrity": "sha512-j1oI+BOPiAAAKFysNNutE9aAIjvHqqILubCs2EeHKc19pi4uybaGAgBfLXsCgJYcyKWkiilEvl8CkFF/SL+baA=="
392
+ },
393
+ "node_modules/@types/three": {
394
+ "version": "0.157.2",
395
+ "resolved": "https://registry.npmjs.org/@types/three/-/three-0.157.2.tgz",
396
+ "integrity": "sha512-2kykrMgvO5LTAiahadM6ijoER+GcbEJ61pQVOyGxIJTCASoUnzwJvfhilsLxvEw4+glzhLYUDvvTvNjx+58Vzw==",
397
+ "dependencies": {
398
+ "@types/stats.js": "*",
399
+ "@types/webxr": "*",
400
+ "fflate": "~0.6.10",
401
+ "meshoptimizer": "~0.18.1"
402
+ }
403
+ },
404
+ "node_modules/@types/web-bluetooth": {
405
+ "version": "0.0.18",
406
+ "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.18.tgz",
407
+ "integrity": "sha512-v/ZHEj9xh82usl8LMR3GarzFY1IrbXJw5L4QfQhokjRV91q+SelFqxQWSep1ucXEZ22+dSTwLFkXeur25sPIbw=="
408
+ },
409
+ "node_modules/@types/webxr": {
410
+ "version": "0.5.7",
411
+ "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.7.tgz",
412
+ "integrity": "sha512-Rcgs5c2eNFnHp53YOjgtKfl/zWX1Y+uFGUwlSXrWcZWu3yhANRezmph4MninmqybUYT6g9ZE0aQ9QIdPkLR3Kg=="
413
+ },
414
+ "node_modules/barely-a-dev-server": {
415
+ "version": "0.6.0",
416
+ "resolved": "https://registry.npmjs.org/barely-a-dev-server/-/barely-a-dev-server-0.6.0.tgz",
417
+ "integrity": "sha512-K+GYjRxOAGKwyHTLUeXODsccbzCYyyo2F7en8rCpu6CW/TauptX9cXqCiYTp++cbZB5YpeBa/LTz0wsFCw0f6Q==",
418
+ "dev": true,
419
+ "peerDependencies": {
420
+ "esbuild": "^0.19.0"
421
+ }
422
+ },
423
+ "node_modules/comlink": {
424
+ "version": "4.4.1",
425
+ "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.1.tgz",
426
+ "integrity": "sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q=="
427
+ },
428
+ "node_modules/cubing": {
429
+ "version": "0.43.5",
430
+ "resolved": "https://registry.npmjs.org/cubing/-/cubing-0.43.5.tgz",
431
+ "integrity": "sha512-t1nG2ZQRaoYfx/OzfPI5RbdlQVfYY/6Q6FHbV54BgSZJ8UAKqZQOGo7HHVpLtF5WbVYHr0dZgY6YgHDCgrjhPg==",
432
+ "dependencies": {
433
+ "@types/three": "^0.157.0",
434
+ "@types/web-bluetooth": "^0.0.18",
435
+ "comlink": "^4.4.1",
436
+ "random-uint-below": "^2.0.0",
437
+ "three": "^0.157.0"
438
+ },
439
+ "bin": {
440
+ "scramble": "dist/bin/scramble.js"
441
+ },
442
+ "engines": {
443
+ "node": ">=19"
444
+ }
445
+ },
446
+ "node_modules/esbuild": {
447
+ "version": "0.19.4",
448
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.4.tgz",
449
+ "integrity": "sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==",
450
+ "dev": true,
451
+ "hasInstallScript": true,
452
+ "peer": true,
453
+ "bin": {
454
+ "esbuild": "bin/esbuild"
455
+ },
456
+ "engines": {
457
+ "node": ">=12"
458
+ },
459
+ "optionalDependencies": {
460
+ "@esbuild/android-arm": "0.19.4",
461
+ "@esbuild/android-arm64": "0.19.4",
462
+ "@esbuild/android-x64": "0.19.4",
463
+ "@esbuild/darwin-arm64": "0.19.4",
464
+ "@esbuild/darwin-x64": "0.19.4",
465
+ "@esbuild/freebsd-arm64": "0.19.4",
466
+ "@esbuild/freebsd-x64": "0.19.4",
467
+ "@esbuild/linux-arm": "0.19.4",
468
+ "@esbuild/linux-arm64": "0.19.4",
469
+ "@esbuild/linux-ia32": "0.19.4",
470
+ "@esbuild/linux-loong64": "0.19.4",
471
+ "@esbuild/linux-mips64el": "0.19.4",
472
+ "@esbuild/linux-ppc64": "0.19.4",
473
+ "@esbuild/linux-riscv64": "0.19.4",
474
+ "@esbuild/linux-s390x": "0.19.4",
475
+ "@esbuild/linux-x64": "0.19.4",
476
+ "@esbuild/netbsd-x64": "0.19.4",
477
+ "@esbuild/openbsd-x64": "0.19.4",
478
+ "@esbuild/sunos-x64": "0.19.4",
479
+ "@esbuild/win32-arm64": "0.19.4",
480
+ "@esbuild/win32-ia32": "0.19.4",
481
+ "@esbuild/win32-x64": "0.19.4"
482
+ }
483
+ },
484
+ "node_modules/fflate": {
485
+ "version": "0.6.10",
486
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz",
487
+ "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg=="
488
+ },
489
+ "node_modules/meshoptimizer": {
490
+ "version": "0.18.1",
491
+ "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz",
492
+ "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw=="
493
+ },
494
+ "node_modules/random-uint-below": {
495
+ "version": "2.0.0",
496
+ "resolved": "https://registry.npmjs.org/random-uint-below/-/random-uint-below-2.0.0.tgz",
497
+ "integrity": "sha512-2gD9r+3IkNJ6JGfra+T2tA4SGf3ne5pz2QGuXQ9fXdxAX38i0OEsqJ19smnEsYnjhYi0H0ICo8D4pfqw3Pszhw==",
498
+ "engines": {
499
+ "node": ">=19"
500
+ }
501
+ },
502
+ "node_modules/three": {
503
+ "version": "0.157.0",
504
+ "resolved": "https://registry.npmjs.org/three/-/three-0.157.0.tgz",
505
+ "integrity": "sha512-CeAwQrf4x3z0/e+MC4F+nXLW5t0gh3pw+L6CCBqpHvOq3bGYIgRYub7Pv0j/9wR+d++OiEglyZzWyuSYbwWGOA=="
506
+ }
507
+ }
508
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "type": "module",
3
+ "scripts": {
4
+ "build": "node script/build.js",
5
+ "dev": "node script/build.js -- --dev",
6
+ "clean": "rm -rf ./dist",
7
+ "upgrade-cubing": "npm install --save cubing@latest"
8
+ },
9
+ "dependencies": {
10
+ "cubing": "^0.43.5"
11
+ },
12
+ "devDependencies": {
13
+ "barely-a-dev-server": "^0.6.0"
14
+ }
15
+ }
File without changes
@@ -0,0 +1,9 @@
1
+ /* Center everything on the page. */
2
+ html, body {
3
+ height: 100%;
4
+ margin: 0;
5
+ display: grid;
6
+ place-content: center;
7
+ gap: 1em;
8
+ font-family: sans-serif;
9
+ }
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+
4
+ <head>
5
+ <meta charset="utf8">
6
+ <title>My Cubing App</title>
7
+ <link rel="stylesheet" href="./index.css">
8
+ <!-- Note: the source file is `main.ts`, but here we use the transpiled file name it will have on the web server. -->
9
+ <script src="./main.js" type="module"></script>
10
+ </head>
11
+
12
+ <body>
13
+ <h1>My Cubing App</h1>
14
+ <twisty-player id="main-player"></twisty-player>
15
+ </body>
16
+
17
+ </html>
@@ -0,0 +1,27 @@
1
+ // Always keep the following line if you are using any twisty players on your page.
2
+ import "cubing/twisty";
3
+ // Use the following line for specific imports from `cubing/twisty`.
4
+ import { TwistyAlgViewer, type TwistyPlayer } from "cubing/twisty";
5
+
6
+ // Import from other modules as usual.
7
+ import { randomScrambleForEvent } from "cubing/scramble";
8
+
9
+ class App {
10
+ // Example of getting an element from the page.
11
+ twistyPlayer: TwistyPlayer = document.querySelector("#main-player")!;
12
+ // Example of creating a new element and adding it to the page.
13
+ twistyAlgViewer = document.body.appendChild(
14
+ new TwistyAlgViewer({ twistyPlayer: this.twistyPlayer })
15
+ );
16
+ constructor() {
17
+ this.updateScramble();
18
+ }
19
+
20
+ async updateScramble() {
21
+ this.twistyPlayer.alg = await randomScrambleForEvent("333");
22
+ }
23
+ }
24
+
25
+ // Make the app object available in the console for debugging.
26
+ // Try running: app.updateScramble()
27
+ globalThis.app = new App();
@@ -1,66 +1,54 @@
1
1
  #!/usr/bin/env node
2
2
  import { exec } from "child_process";
3
3
  import { exists } from "fs";
4
- import { mkdir, readFile, stat, writeFile } from "fs/promises";
4
+ import { cp, mkdir, readFile, stat, writeFile } from "fs/promises";
5
5
  import { join, resolve } from "path";
6
6
  import { exit, stderr } from "process";
7
7
  import { createInterface } from "readline";
8
8
  import { promisify } from "util";
9
9
 
10
- const CREATE_CUBING_APP_PACKAGE_JSON = JSON.parse(await readFile(new URL("../package.json", import.meta.url), "utf-8"));
11
-
12
- function execPromise(cmd, options) {
13
- return new Promise((resolve, reject) => {
14
- const childProcess = exec(cmd, options, (error, stdout, stderr) => {
15
- if (error) {
16
- reject(error);
17
- }
18
- // console.log(stdout);
19
- resolve(stdout ? stdout : stderr);
20
- });
21
- });
22
- }
10
+ const CREATE_CUBING_APP_PACKAGE_JSON = JSON.parse(
11
+ await readFile(new URL("../package.json", import.meta.url), "utf-8"),
12
+ );
13
+
14
+ const execPromise = promisify(exec);
23
15
 
24
16
  function printHelpAndExit() {
25
- stderr.write(`Usage:
17
+ stderr.write(`Usage:
26
18
 
27
19
  npm create cubing-app <project folder name>
28
20
 
29
21
  The project folder name should consist of only letters, numbers, dashes, and u
30
22
  nderscores.
31
23
  `);
32
- exit(1);
24
+ exit(1);
33
25
  }
34
26
 
35
27
  let projectPath = process.argv[2];
36
28
  if (!projectPath) {
37
- const readline = createInterface({
38
- input: process.stdin,
39
- output: process.stdout,
40
- });
41
-
42
- projectPath = await new Promise((resolve, reject) => {
43
- try {
44
- readline.question(
45
- `Where would you like to place the project?
29
+ const readline = createInterface({
30
+ input: process.stdin,
31
+ output: process.stdout,
32
+ });
33
+
34
+ projectPath = await new Promise((resolve, reject) => {
35
+ try {
36
+ readline.question(
37
+ `Where would you like to place the project?
46
38
  (Enter a path or name for a new folder.)
47
39
  `,
48
- resolve,
49
- );
50
- } catch (e) {
51
- reject(e);
52
- } finally {
53
- }
54
- });
55
- readline.close();
56
- if (projectPath === "") {
57
- console.log("Please enter a non-empty project path.");
58
- exit(1);
59
- }
60
- }
61
-
62
- function projectPathed(path) {
63
- return join(projectPath, path);
40
+ resolve,
41
+ );
42
+ } catch (e) {
43
+ reject(e);
44
+ } finally {
45
+ }
46
+ });
47
+ readline.close();
48
+ if (projectPath === "") {
49
+ console.log("Please enter a non-empty project path.");
50
+ exit(1);
51
+ }
64
52
  }
65
53
 
66
54
  console.log(`---------------------------------
@@ -71,53 +59,20 @@ ${projectPath}
71
59
  // We could uses `stat` from `"fs/promises"`, but I'm not too enthused about
72
60
  // catching an error in the "expected" path. So we use `exists`.
73
61
  if (await promisify(exists)(projectPath)) {
74
- process.stderr.write(`Project already exists in the current folder: ${projectPath}
62
+ process.stderr.write(`Project already exists in the current folder: ${projectPath}
75
63
  Please select a different name (or delete the existing project folder).
76
64
  `);
77
- exit(1);
65
+ exit(1);
78
66
  }
79
67
  await mkdir(projectPath, { recursive: true });
80
68
 
81
- const initialPackageJSON = {
82
- type: "module",
83
- scripts: {
84
- "build": CREATE_CUBING_APP_PACKAGE_JSON.scripts["build"],
85
- "dev": CREATE_CUBING_APP_PACKAGE_JSON.scripts["dev"],
86
- clean: "rm -rf ./dist",
87
- "upgrade-cubing": "npm install --save cubing@latest",
88
- },
89
- };
90
- await writeFile(
91
- projectPathed("package.json"),
92
- JSON.stringify(initialPackageJSON, null, " "),
93
- );
94
-
95
- const execOptions = {
96
- cwd: projectPath,
97
- };
98
- await mkdir(projectPathed("script"), { recursive: true });
99
- await mkdir(projectPathed("src"), { recursive: true });
100
- async function transferFile(rootedPath, contents) {
101
- contents ??= await (async () => {
102
- const filePath = new URL(join("..", rootedPath), import.meta.url);
103
- return readFile(filePath, "utf-8");
104
- })();
105
- await writeFile(projectPathed(rootedPath), contents);
106
- }
107
- await transferFile("script/build.js");
108
- await transferFile("src/index.html");
109
- await transferFile("src/main.ts");
110
- await transferFile("src/index.css");
111
- await transferFile(
112
- ".gitignore",
113
- `/dist
114
- /node_modules
115
- `,
116
- );
117
- await transferFile("tsconfig.json");
118
-
119
- await execPromise("npm install --save cubing", execOptions);
120
- await execPromise("npm install --save-dev barely-a-dev-server", execOptions);
69
+ const appTemplatePath = new URL("../app-template", import.meta.url).pathname;
70
+ await cp(appTemplatePath, projectPath, {
71
+ recursive: true,
72
+ });
73
+ await execPromise("npm install", {
74
+ cwd: projectPath,
75
+ });
121
76
 
122
77
  console.log(`Your cubing app has been created.
123
78
  To work on it, run:
package/package.json CHANGED
@@ -1,24 +1,26 @@
1
1
  {
2
2
  "name": "create-cubing-app",
3
- "version": "0.36.4",
3
+ "version": "0.43.5-c",
4
4
  "type": "module",
5
5
  "bin": "./bin/create-cubing-app.js",
6
+ "engines": {
7
+ "node": ">=19"
8
+ },
6
9
  "scripts": {
7
- "build": "node script/build.js",
8
- "dev": "node script/build.js -- --dev",
9
- "roll-cubing-commit": "./script/roll-cubing-commit.bash",
10
- "clean": "rm -rf ./dist"
10
+ "prepublish-only": "prepublish-only"
11
11
  },
12
12
  "dependencies": {
13
13
  "cubing": "^0.43.4"
14
14
  },
15
15
  "devDependencies": {
16
+ "@biomejs/biome": "^1.2.2",
16
17
  "@types/validate-npm-package-name": "^4.0.0",
17
18
  "barely-a-dev-server": "^0.6.0",
18
19
  "esbuild": "^0.19.2",
19
20
  "validate-npm-package-name": "^5.0.0"
20
21
  },
21
22
  "files": [
23
+ "./app-template",
22
24
  "./bin",
23
25
  "./script",
24
26
  "./src",
@@ -10,6 +10,8 @@ then
10
10
  exit 1
11
11
  fi
12
12
 
13
+ cd app-template || exit
14
+
13
15
  VERSION=$(npm show cubing version)
14
16
  echo "Rolling \`cubing\` to version: v${VERSION}"
15
17
 
File without changes