jbilcke-hf HF staff commited on
Commit
b3c7e0f
1 Parent(s): 3adb71a

debuggin the new Hugging Face Login

Browse files
README.md CHANGED
@@ -7,6 +7,7 @@ sdk: docker
7
  pinned: true
8
  app_port: 3000
9
  disable_embedding: false
 
10
  ---
11
 
12
  # 🍿 AI Tube
 
7
  pinned: true
8
  app_port: 3000
9
  disable_embedding: false
10
+ hf_oauth: true
11
  ---
12
 
13
  # 🍿 AI Tube
package-lock.json CHANGED
@@ -8,6 +8,7 @@
8
  "name": "ai-tube",
9
  "version": "0.0.0",
10
  "dependencies": {
 
11
  "@huggingface/inference": "^2.6.4",
12
  "@photo-sphere-viewer/core": "^5.5.1",
13
  "@photo-sphere-viewer/video-plugin": "^5.5.1",
@@ -107,9 +108,9 @@
107
  }
108
  },
109
  "node_modules/@babel/runtime": {
110
- "version": "7.23.6",
111
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz",
112
- "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==",
113
  "dependencies": {
114
  "regenerator-runtime": "^0.14.0"
115
  },
@@ -151,9 +152,9 @@
151
  "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
152
  },
153
  "node_modules/@emotion/unitless": {
154
- "version": "0.8.1",
155
- "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
156
- "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
157
  },
158
  "node_modules/@eslint-community/eslint-utils": {
159
  "version": "4.4.0",
@@ -208,28 +209,28 @@
208
  }
209
  },
210
  "node_modules/@floating-ui/core": {
211
- "version": "1.5.2",
212
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz",
213
- "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==",
214
  "dependencies": {
215
- "@floating-ui/utils": "^0.1.3"
216
  }
217
  },
218
  "node_modules/@floating-ui/dom": {
219
- "version": "1.5.3",
220
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz",
221
- "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==",
222
  "dependencies": {
223
- "@floating-ui/core": "^1.4.2",
224
- "@floating-ui/utils": "^0.1.3"
225
  }
226
  },
227
  "node_modules/@floating-ui/react-dom": {
228
- "version": "2.0.4",
229
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz",
230
- "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==",
231
  "dependencies": {
232
- "@floating-ui/dom": "^1.5.1"
233
  },
234
  "peerDependencies": {
235
  "react": ">=16.8.0",
@@ -237,9 +238,20 @@
237
  }
238
  },
239
  "node_modules/@floating-ui/utils": {
240
- "version": "0.1.6",
241
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz",
242
- "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
 
 
 
 
 
 
 
 
 
 
 
243
  },
244
  "node_modules/@huggingface/inference": {
245
  "version": "2.6.4",
@@ -250,12 +262,12 @@
250
  }
251
  },
252
  "node_modules/@humanwhocodes/config-array": {
253
- "version": "0.11.13",
254
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
255
- "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
256
  "dependencies": {
257
- "@humanwhocodes/object-schema": "^2.0.1",
258
- "debug": "^4.1.1",
259
  "minimatch": "^3.0.5"
260
  },
261
  "engines": {
@@ -275,9 +287,50 @@
275
  }
276
  },
277
  "node_modules/@humanwhocodes/object-schema": {
278
- "version": "2.0.1",
279
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
280
- "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw=="
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
281
  },
282
  "node_modules/@jridgewell/gen-mapping": {
283
  "version": "0.3.3",
@@ -314,9 +367,9 @@
314
  "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
315
  },
316
  "node_modules/@jridgewell/trace-mapping": {
317
- "version": "0.3.20",
318
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
319
- "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
320
  "dependencies": {
321
  "@jridgewell/resolve-uri": "^3.1.0",
322
  "@jridgewell/sourcemap-codec": "^1.4.14"
@@ -503,25 +556,25 @@
503
  }
504
  },
505
  "node_modules/@photo-sphere-viewer/autorotate-plugin": {
506
- "version": "5.5.1",
507
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/autorotate-plugin/-/autorotate-plugin-5.5.1.tgz",
508
- "integrity": "sha512-ZU20ZYaa5VPNg3J+wh9GwS/yZxD9r+XPCE90FiekYnDyJ2wE3ckQ5m7h+BEvH4Hpb3rX0NVzyZl4iA9kubuxhQ==",
509
  "peerDependencies": {
510
- "@photo-sphere-viewer/core": "5.5.1"
511
  }
512
  },
513
  "node_modules/@photo-sphere-viewer/compass-plugin": {
514
- "version": "5.5.1",
515
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/compass-plugin/-/compass-plugin-5.5.1.tgz",
516
- "integrity": "sha512-tI5wKcVWwvebH2loI1C9B5CwR++Oz7yzODpGRhkjWADw2LLqjap0rJxiheYl6AiL+tHCWl4pIJ8lss6frZ1vkA==",
517
  "peerDependencies": {
518
- "@photo-sphere-viewer/core": "5.5.1"
519
  }
520
  },
521
  "node_modules/@photo-sphere-viewer/core": {
522
- "version": "5.5.1",
523
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/core/-/core-5.5.1.tgz",
524
- "integrity": "sha512-dddxySM0retvsO7cDa0lJ0oviGpSYZV9vJLqv126YoYnZZhL9fFOjkmJP+GSMLU6AU8pZIVuiVZ1TSWJaZcGrg==",
525
  "dependencies": {
526
  "three": "^0.159.0"
527
  }
@@ -532,126 +585,135 @@
532
  "integrity": "sha512-eCmhlLGbBgucuo4VEA9IO3Qpc7dh8Bd4VKzr7WfW4+8hMcIfoAVi1ev0pJYN9PTTsCslbcKgBwr2wNZ1EvLInA=="
533
  },
534
  "node_modules/@photo-sphere-viewer/cubemap-adapter": {
535
- "version": "5.5.1",
536
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/cubemap-adapter/-/cubemap-adapter-5.5.1.tgz",
537
- "integrity": "sha512-5K8UwrSlUR6EVFOoCxbZeLJXSJ40fgtTQ6Kj2ltZ++y9r9I6vkvtqTUCRnZs9yaYezcbCXbuppebLKSWhodZtA==",
538
  "peerDependencies": {
539
- "@photo-sphere-viewer/core": "5.5.1"
540
  }
541
  },
542
  "node_modules/@photo-sphere-viewer/cubemap-tiles-adapter": {
543
- "version": "5.5.1",
544
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/cubemap-tiles-adapter/-/cubemap-tiles-adapter-5.5.1.tgz",
545
- "integrity": "sha512-NEt4GYGo8ZlnV1rCe4KWtZLPbcxQHlEjqnOUn1Laf1aGcxo64WWHoFaeDkAHR9aky+VJS6tJXbl4HFCtaqdp1g==",
546
  "peerDependencies": {
547
- "@photo-sphere-viewer/core": "5.5.1",
548
- "@photo-sphere-viewer/cubemap-adapter": "5.5.1"
549
  }
550
  },
551
  "node_modules/@photo-sphere-viewer/cubemap-video-adapter": {
552
- "version": "5.5.1",
553
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/cubemap-video-adapter/-/cubemap-video-adapter-5.5.1.tgz",
554
- "integrity": "sha512-YnASpozLY+8Wjud8f0+3XG8zGfTtdFSFjWja8pPpTl23gVukpBlKElrEargNrOznGW1TXvGoNXE34r4/OLJjeg==",
555
  "peerDependencies": {
556
- "@photo-sphere-viewer/core": "5.5.1"
557
  }
558
  },
559
  "node_modules/@photo-sphere-viewer/equirectangular-tiles-adapter": {
560
- "version": "5.5.1",
561
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/equirectangular-tiles-adapter/-/equirectangular-tiles-adapter-5.5.1.tgz",
562
- "integrity": "sha512-Uf88wdMHlXTCl8zLnwdRPS8HgaofK6EJyARXew/smJ4mR/0VUt9RWRE/8K9LrLhh01OYDEK7eo6sNXOhWsddLw==",
563
  "peerDependencies": {
564
- "@photo-sphere-viewer/core": "5.5.1"
565
  }
566
  },
567
  "node_modules/@photo-sphere-viewer/equirectangular-video-adapter": {
568
- "version": "5.5.1",
569
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/equirectangular-video-adapter/-/equirectangular-video-adapter-5.5.1.tgz",
570
- "integrity": "sha512-Obh3n9K00d8NiRWPaOQLNI31iW32k8wrc9ANVUNxVSIzDt8Hkd/qBBV7VZoQtuELiFK+EPz+61h1uisckf50lQ==",
571
  "peerDependencies": {
572
- "@photo-sphere-viewer/core": "5.5.1"
573
  }
574
  },
575
  "node_modules/@photo-sphere-viewer/gallery-plugin": {
576
- "version": "5.5.1",
577
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/gallery-plugin/-/gallery-plugin-5.5.1.tgz",
578
- "integrity": "sha512-J+Futd4VSFmAU1kw7a9zBZi1GUZT5lGTf/mHmGdOZSX0+/hLY0txCJhD909aoFZYqC4JRczRWAgW5aIpdvfV+A==",
579
  "peerDependencies": {
580
- "@photo-sphere-viewer/core": "5.5.1"
581
  }
582
  },
583
  "node_modules/@photo-sphere-viewer/gyroscope-plugin": {
584
- "version": "5.5.1",
585
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/gyroscope-plugin/-/gyroscope-plugin-5.5.1.tgz",
586
- "integrity": "sha512-hgOzHHZyiM00/+5n3i386lI/Hf5dg4HCLpgxxeHP2eusieUI9JQIv4XNXWhzTq+OTdv1bwEj3wWXH65b+JuT/Q==",
587
  "peerDependencies": {
588
- "@photo-sphere-viewer/core": "5.5.1"
589
  }
590
  },
591
  "node_modules/@photo-sphere-viewer/map-plugin": {
592
- "version": "5.5.1",
593
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/map-plugin/-/map-plugin-5.5.1.tgz",
594
- "integrity": "sha512-Wbaco0/RvLOeq6u4FqzuEIsOY/gV2kzOTUnrYSVoGiP6opNfDT62Bd4F+MpUq+FjazI6uoXcfrbuz6SrZi7Nmg==",
595
  "peerDependencies": {
596
- "@photo-sphere-viewer/core": "5.5.1"
597
  }
598
  },
