jbilcke-hf HF staff commited on
Commit
051e9e4
·
1 Parent(s): 5e3e0ca

update dependencies

Browse files
package-lock.json CHANGED
@@ -1,22 +1,22 @@
1
  {
2
  "name": "ai-tube-clap-exporter",
3
- "version": "1.0.3",
4
  "lockfileVersion": 3,
5
  "requires": true,
6
  "packages": {
7
  "": {
8
  "name": "ai-tube-clap-exporter",
9
- "version": "1.0.3",
10
  "license": "Apache License",
11
  "dependencies": {
12
- "@aitube/clap": "0.0.22",
13
  "@aitube/encoders": "0.0.0",
14
- "@aitube/io": "0.0.0",
15
  "dotenv": "^16.4.5",
16
  "express": "^4.19.2",
17
  "fluent-ffmpeg": "^2.1.3",
18
  "pm2": "^5.3.1",
19
- "puppeteer": "^22.9.0",
20
  "query-string": "^9.0.0",
21
  "sharp": "^0.33.4",
22
  "ts-node": "^10.9.2"
@@ -29,15 +29,14 @@
29
  }
30
  },
31
  "node_modules/@aitube/clap": {
32
- "version": "0.0.22",
33
- "resolved": "https://registry.npmjs.org/@aitube/clap/-/clap-0.0.22.tgz",
34
- "integrity": "sha512-oN+tfoy0fp95AiwNMVy6pbhkK9k/h/gZ3FTZPpF06bVLig4rZ/Bthyot+wy4E/hr9ERLeyGpfZVW8blRqHCAaw==",
35
  "dependencies": {
36
- "pure-uuid": "^1.8.1",
37
- "yaml": "^2.4.2"
38
  },
39
  "peerDependencies": {
40
- "typescript": "^5.4.5"
41
  }
42
  },
43
  "node_modules/@aitube/encoders": {
@@ -49,21 +48,21 @@
49
  }
50
  },
51
  "node_modules/@aitube/io": {
52
- "version": "0.0.0",
53
- "resolved": "https://registry.npmjs.org/@aitube/io/-/io-0.0.0.tgz",
54
- "integrity": "sha512-ay/h4VZGmlS3ZHraHHLkeXovXEv6WU2SSZp+n27rgasnoDsAU8If2IXgZXxIjnpqOigZ8qed/GhmCzvhqvmOrQ==",
55
  "dependencies": {
56
  "mime-types": "^2.1.35",
57
- "sharp": "^0.33.3",
58
- "uuid": "^9.0.1"
59
  }
60
  },
61
  "node_modules/@babel/code-frame": {
62
- "version": "7.24.2",
63
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz",
64
- "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==",
65
  "dependencies": {
66
- "@babel/highlight": "^7.24.2",
67
  "picocolors": "^1.0.0"
68
  },
69
  "engines": {
@@ -71,19 +70,19 @@
71
  }
72
  },
73
  "node_modules/@babel/helper-validator-identifier": {
74
- "version": "7.24.5",
75
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz",
76
- "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==",
77
  "engines": {
78
  "node": ">=6.9.0"
79
  }
80
  },
81
  "node_modules/@babel/highlight": {
82
- "version": "7.24.5",
83
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz",
84
- "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==",
85
  "dependencies": {
86
- "@babel/helper-validator-identifier": "^7.24.5",
87
  "chalk": "^2.4.2",
88
  "js-tokens": "^4.0.0",
89
  "picocolors": "^1.0.0"
@@ -1003,82 +1002,6 @@
1003
  "@jridgewell/sourcemap-codec": "^1.4.10"
1004
  }
1005
  },
1006
- "node_modules/@opencensus/core": {
1007
- "version": "0.0.9",
1008
- "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.9.tgz",
1009
- "integrity": "sha512-31Q4VWtbzXpVUd2m9JS6HEaPjlKvNMOiF7lWKNmXF84yUcgfAFL5re7/hjDmdyQbOp32oGc+RFV78jXIldVz6Q==",
1010
- "dependencies": {
1011
- "continuation-local-storage": "^3.2.1",
1012
- "log-driver": "^1.2.7",
1013
- "semver": "^5.5.0",
1014
- "shimmer": "^1.2.0",
1015
- "uuid": "^3.2.1"
1016
- },
1017
- "engines": {
1018
- "node": ">=6.0"
1019
- }
1020
- },
1021
- "node_modules/@opencensus/core/node_modules/semver": {
1022
- "version": "5.7.2",
1023
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
1024
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
1025
- "bin": {
1026
- "semver": "bin/semver"
1027
- }
1028
- },
1029
- "node_modules/@opencensus/core/node_modules/uuid": {
1030
- "version": "3.4.0",
1031
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
1032
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
1033
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
1034
- "bin": {
1035
- "uuid": "bin/uuid"
1036
- }
1037
- },
1038
- "node_modules/@opencensus/propagation-b3": {
1039
- "version": "0.0.8",
1040
- "resolved": "https://registry.npmjs.org/@opencensus/propagation-b3/-/propagation-b3-0.0.8.tgz",
1041
- "integrity": "sha512-PffXX2AL8Sh0VHQ52jJC4u3T0H6wDK6N/4bg7xh4ngMYOIi13aR1kzVvX1sVDBgfGwDOkMbl4c54Xm3tlPx/+A==",
1042
- "dependencies": {
1043
- "@opencensus/core": "^0.0.8",
1044
- "uuid": "^3.2.1"
1045
- },
1046
- "engines": {
1047
- "node": ">=6.0"
1048
- }
1049
- },
1050
- "node_modules/@opencensus/propagation-b3/node_modules/@opencensus/core": {
1051
- "version": "0.0.8",
1052
- "resolved": "https://registry.npmjs.org/@opencensus/core/-/core-0.0.8.tgz",
1053
- "integrity": "sha512-yUFT59SFhGMYQgX0PhoTR0LBff2BEhPrD9io1jWfF/VDbakRfs6Pq60rjv0Z7iaTav5gQlttJCX2+VPxFWCuoQ==",
1054
- "dependencies": {
1055
- "continuation-local-storage": "^3.2.1",
1056
- "log-driver": "^1.2.7",
1057
- "semver": "^5.5.0",
1058
- "shimmer": "^1.2.0",
1059
- "uuid": "^3.2.1"
1060
- },
1061
- "engines": {
1062
- "node": ">=6.0"
1063
- }
1064
- },
1065
- "node_modules/@opencensus/propagation-b3/node_modules/semver": {
1066
- "version": "5.7.2",
1067
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
1068
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
1069
- "bin": {
1070
- "semver": "bin/semver"
1071
- }
1072
- },
1073
- "node_modules/@opencensus/propagation-b3/node_modules/uuid": {
1074
- "version": "3.4.0",
1075
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
1076
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
1077
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
1078
- "bin": {
1079
- "uuid": "bin/uuid"
1080
- }
1081
- },
1082
  "node_modules/@pm2/agent": {
1083
  "version": "2.0.3",
1084
  "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.3.tgz",
@@ -1156,12 +1079,10 @@
1156
  }
1157
  },
1158
  "node_modules/@pm2/io": {
1159
- "version": "5.0.2",
1160
- "resolved": "https://registry.npmjs.org/@pm2/io/-/io-5.0.2.tgz",
1161
- "integrity": "sha512-XAvrNoQPKOyO/jJyCu8jPhLzlyp35MEf7w/carHXmWKddPzeNOFSEpSEqMzPDawsvpxbE+i918cNN+MwgVsStA==",
1162
  "dependencies": {
1163
- "@opencensus/core": "0.0.9",
1164
- "@opencensus/propagation-b3": "0.0.8",
1165
  "async": "~2.6.1",
1166
  "debug": "~4.3.1",
1167
  "eventemitter2": "^6.3.1",
@@ -1690,36 +1611,11 @@
1690
  "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
1691
  "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ=="
1692
  },
1693
- "node_modules/async-listener": {
1694
- "version": "0.6.10",
1695
- "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz",
1696
- "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==",
1697
- "dependencies": {
1698
- "semver": "^5.3.0",
1699
- "shimmer": "^1.1.0"
1700
- },
1701
- "engines": {
1702
- "node": "<=0.11.8 || >0.11.10"
1703
- }
1704
- },
1705
- "node_modules/async-listener/node_modules/semver": {
1706
- "version": "5.7.2",
1707
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
1708
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
1709
- "bin": {
1710
- "semver": "bin/semver"
1711
- }
1712
- },
1713
  "node_modules/b4a": {
1714
  "version": "1.6.6",
1715
  "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
1716
  "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg=="
1717
  },
1718
- "node_modules/balanced-match": {
1719
- "version": "1.0.2",
1720
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1721
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
1722
- },
1723
  "node_modules/bare-events": {
1724
  "version": "2.2.2",
1725
  "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz",
@@ -1744,9 +1640,9 @@
1744
  "optional": true
1745
  },
1746
  "node_modules/bare-path": {
1747
- "version": "2.1.2",
1748
- "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.2.tgz",
1749
- "integrity": "sha512-o7KSt4prEphWUHa3QUwCxUI00R86VdjiuxmJK0iNVDHYPGo+HsDaVCnqCmPbf/MiW1ok8F4p3m8RTHlWk8K2ig==",
1750
  "optional": true,
1751
  "dependencies": {
1752
  "bare-os": "^2.1.0"
@@ -1838,15 +1734,6 @@
1838
  "npm": "1.2.8000 || >= 1.4.16"
1839
  }
1840
  },
1841
- "node_modules/brace-expansion": {
1842
- "version": "1.1.11",
1843
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1844
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1845
- "dependencies": {
1846
- "balanced-match": "^1.0.0",
1847
- "concat-map": "0.0.1"
1848
- }
1849
- },
1850
  "node_modules/braces": {
1851
  "version": "3.0.3",
1852
  "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
@@ -2047,11 +1934,6 @@
2047
  "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
2048
  "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag=="
2049
  },
2050
- "node_modules/concat-map": {
2051
- "version": "0.0.1",
2052
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
2053
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
2054
- },
2055
  "node_modules/content-disposition": {
2056
  "version": "0.5.4",
2057
  "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
@@ -2071,15 +1953,6 @@
2071
  "node": ">= 0.6"
2072
  }
2073
  },
2074
- "node_modules/continuation-local-storage": {
2075
- "version": "3.2.1",
2076
- "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz",
2077
- "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==",
2078
- "dependencies": {
2079
- "async-listener": "^0.6.0",
2080
- "emitter-listener": "^1.1.1"
2081
- }
2082
- },
2083
  "node_modules/cookie": {
2084
  "version": "0.6.0",
2085
  "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
@@ -2245,14 +2118,6 @@
2245
  "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
2246
  "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
2247
  },
2248
- "node_modules/emitter-listener": {
2249
- "version": "1.1.2",
2250
- "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz",
2251
- "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==",
2252
- "dependencies": {
2253
- "shimmer": "^1.2.0"
2254
- }
2255
- },
2256
  "node_modules/emoji-regex": {
2257
  "version": "8.0.0",
2258
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -2654,11 +2519,6 @@
2654
  "node": ">=14.14"
2655
  }
2656
  },
2657
- "node_modules/fs.realpath": {
2658
- "version": "1.0.0",
2659
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
2660
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
2661
- },
2662
  "node_modules/fsevents": {
2663
  "version": "2.3.3",
2664
  "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -2777,25 +2637,6 @@
2777
  "resolved": "https://registry.npmjs.org/git-sha1/-/git-sha1-0.1.2.tgz",
2778
  "integrity": "sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg=="
2779
  },
2780
- "node_modules/glob": {
2781
- "version": "7.2.3",
2782
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
2783
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
2784
- "dependencies": {
2785
- "fs.realpath": "^1.0.0",
2786
- "inflight": "^1.0.4",
2787
- "inherits": "2",
2788
- "minimatch": "^3.1.1",
2789
- "once": "^1.3.0",
2790
- "path-is-absolute": "^1.0.0"
2791
- },
2792
- "engines": {
2793
- "node": "*"
2794
- },
2795
- "funding": {
2796
- "url": "https://github.com/sponsors/isaacs"
2797
- }
2798
- },
2799
  "node_modules/glob-parent": {
2800
  "version": "5.1.2",
2801
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -3001,15 +2842,6 @@
3001
  "url": "https://github.com/sponsors/sindresorhus"
3002
  }
3003
  },
3004
- "node_modules/inflight": {
3005
- "version": "1.0.6",
3006
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
3007
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
3008
- "dependencies": {
3009
- "once": "^1.3.0",
3010
- "wrappy": "1"
3011
- }
3012
- },
3013
  "node_modules/inherits": {
3014
  "version": "2.0.4",
3015
  "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
@@ -3184,14 +3016,6 @@
3184
  "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
3185
  "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
3186
  },
3187
- "node_modules/log-driver": {
3188
- "version": "1.2.7",
3189
- "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz",
3190
- "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==",
3191
- "engines": {
3192
- "node": ">=0.8.6"
3193
- }
3194
- },
3195
  "node_modules/lru-cache": {
3196
  "version": "7.18.3",
3197
  "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
@@ -3256,17 +3080,6 @@
3256
  "node": ">= 0.6"
3257
  }
3258
  },