599
  "node_modules/@photo-sphere-viewer/markers-plugin": {
600
- "version": "5.5.1",
601
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/markers-plugin/-/markers-plugin-5.5.1.tgz",
602
- "integrity": "sha512-PnhmBplFFlT6CX4wz0qleGAHWOeZb+YmUCpOk/+zstUxf8Opf+XmXTZdk3M3bu/NmCe6DhkbyRl6f8aXDMQhhA==",
603
  "peerDependencies": {
604
- "@photo-sphere-viewer/core": "5.5.1"
605
  }
606
  },
607
  "node_modules/@photo-sphere-viewer/resolution-plugin": {
608
- "version": "5.5.1",
609
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/resolution-plugin/-/resolution-plugin-5.5.1.tgz",
610
- "integrity": "sha512-pa+mVfkfQ7AuypYNdHG8pFk9+bcn3GJpq1JMfcMwurKUVi4XbLxQCOb2yq7owZP/IEpp82L1cvV4o8cFIV+8Eg==",
611
  "peerDependencies": {
612
- "@photo-sphere-viewer/core": "5.5.1",
613
- "@photo-sphere-viewer/settings-plugin": "5.5.1"
614
  }
615
  },
616
  "node_modules/@photo-sphere-viewer/settings-plugin": {
617
- "version": "5.5.1",
618
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/settings-plugin/-/settings-plugin-5.5.1.tgz",
619
- "integrity": "sha512-M5FAdwBuPn7INW0q7MnYRscQMFJMlNb2yR1vyjyq5mmTsghnclsCPq+ghkFJ3n7aIsrwObxndbPtB1RvrA4Xbw==",
620
  "peerDependencies": {
621
- "@photo-sphere-viewer/core": "5.5.1"
622
  }
623
  },
624
  "node_modules/@photo-sphere-viewer/stereo-plugin": {
625
- "version": "5.5.1",
626
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/stereo-plugin/-/stereo-plugin-5.5.1.tgz",
627
- "integrity": "sha512-WSoi1i5JabGG7j+xTHXEE7S/AFY4xEM28EdwgJgPz+/S3xba7ouXWhOKCBE+Vjrka+mv0uwasaqRvFfzJrRJ0Q==",
628
  "peerDependencies": {
629
- "@photo-sphere-viewer/core": "5.5.1",
630
- "@photo-sphere-viewer/gyroscope-plugin": "5.5.1"
631
  }
632
  },
633
  "node_modules/@photo-sphere-viewer/video-plugin": {
634
- "version": "5.5.1",
635
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/video-plugin/-/video-plugin-5.5.1.tgz",
636
- "integrity": "sha512-sPxLWrwFnfj13XkxP+gCucagDDN0ZnYqUmrKpHe4aiAiwwiJIAdsllm7eq1e9dzYJoPk4tQuk9rJAuHseEbcsg==",
637
  "peerDependencies": {
638
- "@photo-sphere-viewer/core": "5.5.1"
639
  }
640
  },
641
  "node_modules/@photo-sphere-viewer/virtual-tour-plugin": {
642
- "version": "5.5.1",
643
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/virtual-tour-plugin/-/virtual-tour-plugin-5.5.1.tgz",
644
- "integrity": "sha512-1qnp8XBCb26WlVnR/8kalqIeGgC3+ioBOZGxPJ2pu88QUBfb6UHYub4lLdslvTVd0eaMrV4KamTtweoxLRfTjg==",
645
  "peerDependencies": {
646
- "@photo-sphere-viewer/core": "5.5.1"
647
  }
648
  },
649
  "node_modules/@photo-sphere-viewer/visible-range-plugin": {
650
- "version": "5.5.1",
651
- "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/visible-range-plugin/-/visible-range-plugin-5.5.1.tgz",
652
- "integrity": "sha512-Kt2zE99cHLdY0AjYVdmQjD0bQJj1MuSCz/J+2EFInA5O8xeanSjmTKOlaCoXuJPP8Q4j1e5gaY4/gguLjQ5P9w==",
653
  "peerDependencies": {
654
- "@photo-sphere-viewer/core": "5.5.1"
 
 
 
 
 
 
 
 
 
655
  }
656
  },
657
  "node_modules/@radix-ui/number": {
@@ -1915,9 +1977,9 @@
1915
  }
1916
  },
1917
  "node_modules/@types/qs": {
1918
- "version": "6.9.10",
1919
- "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz",
1920
- "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==",
1921
  "dev": true
1922
  },
1923
  "node_modules/@types/react": {
@@ -1975,9 +2037,9 @@
1975
  "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A=="
1976
  },
1977
  "node_modules/@types/stylis": {
1978
- "version": "4.2.4",
1979
- "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.4.tgz",
1980
- "integrity": "sha512-36ZrGJ8fgtBr6nwNnuJ9jXIj+bn/pF6UoqmrQT7+Y99+tFFeHHsoR54+194dHdyhPjgbeoNz3Qru0oRt0l6ASQ=="
1981
  },
1982
  "node_modules/@types/uuid": {
1983
  "version": "9.0.7",
@@ -2081,17 +2143,17 @@
2081
  }
2082
  },
2083
  "node_modules/@upstash/redis": {
2084
- "version": "1.27.1",
2085
- "resolved": "https://registry.npmjs.org/@upstash/redis/-/redis-1.27.1.tgz",
2086
- "integrity": "sha512-K9UgTBypJ4Dx65s2u5auoyf/5YoCQjaN91QtxlkNg+3g0rqXXy4ELtzACstk1v+bTa547Mm3rzTjotDX/s9+Zg==",
2087
  "dependencies": {
2088
  "crypto-js": "^4.2.0"
2089
  }
2090
  },
2091
  "node_modules/acorn": {
2092
- "version": "8.11.2",
2093
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
2094
- "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
2095
  "bin": {
2096
  "acorn": "bin/acorn"
2097
  },
@@ -2108,9 +2170,9 @@
2108
  }
2109
  },
2110
  "node_modules/acorn-walk": {
2111
- "version": "8.3.1",
2112
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz",
2113
- "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==",
2114
  "engines": {
2115
  "node": ">=0.4.0"
2116
  }
@@ -2567,9 +2629,9 @@
2567
  }
2568
  },
2569
  "node_modules/caniuse-lite": {
2570
- "version": "1.0.30001570",
2571
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz",
2572
- "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==",
2573
  "funding": [
2574
  {
2575
  "type": "opencollective",
@@ -2667,9 +2729,9 @@
2667
  "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
2668
  },
2669
  "node_modules/clsx": {
2670
- "version": "2.0.0",
2671
- "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz",
2672
- "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==",
2673
  "engines": {
2674
  "node": ">=6"
2675
  }
@@ -3000,9 +3062,9 @@
3000
  }
3001
  },
3002
  "node_modules/cookies-next/node_modules/@types/node": {
3003
- "version": "16.18.68",
3004
- "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz",
3005
- "integrity": "sha512-sG3hPIQwJLoewrN7cr0dwEy+yF5nD4D/4FxtQpFciRD/xwUzgD+G05uxZHv5mhfXo4F9Jkp13jjn0CC2q325sg=="
3006
  },
3007
  "node_modules/copy-to-clipboard": {
3008
  "version": "3.3.3",
@@ -3319,10 +3381,15 @@
3319
  "url": "https://github.com/fb55/domutils?sponsor=1"
3320
  }
3321
  },
 
 
 
 
 
3322
  "node_modules/electron-to-chromium": {
3323
- "version": "1.4.615",
3324
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.615.tgz",
3325
- "integrity": "sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng=="
3326
  },
3327
  "node_modules/emoji-regex": {
3328
  "version": "9.2.2",
@@ -4022,6 +4089,21 @@
4022
  "is-callable": "^1.1.3"
4023
  }
4024
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4025
  "node_modules/fraction.js": {
4026
  "version": "4.3.7",
4027
  "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
@@ -4568,6 +4650,14 @@
4568
  "url": "https://github.com/sponsors/ljharb"
4569
  }
4570
  },
 
 
 
 
 
 
 
 
4571
  "node_modules/is-generator-function": {
4572
  "version": "1.0.10",
4573
  "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
@@ -4779,6 +4869,23 @@
4779
  "set-function-name": "^2.0.1"
4780
  }
4781
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4782
  "node_modules/jiti": {
4783
  "version": "1.21.0",
4784
  "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
@@ -5028,6 +5135,14 @@
5028
  "url": "https://github.com/sponsors/ljharb"
5029
  }
5030
  },
 
 
 
 
 
 
 
 
5031
  "node_modules/mkdirp-classic": {
5032
  "version": "0.5.3",
5033
  "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
@@ -5149,9 +5264,9 @@
5149
  }
5150
  },
5151
  "node_modules/node-abi": {
5152
- "version": "3.52.0",
5153
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz",
5154
- "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==",
5155
  "dependencies": {
5156
  "semver": "^7.3.5"
5157
  },
@@ -5399,6 +5514,29 @@
5399
  "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
5400
  "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
5401
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5402
  "node_modules/path-type": {
5403
  "version": "4.0.0",
5404
  "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -5578,9 +5716,9 @@
5578
  }
5579
  },
5580
  "node_modules/postcss-selector-parser": {
5581
- "version": "6.0.13",
5582
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
5583
- "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
5584
  "dependencies": {
5585
  "cssesc": "^3.0.0",
5586
  "util-deprecate": "^1.0.2"
@@ -6181,14 +6319,17 @@
6181
  ]
6182
  },
6183
  "node_modules/safe-regex-test": {
6184
- "version": "1.0.0",
6185
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
6186
- "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
6187
  "dependencies": {
6188
- "call-bind": "^1.0.2",
6189
- "get-intrinsic": "^1.1.3",
6190
  "is-regex": "^1.1.4"
6191
  },
 
 
 
6192
  "funding": {
6193
  "url": "https://github.com/sponsors/ljharb"
6194
  }
@@ -6331,6 +6472,17 @@
6331
  "url": "https://github.com/sponsors/ljharb"
6332
  }
6333
  },
 
 
 
 
 
 
 
 
 
 
 
6334
  "node_modules/simple-concat": {
6335
  "version": "1.0.1",
6336
  "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
@@ -6428,6 +6580,66 @@
6428
  "safe-buffer": "~5.2.0"
6429
  }
6430
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6431
  "node_modules/string.prototype.matchall": {
6432
  "version": "4.0.10",
6433
  "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz",
@@ -6500,6 +6712,18 @@
6500
  "node": ">=8"
6501
  }