3259
- "node_modules/minimatch": {
3260
- "version": "3.1.2",
3261
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
3262
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
3263
- "dependencies": {
3264
- "brace-expansion": "^1.1.7"
3265
- },
3266
- "engines": {
3267
- "node": "*"
3268
- }
3269
- },
3270
  "node_modules/mitt": {
3271
  "version": "3.0.1",
3272
  "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
@@ -3487,14 +3300,6 @@
3487
  "node": ">= 0.8"
3488
  }
3489
  },
3490
- "node_modules/path-is-absolute": {
3491
- "version": "1.0.1",
3492
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
3493
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
3494
- "engines": {
3495
- "node": ">=0.10.0"
3496
- }
3497
- },
3498
  "node_modules/path-parse": {
3499
  "version": "1.0.7",
3500
  "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
@@ -3538,12 +3343,12 @@
3538
  }
3539
  },
3540
  "node_modules/pm2": {
3541
- "version": "5.3.1",
3542
- "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.3.1.tgz",
3543
- "integrity": "sha512-DLVQHpSR1EegaTaRH3KbRXxpPVaqYwAp3uHSCtCsS++LSErvk07WSxuUnntFblBRqNU/w2KQyqs12mSq5wurkg==",
3544
  "dependencies": {
3545
  "@pm2/agent": "~2.0.0",
3546
- "@pm2/io": "~5.0.0",
3547
  "@pm2/js-api": "~0.8.0",
3548
  "@pm2/pm2-version-check": "latest",
3549
  "async": "~3.2.0",
@@ -3558,6 +3363,7 @@
3558
  "enquirer": "2.3.6",
3559
  "eventemitter2": "5.0.1",
3560
  "fclone": "1.0.11",
 
3561
  "mkdirp": "1.0.4",
3562
  "needle": "2.4.0",
3563
  "pidusage": "~3.0",
@@ -3569,8 +3375,7 @@
3569
  "semver": "^7.2",
3570
  "source-map-support": "0.5.21",
3571
  "sprintf-js": "1.1.2",
3572
- "vizion": "~2.2.1",
3573
- "yamljs": "0.3.0"
3574
  },
3575
  "bin": {
3576
  "pm2": "bin/pm2",
@@ -3579,7 +3384,7 @@
3579
  "pm2-runtime": "bin/pm2-runtime"
3580
  },
3581
  "engines": {
3582
- "node": ">=10.0.0"
3583
  },
3584
  "optionalDependencies": {
3585
  "pm2-sysmonit": "^1.2.8"
@@ -3834,15 +3639,15 @@
3834
  }
3835
  },
3836
  "node_modules/puppeteer": {
3837
- "version": "22.9.0",
3838
- "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.9.0.tgz",
3839
- "integrity": "sha512-yNux2cm6Sfik4lNLNjJ25Cdn9spJRbMXxl1YZtVZCEhEeej1sFlCvZ/Cr64LhgyJOuvz3iq2uk+RLFpQpGwrjw==",
3840
  "hasInstallScript": true,
3841
  "dependencies": {
3842
  "@puppeteer/browsers": "2.2.3",
3843
  "cosmiconfig": "9.0.0",
3844
  "devtools-protocol": "0.0.1286932",
3845
- "puppeteer-core": "22.9.0"
3846
  },
3847
  "bin": {
3848
  "puppeteer": "lib/esm/puppeteer/node/cli.js"
@@ -3852,9 +3657,9 @@
3852
  }
3853
  },
3854
  "node_modules/puppeteer-core": {
3855
- "version": "22.9.0",
3856
- "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.9.0.tgz",
3857
- "integrity": "sha512-Q2SYVZ1SIE7jCd/Pp+1/mNLFtdJfGvAF+CqOTDG8HcCNCiBvoXfopXfOfMHQ/FueXhGfJW/I6DartWv6QzpNGg==",
3858
  "dependencies": {
3859
  "@puppeteer/browsers": "2.2.3",
3860
  "chromium-bidi": "0.5.19",
@@ -4113,9 +3918,9 @@
4113
  "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
4114
  },
4115
  "node_modules/sax": {
4116
- "version": "1.3.0",
4117
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz",
4118
- "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA=="
4119
  },
4120
  "node_modules/semver": {
4121
  "version": "7.6.2",
@@ -4546,9 +4351,9 @@
4546
  "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
4547
  },
4548
  "node_modules/tsx": {
4549
- "version": "4.10.5",
4550
- "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.10.5.tgz",
4551
- "integrity": "sha512-twDSbf7Gtea4I2copqovUiNTEDrT8XNFXsuHpfGbdpW/z9ZW4fTghzzhAG0WfrCuJmJiOEY1nLIjq4u3oujRWQ==",
4552
  "dev": true,
4553
  "dependencies": {
4554
  "esbuild": "~0.20.2",
@@ -4649,18 +4454,6 @@
4649
  "node": ">= 0.4.0"
4650
  }
4651
  },
4652
- "node_modules/uuid": {
4653
- "version": "9.0.1",
4654
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz",
4655
- "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==",
4656
- "funding": [
4657
- "https://github.com/sponsors/broofa",
4658
- "https://github.com/sponsors/ctavan"
4659
- ],
4660
- "bin": {
4661
- "uuid": "dist/bin/uuid"
4662
- }
4663
- },
4664
  "node_modules/v8-compile-cache-lib": {
4665
  "version": "3.0.1",
4666
  "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
@@ -4765,6 +4558,7 @@
4765
  "version": "2.4.2",
4766
  "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz",
4767
  "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==",
 
4768
  "bin": {
4769
  "yaml": "bin.mjs"
4770
  },
@@ -4772,32 +4566,6 @@
4772
  "node": ">= 14"
4773
  }
4774
  },
4775
- "node_modules/yamljs": {
4776
- "version": "0.3.0",
4777
- "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz",
4778
- "integrity": "sha512-C/FsVVhht4iPQYXOInoxUM/1ELSf9EsgKH34FofQOp6hwCPrW4vG4w5++TED3xRUo8gD7l0P1J1dLlDYzODsTQ==",
4779
- "dependencies": {
4780
- "argparse": "^1.0.7",
4781
- "glob": "^7.0.5"
4782
- },
4783
- "bin": {
4784
- "json2yaml": "bin/json2yaml",
4785
- "yaml2json": "bin/yaml2json"
4786
- }
4787
- },
4788
- "node_modules/yamljs/node_modules/argparse": {
4789
- "version": "1.0.10",
4790
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
4791
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
4792
- "dependencies": {
4793
- "sprintf-js": "~1.0.2"
4794
- }
4795
- },
4796
- "node_modules/yamljs/node_modules/sprintf-js": {
4797
- "version": "1.0.3",
4798
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
4799
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
4800
- },
4801
  "node_modules/yargs": {
4802
  "version": "17.7.2",
4803
  "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
 
1
  {
2
  "name": "ai-tube-clap-exporter",
3
+ "version": "1.0.5",
4
  "lockfileVersion": 3,
5
  "requires": true,
6
  "packages": {
7
  "": {
8
  "name": "ai-tube-clap-exporter",
9
+ "version": "1.0.5",
10
  "license": "Apache License",
11
  "dependencies": {
12
+ "@aitube/clap": "0.0.23",
13
  "@aitube/encoders": "0.0.0",
14
+ "@aitube/io": "0.0.1",
15
  "dotenv": "^16.4.5",
16
  "express": "^4.19.2",
17
  "fluent-ffmpeg": "^2.1.3",
18
  "pm2": "^5.3.1",
19
+ "puppeteer": "^22.10.0",
20
  "query-string": "^9.0.0",
21
  "sharp": "^0.33.4",
22
  "ts-node": "^10.9.2"
 
29
  }
30
  },
31
  "node_modules/@aitube/clap": {
32
+ "version": "0.0.23",
33
+ "resolved": "https://registry.npmjs.org/@aitube/clap/-/clap-0.0.23.tgz",
34
+ "integrity": "sha512-+XOsWUgEax8yhmCBuWDFETh6mJTT5gYBNf8rChP55qX6le8bFxSBOdLirEdQ+SLnOLwRNthgCF4tWcT3GOLMVw==",
35
  "dependencies": {
36
+ "pure-uuid": "^1.8.1"
 
37
  },
38
  "peerDependencies": {
39
+ "yaml": "^2.4.2"
40
  }
41
  },
42
  "node_modules/@aitube/encoders": {
 
48
  }
49
  },
50
  "node_modules/@aitube/io": {
51
+ "version": "0.0.1",
52
+ "resolved": "https://registry.npmjs.org/@aitube/io/-/io-0.0.1.tgz",
53
+ "integrity": "sha512-+0LH5ZOxpPqdABuwKcdNpRJyam7PTKO2zT+SyaKxB7vJcUgZ0ukZajLzLgo9dPr/R8XzOrJQlRSs3MU4F3R7nQ==",
54
  "dependencies": {
55
  "mime-types": "^2.1.35",
56
+ "pure-uuid": "^1.8.1",
57
+ "sharp": "^0.33.4"
58
  }
59
  },
60
  "node_modules/@babel/code-frame": {
61
+ "version": "7.24.6",
62
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz",
63
+ "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==",
64
  "dependencies": {
65
+ "@babel/highlight": "^7.24.6",
66
  "picocolors": "^1.0.0"
67
  },
68
  "engines": {
 
70
  }
71
  },
72
  "node_modules/@babel/helper-validator-identifier": {
73
+ "version": "7.24.6",
74
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz",
75
+ "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==",
76
  "engines": {
77
  "node": ">=6.9.0"
78
  }
79
  },
80
  "node_modules/@babel/highlight": {
81
+ "version": "7.24.6",
82
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz",
83
+ "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==",
84
  "dependencies": {
85
+ "@babel/helper-validator-identifier": "^7.24.6",
86
  "chalk": "^2.4.2",
87
  "js-tokens": "^4.0.0",
88
  "picocolors": "^1.0.0"
 
1002
  "@jridgewell/sourcemap-codec": "^1.4.10"
1003
  }
1004
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1005
  "node_modules/@pm2/agent": {
1006
  "version": "2.0.3",
1007
  "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.3.tgz",
 
1079
  }
1080
  },
1081
  "node_modules/@pm2/io": {
1082
+ "version": "6.0.0",
1083
+ "resolved": "https://registry.npmjs.org/@pm2/io/-/io-6.0.0.tgz",
1084
+ "integrity": "sha512-sKUEgZoQ5/jRwTyMB1I7u2wXL6dG0j/F/M4ANJ7dJCApfW8nWC0RElMW2siEKvZ79iplIPAaWV27oyBoerEflw==",
1085
  "dependencies": {
 
 
1086
  "async": "~2.6.1",
1087
  "debug": "~4.3.1",
1088
  "eventemitter2": "^6.3.1",
 
1611
  "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz",
1612
  "integrity": "sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ=="
1613
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1614
  "node_modules/b4a": {
1615
  "version": "1.6.6",
1616
  "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz",
1617
  "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg=="
1618
  },
 
 
 
 
 
1619
  "node_modules/bare-events": {
1620
  "version": "2.2.2",
1621
  "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz",
 
1640
  "optional": true
1641
  },
1642
  "node_modules/bare-path": {
1643
+ "version": "2.1.3",
1644
+ "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz",
1645
+ "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==",
1646
  "optional": true,
1647
  "dependencies": {
1648
  "bare-os": "^2.1.0"
 
1734
  "npm": "1.2.8000 || >= 1.4.16"
1735
  }
1736
  },
 
 
 
 
 
 
 
 
 
1737
  "node_modules/braces": {
1738
  "version": "3.0.3",
1739
  "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
 
1934
  "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz",
1935
  "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag=="
1936
  },
 
 
 
 
 
1937
  "node_modules/content-disposition": {
1938
  "version": "0.5.4",
1939
  "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
 
1953
  "node": ">= 0.6"
1954
  }
1955
  },
 
 
 
 
 
 
 
 
 
1956
  "node_modules/cookie": {
1957
  "version": "0.6.0",
1958
  "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
 
2118
  "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
2119
  "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
2120
  },
 
 
 
 
 
 
 
 
2121
  "node_modules/emoji-regex": {
2122
  "version": "8.0.0",
2123
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
 
2519
  "node": ">=14.14"
2520
  }
2521
  },
 
 
 
 
 
2522
  "node_modules/fsevents": {
2523
  "version": "2.3.3",
2524
  "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
 
2637
  "resolved": "https://registry.npmjs.org/git-sha1/-/git-sha1-0.1.2.tgz",
2638
  "integrity": "sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg=="
2639
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2640
  "node_modules/glob-parent": {
2641
  "version": "5.1.2",
2642
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
 
2842
  "url": "https://github.com/sponsors/sindresorhus"
2843
  }
2844
  },
 
 
 
 
 
 
 
 
 
2845
  "node_modules/inherits": {
2846
  "version": "2.0.4",
2847
  "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
 
3016
  "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
3017
  "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
3018
  },
 
 
 
 
 
 
 
 
3019
  "node_modules/lru-cache": {
3020
  "version": "7.18.3",
3021
  "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz",
 
3080
  "node": ">= 0.6"
3081
  }
3082
  },
 
 
 
 
 
 
 
 
 
 
 
3083
  "node_modules/mitt": {
3084
  "version": "3.0.1",
3085
  "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
 
3300
  "node": ">= 0.8"
3301
  }
3302
  },
 
 
 
 
 
 
 
 