6502
  },
 
 
 
 
 
 
 
 
 
 
 
 
6503
  "node_modules/strip-bom": {
6504
  "version": "3.0.0",
6505
  "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
@@ -6528,19 +6752,19 @@
6528
  }
6529
  },
6530
  "node_modules/styled-components": {
6531
- "version": "6.1.1",
6532
- "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.1.tgz",
6533
- "integrity": "sha512-cpZZP5RrKRIClBW5Eby4JM1wElLVP4NQrJbJ0h10TidTyJf4SIIwa3zLXOoPb4gJi8MsJ8mjq5mu2IrEhZIAcQ==",
6534
- "dependencies": {
6535
- "@emotion/is-prop-valid": "^1.2.1",
6536
- "@emotion/unitless": "^0.8.0",
6537
- "@types/stylis": "^4.0.2",
6538
- "css-to-react-native": "^3.2.0",
6539
- "csstype": "^3.1.2",
6540
- "postcss": "^8.4.31",
6541
- "shallowequal": "^1.1.0",
6542
- "stylis": "^4.3.0",
6543
- "tslib": "^2.5.0"
6544
  },
6545
  "engines": {
6546
  "node": ">= 16"
@@ -6554,10 +6778,15 @@
6554
  "react-dom": ">= 16.8.0"
6555
  }
6556
  },
 
 
 
 
 
6557
  "node_modules/styled-components/node_modules/postcss": {
6558
- "version": "8.4.32",
6559
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
6560
- "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
6561
  "funding": [
6562
  {
6563
  "type": "opencollective",
@@ -6573,7 +6802,7 @@
6573
  }
6574
  ],
6575
  "dependencies": {
6576
- "nanoid": "^3.3.7",
6577
  "picocolors": "^1.0.0",
6578
  "source-map-js": "^1.0.2"
6579
  },
@@ -6581,6 +6810,11 @@
6581
  "node": "^10 || ^12 || >=14"
6582
  }
6583
  },
 
 
 
 
 
6584
  "node_modules/styled-jsx": {
6585
  "version": "5.1.1",
6586
  "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
@@ -6604,18 +6838,18 @@
6604
  }
6605
  },
6606
  "node_modules/stylis": {
6607
- "version": "4.3.0",
6608
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz",
6609
- "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ=="
6610
  },
6611
  "node_modules/sucrase": {
6612
- "version": "3.34.0",
6613
- "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz",
6614
- "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==",
6615
  "dependencies": {
6616
  "@jridgewell/gen-mapping": "^0.3.2",
6617
  "commander": "^4.0.0",
6618
- "glob": "7.1.6",
6619
  "lines-and-columns": "^1.1.6",
6620
  "mz": "^2.7.0",
6621
  "pirates": "^4.0.1",
@@ -6626,23 +6860,47 @@
6626
  "sucrase-node": "bin/sucrase-node"
6627
  },
6628
  "engines": {
6629
- "node": ">=8"
 
 
 
 
 
 
 
 
6630
  }
6631
  },
6632
  "node_modules/sucrase/node_modules/glob": {
6633
- "version": "7.1.6",
6634
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
6635
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
6636
  "dependencies": {
6637
- "fs.realpath": "^1.0.0",
6638
- "inflight": "^1.0.4",
6639
- "inherits": "2",
6640
- "minimatch": "^3.0.4",
6641
- "once": "^1.3.0",
6642
- "path-is-absolute": "^1.0.0"
 
 
6643
  },
6644
  "engines": {
6645
- "node": "*"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6646
  },
6647
  "funding": {
6648
  "url": "https://github.com/sponsors/isaacs"
@@ -6671,9 +6929,9 @@
6671
  }
6672
  },
6673
  "node_modules/tailwind-merge": {
6674
- "version": "2.1.0",
6675
- "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.1.0.tgz",
6676
- "integrity": "sha512-l11VvI4nSwW7MtLSLYT4ldidDEUwQAMWuSHk7l4zcXZDgnCRa0V3OdCwFfM7DCzakVXMNRwAeje9maFFXT71dQ==",
6677
  "dependencies": {
6678
  "@babel/runtime": "^7.23.5"
6679
  },
@@ -6918,9 +7176,9 @@
6918
  }
6919
  },
6920
  "node_modules/type-fest": {
6921
- "version": "4.8.3",
6922
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz",
6923
- "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==",
6924
  "engines": {
6925
  "node": ">=16"
6926
  },
@@ -7053,9 +7311,9 @@
7053
  }
7054
  },
7055
  "node_modules/use-callback-ref": {
7056
- "version": "1.3.0",
7057
- "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz",
7058
- "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==",
7059
  "dependencies": {
7060
  "tslib": "^2.0.0"
7061
  },
@@ -7102,12 +7360,12 @@
7102
  }
7103
  },
7104
  "node_modules/usehooks-ts": {
7105
- "version": "2.9.1",
7106
- "resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-2.9.1.tgz",
7107
- "integrity": "sha512-2FAuSIGHlY+apM9FVlj8/oNhd+1y+Uwv5QNkMQz1oSfdHk4PXo1qoCw9I5M7j0vpH8CSWFJwXbVPeYDjLCx9PA==",
 
7108
  "engines": {
7109
- "node": ">=16.15.0",
7110
- "npm": ">=8"
7111
  },
7112
  "peerDependencies": {
7113
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
@@ -7234,6 +7492,93 @@
7234
  "url": "https://github.com/sponsors/ljharb"
7235
  }
7236
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7237
  "node_modules/wrappy": {
7238
  "version": "1.0.2",
7239
  "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
 
8
  "name": "ai-tube",
9
  "version": "0.0.0",
10
  "dependencies": {
11
+ "@huggingface/hub": "0.12.3-oauth",
12
  "@huggingface/inference": "^2.6.4",
13
  "@photo-sphere-viewer/core": "^5.5.1",
14
  "@photo-sphere-viewer/video-plugin": "^5.5.1",
 
108
  }
109
  },
110
  "node_modules/@babel/runtime": {
111
+ "version": "7.23.8",
112
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz",
113
+ "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==",
114
  "dependencies": {
115
  "regenerator-runtime": "^0.14.0"
116
  },
 
152
  "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
153
  },
154
  "node_modules/@emotion/unitless": {
155
+ "version": "0.8.0",
156
+ "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz",
157
+ "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw=="
158
  },
159
  "node_modules/@eslint-community/eslint-utils": {
160
  "version": "4.4.0",
 
209
  }
210
  },
211
  "node_modules/@floating-ui/core": {
212
+ "version": "1.5.3",
213
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.3.tgz",
214
+ "integrity": "sha512-O0WKDOo0yhJuugCx6trZQj5jVJ9yR0ystG2JaNAemYUWce+pmM6WUEFIibnWyEJKdrDxhm75NoSRME35FNaM/Q==",
215
  "dependencies": {
216
+ "@floating-ui/utils": "^0.2.0"
217
  }
218
  },
219
  "node_modules/@floating-ui/dom": {
220
+ "version": "1.5.4",
221
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.4.tgz",
222
+ "integrity": "sha512-jByEsHIY+eEdCjnTVu+E3ephzTOzkQ8hgUfGwos+bg7NlH33Zc5uO+QHz1mrQUOgIKKDD1RtS201P9NvAfq3XQ==",
223
  "dependencies": {
224
+ "@floating-ui/core": "^1.5.3",
225
+ "@floating-ui/utils": "^0.2.0"
226
  }
227
  },
228
  "node_modules/@floating-ui/react-dom": {
229
+ "version": "2.0.5",
230
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.5.tgz",
231
+ "integrity": "sha512-UsBK30Bg+s6+nsgblXtZmwHhgS2vmbuQK22qgt2pTQM6M3X6H1+cQcLXqgRY3ihVLcZJE6IvqDQozhsnIVqK/Q==",
232
  "dependencies": {
233
+ "@floating-ui/dom": "^1.5.4"
234
  },
235
  "peerDependencies": {
236
  "react": ">=16.8.0",
 
238
  }
239
  },
240
  "node_modules/@floating-ui/utils": {
241
+ "version": "0.2.1",
242
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz",
243
+ "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q=="
244
+ },
245
+ "node_modules/@huggingface/hub": {
246
+ "version": "0.12.3-oauth",
247
+ "resolved": "https://registry.npmjs.org/@huggingface/hub/-/hub-0.12.3-oauth.tgz",
248
+ "integrity": "sha512-9LE4Ded2VsjQTK/rxsIF/nvhkxs1UE+lcpNpuBxnTGNpaVzbO6HIlAtbThgNenKPplRt1iDkn82AQYBco1QHug==",
249
+ "dependencies": {
250
+ "hash-wasm": "^4.9.0"
251
+ },
252
+ "engines": {
253
+ "node": ">=18"
254
+ }
255
  },
256
  "node_modules/@huggingface/inference": {
257
  "version": "2.6.4",
 
262
  }
263
  },
264
  "node_modules/@humanwhocodes/config-array": {
265
+ "version": "0.11.14",
266
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
267
+ "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
268
  "dependencies": {
269
+ "@humanwhocodes/object-schema": "^2.0.2",
270
+ "debug": "^4.3.1",
271
  "minimatch": "^3.0.5"
272
  },
273
  "engines": {
 
287
  }
288
  },
289
  "node_modules/@humanwhocodes/object-schema": {
290
+ "version": "2.0.2",
291
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz",
292
+ "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw=="
293
+ },
294
+ "node_modules/@isaacs/cliui": {
295
+ "version": "8.0.2",
296
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
297
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
298
+ "dependencies": {
299
+ "string-width": "^5.1.2",
300
+ "string-width-cjs": "npm:string-width@^4.2.0",
301
+ "strip-ansi": "^7.0.1",
302
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
303
+ "wrap-ansi": "^8.1.0",
304
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
305
+ },
306
+ "engines": {
307
+ "node": ">=12"
308
+ }
309
+ },
310
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
311
+ "version": "6.0.1",
312
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
313
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
314
+ "engines": {
315
+ "node": ">=12"
316
+ },
317
+ "funding": {
318
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
319
+ }
320
+ },
321
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi": {
322
+ "version": "7.1.0",
323
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
324
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
325
+ "dependencies": {
326
+ "ansi-regex": "^6.0.1"
327
+ },
328
+ "engines": {
329
+ "node": ">=12"
330
+ },
331
+ "funding": {
332
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
333
+ }
334
  },