3303
  "node_modules/path-parse": {
3304
  "version": "1.0.7",
3305
  "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
 
3343
  }
3344
  },
3345
  "node_modules/pm2": {
3346
+ "version": "5.4.0",
3347
+ "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.4.0.tgz",
3348
+ "integrity": "sha512-9TrDuckcSEnINoURygr3yfruK20qXuOUPOPQyIh4FIskQduyDNst9ys1XAt9YPY3RyGxVr2+x8Irsdma3klVQw==",
3349
  "dependencies": {
3350
  "@pm2/agent": "~2.0.0",
3351
+ "@pm2/io": "~6.0.0",
3352
  "@pm2/js-api": "~0.8.0",
3353
  "@pm2/pm2-version-check": "latest",
3354
  "async": "~3.2.0",
 
3363
  "enquirer": "2.3.6",
3364
  "eventemitter2": "5.0.1",
3365
  "fclone": "1.0.11",
3366
+ "js-yaml": "~4.1.0",
3367
  "mkdirp": "1.0.4",
3368
  "needle": "2.4.0",
3369
  "pidusage": "~3.0",
 
3375
  "semver": "^7.2",
3376
  "source-map-support": "0.5.21",
3377
  "sprintf-js": "1.1.2",
3378
+ "vizion": "~2.2.1"
 
3379
  },
3380
  "bin": {
3381
  "pm2": "bin/pm2",
 
3384
  "pm2-runtime": "bin/pm2-runtime"
3385
  },
3386
  "engines": {
3387
+ "node": ">=12.0.0"
3388
  },
3389
  "optionalDependencies": {
3390
  "pm2-sysmonit": "^1.2.8"
 
3639
  }
3640
  },
3641
  "node_modules/puppeteer": {
3642
+ "version": "22.10.0",
3643
+ "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.10.0.tgz",
3644
+ "integrity": "sha512-ZOkZd6a6t0BdKcWb0wAYHWQqCfdlN1PPnXOmg/XNrbo6gJhYWFX4qCNb6ahSn8TpAqBqLCoD4Q010F7GwOM7mA==",
3645
  "hasInstallScript": true,
3646
  "dependencies": {
3647
  "@puppeteer/browsers": "2.2.3",
3648
  "cosmiconfig": "9.0.0",
3649
  "devtools-protocol": "0.0.1286932",
3650
+ "puppeteer-core": "22.10.0"
3651
  },
3652
  "bin": {
3653
  "puppeteer": "lib/esm/puppeteer/node/cli.js"
 
3657
  }
3658
  },