335
  "node_modules/@jridgewell/gen-mapping": {
336
  "version": "0.3.3",
 
367
  "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
368
  },
369
  "node_modules/@jridgewell/trace-mapping": {
370
+ "version": "0.3.21",
371
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.21.tgz",
372
+ "integrity": "sha512-SRfKmRe1KvYnxjEMtxEr+J4HIeMX5YBg/qhRHpxEIGjhX1rshcHlnFUE9K0GazhVKWM7B+nARSkV8LuvJdJ5/g==",
373
  "dependencies": {
374
  "@jridgewell/resolve-uri": "^3.1.0",
375
  "@jridgewell/sourcemap-codec": "^1.4.14"
 
556
  }
557
  },
558
  "node_modules/@photo-sphere-viewer/autorotate-plugin": {
559
+ "version": "5.5.2",
560
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/autorotate-plugin/-/autorotate-plugin-5.5.2.tgz",
561
+ "integrity": "sha512-DVmYD+G+0swAdky/Jh6Qw/Q4rpgraRFYEKgj9lD0h68/9iC8XTDTsR6YPIPENNjW8deYNZO7T5INs8WJfesa5w==",
562
  "peerDependencies": {
563
+ "@photo-sphere-viewer/core": "5.5.2"
564
  }
565
  },
566
  "node_modules/@photo-sphere-viewer/compass-plugin": {
567
+ "version": "5.5.2",
568
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/compass-plugin/-/compass-plugin-5.5.2.tgz",
569
+ "integrity": "sha512-pNsuAj8PMGFdq8DcSBDXkvLb0FxMh7WjkFsTGZ030Re68XewcZXdLrB801o9C7FOZ6q4vUvPuF5j962IsTPitg==",
570
  "peerDependencies": {
571
+ "@photo-sphere-viewer/core": "5.5.2"
572
  }
573
  },
574
  "node_modules/@photo-sphere-viewer/core": {
575
+ "version": "5.5.2",
576
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/core/-/core-5.5.2.tgz",
577
+ "integrity": "sha512-coEFnredLadny6tRike4KNjoWuKVEzUJ6Qr5mJif2LbgIV5+dq4dVqAWZRqp2OspMq3sq/iSyDwraI4t+Whl6A==",
578
  "dependencies": {
579
  "three": "^0.159.0"
580
  }
 
585
  "integrity": "sha512-eCmhlLGbBgucuo4VEA9IO3Qpc7dh8Bd4VKzr7WfW4+8hMcIfoAVi1ev0pJYN9PTTsCslbcKgBwr2wNZ1EvLInA=="
586
  },
587
  "node_modules/@photo-sphere-viewer/cubemap-adapter": {
588
+ "version": "5.5.2",
589
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/cubemap-adapter/-/cubemap-adapter-5.5.2.tgz",
590
+ "integrity": "sha512-zf1V6B8GXELEeFIMYVZS/lkiHk5TZG6dUj6MzcQPNiHN2kKzth+XaglIncOKHwGU9NDrJn/RmuR4MwbOKuqqcw==",
591
  "peerDependencies": {
592
+ "@photo-sphere-viewer/core": "5.5.2"
593
  }
594
  },
595
  "node_modules/@photo-sphere-viewer/cubemap-tiles-adapter": {
596
+ "version": "5.5.2",
597
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/cubemap-tiles-adapter/-/cubemap-tiles-adapter-5.5.2.tgz",
598
+ "integrity": "sha512-K5VcdrQgNIudfGdBdg+UsQSntPNVlzJLdTUSLFBGl8djzDnodDx2EfB/2OSnMl86cD1evVIjKYpOamZWs8PDJQ==",
599
  "peerDependencies": {
600
+ "@photo-sphere-viewer/core": "5.5.2",
601
+ "@photo-sphere-viewer/cubemap-adapter": "5.5.2"
602
  }
603
  },
604
  "node_modules/@photo-sphere-viewer/cubemap-video-adapter": {
605
+ "version": "5.5.2",
606
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/cubemap-video-adapter/-/cubemap-video-adapter-5.5.2.tgz",
607
+ "integrity": "sha512-p2y3ooAdskVjS87uMfjuu6KLlBFmkxZrTflKKaPIwd40wfXXQrYIU+ZG7glugE/r+DsRftHBU2lPqDNpn5fp/g==",
608
  "peerDependencies": {
609
+ "@photo-sphere-viewer/core": "5.5.2"
610
  }
611
  },
612
  "node_modules/@photo-sphere-viewer/equirectangular-tiles-adapter": {
613
+ "version": "5.5.2",
614
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/equirectangular-tiles-adapter/-/equirectangular-tiles-adapter-5.5.2.tgz",
615
+ "integrity": "sha512-3aGsb+oGJomQBFnGqk8kVbH0I8+a1iU0OXfDkUf5AJpeUHu7RgK9wrKutoVGKV0CPbND0Mx8WjHS2doxluPdNg==",
616
  "peerDependencies": {
617
+ "@photo-sphere-viewer/core": "5.5.2"
618
  }
619
  },
620
  "node_modules/@photo-sphere-viewer/equirectangular-video-adapter": {
621
+ "version": "5.5.2",
622
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/equirectangular-video-adapter/-/equirectangular-video-adapter-5.5.2.tgz",
623
+ "integrity": "sha512-EOcCe6sxAvPFVDLjadpDw24V/IncIaOOzgsbo/adc8cZ87EOdbqnX8GkxpXXVDF0IiVi78WoocVwaybGXdMwyA==",
624
  "peerDependencies": {
625
+ "@photo-sphere-viewer/core": "5.5.2"
626
  }
627
  },
628
  "node_modules/@photo-sphere-viewer/gallery-plugin": {
629
+ "version": "5.5.2",
630
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/gallery-plugin/-/gallery-plugin-5.5.2.tgz",
631
+ "integrity": "sha512-QuZNYfcHHkDvvSxz0Z2wOD8uuF7sakmcRwX4Ys052H1V2qFkQKB/7uxDz+1AVbTqvyG6r5Rf7tMSPfqoggMW7A==",
632
  "peerDependencies": {
633
+ "@photo-sphere-viewer/core": "5.5.2"
634
  }
635
  },
636
  "node_modules/@photo-sphere-viewer/gyroscope-plugin": {
637
+ "version": "5.5.2",
638
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/gyroscope-plugin/-/gyroscope-plugin-5.5.2.tgz",
639
+ "integrity": "sha512-0TAsjeQee1DImQGZUCY+ZfGm9RCtDgx2PRxqmBH/ZTMRspyCmVYc2ibTexfYLC6AYKowSiLrzDAxTkHdsLdt5Q==",
640
  "peerDependencies": {
641
+ "@photo-sphere-viewer/core": "5.5.2"
642
  }
643
  },
644
  "node_modules/@photo-sphere-viewer/map-plugin": {
645
+ "version": "5.5.2",
646
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/map-plugin/-/map-plugin-5.5.2.tgz",
647
+ "integrity": "sha512-YU/3IYTAW8ky5scL5+hF+JbV3ZOGIvbFxIJYxckf6uP0GlrNUSow3z2wEX1T9nR8SzAklncGUPygB2vOh1cOQA==",
648
  "peerDependencies": {
649
+ "@photo-sphere-viewer/core": "5.5.2"
650
  }
651
  },
652
  "node_modules/@photo-sphere-viewer/markers-plugin": {
653
+ "version": "5.5.2",
654
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/markers-plugin/-/markers-plugin-5.5.2.tgz",
655
+ "integrity": "sha512-vz+kt9CqMTOr09/HH+czBLMAwv0tsYFGINAMCsxlrl+HM9RGBi5cRqOwXLWNEfvdLdqGgEw1K6gXxZxkJjLGDg==",
656
  "peerDependencies": {
657
+ "@photo-sphere-viewer/core": "5.5.2"
658
  }
659
  },
660
  "node_modules/@photo-sphere-viewer/resolution-plugin": {
661
+ "version": "5.5.2",
662
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/resolution-plugin/-/resolution-plugin-5.5.2.tgz",
663
+ "integrity": "sha512-HI61gfETeleHE0kLSIqYMc9HYu4VSP7NzEwNJKr0nrVGyD7pz1eO3luYtrUMVGezQdjGRdiG9vKgT+Z1SeJzFQ==",
664
  "peerDependencies": {
665
+ "@photo-sphere-viewer/core": "5.5.2",
666
+ "@photo-sphere-viewer/settings-plugin": "5.5.2"
667
  }
668
  },
669
  "node_modules/@photo-sphere-viewer/settings-plugin": {
670
+ "version": "5.5.2",
671
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/settings-plugin/-/settings-plugin-5.5.2.tgz",
672
+ "integrity": "sha512-+jbtIwHme4San/jYLUFHjZtEdgh2Gp+RLHIfB9nPtQFYo8Mu56daVz5TAmnIErmsRCbTzw8tA/YywWwzugSxWQ==",
673
  "peerDependencies": {
674
+ "@photo-sphere-viewer/core": "5.5.2"
675
  }
676
  },
677
  "node_modules/@photo-sphere-viewer/stereo-plugin": {
678
+ "version": "5.5.2",
679
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/stereo-plugin/-/stereo-plugin-5.5.2.tgz",
680
+ "integrity": "sha512-M7KGYpSMEZtmux3IO4CkaObKKu7wHFDyUVm1NuDwkO/G6Vc9BhmKVE+XFqD6DfOkcMWH92YCSXwepNt5ozULRw==",
681
  "peerDependencies": {
682
+ "@photo-sphere-viewer/core": "5.5.2",
683
+ "@photo-sphere-viewer/gyroscope-plugin": "5.5.2"
684
  }
685
  },
686
  "node_modules/@photo-sphere-viewer/video-plugin": {
687
+ "version": "5.5.2",
688
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/video-plugin/-/video-plugin-5.5.2.tgz",
689
+ "integrity": "sha512-np635jW4Ln2FpetlIEznjRWB5a0/ZHJf1FLwl0yHpFtRellQtCL8NCmgu3mbP9XUJEq1//E6nPPRE9bdCzurkA==",
690
  "peerDependencies": {
691
+ "@photo-sphere-viewer/core": "5.5.2"
692
  }
693
  },