3659
  "node_modules/puppeteer-core": {
3660
+ "version": "22.10.0",
3661
+ "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.10.0.tgz",
3662
+ "integrity": "sha512-I54J4Vy4I07UHsgB1QSmuFoF7KNQjJWcvFBPhtY+ezMdBfwgGDr8dzYrJa11aPgP9kxIUHjhktcMmmfJkOAtTw==",
3663
  "dependencies": {
3664
  "@puppeteer/browsers": "2.2.3",
3665
  "chromium-bidi": "0.5.19",
 
3918
  "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
3919
  },
3920
  "node_modules/sax": {
3921
+ "version": "1.4.1",
3922
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
3923
+ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="
3924
  },
3925
  "node_modules/semver": {
3926
  "version": "7.6.2",
 
4351
  "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
4352
  },
4353
  "node_modules/tsx": {
4354
+ "version": "4.11.0",
4355
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.11.0.tgz",
4356
+ "integrity": "sha512-vzGGELOgAupsNVssAmZjbUDfdm/pWP4R+Kg8TVdsonxbXk0bEpE1qh0yV6/QxUVXaVlNemgcPajGdJJ82n3stg==",
4357
  "dev": true,
4358
  "dependencies": {
4359
  "esbuild": "~0.20.2",
 
4454
  "node": ">= 0.4.0"
4455
  }
4456
  },
 
 
 
 
 
 
 
 
 
 
 
 
4457
  "node_modules/v8-compile-cache-lib": {
4458
  "version": "3.0.1",
4459
  "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
 
4558
  "version": "2.4.2",
4559
  "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz",
4560
  "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==",
4561
+ "peer": true,
4562
  "bin": {
4563
  "yaml": "bin.mjs"
4564
  },
 
4566
  "node": ">= 14"
4567
  }
4568
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4569
  "node_modules/yargs": {
4570
  "version": "17.7.2",
4571
  "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
package.json CHANGED
@@ -1,6 +1,6 @@
1
  {
2
  "name": "ai-tube-clap-exporter",
3
- "version": "1.0.4",
4
  "description": "API service to convert a .clap (will all its assets) to a video file",
5
  "main": "src/index.ts",
6
  "scripts": {
@@ -13,14 +13,14 @@
13
  "author": "Julian Bilcke <julian.bilcke@huggingface.co>",
14
  "license": "Apache License",
15
  "dependencies": {
16
- "@aitube/clap": "0.0.22",
17
  "@aitube/encoders": "0.0.0",
18
- "@aitube/io": "0.0.0",
19
  "dotenv": "^16.4.5",
20
  "express": "^4.19.2",
21
  "fluent-ffmpeg": "^2.1.3",
22
  "pm2": "^5.3.1",
23
- "puppeteer": "^22.9.0",
24
  "query-string": "^9.0.0",
25
  "sharp": "^0.33.4",
26
  "ts-node": "^10.9.2"
 
1
  {
2
  "name": "ai-tube-clap-exporter",
3
+ "version": "1.0.5",
4
  "description": "API service to convert a .clap (will all its assets) to a video file",
5
  "main": "src/index.ts",
6
  "scripts": {
 
13
  "author": "Julian Bilcke <julian.bilcke@huggingface.co>",
14
  "license": "Apache License",
15
  "dependencies": {
16
+ "@aitube/clap": "0.0.23",
17
  "@aitube/encoders": "0.0.0",
18
+ "@aitube/io": "0.0.1",
19
  "dotenv": "^16.4.5",
20
  "express": "^4.19.2",
21
  "fluent-ffmpeg": "^2.1.3",
22
  "pm2": "^5.3.1",
23
+ "puppeteer": "^22.10.0",
24
  "query-string": "^9.0.0",
25
  "sharp": "^0.33.4",
26
  "ts-node": "^10.9.2"
src/bug-in-bun/aitube_ffmpeg/analyze/extractFirstFrame.ts CHANGED
@@ -1,11 +1,11 @@
1
- import { promises as fs, existsSync } from 'node:fs';
2
- import path from 'node:path';
3
- import os from 'node:os';
4
 
5
- import { v4 as uuidv4 } from 'uuid';
6
- import ffmpeg from 'fluent-ffmpeg';
7
 
8
- const validFormats = ['jpeg', 'png', 'webp'];
9
 
10
  /**
11
  * Extract the first frame from a video
@@ -40,14 +40,14 @@ export async function extractFirstFrame({
40
  const extension = matches[1];
41
  const base64Content = matches[2];
42
 
43
- videoFilePath = path.join(os.tmpdir(), `${uuidv4()}_inputVideo.${extension}`);
44
  await fs.writeFile(videoFilePath, base64Content, 'base64');
45
  } else if (!existsSync(videoFilePath)) {
46
  throw new Error('Video file does not exist.');
47
  }
48
 
49
  // Create a temporary output file
50
- const outputImagePath = path.join(os.tmpdir(), `${uuidv4()}.${outputFormat}`);
51
 
52
  return new Promise((resolve, reject) => {
53
  ffmpeg()
 
1
+ import { promises as fs, existsSync } from 'node:fs'
2
+ import path from 'node:path'
3
+ import os from 'node:os'
4
 
5
+ import { UUID } from '@aitube/clap'
6
+ import ffmpeg from 'fluent-ffmpeg'
7
 
8
+ const validFormats = ['jpeg', 'png', 'webp']
9
 
10
  /**
11
  * Extract the first frame from a video
 
40
  const extension = matches[1];
41
  const base64Content = matches[2];
42
 
43
+ videoFilePath = path.join(os.tmpdir(), `${UUID()}_inputVideo.${extension}`);
44
  await fs.writeFile(videoFilePath, base64Content, 'base64');
45
  } else if (!existsSync(videoFilePath)) {
46
  throw new Error('Video file does not exist.');
47
  }
48
 
49
  // Create a temporary output file
50
+ const outputImagePath = path.join(os.tmpdir(), `${UUID()}.${outputFormat}`);
51
 
52
  return new Promise((resolve, reject) => {
53
  ffmpeg()
src/bug-in-bun/aitube_ffmpeg/concatenate/concatenateAudio.ts CHANGED
@@ -1,7 +1,7 @@
1
  import { existsSync } from "node:fs"
2
  import path from "node:path"
3
 
4
- import { v4 as uuidv4 } from "uuid"
5
  import ffmpeg, { FfmpegCommand } from "fluent-ffmpeg"
6
  import { getRandomDirectory, removeTemporaryFiles, writeBase64ToFile } from "@aitube/io"
7
  import { addBase64Header } from "@aitube/encoders"
@@ -70,7 +70,7 @@ export async function concatenateAudio({
70
  // TODO: convert this to an async filter using promises
71
  audioFilePaths = audioFilePaths.filter((audio) => existsSync(audio))
72
 
73
- const outputFilePath = output ?? path.join(tempDir, `${uuidv4()}.${outputFormat}`);
74
 
75
  let filterComplex = "";
76
  let prevLabel = "0";
 
1
  import { existsSync } from "node:fs"
2
  import path from "node:path"
3
 
4
+ import { UUID } from "@aitube/clap"
5
  import ffmpeg, { FfmpegCommand } from "fluent-ffmpeg"
6
  import { getRandomDirectory, removeTemporaryFiles, writeBase64ToFile } from "@aitube/io"
7
  import { addBase64Header } from "@aitube/encoders"
 
70
  // TODO: convert this to an async filter using promises
71
  audioFilePaths = audioFilePaths.filter((audio) => existsSync(audio))
72
 
73
+ const outputFilePath = output ?? path.join(tempDir, `${UUID()}.${outputFormat}`);
74
 
75
  let filterComplex = "";
76
  let prevLabel = "0";
src/bug-in-bun/aitube_ffmpeg/concatenate/concatenateVideos.ts CHANGED
@@ -1,7 +1,7 @@
1
  import { existsSync } from "node:fs"
2
  import path from "node:path"
3
 
4
- import { v4 as uuidv4 } from "uuid"
5
  import ffmpeg, { FfmpegCommand } from "fluent-ffmpeg"
6
  import { getRandomDirectory } from "@aitube/io"
7
 
@@ -30,7 +30,7 @@ export async function concatenateVideos({
30
  // Create a temporary working directory
31
  const tempDir = await getRandomDirectory()
32
 
33
- const filePath = output ? output : path.join(tempDir, `${uuidv4()}.mp4`)
34
 
35
  if (!filePath) {
36
  throw new Error("Failed to generate a valid temporary file path")
 
1
  import { existsSync } from "node:fs"
2
  import path from "node:path"
3
 
4
+ import { UUID } from "@aitube/clap"
5
  import ffmpeg, { FfmpegCommand } from "fluent-ffmpeg"
6
  import { getRandomDirectory } from "@aitube/io"
7
 
 
30
  // Create a temporary working directory
31
  const tempDir = await getRandomDirectory()
32
 
33
+ const filePath = output ? output : path.join(tempDir, `${UUID()}.mp4`)
34
 
35
  if (!filePath) {
36
  throw new Error("Failed to generate a valid temporary file path")
src/bug-in-bun/aitube_ffmpeg/concatenate/concatenateVideosAndMergeAudio.ts CHANGED
@@ -1,7 +1,7 @@
1
  import { existsSync } from "node:fs"
2
  import path from "node:path"
3
 
4
- import { v4 as uuidv4 } from "uuid"
5
  import ffmpeg, { FfmpegCommand } from "fluent-ffmpeg"
6
  import { getRandomDirectory, removeTemporaryFiles, writeBase64ToFile } from "@aitube/io"
7
  import { addBase64Header, extractBase64 } from "@aitube/encoders"
@@ -62,7 +62,7 @@ export const concatenateVideosAndMergeAudio = async ({
62
  videoFilePaths = videoFilePaths.filter((video) => existsSync(video))
63
 
64
  // The final output file path
65
- const finalOutputFilePath = output ? output : path.join(tempDir, `${uuidv4()}.mp4`);
66
 
67
  /*
68
  console.log("DEBUG:", {
 
1
  import { existsSync } from "node:fs"
2
  import path from "node:path"
3
 
4
+ import { UUID } from "@aitube/clap"
5
  import ffmpeg, { FfmpegCommand } from "fluent-ffmpeg"
6
  import { getRandomDirectory, removeTemporaryFiles, writeBase64ToFile } from "@aitube/io"
7
  import { addBase64Header, extractBase64 } from "@aitube/encoders"
 
62
  videoFilePaths = videoFilePaths.filter((video) => existsSync(video))
63
 
64
  // The final output file path
65
+ const finalOutputFilePath = output ? output : path.join(tempDir, `${UUID()}.mp4`);
66
 
67
  /*
68
  console.log("DEBUG:", {
src/bug-in-bun/aitube_ffmpeg/concatenate/concatenateVideosWithAudio.ts CHANGED
@@ -2,7 +2,7 @@ import { existsSync } from "node:fs"
2
  import { readFile } from "node:fs/promises"
3
  import path from "node:path"
4
 
5
- import { v4 as uuidv4 } from "uuid"
6
  import ffmpeg, { FfmpegCommand } from "fluent-ffmpeg"
7
  import { addBase64Header, extractBase64 } from "@aitube/encoders"
8
  import { getRandomDirectory, removeTemporaryFiles, writeBase64ToFile } from "@aitube/io"
@@ -81,7 +81,7 @@ export const concatenateVideosWithAudio = async ({
81
 
82
  // console.log(`concatenateVideosWithAudio: hasOriginalAudio = ${hasOriginalAudio}`)
83
 
84
- const finalOutputFilePath = output || path.join(tempDir, `${uuidv4()}.${format}`);
85
 
86
  // console.log(`concatenateVideosWithAudio: finalOutputFilePath = ${finalOutputFilePath}`)
87
 
 
2
  import { readFile } from "node:fs/promises"
3
  import path from "node:path"
4
 
5
+ import { UUID } from "@aitube/clap"
6
  import ffmpeg, { FfmpegCommand } from "fluent-ffmpeg"
7
  import { addBase64Header, extractBase64 } from "@aitube/encoders"
8
  import { getRandomDirectory, removeTemporaryFiles, writeBase64ToFile } from "@aitube/io"
 
81
 
82
  // console.log(`concatenateVideosWithAudio: hasOriginalAudio = ${hasOriginalAudio}`)
83
 
84
+ const finalOutputFilePath = output || path.join(tempDir, `${UUID()}.${format}`);
85
 
86
  // console.log(`concatenateVideosWithAudio: finalOutputFilePath = ${finalOutputFilePath}`)
87
 
src/bug-in-bun/aitube_ffmpeg/concatenate/createVideoFromFrames.ts CHANGED
@@ -3,7 +3,7 @@ import os from "node:os"
3
  import path from "node:path"
4
 
5
  import ffmpeg from "fluent-ffmpeg"
6
- import { v4 as uuidv4 } from "uuid"
7
 
8
  import { getMediaInfo } from "../analyze/getMediaInfo"
9
 
@@ -46,7 +46,7 @@ export async function createVideoFromFrames({
46
 
47
 
48
  // Create a temporary working directory
49
- const tempDir = path.join(os.tmpdir(), uuidv4());
50
  await mkdir(tempDir);
51
 
52
 
@@ -57,7 +57,7 @@ export async function createVideoFromFrames({
57
  if (!base64Content) {
58
  throw new Error('Invalid base64 input provided');
59
  }
60
- inputVideoToUseAsAudioFilePath = path.join(tempDir, `${uuidv4()}_audio_input.mp4`);
61
  await writeFile(inputVideoToUseAsAudioFilePath, base64Content, 'base64');
62
  } else {
63
  inputVideoToUseAsAudioFilePath = inputVideoToUseAsAudio;
@@ -84,7 +84,7 @@ export async function createVideoFromFrames({
84
  }
85
  }
86
 
87
- const outputVideoFilePath = outputVideoPath ?? path.join(tempDir, `${uuidv4()}.mp4`);
88
 
89
  if (debug) {
90
  console.log(" createVideoFromFrames(): outputOptions:", [
 
3
  import path from "node:path"
4
 
5
  import ffmpeg from "fluent-ffmpeg"
6
+ import { UUID } from "@aitube/clap"
7
 
8
  import { getMediaInfo } from "../analyze/getMediaInfo"
9
 
 
46
 
47
 
48
  // Create a temporary working directory
49
+ const tempDir = path.join(os.tmpdir(), UUID());
50
  await mkdir(tempDir);
51
 
52
 
 
57
  if (!base64Content) {
58
  throw new Error('Invalid base64 input provided');
59
  }
60
+ inputVideoToUseAsAudioFilePath = path.join(tempDir, `${UUID()}_audio_input.mp4`);
61
  await writeFile(inputVideoToUseAsAudioFilePath, base64Content, 'base64');
62
  } else {
63
  inputVideoToUseAsAudioFilePath = inputVideoToUseAsAudio;
 
84
  }
85
  }
86
 
87
+ const outputVideoFilePath = outputVideoPath ?? path.join(tempDir, `${UUID()}.mp4`);
88
 
89
  if (debug) {
90
  console.log(" createVideoFromFrames(): outputOptions:", [
src/bug-in-bun/aitube_ffmpeg/overlay/addImageToVideo.ts CHANGED
@@ -2,7 +2,7 @@ import { existsSync } from "node:fs"
2
  import path from "node:path"
3
 
4
  import ffmpeg from "fluent-ffmpeg"
5
- import { v4 as uuidv4 } from "uuid"
6
  import { getRandomDirectory } from "@aitube/io"
7
 
8
  type AddImageToVideoParams = {
@@ -31,7 +31,7 @@ export async function addImageToVideo({
31
  // If no output path is provided, create a temporary file for output
32
  if (!outputVideoPath) {
33
  const tempDir = await getRandomDirectory()
34
- outputVideoPath = path.join(tempDir, `${uuidv4()}.mp4`);
35
  }
36
 
37
  // Return a promise that resolves with the path to the output video
 
2
  import path from "node:path"
3
 
4
  import ffmpeg from "fluent-ffmpeg"
5
+ import { UUID } from "@aitube/clap"
6
  import { getRandomDirectory } from "@aitube/io"
7
 
8
  type AddImageToVideoParams = {
 
31
  // If no output path is provided, create a temporary file for output
32
  if (!outputVideoPath) {
33
  const tempDir = await getRandomDirectory()
34
+ outputVideoPath = path.join(tempDir, `${UUID()}.mp4`);
35
  }
36
 
37
  // Return a promise that resolves with the path to the output video
src/bug-in-bun/aitube_ffmpeg/overlay/htmlToBase64Png.ts CHANGED
@@ -2,7 +2,7 @@ import { promises as fs } from "node:fs"
2
  import os from "node:os"
3
  import path from "node:path"
4
 
5
- import { v4 as uuidv4 } from "uuid"
6
  import puppeteer from "puppeteer"
7
 
8
  export async function htmlToBase64Png({
@@ -22,9 +22,9 @@ export async function htmlToBase64Png({
22
 
23
  // If no output path is provided, create a temporary file for output
24
  if (!outputImagePath) {
25
- const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), uuidv4()))
26
 
27
- outputImagePath = path.join(tempDir, `${uuidv4()}.png`)
28
  }
29
 
30
  const browser = await puppeteer.launch({
 
2
  import os from "node:os"
3
  import path from "node:path"
4
 
5
+ import { UUID } from "@aitube/clap"
6
  import puppeteer from "puppeteer"
7
 
8
  export async function htmlToBase64Png({
 
22
 
23
  // If no output path is provided, create a temporary file for output
24
  if (!outputImagePath) {
25
+ const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), UUID()))
26
 
27
+ outputImagePath = path.join(tempDir, `${UUID()}.png`)
28
  }
29
 
30
  const browser = await puppeteer.launch({
src/bug-in-bun/aitube_ffmpeg/overlay/htmlToBase64PngWorker.js CHANGED
@@ -2,7 +2,7 @@ import { promises as fs } from "node:fs"
2
  import os from "node:os"
3
  import path from "node:path"
4
 
5
- import { v4 as uuidv4 } from "uuid"
6
  import puppeteer from "puppeteer"
7
 
8
  const inpDataB64 = process.argv.find((a) => a.startsWith('--input-data')).replace('--input-data', '')
@@ -14,8 +14,8 @@ async function htmlToBase64PngWorker(input) {
14
 
15
  // If no output path is provided, create a temporary file for output
16
  if (!outputImagePath) {
17
- const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), uuidv4()))
18
- outputImagePath = path.join(tempDir, `${uuidv4()}.png`)
19
  }
20
 
21
  const browser = await puppeteer.launch({
 
2
  import os from "node:os"
3
  import path from "node:path"
4
 
5
+ import { UUID } from "@aitube/clap"
6
  import puppeteer from "puppeteer"
7
 
8
  const inpDataB64 = process.argv.find((a) => a.startsWith('--input-data')).replace('--input-data', '')
 
14
 
15
  // If no output path is provided, create a temporary file for output
16
  if (!outputImagePath) {
17
+ const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), UUID()))
18
+ outputImagePath = path.join(tempDir, `${UUID()}.png`)
19
  }
20
 
21
  const browser = await puppeteer.launch({
src/bug-in-bun/aitube_ffmpeg/overlay/imageToVideoBase64.ts CHANGED
@@ -1,8 +1,8 @@
1
  import { rm, writeFile, readFile } from "node:fs/promises"
2
  import path from "node:path"
3
 
4
- import { v4 as uuidv4 } from "uuid"
5
  import ffmpeg from "fluent-ffmpeg"
 
6
  import { getRandomDirectory } from "@aitube/io"
7
 
8
  /**
@@ -52,7 +52,7 @@ export async function imageToVideoBase64({
52
  // Decode the Base64 image and write it to a temporary file.
53
  const base64Data = inputImageInBase64.substring(inputImageInBase64.indexOf(',') + 1);
54
  const buffer = Buffer.from(base64Data, 'base64');
55
- const inputImagePath = path.join(outputDir, `${uuidv4()}.png`);
56
  await writeFile(inputImagePath, buffer);
57
 
58
  const inputImageDetails = await new Promise<ffmpeg.FfprobeData>((resolve, reject) => {
@@ -81,7 +81,7 @@ export async function imageToVideoBase64({
81
  }
82
 
83
  // Set the path for the output video.
84
- outputFilePath = outputFilePath || path.join(outputDir, `output_${uuidv4()}.${outputVideoFormat}`);
85
 
86
  // we want to create a smooth Ken Burns effect
87
  const durationInSeconds = outputVideoDurationInMs / 1000;
 
1
  import { rm, writeFile, readFile } from "node:fs/promises"
2
  import path from "node:path"
3
 
 
4
  import ffmpeg from "fluent-ffmpeg"
5
+ import { UUID } from "@aitube/clap"
6
  import { getRandomDirectory } from "@aitube/io"
7
 
8
  /**
 
52
  // Decode the Base64 image and write it to a temporary file.
53
  const base64Data = inputImageInBase64.substring(inputImageInBase64.indexOf(',') + 1);
54
  const buffer = Buffer.from(base64Data, 'base64');
55
+ const inputImagePath = path.join(outputDir, `${UUID()}.png`);
56
  await writeFile(inputImagePath, buffer);
57
 
58
  const inputImageDetails = await new Promise<ffmpeg.FfprobeData>((resolve, reject) => {
 
81
  }
82
 
83
  // Set the path for the output video.
84
+ outputFilePath = outputFilePath || path.join(outputDir, `output_${UUID()}.${outputVideoFormat}`);
85
 
86
  // we want to create a smooth Ken Burns effect
87
  const durationInSeconds = outputVideoDurationInMs / 1000;
src/bug-in-bun/aitube_ffmpeg/transform/scaleVideo.ts CHANGED
@@ -2,8 +2,8 @@ import { rm, mkdtemp, writeFile, readFile } from 'node:fs/promises'
2
  import os from 'node:os'
3
  import path from 'node:path'
4
 
5
- import { v4 as uuidv4 } from "uuid"
6
  import ffmpeg from 'fluent-ffmpeg'
 
7
 
8
  export type ScaleVideoParams = {
9
  input: string;
@@ -34,7 +34,7 @@ export async function scaleVideo({
34
  debug = false
35
  }: ScaleVideoParams): Promise<string> {
36
  const tempDir = await mkdtemp(path.join(os.tmpdir(), "ffmpeg-"));
37
- const tempOutPath = path.join(tempDir, `${uuidv4()}.mp4`);
38
 
39
  let inputPath;
40
  if (input.startsWith('data:')) {
@@ -43,7 +43,7 @@ export async function scaleVideo({
43
  if (!base64Content) {
44
  throw new Error('Invalid base64 input provided');
45
  }
46
- inputPath = path.join(tempDir, `${uuidv4()}.mp4`);
47
  await writeFile(inputPath, base64Content, 'base64');
48
  } else {
49
  inputPath = input;
 
2
  import os from 'node:os'
3
  import path from 'node:path'
4
 
 
5
  import ffmpeg from 'fluent-ffmpeg'
6
+ import { UUID } from '@aitube/clap'
7
 
8
  export type ScaleVideoParams = {
9
  input: string;
 
34
  debug = false
35
  }: ScaleVideoParams): Promise<string> {
36
  const tempDir = await mkdtemp(path.join(os.tmpdir(), "ffmpeg-"));
37
+ const tempOutPath = path.join(tempDir, `${UUID()}.mp4`);
38
 
39
  let inputPath;
40
  if (input.startsWith('data:')) {
 
43
  if (!base64Content) {
44
  throw new Error('Invalid base64 input provided');
45
  }
46
+ inputPath = path.join(tempDir, `${UUID()}.mp4`);
47
  await writeFile(inputPath, base64Content, 'base64');
48
  } else {
49
  inputPath = input;