694
  "node_modules/@photo-sphere-viewer/virtual-tour-plugin": {
695
+ "version": "5.5.2",
696
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/virtual-tour-plugin/-/virtual-tour-plugin-5.5.2.tgz",
697
+ "integrity": "sha512-gsF/oHAeL+zahF3MtesyJO3bJ1/94sSCAycZiaio2uWQ6vtDwT9OaWzNh+kmhaZZdoMlVd79zoZfEQu5SaTMAw==",
698
  "peerDependencies": {
699
+ "@photo-sphere-viewer/core": "5.5.2"
700
  }
701
  },
702
  "node_modules/@photo-sphere-viewer/visible-range-plugin": {
703
+ "version": "5.5.2",
704
+ "resolved": "https://registry.npmjs.org/@photo-sphere-viewer/visible-range-plugin/-/visible-range-plugin-5.5.2.tgz",
705
+ "integrity": "sha512-/3da5q3lxrwoqU6JcKGFZj9G0cxc2yyVjbzlp7acSLqO5Bd9EOl+rsT+CThcBVtL5eqTufla0Ro+HtF/feEOjg==",
706
  "peerDependencies": {
707
+ "@photo-sphere-viewer/core": "5.5.2"
708
+ }
709
+ },
710
+ "node_modules/@pkgjs/parseargs": {
711
+ "version": "0.11.0",
712
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
713
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
714
+ "optional": true,
715
+ "engines": {
716
+ "node": ">=14"
717
  }
718
  },
719
  "node_modules/@radix-ui/number": {
 
1977
  }
1978
  },
1979
  "node_modules/@types/qs": {
1980
+ "version": "6.9.11",
1981
+ "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.11.tgz",
1982
+ "integrity": "sha512-oGk0gmhnEJK4Yyk+oI7EfXsLayXatCWPHary1MtcmbAifkobT9cM9yutG/hZKIseOU0MqbIwQ/u2nn/Gb+ltuQ==",
1983
  "dev": true
1984
  },
1985
  "node_modules/@types/react": {
 
2037
  "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A=="
2038
  },
2039
  "node_modules/@types/stylis": {
2040
+ "version": "4.2.0",
2041
+ "resolved": "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.0.tgz",
2042
+ "integrity": "sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw=="
2043
  },
2044
  "node_modules/@types/uuid": {
2045
  "version": "9.0.7",
 
2143
  }
2144
  },
2145
  "node_modules/@upstash/redis": {
2146
+ "version": "1.28.0",
2147
+ "resolved": "https://registry.npmjs.org/@upstash/redis/-/redis-1.28.0.tgz",
2148
+ "integrity": "sha512-vvFMUHGA5jUAXQHuAzFHNLD2TND/2aaf1BUPYBeg73CkQ9X+jorWVi7VGxZtRXPDEFJR9KvzuwCacbSproOKcw==",
2149
  "dependencies": {
2150
  "crypto-js": "^4.2.0"
2151
  }
2152
  },
2153
  "node_modules/acorn": {
2154
+ "version": "8.11.3",
2155
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
2156
+ "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
2157
  "bin": {
2158
  "acorn": "bin/acorn"
2159
  },
 
2170
  }
2171
  },
2172
  "node_modules/acorn-walk": {
2173
+ "version": "8.3.2",
2174
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz",
2175
+ "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==",
2176
  "engines": {
2177
  "node": ">=0.4.0"
2178
  }
 
2629
  }
2630
  },
2631
  "node_modules/caniuse-lite": {
2632
+ "version": "1.0.30001576",
2633
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001576.tgz",
2634
+ "integrity": "sha512-ff5BdakGe2P3SQsMsiqmt1Lc8221NR1VzHj5jXN5vBny9A6fpze94HiVV/n7XRosOlsShJcvMv5mdnpjOGCEgg==",
2635
  "funding": [
2636
  {
2637
  "type": "opencollective",
 
2729
  "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
2730
  },
2731
  "node_modules/clsx": {
2732
+ "version": "2.1.0",
2733
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz",
2734
+ "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==",
2735
  "engines": {
2736
  "node": ">=6"
2737
  }
 
3062
  }
3063
  },
3064
  "node_modules/cookies-next/node_modules/@types/node": {
3065
+ "version": "16.18.70",
3066
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.70.tgz",
3067
+ "integrity": "sha512-8eIk20G5VVVQNZNouHjLA2b8utE2NvGybLjMaF4lyhA9uhGwnmXF8o+icdXKGSQSNANJewXva/sFUoZLwAaYAg=="
3068
  },
3069
  "node_modules/copy-to-clipboard": {
3070
  "version": "3.3.3",
 
3381
  "url": "https://github.com/fb55/domutils?sponsor=1"
3382
  }
3383
  },
3384
+ "node_modules/eastasianwidth": {
3385
+ "version": "0.2.0",
3386
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
3387
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
3388
+ },
3389
  "node_modules/electron-to-chromium": {
3390
+ "version": "1.4.629",
3391
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.629.tgz",
3392
+ "integrity": "sha512-5UUkr3k3CZ/k+9Sw7vaaIMyOzMC0XbPyprKI3n0tbKDqkzTDOjK4izm7DxlkueRMim6ZZQ1ja9F7hoFVplHihA=="
3393
  },
3394
  "node_modules/emoji-regex": {
3395
  "version": "9.2.2",
 
4089
  "is-callable": "^1.1.3"
4090
  }
4091
  },
4092
+ "node_modules/foreground-child": {
4093
+ "version": "3.1.1",
4094
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
4095
+ "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
4096
+ "dependencies": {
4097
+ "cross-spawn": "^7.0.0",
4098
+ "signal-exit": "^4.0.1"
4099
+ },
4100
+ "engines": {
4101
+ "node": ">=14"
4102
+ },
4103
+ "funding": {
4104
+ "url": "https://github.com/sponsors/isaacs"
4105
+ }
4106
+ },
4107
  "node_modules/fraction.js": {
4108
  "version": "4.3.7",
4109
  "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
 
4650
  "url": "https://github.com/sponsors/ljharb"
4651
  }
4652
  },
4653
+ "node_modules/is-fullwidth-code-point": {
4654
+ "version": "3.0.0",
4655
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
4656
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
4657
+ "engines": {
4658
+ "node": ">=8"
4659
+ }
4660
+ },
4661
  "node_modules/is-generator-function": {
4662
  "version": "1.0.10",
4663
  "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
 
4869
  "set-function-name": "^2.0.1"
4870
  }
4871
  },
4872
+ "node_modules/jackspeak": {
4873
+ "version": "2.3.6",
4874
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
4875
+ "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
4876
+ "dependencies": {
4877
+ "@isaacs/cliui": "^8.0.2"
4878
+ },
4879
+ "engines": {
4880
+ "node": ">=14"
4881
+ },
4882
+ "funding": {
4883
+ "url": "https://github.com/sponsors/isaacs"
4884
+ },
4885
+ "optionalDependencies": {
4886
+ "@pkgjs/parseargs": "^0.11.0"
4887
+ }
4888
+ },
4889
  "node_modules/jiti": {
4890
  "version": "1.21.0",
4891
  "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
 
5135
  "url": "https://github.com/sponsors/ljharb"
5136
  }
5137
  },
5138
+ "node_modules/minipass": {
5139
+ "version": "7.0.4",
5140
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
5141
+ "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
5142
+ "engines": {
5143
+ "node": ">=16 || 14 >=14.17"
5144
+ }
5145
+ },
5146
  "node_modules/mkdirp-classic": {
5147
  "version": "0.5.3",
5148
  "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
 
5264
  }
5265
  },
5266
  "node_modules/node-abi": {
5267
+ "version": "3.54.0",
5268
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz",
5269
+ "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==",
5270
  "dependencies": {
5271
  "semver": "^7.3.5"
5272
  },
 
5514
  "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
5515
  "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
5516
  },
5517
+ "node_modules/path-scurry": {
5518
+ "version": "1.10.1",
5519
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
5520
+ "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
5521
+ "dependencies": {
5522
+ "lru-cache": "^9.1.1 || ^10.0.0",
5523
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
5524
+ },
5525
+ "engines": {
5526
+ "node": ">=16 || 14 >=14.17"
5527
+ },
5528
+ "funding": {
5529
+ "url": "https://github.com/sponsors/isaacs"
5530
+ }
5531
+ },
5532
+ "node_modules/path-scurry/node_modules/lru-cache": {
5533
+ "version": "10.1.0",
5534
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz",
5535
+ "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==",
5536
+ "engines": {
5537
+ "node": "14 || >=16.14"
5538
+ }
5539
+ },
5540
  "node_modules/path-type": {
5541
  "version": "4.0.0",
5542
  "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
 
5716
  }
5717
  },
5718
  "node_modules/postcss-selector-parser": {
5719
+ "version": "6.0.15",
5720
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
5721
+ "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
5722
  "dependencies": {
5723
  "cssesc": "^3.0.0",
5724
  "util-deprecate": "^1.0.2"
 
6319
  ]
6320
  },
6321
  "node_modules/safe-regex-test": {
6322
+ "version": "1.0.2",
6323
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.2.tgz",
6324
+ "integrity": "sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==",
6325
  "dependencies": {
6326
+ "call-bind": "^1.0.5",
6327
+ "get-intrinsic": "^1.2.2",
6328
  "is-regex": "^1.1.4"
6329
  },
6330
+ "engines": {
6331
+ "node": ">= 0.4"
6332
+ },
6333
  "funding": {
6334
  "url": "https://github.com/sponsors/ljharb"
6335
  }
 
6472
  "url": "https://github.com/sponsors/ljharb"
6473
  }
6474
  },
6475
+ "node_modules/signal-exit": {
6476
+ "version": "4.1.0",
6477
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
6478
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
6479
+ "engines": {
6480
+ "node": ">=14"
6481
+ },
6482
+ "funding": {
6483
+ "url": "https://github.com/sponsors/isaacs"
6484
+ }
6485
+ },
6486
  "node_modules/simple-concat": {
6487
  "version": "1.0.1",
6488
  "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
 
6580
  "safe-buffer": "~5.2.0"
6581
  }
6582
  },
6583
+ "node_modules/string-width": {
6584
+ "version": "5.1.2",
6585
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
6586
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
6587
+ "dependencies": {
6588
+ "eastasianwidth": "^0.2.0",
6589
+ "emoji-regex": "^9.2.2",
6590
+ "strip-ansi": "^7.0.1"
6591
+ },
6592
+ "engines": {
6593
+ "node": ">=12"
6594
+ },
6595
+ "funding": {
6596
+ "url": "https://github.com/sponsors/sindresorhus"
6597
+ }
6598
+ },
6599
+ "node_modules/string-width-cjs": {
6600
+ "name": "string-width",
6601
+ "version": "4.2.3",
6602
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
6603
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
6604
+ "dependencies": {
6605
+ "emoji-regex": "^8.0.0",
6606
+ "is-fullwidth-code-point": "^3.0.0",
6607
+ "strip-ansi": "^6.0.1"
6608
+ },
6609
+ "engines": {
6610
+ "node": ">=8"
6611
+ }
6612
+ },
6613
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
6614
+ "version": "8.0.0",
6615
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
6616
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
6617
+ },
6618
+ "node_modules/string-width/node_modules/ansi-regex": {
6619
+ "version": "6.0.1",
6620
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
6621
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
6622
+ "engines": {
6623
+ "node": ">=12"
6624
+ },
6625
+ "funding": {
6626
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
6627
+ }
6628
+ },
6629
+ "node_modules/string-width/node_modules/strip-ansi": {
6630
+ "version": "7.1.0",
6631
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
6632
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
6633
+ "dependencies": {
6634
+ "ansi-regex": "^6.0.1"
6635
+ },
6636
+ "engines": {
6637
+ "node": ">=12"
6638
+ },
6639
+ "funding": {
6640
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
6641
+ }
6642
+ },
6643
  "node_modules/string.prototype.matchall": {
6644
  "version": "4.0.10",
6645
  "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz",
 
6712
  "node": ">=8"
6713
  }
6714
  },
6715
+ "node_modules/strip-ansi-cjs": {
6716
+ "name": "strip-ansi",
6717
+ "version": "6.0.1",
6718
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
6719
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
6720
+ "dependencies": {
6721
+ "ansi-regex": "^5.0.1"
6722
+ },
6723
+ "engines": {
6724
+ "node": ">=8"
6725
+ }
6726
+ },
6727
  "node_modules/strip-bom": {
6728
  "version": "3.0.0",
6729
  "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
 
6752
  }
6753
  },
6754
  "node_modules/styled-components": {
6755
+ "version": "6.1.8",
6756
+ "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-6.1.8.tgz",
6757
+ "integrity": "sha512-PQ6Dn+QxlWyEGCKDS71NGsXoVLKfE1c3vApkvDYS5KAK+V8fNWGhbSUEo9Gg2iaID2tjLXegEW3bZDUGpofRWw==",
6758
+ "dependencies": {
6759
+ "@emotion/is-prop-valid": "1.2.1",
6760
+ "@emotion/unitless": "0.8.0",
6761
+ "@types/stylis": "4.2.0",
6762
+ "css-to-react-native": "3.2.0",
6763
+ "csstype": "3.1.2",
6764
+ "postcss": "8.4.31",
6765
+ "shallowequal": "1.1.0",
6766
+ "stylis": "4.3.1",
6767
+ "tslib": "2.5.0"
6768
  },
6769
  "engines": {
6770
  "node": ">= 16"
 
6778
  "react-dom": ">= 16.8.0"
6779
  }
6780
  },
6781
+ "node_modules/styled-components/node_modules/csstype": {
6782
+ "version": "3.1.2",
6783
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
6784
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
6785
+ },
6786
  "node_modules/styled-components/node_modules/postcss": {
6787
+ "version": "8.4.31",
6788
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
6789
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
6790
  "funding": [
6791
  {
6792
  "type": "opencollective",
 
6802
  }
6803
  ],
6804
  "dependencies": {
6805
+ "nanoid": "^3.3.6",
6806
  "picocolors": "^1.0.0",
6807
  "source-map-js": "^1.0.2"
6808
  },
 
6810
  "node": "^10 || ^12 || >=14"
6811
  }
6812
  },
6813
+ "node_modules/styled-components/node_modules/tslib": {
6814
+ "version": "2.5.0",
6815
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz",
6816
+ "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg=="
6817
+ },
6818
  "node_modules/styled-jsx": {
6819
  "version": "5.1.1",
6820
  "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
 
6838
  }
6839
  },
6840
  "node_modules/stylis": {
6841
+ "version": "4.3.1",
6842
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz",
6843
+ "integrity": "sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ=="
6844
  },
6845
  "node_modules/sucrase": {
6846
+ "version": "3.35.0",
6847
+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
6848
+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
6849
  "dependencies": {
6850
  "@jridgewell/gen-mapping": "^0.3.2",
6851
  "commander": "^4.0.0",
6852
+ "glob": "^10.3.10",
6853
  "lines-and-columns": "^1.1.6",
6854
  "mz": "^2.7.0",
6855
  "pirates": "^4.0.1",
 
6860
  "sucrase-node": "bin/sucrase-node"
6861
  },
6862
  "engines": {
6863
+ "node": ">=16 || 14 >=14.17"
6864
+ }
6865
+ },
6866
+ "node_modules/sucrase/node_modules/brace-expansion": {
6867
+ "version": "2.0.1",
6868
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
6869
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
6870
+ "dependencies": {
6871
+ "balanced-match": "^1.0.0"
6872
  }
6873
  },
6874
  "node_modules/sucrase/node_modules/glob": {
6875
+ "version": "10.3.10",
6876
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
6877
+ "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
6878
  "dependencies": {
6879
+ "foreground-child": "^3.1.0",
6880
+ "jackspeak": "^2.3.5",
6881
+ "minimatch": "^9.0.1",
6882
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
6883
+ "path-scurry": "^1.10.1"
6884
+ },
6885
+ "bin": {
6886
+ "glob": "dist/esm/bin.mjs"
6887
  },
6888
  "engines": {
6889
+ "node": ">=16 || 14 >=14.17"
6890
+ },
6891
+ "funding": {
6892
+ "url": "https://github.com/sponsors/isaacs"
6893
+ }
6894
+ },
6895
+ "node_modules/sucrase/node_modules/minimatch": {
6896
+ "version": "9.0.3",
6897
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
6898
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
6899
+ "dependencies": {
6900
+ "brace-expansion": "^2.0.1"
6901
+ },
6902
+ "engines": {
6903
+ "node": ">=16 || 14 >=14.17"
6904
  },
6905
  "funding": {
6906
  "url": "https://github.com/sponsors/isaacs"
 
6929
  }
6930
  },
6931
  "node_modules/tailwind-merge": {
6932
+ "version": "2.2.0",
6933
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.2.0.tgz",
6934
+ "integrity": "sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==",
6935
  "dependencies": {
6936
  "@babel/runtime": "^7.23.5"
6937
  },
 
7176
  }
7177
  },
7178
  "node_modules/type-fest": {
7179
+ "version": "4.9.0",
7180
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.9.0.tgz",
7181
+ "integrity": "sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==",
7182
  "engines": {
7183
  "node": ">=16"
7184
  },
 
7311
  }
7312
  },
7313
  "node_modules/use-callback-ref": {
7314
+ "version": "1.3.1",
7315
+ "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.1.tgz",
7316
+ "integrity": "sha512-Lg4Vx1XZQauB42Hw3kK7JM6yjVjgFmFC5/Ab797s79aARomD2nEErc4mCgM8EZrARLmmbWpi5DGCadmK50DcAQ==",
7317
  "dependencies": {
7318
  "tslib": "^2.0.0"
7319
  },
 
7360
  }
7361
  },
7362
  "node_modules/usehooks-ts": {
7363
+ "version": "2.9.2",
7364
+ "resolved": "https://registry.npmjs.org/usehooks-ts/-/usehooks-ts-2.9.2.tgz",
7365
+ "integrity": "sha512-fOzPeG01rs51CGYzqgioP/zs9v1Cgpe+zcXeqJPlDHYfdfG/wjsdjBWHJi+Ph1JgQAGUrDo5sJbPlaZd+Z9lxw==",
7366
+ "hasInstallScript": true,
7367
  "engines": {
7368
+ "node": ">=16.15.0"
 
7369
  },
7370
  "peerDependencies": {
7371
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
 
7492
  "url": "https://github.com/sponsors/ljharb"
7493
  }
7494
  },
7495
+ "node_modules/wrap-ansi": {
7496
+ "version": "8.1.0",
7497
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
7498
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
7499
+ "dependencies": {
7500
+ "ansi-styles": "^6.1.0",
7501
+ "string-width": "^5.0.1",
7502
+ "strip-ansi": "^7.0.1"
7503
+ },
7504
+ "engines": {
7505
+ "node": ">=12"
7506
+ },
7507
+ "funding": {
7508
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
7509
+ }
7510
+ },
7511
+ "node_modules/wrap-ansi-cjs": {
7512
+ "name": "wrap-ansi",
7513
+ "version": "7.0.0",
7514
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
7515
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
7516
+ "dependencies": {
7517
+ "ansi-styles": "^4.0.0",
7518
+ "string-width": "^4.1.0",
7519
+ "strip-ansi": "^6.0.0"
7520
+ },
7521
+ "engines": {
7522
+ "node": ">=10"
7523
+ },
7524
+ "funding": {
7525
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
7526
+ }
7527
+ },
7528
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
7529
+ "version": "8.0.0",
7530
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
7531
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
7532
+ },
7533
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
7534
+ "version": "4.2.3",
7535
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
7536
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
7537
+ "dependencies": {
7538
+ "emoji-regex": "^8.0.0",
7539
+ "is-fullwidth-code-point": "^3.0.0",
7540
+ "strip-ansi": "^6.0.1"
7541
+ },
7542
+ "engines": {
7543
+ "node": ">=8"
7544
+ }
7545
+ },
7546
+ "node_modules/wrap-ansi/node_modules/ansi-regex": {
7547
+ "version": "6.0.1",
7548
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
7549
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
7550
+ "engines": {
7551
+ "node": ">=12"
7552
+ },
7553
+ "funding": {
7554
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
7555
+ }
7556
+ },
7557
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
7558
+ "version": "6.2.1",
7559
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
7560
+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
7561
+ "engines": {
7562
+ "node": ">=12"
7563
+ },
7564
+ "funding": {
7565
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
7566
+ }
7567
+ },
7568
+ "node_modules/wrap-ansi/node_modules/strip-ansi": {
7569
+ "version": "7.1.0",
7570
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
7571
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
7572
+ "dependencies": {
7573
+ "ansi-regex": "^6.0.1"
7574
+ },
7575
+ "engines": {
7576
+ "node": ">=12"
7577
+ },
7578
+ "funding": {
7579
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
7580
+ }
7581
+ },
7582
  "node_modules/wrappy": {
7583
  "version": "1.0.2",
7584
  "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
package.json CHANGED
@@ -9,6 +9,7 @@
9
  "lint": "next lint"
10
  },
11
  "dependencies": {
 
12
  "@huggingface/inference": "^2.6.4",
13
  "@photo-sphere-viewer/core": "^5.5.1",
14
  "@photo-sphere-viewer/video-plugin": "^5.5.1",
 
9
  "lint": "next lint"
10
  },
11
  "dependencies": {
12
+ "@huggingface/hub": "0.12.3-oauth",
13
  "@huggingface/inference": "^2.6.4",
14
  "@photo-sphere-viewer/core": "^5.5.1",
15
  "@photo-sphere-viewer/video-plugin": "^5.5.1",
src/app/interface/hf-login/index.tsx ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use client"
2
+
3
+ import { useCurrentUser } from "@/app/state/userCurrentUser"
4
+ import { Button } from "@/components/ui/button"
5
+ import { useHuggingFaceLogin } from "@/lib/useHuggingFaceLogin"
6
+
7
+ export function HuggingFaceLogin() {
8
+
9
+ const user = useCurrentUser()
10
+ const hf = useHuggingFaceLogin()
11
+
12
+ // feature is not finished yet
13
+ if (user?.userName !== "Julian Bilcke") { return }
14
+
15
+ console.log("user:", user)
16
+ console.log("hf.isLoggedIn:", hf.isLoggedIn)
17
+ console.log("hf.oauthResult:", hf.oauthResult)
18
+
19
+ return (
20
+ <div><Button onClick={hf.login}>Click me</Button></div>
21
+ )
22
+ }
src/app/main.tsx CHANGED
@@ -16,6 +16,8 @@ import { PublicMusicVideosView } from "./views/public-music-videos-view"
16
  import { getCollectionKey } from "@/lib/getCollectionKey"
17
  import { PublicVideoEmbedView } from "./views/public-video-embed-view"
18
 
 
 
19
  // this is where we transition from the server-side space
20
  // and the client-side space
21
  // basically, all the views are generated in client-side space
@@ -136,9 +138,9 @@ export function Main({
136
 
137
 
138
  const view = useStore(s => s.view)
139
-
140
  return (
141
  <TubeLayout>
 
142
  {view === "home" && <HomeView />}
143
  {view === "public_video_embed" && <PublicVideoEmbedView />}
144
  {view === "public_video" && <PublicVideoView />}
 
16
  import { getCollectionKey } from "@/lib/getCollectionKey"
17
  import { PublicVideoEmbedView } from "./views/public-video-embed-view"
18
 
19
+ import { HuggingFaceLogin } from "./interface/hf-login"
20
+
21
  // this is where we transition from the server-side space
22
  // and the client-side space
23
  // basically, all the views are generated in client-side space
 
138
 
139
 
140
  const view = useStore(s => s.view)
 
141
  return (
142
  <TubeLayout>
143
+ <HuggingFaceLogin />
144
  {view === "home" && <HomeView />}
145
  {view === "public_video_embed" && <PublicVideoEmbedView />}
146
  {view === "public_video" && <PublicVideoView />}
src/app/server/actions/ai-tube-hf/downloadClapProject.ts CHANGED
@@ -37,8 +37,8 @@ export async function downloadClapProject({
37
 
38
  const clapProject = await parseClap(clapString)
39
 
40
- const id = uuidv4()
41
-
42
  const videoRequest: VideoRequest = {
43
  id,
44
  label: clapProject.meta.title || "Untitled",
 
37
 
38
  const clapProject = await parseClap(clapString)
39
 
40
+ const id = clapProject.meta.id || uuidv4()
41
+
42
  const videoRequest: VideoRequest = {
43
  id,
44
  label: clapProject.meta.title || "Untitled",
src/app/views/public-video-view/index.tsx CHANGED
@@ -24,11 +24,12 @@ import { ReportModal } from "../report-modal"
24
  import { formatLargeNumber } from "@/lib/formatLargeNumber"
25
  import { CommentList } from "@/app/interface/comment-list"
26
  import { Input } from "@/components/ui/input"
27
- import useLocalStorage from "usehooks-ts/dist/esm/useLocalStorage/useLocalStorage"
28
  import { localStorageKeys } from "@/app/state/localStorageKeys"
29
  import { defaultSettings } from "@/app/state/defaultSettings"
30
  import { getComments, submitComment } from "@/app/server/actions/comments"
31
  import { useCurrentUser } from "@/app/state/userCurrentUser"
 
32
 
33
  export function PublicVideoView() {
34
  const [_pending, startTransition] = useTransition()
 
24
  import { formatLargeNumber } from "@/lib/formatLargeNumber"
25
  import { CommentList } from "@/app/interface/comment-list"
26
  import { Input } from "@/components/ui/input"
27
+
28
  import { localStorageKeys } from "@/app/state/localStorageKeys"
29
  import { defaultSettings } from "@/app/state/defaultSettings"
30
  import { getComments, submitComment } from "@/app/server/actions/comments"
31
  import { useCurrentUser } from "@/app/state/userCurrentUser"
32
+ import { useLocalStorage } from "usehooks-ts"
33
 
34
  export function PublicVideoView() {
35
  const [_pending, startTransition] = useTransition()
src/huggingface/hub/src/lib/index.ts CHANGED
@@ -10,6 +10,8 @@ export * from "./list-datasets";
10
  export * from "./list-files";
11
  export * from "./list-models";
12
  export * from "./list-spaces";
 
 
13
  export * from "./parse-safetensors-metadata";
14
  export * from "./upload-file";
15
  export * from "./upload-files";
 
10
  export * from "./list-files";
11
  export * from "./list-models";
12
  export * from "./list-spaces";
13
+ export * from "./oauth-handle-redirect";
14
+ export * from "./oauth-login-url";
15
  export * from "./parse-safetensors-metadata";
16
  export * from "./upload-file";
17
  export * from "./upload-files";
src/huggingface/hub/src/lib/oauth-handle-redirect.ts ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { HUB_URL } from "../consts";
2
+ import { createApiError } from "../error";
3
+
4
+ export interface OAuthResult {
5
+ accessToken: string;
6
+ accessTokenExpiresAt: Date;
7
+ userInfo: {
8
+ id: string;
9
+ name: string;
10
+ fullname: string;
11
+ email?: string;
12
+ emailVerified?: boolean;
13
+ avatarUrl: string;
14
+ websiteUrl?: string;
15
+ isPro: boolean;
16
+ orgs: Array<{
17
+ name: string;
18
+ isEnterprise: boolean;
19
+ }>;
20
+ };
21
+ /**
22
+ * State passed to the OAuth provider in the original request to the OAuth provider.
23
+ */
24
+ state?: string;
25
+ /**
26
+ * Granted scope
27
+ */
28
+ scope: string;
29
+ }
30
+
31
+ /**
32
+ * To call after the OAuth provider redirects back to the app.
33
+ *
34
+ * There is also a helper function {@link oauthHandleRedirectIfPresent}, which will call `oauthHandleRedirect` if the URL contains an oauth code
35
+ * in the query parameters and return `false` otherwise.
36
+ */
37
+ export async function oauthHandleRedirect(opts?: { hubUrl?: string }): Promise<OAuthResult> {
38
+ if (typeof window === "undefined") {
39
+ throw new Error("oauthHandleRedirect is only available in the browser");
40
+ }
41
+
42
+ const searchParams = new URLSearchParams(window.location.search);
43
+
44
+ const [error, errorDescription] = [searchParams.get("error"), searchParams.get("error_description")];
45
+
46
+ if (error) {
47
+ throw new Error(`${error}: ${errorDescription}`);
48
+ }
49
+
50
+ const code = searchParams.get("code");
51
+ const nonce = localStorage.getItem("huggingface.co:oauth:nonce");
52
+
53
+ if (!code) {
54
+ throw new Error("Missing oauth code from query parameters in redirected URL");
55
+ }
56
+
57
+ if (!nonce) {
58
+ throw new Error("Missing oauth nonce from localStorage");
59
+ }
60
+
61
+ const codeVerifier = localStorage.getItem("huggingface.co:oauth:code_verifier");
62
+
63
+ if (!codeVerifier) {
64
+ throw new Error("Missing oauth code_verifier from localStorage");
65
+ }
66
+
67
+ const state = searchParams.get("state");
68
+
69
+ if (!state) {
70
+ throw new Error("Missing oauth state from query parameters in redirected URL");
71
+ }
72
+
73
+ let parsedState: { nonce: string; redirectUri: string; state?: string };
74
+
75
+ try {
76
+ parsedState = JSON.parse(state);
77
+ } catch {
78
+ throw new Error("Invalid oauth state in redirected URL, unable to parse JSON: " + state);
79
+ }
80
+
81
+ if (parsedState.nonce !== nonce) {
82
+ throw new Error("Invalid oauth state in redirected URL");
83
+ }
84
+
85
+ const hubUrl = opts?.hubUrl || HUB_URL;
86
+
87
+ const openidConfigUrl = `${new URL(hubUrl).origin}/.well-known/openid-configuration`;
88
+ const openidConfigRes = await fetch(openidConfigUrl, {
89
+ headers: {
90
+ Accept: "application/json",
91
+ },
92
+ });
93
+
94
+ if (!openidConfigRes.ok) {
95
+ throw await createApiError(openidConfigRes);
96
+ }
97
+
98
+ const opendidConfig: {
99
+ authorization_endpoint: string;
100
+ token_endpoint: string;
101
+ userinfo_endpoint: string;
102
+ } = await openidConfigRes.json();
103
+
104
+ const tokenRes = await fetch(opendidConfig.token_endpoint, {
105
+ method: "POST",
106
+ headers: {
107
+ "Content-Type": "application/x-www-form-urlencoded",
108
+ },
109
+ body: new URLSearchParams({
110
+ grant_type: "authorization_code",
111
+ code,
112
+ redirect_uri: parsedState.redirectUri,
113
+ code_verifier: codeVerifier,
114
+ }).toString(),
115
+ });
116
+
117
+ localStorage.removeItem("huggingface.co:oauth:code_verifier");
118
+ localStorage.removeItem("huggingface.co:oauth:nonce");
119
+
120
+ if (!tokenRes.ok) {
121
+ throw await createApiError(tokenRes);
122
+ }
123
+
124
+ const token: {
125
+ access_token: string;
126
+ expires_in: number;
127
+ id_token: string;
128
+ // refresh_token: string;
129
+ scope: string;
130
+ token_type: string;
131
+ } = await tokenRes.json();
132
+
133
+ const accessTokenExpiresAt = new Date(Date.now() + token.expires_in * 1000);
134
+
135
+ const userInfoRes = await fetch(opendidConfig.userinfo_endpoint, {
136
+ headers: {
137
+ Authorization: `Bearer ${token.access_token}`,
138
+ },
139
+ });
140
+
141
+ if (!userInfoRes.ok) {
142
+ throw await createApiError(userInfoRes);
143
+ }
144
+
145
+ const userInfo: {
146
+ sub: string;
147
+ name: string;
148
+ preferred_username: string;
149
+ email_verified?: boolean;
150
+ email?: string;
151
+ picture: string;
152
+ website?: string;
153
+ isPro: boolean;
154
+ orgs?: Array<{
155
+ name: string;
156
+ isEnterprise: boolean;
157
+ }>;
158
+ } = await userInfoRes.json();
159
+
160
+ return {
161
+ accessToken: token.access_token,
162
+ accessTokenExpiresAt,
163
+ userInfo: {
164
+ id: userInfo.sub,
165
+ name: userInfo.name,
166
+ fullname: userInfo.preferred_username,
167
+ email: userInfo.email,
168
+ emailVerified: userInfo.email_verified,
169
+ avatarUrl: userInfo.picture,
170
+ websiteUrl: userInfo.website,
171
+ isPro: userInfo.isPro,
172
+ orgs: userInfo.orgs || [],
173
+ },
174
+ state: parsedState.state,
175
+ scope: token.scope,
176
+ };
177
+ }
178
+
179
+ // if (code && !nonce) {
180
+ // console.warn("Missing oauth nonce from localStorage");
181
+ // }
182
+
183
+ /**
184
+ * To call after the OAuth provider redirects back to the app.
185
+ *
186
+ * It returns false if the URL does not contain an oauth code in the query parameters, otherwise
187
+ * it calls {@link oauthHandleRedirect}.
188
+ *
189
+ * Depending on your app, you may want to call {@link oauthHandleRedirect} directly instead.
190
+ */
191
+ export async function oauthHandleRedirectIfPresent(opts?: { hubUrl?: string }): Promise<OAuthResult | false> {
192
+ if (typeof window === "undefined") {
193
+ throw new Error("oauthHandleRedirect is only available in the browser");
194
+ }
195
+
196
+ const searchParams = new URLSearchParams(window.location.search);
197
+
198
+ if (searchParams.has("error")) {
199
+ return oauthHandleRedirect(opts);
200
+ }
201
+
202
+ if (searchParams.has("code")) {
203
+ if (!localStorage.getItem("huggingface.co:oauth:nonce")) {
204
+ console.warn(
205
+ "Missing oauth nonce from localStorage. This can happen when the user refreshes the page after logging in, without changing the URL."
206
+ );
207
+ return false;
208
+ }
209
+
210
+ return oauthHandleRedirect(opts);
211
+ }
212
+
213
+ return false;
214
+ }
src/huggingface/hub/src/lib/oauth-login-url.ts ADDED
@@ -0,0 +1,132 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { base64FromBytes } from "../../../shared/base64FromBytes";
2
+ import { HUB_URL } from "../consts";
3
+ import { createApiError } from "../error";
4
+
5
+ /**
6
+ * Use "Sign in with Hub" to authenticate a user, and get oauth user info / access token.
7
+ *
8
+ * Returns an url to redirect to. After the user is redirected back to your app, call `oauthHandleRedirect` to get the oauth user info / access token.
9
+ *
10
+ * When called from inside a static Space with OAuth enabled, it will load the config from the space, otherwise you need to at least specify
11
+ * the client ID of your OAuth App.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { oauthLoginUrl, oauthHandleRedirectIfPresent } from "@huggingface/hub";
16
+ *
17
+ * const oauthResult = await oauthHandleRedirectIfPresent();
18
+ *
19
+ * if (!oauthResult) {
20
+ * // If the user is not logged in, redirect to the login page
21
+ * window.location.href = await oauthLoginUrl();
22
+ * }
23
+ *
24
+ * // You can use oauthResult.accessToken, oauthResult.accessTokenExpiresAt and oauthResult.userInfo
25
+ * console.log(oauthResult);
26
+ * ```
27
+ *
28
+ * (Theoretically, this function could be used to authenticate a user for any OAuth provider supporting PKCE and OpenID Connect by changing `hubUrl`,
29
+ * but it is currently only tested with the Hugging Face Hub.)
30
+ */
31
+ export async function oauthLoginUrl(opts?: {
32
+ /**
33
+ * OAuth client ID.
34
+ *
35
+ * For static Spaces, you can omit this and it will be loaded from the Space config, as long as `hf_oauth: true` is present in the README.md's metadata.
36
+ * For other Spaces, it is available to the backend in the OAUTH_CLIENT_ID environment variable, as long as `hf_oauth: true` is present in the README.md's metadata.
37
+ *
38
+ * You can also create a Developer Application at https://huggingface.co/settings/connected-applications and use its client ID.
39
+ */
40
+ clientId?: string;
41
+ hubUrl?: string;
42
+ /**
43
+ * OAuth scope, a list of space separate scopes.
44
+ *
45
+ * For static Spaces, you can omit this and it will be loaded from the Space config, as long as `hf_oauth: true` is present in the README.md's metadata.
46
+ * For other Spaces, it is available to the backend in the OAUTH_SCOPES environment variable, as long as `hf_oauth: true` is present in the README.md's metadata.
47
+ *
48
+ * Defaults to "openid profile".
49
+ *
50
+ * You can also create a Developer Application at https://huggingface.co/settings/connected-applications and use its scopes.
51
+ *
52
+ * See https://huggingface.co/docs/hub/oauth for a list of available scopes.
53
+ */
54
+ scopes?: string;
55
+ /**
56
+ * Redirect URI, defaults to the current URL.
57
+ *
58
+ * For Spaces, any URL within the Space is allowed.
59
+ *
60
+ * For Developer Applications, you can add any URL you want to the list of allowed redirect URIs at https://huggingface.co/settings/connected-applications.
61
+ */
62
+ redirectUrl?: string;
63
+ /**
64
+ * State to pass to the OAuth provider, which will be returned in the call to `oauthLogin` after the redirect.
65
+ */
66
+ state?: string;
67
+ }): Promise<string> {
68
+ if (typeof window === "undefined") {
69
+ throw new Error("oauthLogin is only available in the browser");
70
+ }
71
+
72
+ const hubUrl = opts?.hubUrl || HUB_URL;
73
+ const openidConfigUrl = `${new URL(hubUrl).origin}/.well-known/openid-configuration`;
74
+ const openidConfigRes = await fetch(openidConfigUrl, {
75
+ headers: {
76
+ Accept: "application/json",
77
+ },
78
+ });
79
+
80
+ if (!openidConfigRes.ok) {
81
+ throw await createApiError(openidConfigRes);
82
+ }
83
+
84
+ const opendidConfig: {
85
+ authorization_endpoint: string;
86
+ token_endpoint: string;
87
+ userinfo_endpoint: string;
88
+ } = await openidConfigRes.json();
89
+
90
+ const newNonce = crypto.randomUUID();
91
+ // Two random UUIDs concatenated together, because min length is 43 and max length is 128
92
+ const newCodeVerifier = crypto.randomUUID() + crypto.randomUUID();
93
+
94
+ localStorage.setItem("huggingface.co:oauth:nonce", newNonce);
95
+ localStorage.setItem("huggingface.co:oauth:code_verifier", newCodeVerifier);
96
+
97
+ const redirectUri = opts?.redirectUrl || window.location.href;
98
+ const state = JSON.stringify({
99
+ nonce: newNonce,
100
+ redirectUri,
101
+ state: opts?.state,
102
+ });
103
+
104
+ // @ts-expect-error window.huggingface is defined inside static Spaces.
105
+ const variables: Record<string, string> | null = window?.huggingface?.variables ?? null;
106
+
107
+ const clientId = opts?.clientId || variables?.OAUTH_CLIENT_ID;
108
+
109
+ if (!clientId) {
110
+ if (variables) {
111
+ throw new Error("Missing clientId, please add hf_oauth: true to the README.md's metadata in your static Space");
112
+ }
113
+ throw new Error("Missing clientId");
114
+ }
115
+
116
+ const challenge = base64FromBytes(
117
+ new Uint8Array(await globalThis.crypto.subtle.digest("SHA-256", new TextEncoder().encode(newCodeVerifier)))
118
+ )
119
+ .replace(/[+]/g, "-")
120
+ .replace(/[/]/g, "_")
121
+ .replace(/=/g, "");
122
+
123
+ return `${opendidConfig.authorization_endpoint}?${new URLSearchParams({
124
+ client_id: clientId,
125
+ scope: opts?.scopes || "openid profile",
126
+ response_type: "code",
127
+ redirect_uri: redirectUri,
128
+ state,
129
+ code_challenge: challenge,
130
+ code_challenge_method: "S256",
131
+ }).toString()}`;
132
+ }
src/lib/useHuggingFaceLogin.ts ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { useEffect, useState } from "react"
2
+
3
+ import { oauthHandleRedirectIfPresent, oauthLoginUrl } from "@huggingface/hub"
4
+
5
+ export function useHuggingFaceLogin(onLogin?: (data: any) => void) {
6
+ const [isLoggedIn, setLoggedIn] = useState(false)
7
+ const [oauthResult, setOauthResult] = useState<any>({})
8
+
9
+ useEffect(() => {
10
+ const fn = async () => {
11
+ const res = await oauthHandleRedirectIfPresent()
12
+ if (res) {
13
+ setOauthResult(res)
14
+ setLoggedIn(true)
15
+ onLogin?.(res)
16
+ }
17
+ }
18
+ fn()
19
+ }, [])
20
+
21
+ const login = async () => {
22
+ window.location.href = await oauthLoginUrl()
23
+ }
24
+
25
+ console.log(JSON.stringify(oauthResult, null, 2))
26
+
27
+ return {
28
+ isLoggedIn,
29
+ login,
30
+ oauthResult,
31
+ }
32
+ }