904118851 9 сар өмнө
commit
5ab7cf0644
100 өөрчлөгдсөн 4552 нэмэгдсэн , 0 устгасан
  1. 11 0
      data.js
  2. 46 0
      getfqbook.py
  3. 47 0
      mysql_event.sql
  4. 105 0
      node_modules/.bin/crc32
  5. 94 0
      node_modules/.bin/csv-parser
  6. 8 0
      node_modules/.bin/mime
  7. 18 0
      node_modules/.bin/opencollective-postinstall
  8. 188 0
      node_modules/.bin/semver
  9. 310 0
      node_modules/.bin/xlsx
  10. 1565 0
      node_modules/.package-lock.json
  11. 46 0
      node_modules/@img/sharp-libvips-linux-x64/README.md
  12. 221 0
      node_modules/@img/sharp-libvips-linux-x64/lib/glib-2.0/include/glibconfig.h
  13. 1 0
      node_modules/@img/sharp-libvips-linux-x64/lib/index.js
  14. BIN
      node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.42
  15. 42 0
      node_modules/@img/sharp-libvips-linux-x64/package.json
  16. 30 0
      node_modules/@img/sharp-libvips-linux-x64/versions.json
  17. 46 0
      node_modules/@img/sharp-libvips-linuxmusl-x64/README.md
  18. 221 0
      node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h
  19. 1 0
      node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js
  20. BIN
      node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.42
  21. 42 0
      node_modules/@img/sharp-libvips-linuxmusl-x64/package.json
  22. 30 0
      node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json
  23. 191 0
      node_modules/@img/sharp-linux-x64/LICENSE
  24. 18 0
      node_modules/@img/sharp-linux-x64/README.md
  25. BIN
      node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node
  26. 46 0
      node_modules/@img/sharp-linux-x64/package.json
  27. 191 0
      node_modules/@img/sharp-linuxmusl-x64/LICENSE
  28. 18 0
      node_modules/@img/sharp-linuxmusl-x64/README.md
  29. BIN
      node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node
  30. 46 0
      node_modules/@img/sharp-linuxmusl-x64/package.json
  31. 14 0
      node_modules/@redis/bloom/README.md
  32. 3 0
      node_modules/@redis/bloom/dist/commands/bloom/ADD.d.ts
  33. 10 0
      node_modules/@redis/bloom/dist/commands/bloom/ADD.js
  34. 4 0
      node_modules/@redis/bloom/dist/commands/bloom/CARD.d.ts
  35. 9 0
      node_modules/@redis/bloom/dist/commands/bloom/CARD.js
  36. 4 0
      node_modules/@redis/bloom/dist/commands/bloom/EXISTS.d.ts
  37. 11 0
      node_modules/@redis/bloom/dist/commands/bloom/EXISTS.js
  38. 23 0
      node_modules/@redis/bloom/dist/commands/bloom/INFO.d.ts
  39. 19 0
      node_modules/@redis/bloom/dist/commands/bloom/INFO.js
  40. 11 0
      node_modules/@redis/bloom/dist/commands/bloom/INSERT.d.ts
  41. 28 0
      node_modules/@redis/bloom/dist/commands/bloom/INSERT.js
  42. 4 0
      node_modules/@redis/bloom/dist/commands/bloom/LOADCHUNK.d.ts
  43. 8 0
      node_modules/@redis/bloom/dist/commands/bloom/LOADCHUNK.js
  44. 3 0
      node_modules/@redis/bloom/dist/commands/bloom/MADD.d.ts
  45. 10 0
      node_modules/@redis/bloom/dist/commands/bloom/MADD.js
  46. 4 0
      node_modules/@redis/bloom/dist/commands/bloom/MEXISTS.d.ts
  47. 11 0
      node_modules/@redis/bloom/dist/commands/bloom/MEXISTS.js
  48. 8 0
      node_modules/@redis/bloom/dist/commands/bloom/RESERVE.d.ts
  49. 15 0
      node_modules/@redis/bloom/dist/commands/bloom/RESERVE.js
  50. 13 0
      node_modules/@redis/bloom/dist/commands/bloom/SCANDUMP.d.ts
  51. 16 0
      node_modules/@redis/bloom/dist/commands/bloom/SCANDUMP.js
  52. 33 0
      node_modules/@redis/bloom/dist/commands/bloom/index.d.ts
  53. 34 0
      node_modules/@redis/bloom/dist/commands/bloom/index.js
  54. 8 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/INCRBY.d.ts
  55. 20 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/INCRBY.js
  56. 17 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/INFO.d.ts
  57. 17 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/INFO.js
  58. 3 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/INITBYDIM.d.ts
  59. 8 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/INITBYDIM.js
  60. 3 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/INITBYPROB.d.ts
  61. 8 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/INITBYPROB.js
  62. 9 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/MERGE.d.ts
  63. 28 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/MERGE.js
  64. 5 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/QUERY.d.ts
  65. 10 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/QUERY.js
  66. 21 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/index.d.ts
  67. 22 0
      node_modules/@redis/bloom/dist/commands/count-min-sketch/index.js
  68. 3 0
      node_modules/@redis/bloom/dist/commands/cuckoo/ADD.d.ts
  69. 10 0
      node_modules/@redis/bloom/dist/commands/cuckoo/ADD.js
  70. 3 0
      node_modules/@redis/bloom/dist/commands/cuckoo/ADDNX.d.ts
  71. 10 0
      node_modules/@redis/bloom/dist/commands/cuckoo/ADDNX.js
  72. 3 0
      node_modules/@redis/bloom/dist/commands/cuckoo/COUNT.d.ts
  73. 8 0
      node_modules/@redis/bloom/dist/commands/cuckoo/COUNT.js
  74. 3 0
      node_modules/@redis/bloom/dist/commands/cuckoo/DEL.d.ts
  75. 10 0
      node_modules/@redis/bloom/dist/commands/cuckoo/DEL.js
  76. 4 0
      node_modules/@redis/bloom/dist/commands/cuckoo/EXISTS.d.ts
  77. 11 0
      node_modules/@redis/bloom/dist/commands/cuckoo/EXISTS.js
  78. 32 0
      node_modules/@redis/bloom/dist/commands/cuckoo/INFO.d.ts
  79. 22 0
      node_modules/@redis/bloom/dist/commands/cuckoo/INFO.js
  80. 5 0
      node_modules/@redis/bloom/dist/commands/cuckoo/INSERT.d.ts
  81. 11 0
      node_modules/@redis/bloom/dist/commands/cuckoo/INSERT.js
  82. 5 0
      node_modules/@redis/bloom/dist/commands/cuckoo/INSERTNX.d.ts
  83. 11 0
      node_modules/@redis/bloom/dist/commands/cuckoo/INSERTNX.js
  84. 4 0
      node_modules/@redis/bloom/dist/commands/cuckoo/LOADCHUNK.d.ts
  85. 8 0
      node_modules/@redis/bloom/dist/commands/cuckoo/LOADCHUNK.js
  86. 9 0
      node_modules/@redis/bloom/dist/commands/cuckoo/RESERVE.d.ts
  87. 18 0
      node_modules/@redis/bloom/dist/commands/cuckoo/RESERVE.js
  88. 12 0
      node_modules/@redis/bloom/dist/commands/cuckoo/SCANDUMP.d.ts
  89. 15 0
      node_modules/@redis/bloom/dist/commands/cuckoo/SCANDUMP.js
  90. 42 0
      node_modules/@redis/bloom/dist/commands/cuckoo/index.d.ts
  91. 51 0
      node_modules/@redis/bloom/dist/commands/cuckoo/index.js
  92. 111 0
      node_modules/@redis/bloom/dist/commands/index.d.ts
  93. 14 0
      node_modules/@redis/bloom/dist/commands/index.js
  94. 4 0
      node_modules/@redis/bloom/dist/commands/t-digest/ADD.d.ts
  95. 12 0
      node_modules/@redis/bloom/dist/commands/t-digest/ADD.js
  96. 5 0
      node_modules/@redis/bloom/dist/commands/t-digest/BYRANK.d.ts
  97. 15 0
      node_modules/@redis/bloom/dist/commands/t-digest/BYRANK.js
  98. 5 0
      node_modules/@redis/bloom/dist/commands/t-digest/BYREVRANK.d.ts
  99. 15 0
      node_modules/@redis/bloom/dist/commands/t-digest/BYREVRANK.js
  100. 5 0
      node_modules/@redis/bloom/dist/commands/t-digest/CDF.d.ts

+ 11 - 0
data.js

@@ -0,0 +1,11 @@
+var req = {
+    "code": 200,       // 响应返回码
+    "message": "OK",   // 返回码对应的提示信息
+    "has_more":false,
+    "next_offset":10,
+    "result": [
+        {
+            // detail
+        }
+    ] //json 结构,各类型请求返回的具体结构不同,参考接口说明
+}

+ 46 - 0
getfqbook.py

@@ -0,0 +1,46 @@
+import requests
+from urllib.parse import urlencode
+
+def html(url, headers=None, post_data=None):
+    try:
+        if post_data:
+            if isinstance(post_data, dict):
+                response = requests.post(url, headers=headers, data=urlencode(post_data), allow_redirects=True, verify=False, timeout=(10, 30))
+            else:
+                response = requests.post(url, headers=headers, data=post_data, allow_redirects=True, verify=False, timeout=(10, 30))
+        else:
+            response = requests.get(url, headers=headers, allow_redirects=True, verify=False, timeout=(10, 30))
+        
+        return {
+            'header': str(response.headers),
+            'body': response.text,
+            'http_code': response.status_code
+        }
+    except Exception as e:
+        return {
+            'header': '',
+            'body': str(e),
+            'http_code': 0
+        }
+
+def main():
+    key = 'PHVJKLVWRUY'  # Get this from your input method
+    if not key:
+        return
+
+    url = f"https://api.whbfxb.cn/api/novelsale/reader/get/content/v1/?aid=40013183&device_brand=realme&device_platform=android&device_type=RMX2020&mp_sdk_version=3.21.0&novelsale_app_scene=023001&version_code=230&key={key}&item_source=1&module_name=ad_link&click_id=__CLICKID__&clickid=__CLICKID__&creativetype=__CTYPE__&demand_id=0&item_id=&media_source=1&mid1=__MID1__&mid2=__MID2__&mid3=__MID3__&mid4=__MID4__&mid5=__MID5__&projectid=__PROJECT_ID__&promotionid=__PROMOTION_ID__&request_id=__REQUESTID__&book_id=&host_novelsale_app_id=40013183"
+
+    headers = {
+        'Connection': 'keep-alive',
+        'Cookie': 'sid_tt=617946caef227c4a80e1dd9cb290515e;ssid_ucp_v1=1.0.0-KGY3OGU0YWM0OTMzMjI1YTg4OThiMTAyMGI3YmFhOTIxNjE2YzZiYzQKFQjkktCcvMz_ARCf9PC5Bhjv6CA4CBoCaGwiIDYxNzk0NmNhZWYyMjdjNGE4MGUxZGQ5Y2IyOTA1MTVl;is_staff_user=false;sid_ucp_v1=1.0.0-KGY3OGU0YWM0OTMzMjI1YTg4OThiMTAyMGI3YmFhOTIxNjE2YzZiYzQKFQjkktCcvMz_ARCf9PC5Bhjv6CA4CBoCaGwiIDYxNzk0NmNhZWYyMjdjNGE4MGUxZGQ5Y2IyOTA1MTVl;sessionid=617946caef227c4a80e1dd9cb290515e;ttwid=1%7CG17ZXFInuaAvJxxf46K8gU7KOBUO5aC89gBmDvnA_fo%7C1732000431%7C90ea8439ff8c370df5be3f31d7187a23ed8a2318b4a1aa7d345283ba395bfcb2;sessionid_ss=617946caef227c4a80e1dd9cb290515e;sid_guard=617946caef227c4a80e1dd9cb290515e%7C1732000287%7C5184000%7CSat%2C+18-Jan-2025+07%3A11%3A27+GMT;uid_tt=560968d5ca0089cc8ce610b12f7f2191;passport_csrf_token=8a66478b232599457f588305cb6317dd;uid_tt_ss=560968d5ca0089cc8ce610b12f7f2191;odin_tt=38b1a8591565cfabfde8e2ff37a2d033e74a58e85a42dbf7c48fbca909ebd43b2a0ef306193946a4c74c64f005d15aaef66f3f0b5fe61669cd56f37b355e1591;passport_csrf_token_default=8a66478b232599457f588305cb6317dd;store-region=cn-gs;store-region-src=uid;n_mh=9-mIeuD4wZnlYrrOvfzG3MuT6aQmCUtmr8FxV8Kl8xY',
+        'User-Agent': 'Mozilla/5.0 (Linux; Android 10; RMX2020 Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/120.0.6099.193 Mobile Safari/537.36 aweme/29.4.0 ToutiaoMicroApp/3.21.0 PluginVersion/29409006',
+        'Content-Type': 'application/json',
+        'Referer': 'https://tmaservice.developer.toutiao.com/?appid=tt1b316d8c8401e42101&version=2.3.0'
+    }
+
+    response = html(url, headers)
+    import json
+    print(json.loads(response['body']))
+
+if __name__ == "__main__":
+    main()

+ 47 - 0
mysql_event.sql

@@ -0,0 +1,47 @@
+-- 检查事件调度器状态
+SHOW VARIABLES LIKE 'event_scheduler';
+
+-- 开启事件调度器
+SET GLOBAL event_scheduler = ON;
+
+
+DROP EVENT IF EXISTS delete_old_records;
+
+
+DELIMITER //
+CREATE EVENT delete_old_records
+ON SCHEDULE EVERY 1 DAY
+STARTS CURRENT_TIMESTAMP
+DO
+BEGIN
+    DELETE FROM tg_callback_log    -- 替换为你的表名
+    WHERE create_time < DATE_SUB(NOW(), INTERVAL 2 DAY);   -- 替换为你的时间字段名
+END //
+DELIMITER ;
+
+
+
+-- 查看所有事件
+SHOW EVENTS;
+
+-- 查看特定事件详情
+SHOW CREATE EVENT delete_old_records;
+
+
+-- 停止事件
+ALTER EVENT delete_old_records DISABLE;
+
+-- 启动事件
+ALTER EVENT delete_old_records ENABLE;
+
+
+-- 首先确保事件调度器是开启的
+SET GLOBAL event_scheduler = ON;
+
+-- 创建一个事件,每天执行一次删除操作
+CREATE EVENT delete_old_data_by_origin_data
+ON SCHEDULE EVERY 1 DAY
+STARTS CURRENT_TIMESTAMP
+DO
+  DELETE FROM origin_data
+  WHERE create_time < DATE_SUB(NOW(), INTERVAL 48 HOUR);

+ 105 - 0
node_modules/.bin/crc32

@@ -0,0 +1,105 @@
+#!/usr/bin/env node
+/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */
+/* eslint-env node */
+/* vim: set ts=2 ft=javascript: */
+/*jshint node:true */
+
+var X/*:CRC32Module*/;
+try { X = require('../'); } catch(e) { X = require('crc-32'); }
+
+function help()/*:number*/ {
+[
+"usage: crc32 [options] [filename]",
+"",
+"Options:",
+"    -h, --help           output usage information",
+"    -V, --version        output the version number",
+"    -S, --seed=<n>       use integer seed as starting value (rolling CRC)",
+"    -H, --hex-seed=<h>   use hex seed as starting value (rolling CRC)",
+"    -d, --signed         print result with format `%d` (default)",
+"    -u, --unsigned       print result with format `%u`",
+"    -x, --hex            print result with format `%0.8x`",
+"    -X, --HEX            print result with format `%0.8X`",
+"    -c, --crc32c         use CRC32C (Castagnoli)",
+"    -F, --format=<s>     use specified printf format",
+"",
+"Set filename = '-' or pipe data into crc32 to read from stdin",
+"Default output mode is signed (-d)",
+""
+].forEach(function(l) { console.log(l); });
+	return 0;
+}
+
+function version()/*:number*/ { console.log(X.version); return 0; }
+
+var fs = require('fs');
+try { require('exit-on-epipe'); } catch(e) {}
+
+function die(msg/*:string*/, ec/*:?number*/)/*:void*/ { console.error(msg); process.exit(ec || 0); }
+
+var args/*:Array<string>*/ = process.argv.slice(2);
+var filename/*:string*/ = "";
+var fmt/*:string*/ = "";
+var seed = 0, r = 10;
+
+for(var i = 0; i < args.length; ++i) {
+	var arg = args[i];
+	if(arg.charCodeAt(0) != 45) { if(filename === "") filename = arg; continue; }
+	var m = arg.indexOf("=") == -1 ? arg : arg.substr(0, arg.indexOf("="));
+	switch(m) {
+		case "-": filename = "-"; break;
+
+		case "--help":     case "-h": process.exit(help()); break;
+		case "--version":  case "-V": process.exit(version()); break;
+
+		case "--crc32c":   case "-c": try { X = require('../crc32c'); } catch(e) { X = require('crc-32/crc32c'); } break;
+
+		case "--signed":   case "-d": fmt = "%d"; break;
+		case "--unsigned": case "-u": fmt = "%u"; break;
+		case "--hex":      case "-x": fmt = "%0.8x"; break;
+		case "--HEX":      case "-X": fmt = "%0.8X"; break;
+		case "--format":   case "-F":
+			try {
+				require("printj");
+				fmt = ((m!=arg) ? arg.substr(m.length+1) : args[++i])||"";
+			} catch(e) {
+				console.error("The `crc-32` module removed the `printj` dependency for formatting");
+				console.error("Use the `crc32-cli` module instead:");
+				console.error("    $ npx crc32-cli [options] [filename]");
+			} break;
+
+		case "--hex-seed": case "-H": r = 16;
+		/* falls through */
+		case "--seed":     case "-S":
+			seed=parseInt((m!=arg) ? arg.substr(m.length+1) : args[++i], r)||0; break;
+
+		default: die("crc32: unrecognized option `" + arg + "'", 22);
+	}
+}
+
+if(!process.stdin.isTTY) filename = filename || "-";
+if(filename.length===0) die("crc32: must specify a filename ('-' for stdin)",1);
+
+var crc32 = seed;
+// $FlowIgnore -- Writable is callable but type sig disagrees
+var writable = require('stream').Writable();
+writable._write = function(chunk, e, cb) { crc32 = X.buf(chunk, crc32); cb(); };
+writable._writev = function(chunks, cb) {
+	chunks.forEach(function(c) { crc32 = X.buf(c.chunk, crc32);});
+	cb();
+};
+writable.on('finish', function() {
+	if(fmt === "") console.log(crc32);
+	else try { console.log(require("printj").sprintf(fmt, crc32)); } catch(e) {
+		switch(fmt) {
+			case "%d": console.log(crc32); break;
+			case "%u": console.log(crc32 >>> 0); break;
+			case "%0.8x": console.log((crc32 >>> 0).toString(16).padStart(8, "0").toLowerCase()); break;
+			case "%0.8X": console.log((crc32 >>> 0).toString(16).padStart(8, "0").toUpperCase()); break;
+		}
+	}
+});
+
+if(filename === "-") process.stdin.pipe(writable);
+else if(fs.existsSync(filename)) fs.createReadStream(filename).pipe(writable);
+else die("crc32: " + filename + ": No such file or directory", 2);

+ 94 - 0
node_modules/.bin/csv-parser

@@ -0,0 +1,94 @@
+#!/usr/bin/env node
+
+const { EOL } = require('os')
+const minimist = require('minimist')
+const { Transform } = require('stream');
+const fs = require('fs')
+const csv = require('../')
+const pkg = require('../package.json')
+
+const argv = minimist(process.argv, {
+  alias: {
+    c: 'skipComments',
+    e: 'escape',
+    h: 'headers',
+    o: 'output',
+    q: 'quote',
+    l: 'skipLines',
+    s: 'separator',
+    v: 'version'
+  },
+  default: {
+    e: '"',
+    q: '"',
+    s: ','
+  },
+  boolean: ['version', 'help']
+})
+
+const [,, filename] = argv._
+
+if (argv.version) {
+  console.log(pkg.version)
+  process.exit(0)
+}
+
+if (argv.help || (process.stdin.isTTY && !filename)) {
+  console.error(`Usage: csv-parser [filename?] [options]
+  --escape,-e         Set the escape character (defaults to quote value)
+  --headers,-h        Explicitly specify csv headers as a comma separated list
+  --help              Show this help
+  --output,-o         Set output file. Defaults to stdout
+  --quote,-q          Set the quote character ('"' by default)
+  --remove            Remove headers from output
+  --separator,-s      Set the separator character ("," by default)
+  --skipComments,-c   Skip CSV comments that begin with '#'. Set a value to change the comment character.
+  --skipLines,-l      Set the number of lines to skip to before parsing headers
+  --strict            Require column length match headers length
+  --version,-v        Print out the installed version
+`)
+  process.exit(1)
+}
+
+let input
+const output = (argv.output && argv.output !== '-') ? fs.createWriteStream(argv.output) : process.stdout
+const options = {
+  separator: argv.separator,
+  strict: argv.strict,
+  skipComments: argv.skipComments,
+  skipLines: argv.skipLines
+}
+
+if (argv.headers) {
+  options.headers = argv.headers.toString().split(argv.separator)
+}
+
+if (argv.remove) {
+  const removeHeaders = argv.remove.split(',')
+  options.mapHeaders = (name, i) => {
+    return removeHeaders.indexOf(name) === -1 ? name : null
+  }
+}
+
+if (filename === '-' || !filename) {
+  input = process.stdin
+} else if (fs.existsSync(filename)) {
+  input = fs.createReadStream(filename)
+} else {
+  console.error(`File: ${filename} does not exist`)
+  process.exit(2)
+}
+
+const serialize = () => {
+  return new Transform({
+    objectMode: true,
+    transform(obj, enc, cb) {
+      cb(null, JSON.stringify(obj) + EOL)
+    }
+  });
+}
+
+input
+  .pipe(csv(options))
+  .pipe(serialize())
+  .pipe(output)

+ 8 - 0
node_modules/.bin/mime

@@ -0,0 +1,8 @@
+#!/usr/bin/env node
+
+var mime = require('./mime.js');
+var file = process.argv[2];
+var type = mime.lookup(file);
+
+process.stdout.write(type + '\n');
+

+ 18 - 0
node_modules/.bin/opencollective-postinstall

@@ -0,0 +1,18 @@
+#!/usr/bin/env node
+
+function isTrue(value) {
+  return !!value && value !== "0" && value !== "false"
+}
+
+var envDisable = isTrue(process.env.DISABLE_OPENCOLLECTIVE) || isTrue(process.env.OPEN_SOURCE_CONTRIBUTOR) || isTrue(process.env.CI);
+var logLevel = process.env.npm_config_loglevel;
+var logLevelDisplay = ['silent', 'error', 'warn'].indexOf(logLevel) > -1;
+
+if (!envDisable && !logLevelDisplay) {
+  var pkg = require(require('path').resolve('./package.json'));
+  if (pkg.collective) {
+    console.log(`\u001b[96m\u001b[1mThank you for using ${pkg.name}!\u001b[96m\u001b[1m`);
+    console.log(`\u001b[0m\u001b[96mIf you rely on this package, please consider supporting our open collective:\u001b[22m\u001b[39m`);
+    console.log(`> \u001b[94m${pkg.collective.url}/donate\u001b[0m\n`);
+  }
+}

+ 188 - 0
node_modules/.bin/semver

@@ -0,0 +1,188 @@
+#!/usr/bin/env node
+// Standalone semver comparison program.
+// Exits successfully and prints matching version(s) if
+// any supplied version is valid and passes all tests.
+
+const argv = process.argv.slice(2)
+
+let versions = []
+
+const range = []
+
+let inc = null
+
+const version = require('../package.json').version
+
+let loose = false
+
+let includePrerelease = false
+
+let coerce = false
+
+let rtl = false
+
+let identifier
+
+let identifierBase
+
+const semver = require('../')
+const parseOptions = require('../internal/parse-options')
+
+let reverse = false
+
+let options = {}
+
+const main = () => {
+  if (!argv.length) {
+    return help()
+  }
+  while (argv.length) {
+    let a = argv.shift()
+    const indexOfEqualSign = a.indexOf('=')
+    if (indexOfEqualSign !== -1) {
+      const value = a.slice(indexOfEqualSign + 1)
+      a = a.slice(0, indexOfEqualSign)
+      argv.unshift(value)
+    }
+    switch (a) {
+      case '-rv': case '-rev': case '--rev': case '--reverse':
+        reverse = true
+        break
+      case '-l': case '--loose':
+        loose = true
+        break
+      case '-p': case '--include-prerelease':
+        includePrerelease = true
+        break
+      case '-v': case '--version':
+        versions.push(argv.shift())
+        break
+      case '-i': case '--inc': case '--increment':
+        switch (argv[0]) {
+          case 'major': case 'minor': case 'patch': case 'prerelease':
+          case 'premajor': case 'preminor': case 'prepatch':
+            inc = argv.shift()
+            break
+          default:
+            inc = 'patch'
+            break
+        }
+        break
+      case '--preid':
+        identifier = argv.shift()
+        break
+      case '-r': case '--range':
+        range.push(argv.shift())
+        break
+      case '-n':
+        identifierBase = argv.shift()
+        if (identifierBase === 'false') {
+          identifierBase = false
+        }
+        break
+      case '-c': case '--coerce':
+        coerce = true
+        break
+      case '--rtl':
+        rtl = true
+        break
+      case '--ltr':
+        rtl = false
+        break
+      case '-h': case '--help': case '-?':
+        return help()
+      default:
+        versions.push(a)
+        break
+    }
+  }
+
+  options = parseOptions({ loose, includePrerelease, rtl })
+
+  versions = versions.map((v) => {
+    return coerce ? (semver.coerce(v, options) || { version: v }).version : v
+  }).filter((v) => {
+    return semver.valid(v)
+  })
+  if (!versions.length) {
+    return fail()
+  }
+  if (inc && (versions.length !== 1 || range.length)) {
+    return failInc()
+  }
+
+  for (let i = 0, l = range.length; i < l; i++) {
+    versions = versions.filter((v) => {
+      return semver.satisfies(v, range[i], options)
+    })
+    if (!versions.length) {
+      return fail()
+    }
+  }
+  versions
+    .sort((a, b) => semver[reverse ? 'rcompare' : 'compare'](a, b, options))
+    .map(v => semver.clean(v, options))
+    .map(v => inc ? semver.inc(v, inc, options, identifier, identifierBase) : v)
+    .forEach(v => console.log(v))
+}
+
+const failInc = () => {
+  console.error('--inc can only be used on a single version with no range')
+  fail()
+}
+
+const fail = () => process.exit(1)
+
+const help = () => console.log(
+`SemVer ${version}
+
+A JavaScript implementation of the https://semver.org/ specification
+Copyright Isaac Z. Schlueter
+
+Usage: semver [options] <version> [<version> [...]]
+Prints valid versions sorted by SemVer precedence
+
+Options:
+-r --range <range>
+        Print versions that match the specified range.
+
+-i --increment [<level>]
+        Increment a version by the specified level.  Level can
+        be one of: major, minor, patch, premajor, preminor,
+        prepatch, or prerelease.  Default level is 'patch'.
+        Only one version may be specified.
+
+--preid <identifier>
+        Identifier to be used to prefix premajor, preminor,
+        prepatch or prerelease version increments.
+
+-l --loose
+        Interpret versions and ranges loosely
+
+-p --include-prerelease
+        Always include prerelease versions in range matching
+
+-c --coerce
+        Coerce a string into SemVer if possible
+        (does not imply --loose)
+
+--rtl
+        Coerce version strings right to left
+
+--ltr
+        Coerce version strings left to right (default)
+
+-n <base>
+        Base number to be used for the prerelease identifier.
+        Can be either 0 or 1, or false to omit the number altogether.
+        Defaults to 0.
+
+Program exits successfully if any valid version satisfies
+all supplied ranges, and prints all satisfying versions.
+
+If no satisfying versions are found, then exits failure.
+
+Versions are printed in ascending order, so supplying
+multiple versions to the utility will just sort them.`)
+
+main()

+ 310 - 0
node_modules/.bin/xlsx

@@ -0,0 +1,310 @@
+#!/usr/bin/env node
+/* xlsx.js (C) 2013-present  SheetJS -- http://sheetjs.com */
+/* eslint-env node */
+/* vim: set ts=2 ft=javascript: */
+var n = "xlsx";
+var X = require('../');
+try { X = require('../xlsx.flow'); } catch(e) {}
+try { require('exit-on-epipe'); } catch(e) {}
+var fs = require('fs'), program;
+try { program = require('commander'); } catch(e) {
+	[
+		"The `xlsx` command line tool is deprecated in favor of `xlsx-cli`.",
+		"",
+		"For new versions of node, we recommend using `npx`:",
+		"    $ npx xlsx-cli --help",
+		"",
+		"For older versions of node, explicitly install `xlsx-cli` globally:",
+		"    $ npm i -g xlsx-cli",
+		"    $ xlsx-cli --help"
+	].forEach(function(m) { console.error(m); });
+	process.exit(1);
+}
+program
+	.version(X.version)
+	.usage('[options] <file> [sheetname]')
+	.option('-f, --file <file>', 'use specified workbook')
+	.option('-s, --sheet <sheet>', 'print specified sheet (default first sheet)')
+	.option('-N, --sheet-index <idx>', 'use specified sheet index (0-based)')
+	.option('-p, --password <pw>', 'if file is encrypted, try with specified pw')
+	.option('-l, --list-sheets', 'list sheet names and exit')
+	.option('-o, --output <file>', 'output to specified file')
+
+	.option('-B, --xlsb', 'emit XLSB to <sheetname> or <file>.xlsb')
+	.option('-M, --xlsm', 'emit XLSM to <sheetname> or <file>.xlsm')
+	.option('-X, --xlsx', 'emit XLSX to <sheetname> or <file>.xlsx')
+	.option('-I, --xlam', 'emit XLAM to <sheetname> or <file>.xlam')
+	.option('-Y, --ods',  'emit ODS  to <sheetname> or <file>.ods')
+	.option('-8, --xls',  'emit XLS  to <sheetname> or <file>.xls (BIFF8)')
+	.option('-5, --biff5','emit XLS  to <sheetname> or <file>.xls (BIFF5)')
+	.option('-4, --biff4','emit XLS  to <sheetname> or <file>.xls (BIFF4)')
+	.option('-3, --biff3','emit XLS  to <sheetname> or <file>.xls (BIFF3)')
+	.option('-2, --biff2','emit XLS  to <sheetname> or <file>.xls (BIFF2)')
+	.option('-i, --xla',  'emit XLA to <sheetname> or <file>.xla')
+	.option('-6, --xlml', 'emit SSML to <sheetname> or <file>.xls (2003 XML)')
+	.option('-T, --fods', 'emit FODS to <sheetname> or <file>.fods (Flat ODS)')
+	.option('--wk3',      'emit WK3  to <sheetname> or <file>.txt (Lotus WK3)')
+	.option('--numbers',  'emit NUMBERS to <sheetname> or <file>.numbers')
+
+	.option('-S, --formulae', 'emit list of values and formulae')
+	.option('-j, --json',     'emit formatted JSON (all fields text)')
+	.option('-J, --raw-js',   'emit raw JS object (raw numbers)')
+	.option('-A, --arrays',   'emit rows as JS objects (raw numbers)')
+	.option('-H, --html', 'emit HTML to <sheetname> or <file>.html')
+	.option('-D, --dif',  'emit DIF  to <sheetname> or <file>.dif (Lotus DIF)')
+	.option('-U, --dbf',  'emit DBF  to <sheetname> or <file>.dbf (MSVFP DBF)')
+	.option('-K, --sylk', 'emit SYLK to <sheetname> or <file>.slk (Excel SYLK)')
+	.option('-P, --prn',  'emit PRN  to <sheetname> or <file>.prn (Lotus PRN)')
+	.option('-E, --eth',  'emit ETH  to <sheetname> or <file>.eth (Ethercalc)')
+	.option('-t, --txt',  'emit TXT  to <sheetname> or <file>.txt (UTF-8 TSV)')
+	.option('-r, --rtf',  'emit RTF  to <sheetname> or <file>.txt (Table RTF)')
+	.option('--wk1',      'emit WK1  to <sheetname> or <file>.txt (Lotus WK1)')
+	.option('-z, --dump', 'dump internal representation as JSON')
+	.option('--props',    'dump workbook properties as CSV')
+
+	.option('-F, --field-sep <sep>', 'CSV field separator', ",")
+	.option('-R, --row-sep <sep>', 'CSV row separator', "\n")
+	.option('-n, --sheet-rows <num>', 'Number of rows to process (0=all rows)')
+	.option('--codepage <cp>', 'default to specified codepage when ambiguous')
+	.option('--req <module>', 'require module before processing')
+	.option('--sst', 'generate shared string table for XLS* formats')
+	.option('--compress', 'use compression when writing XLSX/M/B and ODS')
+	.option('--read', 'read but do not generate output')
+	.option('--book', 'for single-sheet formats, emit a file per worksheet')
+	.option('--all', 'parse everything; write as much as possible')
+	.option('--dev', 'development mode')
+	.option('--sparse', 'sparse mode')
+	.option('-q, --quiet', 'quiet mode');
+
+program.on('--help', function() {
+	console.log('  Default output format is CSV');
+	console.log('  Support email: dev@sheetjs.com');
+	console.log('  Web Demo: http://oss.sheetjs.com/js-'+n+'/');
+});
+
+/* flag, bookType, default ext */
+var workbook_formats = [
+	['xlsx',   'xlsx', 'xlsx'],
+	['xlsm',   'xlsm', 'xlsm'],
+	['xlam',   'xlam', 'xlam'],
+	['xlsb',   'xlsb', 'xlsb'],
+	['xls',     'xls',  'xls'],
+	['xla',     'xla',  'xla'],
+	['biff5', 'biff5',  'xls'],
+	['numbers', 'numbers', 'numbers'],
+	['ods',     'ods',  'ods'],
+	['fods',   'fods', 'fods'],
+	['wk3',     'wk3',  'wk3']
+];
+var wb_formats_2 = [
+	['xlml',   'xlml', 'xls']
+];
+program.parse(process.argv);
+
+var filename = '', sheetname = '';
+if(program.args[0]) {
+	filename = program.args[0];
+	if(program.args[1]) sheetname = program.args[1];
+}
+if(program.sheet) sheetname = program.sheet;
+if(program.file) filename = program.file;
+
+if(!filename) {
+	console.error(n + ": must specify a filename");
+	process.exit(1);
+}
+if(!fs.existsSync(filename)) {
+	console.error(n + ": " + filename + ": No such file or directory");
+	process.exit(2);
+}
+
+if(program.req) program.req.split(",").forEach(function(r) {
+	require((fs.existsSync(r) || fs.existsSync(r + '.js')) ? require('path').resolve(r) : r);
+});
+
+var opts = {}, wb/*:?Workbook*/;
+if(program.listSheets) opts.bookSheets = true;
+if(program.sheetRows) opts.sheetRows = program.sheetRows;
+if(program.password) opts.password = program.password;
+var seen = false;
+function wb_fmt() {
+	seen = true;
+	opts.cellFormula = true;
+	opts.cellNF = true;
+	opts.xlfn = true;
+	if(program.output) sheetname = program.output;
+}
+function isfmt(m/*:string*/)/*:boolean*/ {
+	if(!program.output) return false;
+	var t = m.charAt(0) === "." ? m : "." + m;
+	return program.output.slice(-t.length) === t;
+}
+workbook_formats.forEach(function(m) { if(program[m[0]] || isfmt(m[0])) { wb_fmt(); } });
+wb_formats_2.forEach(function(m) { if(program[m[0]] || isfmt(m[0])) { wb_fmt(); } });
+if(seen) {
+} else if(program.formulae) opts.cellFormula = true;
+else opts.cellFormula = false;
+
+var wopts = ({WTF:opts.WTF, bookSST:program.sst}/*:any*/);
+if(program.compress) wopts.compression = true;
+
+if(program.all) {
+	opts.cellFormula = true;
+	opts.bookVBA = true;
+	opts.cellNF = true;
+	opts.cellHTML = true;
+	opts.cellStyles = true;
+	opts.sheetStubs = true;
+	opts.cellDates = true;
+	wopts.cellFormula = true;
+	wopts.cellStyles = true;
+	wopts.sheetStubs = true;
+	wopts.bookVBA = true;
+}
+if(program.sparse) opts.dense = false; else opts.dense = true;
+if(program.codepage) opts.codepage = +program.codepage;
+
+if(program.dev) {
+	opts.WTF = true;
+	wb = X.readFile(filename, opts);
+} else try {
+	wb = X.readFile(filename, opts);
+} catch(e) {
+	var msg = (program.quiet) ? "" : n + ": error parsing ";
+	msg += filename + ": " + e;
+	console.error(msg);
+	process.exit(3);
+}
+if(program.read) process.exit(0);
+if(!wb) { console.error(n + ": error parsing " + filename + ": empty workbook"); process.exit(0); }
+/*:: if(!wb) throw new Error("unreachable"); */
+if(program.listSheets) {
+	console.log((wb.SheetNames||[]).join("\n"));
+	process.exit(0);
+}
+if(program.dump) {
+	console.log(JSON.stringify(wb));
+	process.exit(0);
+}
+if(program.props) {
+	if(wb) dump_props(wb);
+	process.exit(0);
+}
+
+/* full workbook formats */
+workbook_formats.forEach(function(m) { if(program[m[0]] || isfmt(m[0])) {
+		wopts.bookType = m[1];
+		if(wopts.bookType == "numbers") try {
+			var XLSX_ZAHL = require("../dist/xlsx.zahl");
+			wopts.numbers = XLSX_ZAHL;
+		} catch(e) {}
+		if(wb) X.writeFile(wb, program.output || sheetname || ((filename || "") + "." + m[2]), wopts);
+		process.exit(0);
+} });
+
+wb_formats_2.forEach(function(m) { if(program[m[0]] || isfmt(m[0])) {
+		wopts.bookType = m[1];
+		if(wb) X.writeFile(wb, program.output || sheetname || ((filename || "") + "." + m[2]), wopts);
+		process.exit(0);
+} });
+
+var target_sheet = sheetname || '';
+if(target_sheet === '') {
+	if(+program.sheetIndex < (wb.SheetNames||[]).length) target_sheet = wb.SheetNames[+program.sheetIndex];
+	else target_sheet = (wb.SheetNames||[""])[0];
+}
+
+var ws;
+try {
+	ws = wb.Sheets[target_sheet];
+	if(!ws) {
+		console.error("Sheet " + target_sheet + " cannot be found");
+		process.exit(3);
+	}
+} catch(e) {
+	console.error(n + ": error parsing "+filename+" "+target_sheet+": " + e);
+	process.exit(4);
+}
+
+if(!program.quiet && !program.book) console.error(target_sheet);
+
+/* single worksheet file formats */
+[
+	['biff2', '.xls'],
+	['biff3', '.xls'],
+	['biff4', '.xls'],
+	['sylk', '.slk'],
+	['html', '.html'],
+	['prn', '.prn'],
+	['eth', '.eth'],
+	['rtf', '.rtf'],
+	['txt', '.txt'],
+	['dbf', '.dbf'],
+	['wk1', '.wk1'],
+	['dif', '.dif']
+].forEach(function(m) { if(program[m[0]] || isfmt(m[1])) {
+	wopts.bookType = m[0];
+	if(program.book) {
+		/*:: if(wb == null) throw new Error("Unreachable"); */
+		wb.SheetNames.forEach(function(n, i) {
+			wopts.sheet = n;
+			X.writeFile(wb, (program.output || sheetname || filename || "") + m[1] + "." + i, wopts);
+		});
+	} else X.writeFile(wb, program.output || sheetname || ((filename || "") + m[1]), wopts);
+	process.exit(0);
+} });
+
+function outit(o, fn) { if(fn) fs.writeFileSync(fn, o); else console.log(o); }
+
+function doit(cb) {
+	/*:: if(!wb) throw new Error("unreachable"); */
+	if(program.book) wb.SheetNames.forEach(function(n, i) {
+		/*:: if(!wb) throw new Error("unreachable"); */
+		outit(cb(wb.Sheets[n]), (program.output || sheetname || filename) + "." + i);
+	});
+	else outit(cb(ws), program.output);
+}
+
+var jso = {};
+switch(true) {
+	case program.formulae:
+		doit(function(ws) { return X.utils.sheet_to_formulae(ws).join("\n"); });
+		break;
+
+	case program.arrays: jso.header = 1;
+	/* falls through */
+	case program.rawJs: jso.raw = true;
+	/* falls through */
+	case program.json:
+		doit(function(ws) { return JSON.stringify(X.utils.sheet_to_json(ws,jso)); });
+		break;
+
+	default:
+		if(!program.book) {
+			var stream = X.stream.to_csv(ws, {FS:program.fieldSep||",", RS:program.rowSep||"\n"});
+			if(program.output) stream.pipe(fs.createWriteStream(program.output));
+			else stream.pipe(process.stdout);
+		} else doit(function(ws) { return X.utils.sheet_to_csv(ws,{FS:program.fieldSep, RS:program.rowSep}); });
+		break;
+}
+
+function dump_props(wb/*:Workbook*/) {
+	var propaoa = [];
+	if(Object.assign && Object.entries) propaoa = Object.entries(Object.assign({}, wb.Props, wb.Custprops));
+	else {
+		var Keys/*:: :Array<string> = []*/, pi;
+		if(wb.Props) {
+			Keys = Object.keys(wb.Props);
+			for(pi = 0; pi < Keys.length; ++pi) {
+				if(Object.prototype.hasOwnProperty.call(Keys, Keys[pi])) propaoa.push([Keys[pi], Keys[/*::+*/Keys[pi]]]);
+			}
+		}
+		if(wb.Custprops) {
+			Keys = Object.keys(wb.Custprops);
+			for(pi = 0; pi < Keys.length; ++pi) {
+				if(Object.prototype.hasOwnProperty.call(Keys, Keys[pi])) propaoa.push([Keys[pi], Keys[/*::+*/Keys[pi]]]);
+			}
+		}
+	}
+	console.log(X.utils.sheet_to_csv(X.utils.aoa_to_sheet(propaoa)));
+}

+ 1565 - 0
node_modules/.package-lock.json

@@ -0,0 +1,1565 @@
+{
+  "name": "heiyan",
+  "version": "1.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "node_modules/@img/sharp-libvips-linux-x64": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz",
+      "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz",
+      "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "LGPL-3.0-or-later",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/@img/sharp-linux-x64": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmmirror.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz",
+      "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linux-x64": "1.0.4"
+      }
+    },
+    "node_modules/@img/sharp-linuxmusl-x64": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmmirror.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz",
+      "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==",
+      "cpu": [
+        "x64"
+      ],
+      "license": "Apache-2.0",
+      "optional": true,
+      "os": [
+        "linux"
+      ],
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-libvips-linuxmusl-x64": "1.0.4"
+      }
+    },
+    "node_modules/@redis/bloom": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/@redis/bloom/-/bloom-1.2.0.tgz",
+      "integrity": "sha512-HG2DFjYKbpNmVXsa0keLHp/3leGJz1mjh09f2RLGGLQZzSHpkmZWuwJbAvo3QcRY8p80m5+ZdXZdYOSBLlp7Cg==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@redis/client": "^1.0.0"
+      }
+    },
+    "node_modules/@redis/client": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmmirror.com/@redis/client/-/client-1.6.0.tgz",
+      "integrity": "sha512-aR0uffYI700OEEH4gYnitAnv3vzVGXCFvYfdpu/CJKvk4pHfLPEy/JSZyrpQ+15WhXe1yJRXLtfQ84s4mEXnPg==",
+      "license": "MIT",
+      "dependencies": {
+        "cluster-key-slot": "1.1.2",
+        "generic-pool": "3.9.0",
+        "yallist": "4.0.0"
+      },
+      "engines": {
+        "node": ">=14"
+      }
+    },
+    "node_modules/@redis/graph": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/@redis/graph/-/graph-1.1.1.tgz",
+      "integrity": "sha512-FEMTcTHZozZciLRl6GiiIB4zGm5z5F3F6a6FZCyrfxdKOhFlGkiAqlexWMBzCi4DcRoyiOsuLfW+cjlGWyExOw==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@redis/client": "^1.0.0"
+      }
+    },
+    "node_modules/@redis/json": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmmirror.com/@redis/json/-/json-1.0.7.tgz",
+      "integrity": "sha512-6UyXfjVaTBTJtKNG4/9Z8PSpKE6XgSyEb8iwaqDcy+uKrd/DGYHTWkUdnQDyzm727V7p21WUMhsqz5oy65kPcQ==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@redis/client": "^1.0.0"
+      }
+    },
+    "node_modules/@redis/search": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/@redis/search/-/search-1.2.0.tgz",
+      "integrity": "sha512-tYoDBbtqOVigEDMAcTGsRlMycIIjwMCgD8eR2t0NANeQmgK/lvxNAvYyb6bZDD4frHRhIHkJu2TBRvB0ERkOmw==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@redis/client": "^1.0.0"
+      }
+    },
+    "node_modules/@redis/time-series": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/@redis/time-series/-/time-series-1.1.0.tgz",
+      "integrity": "sha512-c1Q99M5ljsIuc4YdaCwfUEXsofakb9c8+Zse2qxTadu8TalLXuAESzLvFAvNVbkmSlvlzIQOLpBCmWI9wTOt+g==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@redis/client": "^1.0.0"
+      }
+    },
+    "node_modules/accepts": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz",
+      "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+      "license": "MIT",
+      "dependencies": {
+        "mime-types": "~2.1.34",
+        "negotiator": "0.6.3"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/adler-32": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+      "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/array-flatten": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz",
+      "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
+      "license": "MIT"
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+      "license": "MIT"
+    },
+    "node_modules/aws-ssl-profiles": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz",
+      "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/axios": {
+      "version": "1.7.7",
+      "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.7.tgz",
+      "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+      "license": "MIT",
+      "dependencies": {
+        "follow-redirects": "^1.15.6",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
+      }
+    },
+    "node_modules/bignumber.js": {
+      "version": "9.1.2",
+      "resolved": "https://registry.npmmirror.com/bignumber.js/-/bignumber.js-9.1.2.tgz",
+      "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==",
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/bmp-js": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmmirror.com/bmp-js/-/bmp-js-0.1.0.tgz",
+      "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==",
+      "license": "MIT"
+    },
+    "node_modules/body-parser": {
+      "version": "1.20.3",
+      "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.3.tgz",
+      "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==",
+      "license": "MIT",
+      "dependencies": {
+        "bytes": "3.1.2",
+        "content-type": "~1.0.5",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "on-finished": "2.4.1",
+        "qs": "6.13.0",
+        "raw-body": "2.5.2",
+        "type-is": "~1.6.18",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
+    "node_modules/bytes": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
+      "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/call-bind": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz",
+      "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+      "license": "MIT",
+      "dependencies": {
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.4",
+        "set-function-length": "^1.2.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/cfb": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+      "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/cluster-key-slot": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz",
+      "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/codepage": {
+      "version": "1.15.0",
+      "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
+      "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/color": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/color/-/color-4.2.3.tgz",
+      "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+      "license": "MIT",
+      "dependencies": {
+        "color-convert": "^2.0.1",
+        "color-string": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=12.5.0"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "license": "MIT"
+    },
+    "node_modules/color-string": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz",
+      "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+      "license": "MIT",
+      "dependencies": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "license": "MIT",
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/content-disposition": {
+      "version": "0.5.4",
+      "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz",
+      "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+      "license": "MIT",
+      "dependencies": {
+        "safe-buffer": "5.2.1"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/content-type": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz",
+      "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie": {
+      "version": "0.7.1",
+      "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.7.1.tgz",
+      "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz",
+      "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
+      "license": "MIT"
+    },
+    "node_modules/cors": {
+      "version": "2.8.5",
+      "resolved": "https://registry.npmmirror.com/cors/-/cors-2.8.5.tgz",
+      "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
+      "license": "MIT",
+      "dependencies": {
+        "object-assign": "^4",
+        "vary": "^1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/crc-32": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+      "license": "Apache-2.0",
+      "bin": {
+        "crc32": "bin/crc32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/csv-parser": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/csv-parser/-/csv-parser-3.0.0.tgz",
+      "integrity": "sha512-s6OYSXAK3IdKqYO33y09jhypG/bSDHPuyCme/IdEHfWpLf/jKcpitVFyOC6UemgGk8v7Q5u2XE0vvwmanxhGlQ==",
+      "license": "MIT",
+      "dependencies": {
+        "minimist": "^1.2.0"
+      },
+      "bin": {
+        "csv-parser": "bin/csv-parser"
+      },
+      "engines": {
+        "node": ">= 10"
+      }
+    },
+    "node_modules/debug": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+      "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+      "license": "MIT",
+      "dependencies": {
+        "ms": "2.0.0"
+      }
+    },
+    "node_modules/define-data-property": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz",
+      "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+      "license": "MIT",
+      "dependencies": {
+        "es-define-property": "^1.0.0",
+        "es-errors": "^1.3.0",
+        "gopd": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/denque": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/denque/-/denque-2.1.0.tgz",
+      "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.10"
+      }
+    },
+    "node_modules/depd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
+      "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/destroy": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz",
+      "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8",
+        "npm": "1.2.8000 || >= 1.4.16"
+      }
+    },
+    "node_modules/detect-libc": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.0.3.tgz",
+      "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
+      "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
+      "license": "MIT"
+    },
+    "node_modules/encodeurl": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-2.0.0.tgz",
+      "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/es-define-property": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz",
+      "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+      "license": "MIT",
+      "dependencies": {
+        "get-intrinsic": "^1.2.4"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/es-errors": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
+      "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
+      "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
+      "license": "MIT"
+    },
+    "node_modules/etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
+      "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/express": {
+      "version": "4.21.1",
+      "resolved": "https://registry.npmmirror.com/express/-/express-4.21.1.tgz",
+      "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
+      "license": "MIT",
+      "dependencies": {
+        "accepts": "~1.3.8",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.20.3",
+        "content-disposition": "0.5.4",
+        "content-type": "~1.0.4",
+        "cookie": "0.7.1",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "encodeurl": "~2.0.0",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "1.3.1",
+        "fresh": "0.5.2",
+        "http-errors": "2.0.0",
+        "merge-descriptors": "1.0.3",
+        "methods": "~1.1.2",
+        "on-finished": "2.4.1",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.10",
+        "proxy-addr": "~2.0.7",
+        "qs": "6.13.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.2.1",
+        "send": "0.19.0",
+        "serve-static": "1.16.2",
+        "setprototypeof": "1.2.0",
+        "statuses": "2.0.1",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.10.0"
+      }
+    },
+    "node_modules/finalhandler": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.3.1.tgz",
+      "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "2.6.9",
+        "encodeurl": "~2.0.0",
+        "escape-html": "~1.0.3",
+        "on-finished": "2.4.1",
+        "parseurl": "~1.3.3",
+        "statuses": "2.0.1",
+        "unpipe": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/follow-redirects": {
+      "version": "1.15.9",
+      "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz",
+      "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/RubenVerborgh"
+        }
+      ],
+      "license": "MIT",
+      "engines": {
+        "node": ">=4.0"
+      },
+      "peerDependenciesMeta": {
+        "debug": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/form-data": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.1.tgz",
+      "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
+      "license": "MIT",
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/forwarded": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
+      "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz",
+      "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/function-bind": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
+      "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/generate-function": {
+      "version": "2.3.1",
+      "resolved": "https://registry.npmmirror.com/generate-function/-/generate-function-2.3.1.tgz",
+      "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==",
+      "license": "MIT",
+      "dependencies": {
+        "is-property": "^1.0.2"
+      }
+    },
+    "node_modules/generic-pool": {
+      "version": "3.9.0",
+      "resolved": "https://registry.npmmirror.com/generic-pool/-/generic-pool-3.9.0.tgz",
+      "integrity": "sha512-hymDOu5B53XvN4QT9dBmZxPX4CWhBPPLguTZ9MMFeFa/Kg0xWVfylOVNlJji/E7yTZWFd/q9GO5TxDLq156D7g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 4"
+      }
+    },
+    "node_modules/get-intrinsic": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+      "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+      "license": "MIT",
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "has-proto": "^1.0.1",
+        "has-symbols": "^1.0.3",
+        "hasown": "^2.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/gopd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz",
+      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+      "license": "MIT",
+      "dependencies": {
+        "get-intrinsic": "^1.1.3"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-property-descriptors": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+      "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+      "license": "MIT",
+      "dependencies": {
+        "es-define-property": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-proto": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz",
+      "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/has-symbols": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
+      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/hasown": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
+      "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+      "license": "MIT",
+      "dependencies": {
+        "function-bind": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/http-errors": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz",
+      "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+      "license": "MIT",
+      "dependencies": {
+        "depd": "2.0.0",
+        "inherits": "2.0.4",
+        "setprototypeof": "1.2.0",
+        "statuses": "2.0.1",
+        "toidentifier": "1.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/idb-keyval": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmmirror.com/idb-keyval/-/idb-keyval-6.2.1.tgz",
+      "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==",
+      "license": "Apache-2.0"
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "license": "ISC"
+    },
+    "node_modules/ipaddr.js": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/is-arrayish": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz",
+      "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+      "license": "MIT"
+    },
+    "node_modules/is-electron": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/is-electron/-/is-electron-2.2.2.tgz",
+      "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==",
+      "license": "MIT"
+    },
+    "node_modules/is-property": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/is-property/-/is-property-1.0.2.tgz",
+      "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==",
+      "license": "MIT"
+    },
+    "node_modules/is-url": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz",
+      "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==",
+      "license": "MIT"
+    },
+    "node_modules/json-bigint": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/json-bigint/-/json-bigint-1.0.0.tgz",
+      "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
+      "license": "MIT",
+      "dependencies": {
+        "bignumber.js": "^9.0.0"
+      }
+    },
+    "node_modules/long": {
+      "version": "5.2.3",
+      "resolved": "https://registry.npmmirror.com/long/-/long-5.2.3.tgz",
+      "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==",
+      "license": "Apache-2.0"
+    },
+    "node_modules/lru-cache": {
+      "version": "7.18.3",
+      "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-7.18.3.tgz",
+      "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=12"
+      }
+    },
+    "node_modules/lru.min": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/lru.min/-/lru.min-1.1.1.tgz",
+      "integrity": "sha512-FbAj6lXil6t8z4z3j0E5mfRlPzxkySotzUHwRXjlpRh10vc6AI6WN62ehZj82VG7M20rqogJ0GLwar2Xa05a8Q==",
+      "license": "MIT",
+      "engines": {
+        "bun": ">=1.0.0",
+        "deno": ">=1.30.0",
+        "node": ">=8.0.0"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/wellwelwel"
+      }
+    },
+    "node_modules/media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz",
+      "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/merge-descriptors": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz",
+      "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
+      "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "license": "MIT",
+      "bin": {
+        "mime": "cli.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "license": "MIT",
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
+      "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+      "license": "MIT",
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+      "license": "MIT"
+    },
+    "node_modules/mysql2": {
+      "version": "3.11.4",
+      "resolved": "https://registry.npmmirror.com/mysql2/-/mysql2-3.11.4.tgz",
+      "integrity": "sha512-Z2o3tY4Z8EvSRDwknaC40MdZ3+m0sKbpnXrShQLdxPrAvcNli7jLrD2Zd2IzsRMw4eK9Yle500FDmlkIqp+krg==",
+      "license": "MIT",
+      "dependencies": {
+        "aws-ssl-profiles": "^1.1.1",
+        "denque": "^2.1.0",
+        "generate-function": "^2.3.1",
+        "iconv-lite": "^0.6.3",
+        "long": "^5.2.1",
+        "lru.min": "^1.0.0",
+        "named-placeholders": "^1.1.3",
+        "seq-queue": "^0.0.5",
+        "sqlstring": "^2.3.2"
+      },
+      "engines": {
+        "node": ">= 8.0"
+      }
+    },
+    "node_modules/mysql2/node_modules/iconv-lite": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz",
+      "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+      "license": "MIT",
+      "dependencies": {
+        "safer-buffer": ">= 2.1.2 < 3.0.0"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/named-placeholders": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/named-placeholders/-/named-placeholders-1.1.3.tgz",
+      "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==",
+      "license": "MIT",
+      "dependencies": {
+        "lru-cache": "^7.14.1"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
+    "node_modules/negotiator": {
+      "version": "0.6.3",
+      "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz",
+      "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/node-fetch": {
+      "version": "2.7.0",
+      "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz",
+      "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+      "license": "MIT",
+      "dependencies": {
+        "whatwg-url": "^5.0.0"
+      },
+      "engines": {
+        "node": "4.x || >=6.0.0"
+      },
+      "peerDependencies": {
+        "encoding": "^0.1.0"
+      },
+      "peerDependenciesMeta": {
+        "encoding": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/object-inspect": {
+      "version": "1.13.2",
+      "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.2.tgz",
+      "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/on-finished": {
+      "version": "2.4.1",
+      "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
+      "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+      "license": "MIT",
+      "dependencies": {
+        "ee-first": "1.1.1"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/opencollective-postinstall": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",
+      "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==",
+      "license": "MIT",
+      "bin": {
+        "opencollective-postinstall": "index.js"
+      }
+    },
+    "node_modules/parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/path-to-regexp": {
+      "version": "0.1.10",
+      "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
+      "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
+      "license": "MIT"
+    },
+    "node_modules/proxy-addr": {
+      "version": "2.0.7",
+      "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
+      "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+      "license": "MIT",
+      "dependencies": {
+        "forwarded": "0.2.0",
+        "ipaddr.js": "1.9.1"
+      },
+      "engines": {
+        "node": ">= 0.10"
+      }
+    },
+    "node_modules/proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+      "license": "MIT"
+    },
+    "node_modules/qs": {
+      "version": "6.13.0",
+      "resolved": "https://registry.npmmirror.com/qs/-/qs-6.13.0.tgz",
+      "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
+      "license": "BSD-3-Clause",
+      "dependencies": {
+        "side-channel": "^1.0.6"
+      },
+      "engines": {
+        "node": ">=0.6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/raw-body": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.2.tgz",
+      "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+      "license": "MIT",
+      "dependencies": {
+        "bytes": "3.1.2",
+        "http-errors": "2.0.0",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/redis": {
+      "version": "4.7.0",
+      "resolved": "https://registry.npmmirror.com/redis/-/redis-4.7.0.tgz",
+      "integrity": "sha512-zvmkHEAdGMn+hMRXuMBtu4Vo5P6rHQjLoHftu+lBqq8ZTA3RCVC/WzD790bkKKiNFp7d5/9PcSD19fJyyRvOdQ==",
+      "license": "MIT",
+      "workspaces": [
+        "./packages/*"
+      ],
+      "dependencies": {
+        "@redis/bloom": "1.2.0",
+        "@redis/client": "1.6.0",
+        "@redis/graph": "1.1.1",
+        "@redis/json": "1.0.7",
+        "@redis/search": "1.2.0",
+        "@redis/time-series": "1.1.0"
+      }
+    },
+    "node_modules/regenerator-runtime": {
+      "version": "0.13.11",
+      "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
+      "license": "MIT"
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "license": "MIT"
+    },
+    "node_modules/safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "license": "MIT"
+    },
+    "node_modules/semver": {
+      "version": "7.6.3",
+      "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz",
+      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/send": {
+      "version": "0.19.0",
+      "resolved": "https://registry.npmmirror.com/send/-/send-0.19.0.tgz",
+      "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==",
+      "license": "MIT",
+      "dependencies": {
+        "debug": "2.6.9",
+        "depd": "2.0.0",
+        "destroy": "1.2.0",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "2.0.0",
+        "mime": "1.6.0",
+        "ms": "2.1.3",
+        "on-finished": "2.4.1",
+        "range-parser": "~1.2.1",
+        "statuses": "2.0.1"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/send/node_modules/encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz",
+      "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/send/node_modules/ms": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+      "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+      "license": "MIT"
+    },
+    "node_modules/seq-queue": {
+      "version": "0.0.5",
+      "resolved": "https://registry.npmmirror.com/seq-queue/-/seq-queue-0.0.5.tgz",
+      "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="
+    },
+    "node_modules/serve-static": {
+      "version": "1.16.2",
+      "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.16.2.tgz",
+      "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+      "license": "MIT",
+      "dependencies": {
+        "encodeurl": "~2.0.0",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.19.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
+    "node_modules/set-function-length": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz",
+      "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+      "license": "MIT",
+      "dependencies": {
+        "define-data-property": "^1.1.4",
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2",
+        "get-intrinsic": "^1.2.4",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
+    "node_modules/setprototypeof": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
+      "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
+      "license": "ISC"
+    },
+    "node_modules/sharp": {
+      "version": "0.33.5",
+      "resolved": "https://registry.npmmirror.com/sharp/-/sharp-0.33.5.tgz",
+      "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==",
+      "hasInstallScript": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "color": "^4.2.3",
+        "detect-libc": "^2.0.3",
+        "semver": "^7.6.3"
+      },
+      "engines": {
+        "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      },
+      "optionalDependencies": {
+        "@img/sharp-darwin-arm64": "0.33.5",
+        "@img/sharp-darwin-x64": "0.33.5",
+        "@img/sharp-libvips-darwin-arm64": "1.0.4",
+        "@img/sharp-libvips-darwin-x64": "1.0.4",
+        "@img/sharp-libvips-linux-arm": "1.0.5",
+        "@img/sharp-libvips-linux-arm64": "1.0.4",
+        "@img/sharp-libvips-linux-s390x": "1.0.4",
+        "@img/sharp-libvips-linux-x64": "1.0.4",
+        "@img/sharp-libvips-linuxmusl-arm64": "1.0.4",
+        "@img/sharp-libvips-linuxmusl-x64": "1.0.4",
+        "@img/sharp-linux-arm": "0.33.5",
+        "@img/sharp-linux-arm64": "0.33.5",
+        "@img/sharp-linux-s390x": "0.33.5",
+        "@img/sharp-linux-x64": "0.33.5",
+        "@img/sharp-linuxmusl-arm64": "0.33.5",
+        "@img/sharp-linuxmusl-x64": "0.33.5",
+        "@img/sharp-wasm32": "0.33.5",
+        "@img/sharp-win32-ia32": "0.33.5",
+        "@img/sharp-win32-x64": "0.33.5"
+      }
+    },
+    "node_modules/side-channel": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz",
+      "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+      "license": "MIT",
+      "dependencies": {
+        "call-bind": "^1.0.7",
+        "es-errors": "^1.3.0",
+        "get-intrinsic": "^1.2.4",
+        "object-inspect": "^1.13.1"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+      "license": "MIT",
+      "dependencies": {
+        "is-arrayish": "^0.3.1"
+      }
+    },
+    "node_modules/sqlstring": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmmirror.com/sqlstring/-/sqlstring-2.3.3.tgz",
+      "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "frac": "~1.1.2"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/statuses": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
+      "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/tesseract.js": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/tesseract.js/-/tesseract.js-5.1.1.tgz",
+      "integrity": "sha512-lzVl/Ar3P3zhpUT31NjqeCo1f+D5+YfpZ5J62eo2S14QNVOmHBTtbchHm/YAbOOOzCegFnKf4B3Qih9LuldcYQ==",
+      "hasInstallScript": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "bmp-js": "^0.1.0",
+        "idb-keyval": "^6.2.0",
+        "is-electron": "^2.2.2",
+        "is-url": "^1.2.4",
+        "node-fetch": "^2.6.9",
+        "opencollective-postinstall": "^2.0.3",
+        "regenerator-runtime": "^0.13.3",
+        "tesseract.js-core": "^5.1.1",
+        "wasm-feature-detect": "^1.2.11",
+        "zlibjs": "^0.3.1"
+      }
+    },
+    "node_modules/tesseract.js-core": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmmirror.com/tesseract.js-core/-/tesseract.js-core-5.1.1.tgz",
+      "integrity": "sha512-KX3bYSU5iGcO1XJa+QGPbi+Zjo2qq6eBhNjSGR5E5q0JtzkoipJKOUQD7ph8kFyteCEfEQ0maWLu8MCXtvX5uQ==",
+      "license": "Apache-2.0"
+    },
+    "node_modules/toidentifier": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
+      "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=0.6"
+      }
+    },
+    "node_modules/tr46": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz",
+      "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+      "license": "MIT"
+    },
+    "node_modules/type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "license": "MIT",
+      "dependencies": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
+      "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz",
+      "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
+    "node_modules/vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
+      "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/wasm-feature-detect": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmmirror.com/wasm-feature-detect/-/wasm-feature-detect-1.8.0.tgz",
+      "integrity": "sha512-zksaLKM2fVlnB5jQQDqKXXwYHLQUVH9es+5TOOHwGOVJOCeRBCiPjwSg+3tN2AdTCzjgli4jijCH290kXb/zWQ==",
+      "license": "Apache-2.0"
+    },
+    "node_modules/webidl-conversions": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+      "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+      "license": "BSD-2-Clause"
+    },
+    "node_modules/whatwg-url": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz",
+      "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+      "license": "MIT",
+      "dependencies": {
+        "tr46": "~0.0.3",
+        "webidl-conversions": "^3.0.0"
+      }
+    },
+    "node_modules/wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/ws": {
+      "version": "8.18.0",
+      "resolved": "https://registry.npmmirror.com/ws/-/ws-8.18.0.tgz",
+      "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/xlsx": {
+      "version": "0.18.5",
+      "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz",
+      "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==",
+      "license": "Apache-2.0",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "cfb": "~1.2.1",
+        "codepage": "~1.15.0",
+        "crc-32": "~1.2.1",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      },
+      "bin": {
+        "xlsx": "bin/xlsx.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "license": "ISC"
+    },
+    "node_modules/zlibjs": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmmirror.com/zlibjs/-/zlibjs-0.3.1.tgz",
+      "integrity": "sha512-+J9RrgTKOmlxFSDHo0pI1xM6BLVUv+o0ZT9ANtCxGkjIVCCUdx9alUF8Gm+dGLKbkkkidWIHFDZHDMpfITt4+w==",
+      "license": "MIT",
+      "engines": {
+        "node": "*"
+      }
+    }
+  }
+}

+ 46 - 0
node_modules/@img/sharp-libvips-linux-x64/README.md

@@ -0,0 +1,46 @@
+# `@img/sharp-libvips-linux-x64`
+
+Prebuilt libvips and dependencies for use with sharp on Linux (glibc) x64.
+
+## Licensing
+
+This software contains third-party libraries
+used under the terms of the following licences:
+
+| Library       | Used under the terms of                                                                                   |
+|---------------|-----------------------------------------------------------------------------------------------------------|
+| aom           | BSD 2-Clause + [Alliance for Open Media Patent License 1.0](https://aomedia.org/license/patent-license/)  |
+| cairo         | Mozilla Public License 2.0                                                                                |
+| cgif          | MIT Licence                                                                                               |
+| expat         | MIT Licence                                                                                               |
+| fontconfig    | [fontconfig Licence](https://gitlab.freedesktop.org/fontconfig/fontconfig/blob/main/COPYING) (BSD-like)   |
+| freetype      | [freetype Licence](https://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT) (BSD-like) |
+| fribidi       | LGPLv3                                                                                                    |
+| glib          | LGPLv3                                                                                                    |
+| harfbuzz      | MIT Licence                                                                                               |
+| highway       | Apache-2.0 License, BSD 3-Clause                                                                          |
+| lcms          | MIT Licence                                                                                               |
+| libarchive    | BSD 2-Clause                                                                                              |
+| libexif       | LGPLv3                                                                                                    |
+| libffi        | MIT Licence                                                                                               |
+| libheif       | LGPLv3                                                                                                    |
+| libimagequant | [BSD 2-Clause](https://github.com/lovell/libimagequant/blob/main/COPYRIGHT)                               |
+| libnsgif      | MIT Licence                                                                                               |
+| libpng        | [libpng License](https://github.com/pnggroup/libpng/blob/master/LICENSE)                                  |
+| librsvg       | LGPLv3                                                                                                    |
+| libspng       | [BSD 2-Clause, libpng License](https://github.com/randy408/libspng/blob/master/LICENSE)                   |
+| libtiff       | [libtiff License](https://gitlab.com/libtiff/libtiff/blob/master/LICENSE.md) (BSD-like)                   |
+| libvips       | LGPLv3                                                                                                    |
+| libwebp       | New BSD License                                                                                           |
+| libxml2       | MIT Licence                                                                                               |
+| mozjpeg       | [zlib License, IJG License, BSD-3-Clause](https://github.com/mozilla/mozjpeg/blob/master/LICENSE.md)      |
+| pango         | LGPLv3                                                                                                    |
+| pixman        | MIT Licence                                                                                               |
+| proxy-libintl | LGPLv3                                                                                                    |
+| zlib-ng       | [zlib Licence](https://github.com/zlib-ng/zlib-ng/blob/develop/LICENSE.md)                                |
+
+Use of libraries under the terms of the LGPLv3 is via the
+"any later version" clause of the LGPLv2 or LGPLv2.1.
+
+Please report any errors or omissions via
+https://github.com/lovell/sharp-libvips/issues/new

+ 221 - 0
node_modules/@img/sharp-libvips-linux-x64/lib/glib-2.0/include/glibconfig.h

@@ -0,0 +1,221 @@
+/* glibconfig.h
+ *
+ * This is a generated file.  Please modify 'glibconfig.h.in'
+ */
+
+#ifndef __GLIBCONFIG_H__
+#define __GLIBCONFIG_H__
+
+#include <glib/gmacros.h>
+
+#include <limits.h>
+#include <float.h>
+#define GLIB_HAVE_ALLOCA_H
+
+#define GLIB_STATIC_COMPILATION 1
+#define GOBJECT_STATIC_COMPILATION 1
+#define GIO_STATIC_COMPILATION 1
+#define GMODULE_STATIC_COMPILATION 1
+#define GI_STATIC_COMPILATION 1
+#define G_INTL_STATIC_COMPILATION 1
+#define FFI_STATIC_BUILD 1
+
+/* Specifies that GLib's g_print*() functions wrap the
+ * system printf functions.  This is useful to know, for example,
+ * when using glibc's register_printf_function().
+ */
+#define GLIB_USING_SYSTEM_PRINTF
+
+G_BEGIN_DECLS
+
+#define G_MINFLOAT	FLT_MIN
+#define G_MAXFLOAT	FLT_MAX
+#define G_MINDOUBLE	DBL_MIN
+#define G_MAXDOUBLE	DBL_MAX
+#define G_MINSHORT	SHRT_MIN
+#define G_MAXSHORT	SHRT_MAX
+#define G_MAXUSHORT	USHRT_MAX
+#define G_MININT	INT_MIN
+#define G_MAXINT	INT_MAX
+#define G_MAXUINT	UINT_MAX
+#define G_MINLONG	LONG_MIN
+#define G_MAXLONG	LONG_MAX
+#define G_MAXULONG	ULONG_MAX
+
+typedef signed char gint8;
+typedef unsigned char guint8;
+
+typedef signed short gint16;
+typedef unsigned short guint16;
+
+#define G_GINT16_MODIFIER "h"
+#define G_GINT16_FORMAT "hi"
+#define G_GUINT16_FORMAT "hu"
+
+
+typedef signed int gint32;
+typedef unsigned int guint32;
+
+#define G_GINT32_MODIFIER ""
+#define G_GINT32_FORMAT "i"
+#define G_GUINT32_FORMAT "u"
+
+
+#define G_HAVE_GINT64 1          /* deprecated, always true */
+
+typedef signed long gint64;
+typedef unsigned long guint64;
+
+#define G_GINT64_CONSTANT(val)	(val##L)
+#define G_GUINT64_CONSTANT(val)	(val##UL)
+
+#define G_GINT64_MODIFIER "l"
+#define G_GINT64_FORMAT "li"
+#define G_GUINT64_FORMAT "lu"
+
+
+#define GLIB_SIZEOF_VOID_P 8
+#define GLIB_SIZEOF_LONG   8
+#define GLIB_SIZEOF_SIZE_T 8
+#define GLIB_SIZEOF_SSIZE_T 8
+
+typedef signed long gssize;
+typedef unsigned long gsize;
+#define G_GSIZE_MODIFIER "l"
+#define G_GSSIZE_MODIFIER "l"
+#define G_GSIZE_FORMAT "lu"
+#define G_GSSIZE_FORMAT "li"
+
+#define G_MAXSIZE	G_MAXULONG
+#define G_MINSSIZE	G_MINLONG
+#define G_MAXSSIZE	G_MAXLONG
+
+typedef gint64 goffset;
+#define G_MINOFFSET	G_MININT64
+#define G_MAXOFFSET	G_MAXINT64
+
+#define G_GOFFSET_MODIFIER      G_GINT64_MODIFIER
+#define G_GOFFSET_FORMAT        G_GINT64_FORMAT
+#define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val)
+
+#define G_POLLFD_FORMAT "%d"
+
+#define GPOINTER_TO_INT(p)	((gint)  (glong) (p))
+#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
+
+#define GINT_TO_POINTER(i)	((gpointer) (glong) (i))
+#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
+
+typedef signed long gintptr;
+typedef unsigned long guintptr;
+
+#define G_GINTPTR_MODIFIER      "l"
+#define G_GINTPTR_FORMAT        "li"
+#define G_GUINTPTR_FORMAT       "lu"
+
+#define GLIB_MAJOR_VERSION 2
+#define GLIB_MINOR_VERSION 81
+#define GLIB_MICRO_VERSION 1
+
+#define G_OS_UNIX
+
+#define G_VA_COPY va_copy
+
+#define G_VA_COPY_AS_ARRAY 1
+
+#define G_HAVE_ISO_VARARGS 1
+
+/* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
+ * is passed ISO vararg support is turned off, and there is no work
+ * around to turn it on, so we unconditionally turn it off.
+ */
+#if __GNUC__ == 2 && __GNUC_MINOR__ == 95
+#  undef G_HAVE_ISO_VARARGS
+#endif
+
+#define G_HAVE_GROWING_STACK 0
+
+#ifndef _MSC_VER
+# define G_HAVE_GNUC_VARARGS 1
+#endif
+
+#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
+#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
+#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
+#define G_GNUC_INTERNAL __hidden
+#elif defined (__GNUC__) && defined (G_HAVE_GNUC_VISIBILITY)
+#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
+#else
+#define G_GNUC_INTERNAL
+#endif
+
+#define G_THREADS_ENABLED
+#define G_THREADS_IMPL_POSIX
+
+#define G_ATOMIC_LOCK_FREE
+
+#define GINT16_TO_LE(val)	((gint16) (val))
+#define GUINT16_TO_LE(val)	((guint16) (val))
+#define GINT16_TO_BE(val)	((gint16) GUINT16_SWAP_LE_BE (val))
+#define GUINT16_TO_BE(val)	(GUINT16_SWAP_LE_BE (val))
+
+#define GINT32_TO_LE(val)	((gint32) (val))
+#define GUINT32_TO_LE(val)	((guint32) (val))
+#define GINT32_TO_BE(val)	((gint32) GUINT32_SWAP_LE_BE (val))
+#define GUINT32_TO_BE(val)	(GUINT32_SWAP_LE_BE (val))
+
+#define GINT64_TO_LE(val)	((gint64) (val))
+#define GUINT64_TO_LE(val)	((guint64) (val))
+#define GINT64_TO_BE(val)	((gint64) GUINT64_SWAP_LE_BE (val))
+#define GUINT64_TO_BE(val)	(GUINT64_SWAP_LE_BE (val))
+
+#define GLONG_TO_LE(val)	((glong) GINT64_TO_LE (val))
+#define GULONG_TO_LE(val)	((gulong) GUINT64_TO_LE (val))
+#define GLONG_TO_BE(val)	((glong) GINT64_TO_BE (val))
+#define GULONG_TO_BE(val)	((gulong) GUINT64_TO_BE (val))
+#define GINT_TO_LE(val)		((gint) GINT32_TO_LE (val))
+#define GUINT_TO_LE(val)	((guint) GUINT32_TO_LE (val))
+#define GINT_TO_BE(val)		((gint) GINT32_TO_BE (val))
+#define GUINT_TO_BE(val)	((guint) GUINT32_TO_BE (val))
+#define GSIZE_TO_LE(val)	((gsize) GUINT64_TO_LE (val))
+#define GSSIZE_TO_LE(val)	((gssize) GINT64_TO_LE (val))
+#define GSIZE_TO_BE(val)	((gsize) GUINT64_TO_BE (val))
+#define GSSIZE_TO_BE(val)	((gssize) GINT64_TO_BE (val))
+#define G_BYTE_ORDER G_LITTLE_ENDIAN
+
+#define GLIB_SYSDEF_POLLIN =1
+#define GLIB_SYSDEF_POLLOUT =4
+#define GLIB_SYSDEF_POLLPRI =2
+#define GLIB_SYSDEF_POLLHUP =16
+#define GLIB_SYSDEF_POLLERR =8
+#define GLIB_SYSDEF_POLLNVAL =32
+
+/* No way to disable deprecation warnings for macros, so only emit deprecation
+ * warnings on platforms where usage of this macro is broken */
+#if defined(__APPLE__) || defined(_MSC_VER) || defined(__CYGWIN__)
+#define G_MODULE_SUFFIX "so" GLIB_DEPRECATED_MACRO_IN_2_76
+#else
+#define G_MODULE_SUFFIX "so"
+#endif
+
+typedef int GPid;
+#define G_PID_FORMAT "i"
+
+#define GLIB_SYSDEF_AF_UNIX 1
+#define GLIB_SYSDEF_AF_INET 2
+#define GLIB_SYSDEF_AF_INET6 10
+
+#define GLIB_SYSDEF_MSG_OOB 1
+#define GLIB_SYSDEF_MSG_PEEK 2
+#define GLIB_SYSDEF_MSG_DONTROUTE 4
+
+#define G_DIR_SEPARATOR '/'
+#define G_DIR_SEPARATOR_S "/"
+#define G_SEARCHPATH_SEPARATOR ':'
+#define G_SEARCHPATH_SEPARATOR_S ":"
+
+#undef G_HAVE_FREE_SIZED
+
+G_END_DECLS
+
+#endif /* __GLIBCONFIG_H__ */

+ 1 - 0
node_modules/@img/sharp-libvips-linux-x64/lib/index.js

@@ -0,0 +1 @@
+module.exports = __dirname;

BIN
node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.42


+ 42 - 0
node_modules/@img/sharp-libvips-linux-x64/package.json

@@ -0,0 +1,42 @@
+{
+  "name": "@img/sharp-libvips-linux-x64",
+  "version": "1.0.4",
+  "description": "Prebuilt libvips and dependencies for use with sharp on Linux (glibc) x64",
+  "author": "Lovell Fuller <npm@lovell.info>",
+  "homepage": "https://sharp.pixelplumbing.com",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lovell/sharp-libvips.git",
+    "directory": "npm/linux-x64"
+  },
+  "license": "LGPL-3.0-or-later",
+  "funding": {
+    "url": "https://opencollective.com/libvips"
+  },
+  "preferUnplugged": true,
+  "publishConfig": {
+    "access": "public"
+  },
+  "files": [
+    "lib",
+    "versions.json"
+  ],
+  "type": "commonjs",
+  "exports": {
+    "./lib": "./lib/index.js",
+    "./package": "./package.json",
+    "./versions": "./versions.json"
+  },
+  "config": {
+    "glibc": ">=2.26"
+  },
+  "os": [
+    "linux"
+  ],
+  "libc": [
+    "glibc"
+  ],
+  "cpu": [
+    "x64"
+  ]
+}

+ 30 - 0
node_modules/@img/sharp-libvips-linux-x64/versions.json

@@ -0,0 +1,30 @@
+{
+  "aom": "3.9.1",
+  "archive": "3.7.4",
+  "cairo": "1.18.0",
+  "cgif": "0.4.1",
+  "exif": "0.6.24",
+  "expat": "2.6.2",
+  "ffi": "3.4.6",
+  "fontconfig": "2.15.0",
+  "freetype": "2.13.2",
+  "fribidi": "1.0.15",
+  "glib": "2.81.1",
+  "harfbuzz": "9.0.0",
+  "heif": "1.18.2",
+  "highway": "1.2.0",
+  "imagequant": "2.4.1",
+  "lcms": "2.16",
+  "mozjpeg": "4.1.5",
+  "pango": "1.54.0",
+  "pixman": "0.43.4",
+  "png": "1.6.43",
+  "proxy-libintl": "0.4",
+  "rsvg": "2.58.93",
+  "spng": "0.7.4",
+  "tiff": "4.6.0",
+  "vips": "8.15.3",
+  "webp": "1.4.0",
+  "xml": "2.13.3",
+  "zlib-ng": "2.2.1"
+}

+ 46 - 0
node_modules/@img/sharp-libvips-linuxmusl-x64/README.md

@@ -0,0 +1,46 @@
+# `@img/sharp-libvips-linuxmusl-x64`
+
+Prebuilt libvips and dependencies for use with sharp on Linux (musl) x64.
+
+## Licensing
+
+This software contains third-party libraries
+used under the terms of the following licences:
+
+| Library       | Used under the terms of                                                                                   |
+|---------------|-----------------------------------------------------------------------------------------------------------|
+| aom           | BSD 2-Clause + [Alliance for Open Media Patent License 1.0](https://aomedia.org/license/patent-license/)  |
+| cairo         | Mozilla Public License 2.0                                                                                |
+| cgif          | MIT Licence                                                                                               |
+| expat         | MIT Licence                                                                                               |
+| fontconfig    | [fontconfig Licence](https://gitlab.freedesktop.org/fontconfig/fontconfig/blob/main/COPYING) (BSD-like)   |
+| freetype      | [freetype Licence](https://git.savannah.gnu.org/cgit/freetype/freetype2.git/tree/docs/FTL.TXT) (BSD-like) |
+| fribidi       | LGPLv3                                                                                                    |
+| glib          | LGPLv3                                                                                                    |
+| harfbuzz      | MIT Licence                                                                                               |
+| highway       | Apache-2.0 License, BSD 3-Clause                                                                          |
+| lcms          | MIT Licence                                                                                               |
+| libarchive    | BSD 2-Clause                                                                                              |
+| libexif       | LGPLv3                                                                                                    |
+| libffi        | MIT Licence                                                                                               |
+| libheif       | LGPLv3                                                                                                    |
+| libimagequant | [BSD 2-Clause](https://github.com/lovell/libimagequant/blob/main/COPYRIGHT)                               |
+| libnsgif      | MIT Licence                                                                                               |
+| libpng        | [libpng License](https://github.com/pnggroup/libpng/blob/master/LICENSE)                                  |
+| librsvg       | LGPLv3                                                                                                    |
+| libspng       | [BSD 2-Clause, libpng License](https://github.com/randy408/libspng/blob/master/LICENSE)                   |
+| libtiff       | [libtiff License](https://gitlab.com/libtiff/libtiff/blob/master/LICENSE.md) (BSD-like)                   |
+| libvips       | LGPLv3                                                                                                    |
+| libwebp       | New BSD License                                                                                           |
+| libxml2       | MIT Licence                                                                                               |
+| mozjpeg       | [zlib License, IJG License, BSD-3-Clause](https://github.com/mozilla/mozjpeg/blob/master/LICENSE.md)      |
+| pango         | LGPLv3                                                                                                    |
+| pixman        | MIT Licence                                                                                               |
+| proxy-libintl | LGPLv3                                                                                                    |
+| zlib-ng       | [zlib Licence](https://github.com/zlib-ng/zlib-ng/blob/develop/LICENSE.md)                                |
+
+Use of libraries under the terms of the LGPLv3 is via the
+"any later version" clause of the LGPLv2 or LGPLv2.1.
+
+Please report any errors or omissions via
+https://github.com/lovell/sharp-libvips/issues/new

+ 221 - 0
node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h

@@ -0,0 +1,221 @@
+/* glibconfig.h
+ *
+ * This is a generated file.  Please modify 'glibconfig.h.in'
+ */
+
+#ifndef __GLIBCONFIG_H__
+#define __GLIBCONFIG_H__
+
+#include <glib/gmacros.h>
+
+#include <limits.h>
+#include <float.h>
+#define GLIB_HAVE_ALLOCA_H
+
+#define GLIB_STATIC_COMPILATION 1
+#define GOBJECT_STATIC_COMPILATION 1
+#define GIO_STATIC_COMPILATION 1
+#define GMODULE_STATIC_COMPILATION 1
+#define GI_STATIC_COMPILATION 1
+#define G_INTL_STATIC_COMPILATION 1
+#define FFI_STATIC_BUILD 1
+
+/* Specifies that GLib's g_print*() functions wrap the
+ * system printf functions.  This is useful to know, for example,
+ * when using glibc's register_printf_function().
+ */
+#define GLIB_USING_SYSTEM_PRINTF
+
+G_BEGIN_DECLS
+
+#define G_MINFLOAT	FLT_MIN
+#define G_MAXFLOAT	FLT_MAX
+#define G_MINDOUBLE	DBL_MIN
+#define G_MAXDOUBLE	DBL_MAX
+#define G_MINSHORT	SHRT_MIN
+#define G_MAXSHORT	SHRT_MAX
+#define G_MAXUSHORT	USHRT_MAX
+#define G_MININT	INT_MIN
+#define G_MAXINT	INT_MAX
+#define G_MAXUINT	UINT_MAX
+#define G_MINLONG	LONG_MIN
+#define G_MAXLONG	LONG_MAX
+#define G_MAXULONG	ULONG_MAX
+
+typedef signed char gint8;
+typedef unsigned char guint8;
+
+typedef signed short gint16;
+typedef unsigned short guint16;
+
+#define G_GINT16_MODIFIER "h"
+#define G_GINT16_FORMAT "hi"
+#define G_GUINT16_FORMAT "hu"
+
+
+typedef signed int gint32;
+typedef unsigned int guint32;
+
+#define G_GINT32_MODIFIER ""
+#define G_GINT32_FORMAT "i"
+#define G_GUINT32_FORMAT "u"
+
+
+#define G_HAVE_GINT64 1          /* deprecated, always true */
+
+typedef signed long gint64;
+typedef unsigned long guint64;
+
+#define G_GINT64_CONSTANT(val)	(val##L)
+#define G_GUINT64_CONSTANT(val)	(val##UL)
+
+#define G_GINT64_MODIFIER "l"
+#define G_GINT64_FORMAT "li"
+#define G_GUINT64_FORMAT "lu"
+
+
+#define GLIB_SIZEOF_VOID_P 8
+#define GLIB_SIZEOF_LONG   8
+#define GLIB_SIZEOF_SIZE_T 8
+#define GLIB_SIZEOF_SSIZE_T 8
+
+typedef signed long gssize;
+typedef unsigned long gsize;
+#define G_GSIZE_MODIFIER "l"
+#define G_GSSIZE_MODIFIER "l"
+#define G_GSIZE_FORMAT "lu"
+#define G_GSSIZE_FORMAT "li"
+
+#define G_MAXSIZE	G_MAXULONG
+#define G_MINSSIZE	G_MINLONG
+#define G_MAXSSIZE	G_MAXLONG
+
+typedef gint64 goffset;
+#define G_MINOFFSET	G_MININT64
+#define G_MAXOFFSET	G_MAXINT64
+
+#define G_GOFFSET_MODIFIER      G_GINT64_MODIFIER
+#define G_GOFFSET_FORMAT        G_GINT64_FORMAT
+#define G_GOFFSET_CONSTANT(val) G_GINT64_CONSTANT(val)
+
+#define G_POLLFD_FORMAT "%d"
+
+#define GPOINTER_TO_INT(p)	((gint)  (glong) (p))
+#define GPOINTER_TO_UINT(p)	((guint) (gulong) (p))
+
+#define GINT_TO_POINTER(i)	((gpointer) (glong) (i))
+#define GUINT_TO_POINTER(u)	((gpointer) (gulong) (u))
+
+typedef signed long gintptr;
+typedef unsigned long guintptr;
+
+#define G_GINTPTR_MODIFIER      "l"
+#define G_GINTPTR_FORMAT        "li"
+#define G_GUINTPTR_FORMAT       "lu"
+
+#define GLIB_MAJOR_VERSION 2
+#define GLIB_MINOR_VERSION 81
+#define GLIB_MICRO_VERSION 1
+
+#define G_OS_UNIX
+
+#define G_VA_COPY va_copy
+
+#define G_VA_COPY_AS_ARRAY 1
+
+#define G_HAVE_ISO_VARARGS 1
+
+/* gcc-2.95.x supports both gnu style and ISO varargs, but if -ansi
+ * is passed ISO vararg support is turned off, and there is no work
+ * around to turn it on, so we unconditionally turn it off.
+ */
+#if __GNUC__ == 2 && __GNUC_MINOR__ == 95
+#  undef G_HAVE_ISO_VARARGS
+#endif
+
+#define G_HAVE_GROWING_STACK 0
+
+#ifndef _MSC_VER
+# define G_HAVE_GNUC_VARARGS 1
+#endif
+
+#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
+#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
+#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
+#define G_GNUC_INTERNAL __hidden
+#elif defined (__GNUC__) && defined (G_HAVE_GNUC_VISIBILITY)
+#define G_GNUC_INTERNAL __attribute__((visibility("hidden")))
+#else
+#define G_GNUC_INTERNAL
+#endif
+
+#define G_THREADS_ENABLED
+#define G_THREADS_IMPL_POSIX
+
+#define G_ATOMIC_LOCK_FREE
+
+#define GINT16_TO_LE(val)	((gint16) (val))
+#define GUINT16_TO_LE(val)	((guint16) (val))
+#define GINT16_TO_BE(val)	((gint16) GUINT16_SWAP_LE_BE (val))
+#define GUINT16_TO_BE(val)	(GUINT16_SWAP_LE_BE (val))
+
+#define GINT32_TO_LE(val)	((gint32) (val))
+#define GUINT32_TO_LE(val)	((guint32) (val))
+#define GINT32_TO_BE(val)	((gint32) GUINT32_SWAP_LE_BE (val))
+#define GUINT32_TO_BE(val)	(GUINT32_SWAP_LE_BE (val))
+
+#define GINT64_TO_LE(val)	((gint64) (val))
+#define GUINT64_TO_LE(val)	((guint64) (val))
+#define GINT64_TO_BE(val)	((gint64) GUINT64_SWAP_LE_BE (val))
+#define GUINT64_TO_BE(val)	(GUINT64_SWAP_LE_BE (val))
+
+#define GLONG_TO_LE(val)	((glong) GINT64_TO_LE (val))
+#define GULONG_TO_LE(val)	((gulong) GUINT64_TO_LE (val))
+#define GLONG_TO_BE(val)	((glong) GINT64_TO_BE (val))
+#define GULONG_TO_BE(val)	((gulong) GUINT64_TO_BE (val))
+#define GINT_TO_LE(val)		((gint) GINT32_TO_LE (val))
+#define GUINT_TO_LE(val)	((guint) GUINT32_TO_LE (val))
+#define GINT_TO_BE(val)		((gint) GINT32_TO_BE (val))
+#define GUINT_TO_BE(val)	((guint) GUINT32_TO_BE (val))
+#define GSIZE_TO_LE(val)	((gsize) GUINT64_TO_LE (val))
+#define GSSIZE_TO_LE(val)	((gssize) GINT64_TO_LE (val))
+#define GSIZE_TO_BE(val)	((gsize) GUINT64_TO_BE (val))
+#define GSSIZE_TO_BE(val)	((gssize) GINT64_TO_BE (val))
+#define G_BYTE_ORDER G_LITTLE_ENDIAN
+
+#define GLIB_SYSDEF_POLLIN =1
+#define GLIB_SYSDEF_POLLOUT =4
+#define GLIB_SYSDEF_POLLPRI =2
+#define GLIB_SYSDEF_POLLHUP =16
+#define GLIB_SYSDEF_POLLERR =8
+#define GLIB_SYSDEF_POLLNVAL =32
+
+/* No way to disable deprecation warnings for macros, so only emit deprecation
+ * warnings on platforms where usage of this macro is broken */
+#if defined(__APPLE__) || defined(_MSC_VER) || defined(__CYGWIN__)
+#define G_MODULE_SUFFIX "so" GLIB_DEPRECATED_MACRO_IN_2_76
+#else
+#define G_MODULE_SUFFIX "so"
+#endif
+
+typedef int GPid;
+#define G_PID_FORMAT "i"
+
+#define GLIB_SYSDEF_AF_UNIX 1
+#define GLIB_SYSDEF_AF_INET 2
+#define GLIB_SYSDEF_AF_INET6 10
+
+#define GLIB_SYSDEF_MSG_OOB 1
+#define GLIB_SYSDEF_MSG_PEEK 2
+#define GLIB_SYSDEF_MSG_DONTROUTE 4
+
+#define G_DIR_SEPARATOR '/'
+#define G_DIR_SEPARATOR_S "/"
+#define G_SEARCHPATH_SEPARATOR ':'
+#define G_SEARCHPATH_SEPARATOR_S ":"
+
+#undef G_HAVE_FREE_SIZED
+
+G_END_DECLS
+
+#endif /* __GLIBCONFIG_H__ */

+ 1 - 0
node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js

@@ -0,0 +1 @@
+module.exports = __dirname;

BIN
node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.42


+ 42 - 0
node_modules/@img/sharp-libvips-linuxmusl-x64/package.json

@@ -0,0 +1,42 @@
+{
+  "name": "@img/sharp-libvips-linuxmusl-x64",
+  "version": "1.0.4",
+  "description": "Prebuilt libvips and dependencies for use with sharp on Linux (musl) x64",
+  "author": "Lovell Fuller <npm@lovell.info>",
+  "homepage": "https://sharp.pixelplumbing.com",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lovell/sharp-libvips.git",
+    "directory": "npm/linuxmusl-x64"
+  },
+  "license": "LGPL-3.0-or-later",
+  "funding": {
+    "url": "https://opencollective.com/libvips"
+  },
+  "preferUnplugged": true,
+  "publishConfig": {
+    "access": "public"
+  },
+  "files": [
+    "lib",
+    "versions.json"
+  ],
+  "type": "commonjs",
+  "exports": {
+    "./lib": "./lib/index.js",
+    "./package": "./package.json",
+    "./versions": "./versions.json"
+  },
+  "config": {
+    "musl": ">=1.2.2"
+  },
+  "os": [
+    "linux"
+  ],
+  "libc": [
+    "musl"
+  ],
+  "cpu": [
+    "x64"
+  ]
+}

+ 30 - 0
node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json

@@ -0,0 +1,30 @@
+{
+  "aom": "3.9.1",
+  "archive": "3.7.4",
+  "cairo": "1.18.0",
+  "cgif": "0.4.1",
+  "exif": "0.6.24",
+  "expat": "2.6.2",
+  "ffi": "3.4.6",
+  "fontconfig": "2.15.0",
+  "freetype": "2.13.2",
+  "fribidi": "1.0.15",
+  "glib": "2.81.1",
+  "harfbuzz": "9.0.0",
+  "heif": "1.18.2",
+  "highway": "1.2.0",
+  "imagequant": "2.4.1",
+  "lcms": "2.16",
+  "mozjpeg": "4.1.5",
+  "pango": "1.54.0",
+  "pixman": "0.43.4",
+  "png": "1.6.43",
+  "proxy-libintl": "0.4",
+  "rsvg": "2.58.93",
+  "spng": "0.7.4",
+  "tiff": "4.6.0",
+  "vips": "8.15.3",
+  "webp": "1.4.0",
+  "xml": "2.13.3",
+  "zlib-ng": "2.2.1"
+}

+ 191 - 0
node_modules/@img/sharp-linux-x64/LICENSE

@@ -0,0 +1,191 @@
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright
+owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities
+that control, are controlled by, or are under common control with that entity.
+For the purposes of this definition, "control" means (i) the power, direct or
+indirect, to cause the direction or management of such entity, whether by
+contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
+outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising
+permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and configuration
+files.
+
+"Object" form shall mean any form resulting from mechanical transformation or
+translation of a Source form, including but not limited to compiled object code,
+generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made
+available under the License, as indicated by a copyright notice that is included
+in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that
+is based on (or derived from) the Work and for which the editorial revisions,
+annotations, elaborations, or other modifications represent, as a whole, an
+original work of authorship. For the purposes of this License, Derivative Works
+shall not include works that remain separable from, or merely link (or bind by
+name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version
+of the Work and any modifications or additions to that Work or Derivative Works
+thereof, that is intentionally submitted to Licensor for inclusion in the Work
+by the copyright owner or by an individual or Legal Entity authorized to submit
+on behalf of the copyright owner. For the purposes of this definition,
+"submitted" means any form of electronic, verbal, or written communication sent
+to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems, and
+issue tracking systems that are managed by, or on behalf of, the Licensor for
+the purpose of discussing and improving the Work, but excluding communication
+that is conspicuously marked or otherwise designated in writing by the copyright
+owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
+of whom a Contribution has been received by Licensor and subsequently
+incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the Work and such
+Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable (except as stated in this section) patent license to make, have
+made, use, offer to sell, sell, import, and otherwise transfer the Work, where
+such license applies only to those patent claims licensable by such Contributor
+that are necessarily infringed by their Contribution(s) alone or by combination
+of their Contribution(s) with the Work to which such Contribution(s) was
+submitted. If You institute patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+Contribution incorporated within the Work constitutes direct or contributory
+patent infringement, then any patent licenses granted to You under this License
+for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof
+in any medium, with or without modifications, and in Source or Object form,
+provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of
+this License; and
+You must cause any modified files to carry prominent notices stating that You
+changed the files; and
+You must retain, in the Source form of any Derivative Works that You distribute,
+all copyright, patent, trademark, and attribution notices from the Source form
+of the Work, excluding those notices that do not pertain to any part of the
+Derivative Works; and
+If the Work includes a "NOTICE" text file as part of its distribution, then any
+Derivative Works that You distribute must include a readable copy of the
+attribution notices contained within such NOTICE file, excluding those notices
+that do not pertain to any part of the Derivative Works, in at least one of the
+following places: within a NOTICE text file distributed as part of the
+Derivative Works; within the Source form or documentation, if provided along
+with the Derivative Works; or, within a display generated by the Derivative
+Works, if and wherever such third-party notices normally appear. The contents of
+the NOTICE file are for informational purposes only and do not modify the
+License. You may add Your own attribution notices within Derivative Works that
+You distribute, alongside or as an addendum to the NOTICE text from the Work,
+provided that such additional attribution notices cannot be construed as
+modifying the License.
+You may add Your own copyright statement to Your modifications and may provide
+additional or different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works as a whole,
+provided Your use, reproduction, and distribution of the Work otherwise complies
+with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted
+for inclusion in the Work by You to the Licensor shall be under the terms and
+conditions of this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify the terms of
+any separate license agreement you may have executed with Licensor regarding
+such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks,
+service marks, or product names of the Licensor, except as required for
+reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the
+Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+including, without limitation, any warranties or conditions of TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
+solely responsible for determining the appropriateness of using or
+redistributing the Work and assume any risks associated with Your exercise of
+permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence),
+contract, or otherwise, unless required by applicable law (such as deliberate
+and grossly negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special, incidental,
+or consequential damages of any character arising as a result of this License or
+out of the use or inability to use the Work (including but not limited to
+damages for loss of goodwill, work stoppage, computer failure or malfunction, or
+any and all other commercial damages or losses), even if such Contributor has
+been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to
+offer, and charge a fee for, acceptance of support, warranty, indemnity, or
+other liability obligations and/or rights consistent with this License. However,
+in accepting such obligations, You may act only on Your own behalf and on Your
+sole responsibility, not on behalf of any other Contributor, and only if You
+agree to indemnify, defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason of your
+accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "[]" replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included on
+the same "printed page" as the copyright notice for easier identification within
+third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

+ 18 - 0
node_modules/@img/sharp-linux-x64/README.md

@@ -0,0 +1,18 @@
+# `@img/sharp-linux-x64`
+
+Prebuilt sharp for use with Linux (glibc) x64.
+
+## Licensing
+
+Copyright 2013 Lovell Fuller and others.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.

BIN
node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node


+ 46 - 0
node_modules/@img/sharp-linux-x64/package.json

@@ -0,0 +1,46 @@
+{
+  "name": "@img/sharp-linux-x64",
+  "version": "0.33.5",
+  "description": "Prebuilt sharp for use with Linux (glibc) x64",
+  "author": "Lovell Fuller <npm@lovell.info>",
+  "homepage": "https://sharp.pixelplumbing.com",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lovell/sharp.git",
+    "directory": "npm/linux-x64"
+  },
+  "license": "Apache-2.0",
+  "funding": {
+    "url": "https://opencollective.com/libvips"
+  },
+  "preferUnplugged": true,
+  "optionalDependencies": {
+    "@img/sharp-libvips-linux-x64": "1.0.4"
+  },
+  "files": [
+    "lib"
+  ],
+  "publishConfig": {
+    "access": "public"
+  },
+  "type": "commonjs",
+  "exports": {
+    "./sharp.node": "./lib/sharp-linux-x64.node",
+    "./package": "./package.json"
+  },
+  "engines": {
+    "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+  },
+  "config": {
+    "glibc": ">=2.26"
+  },
+  "os": [
+    "linux"
+  ],
+  "libc": [
+    "glibc"
+  ],
+  "cpu": [
+    "x64"
+  ]
+}

+ 191 - 0
node_modules/@img/sharp-linuxmusl-x64/LICENSE

@@ -0,0 +1,191 @@
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright
+owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities
+that control, are controlled by, or are under common control with that entity.
+For the purposes of this definition, "control" means (i) the power, direct or
+indirect, to cause the direction or management of such entity, whether by
+contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
+outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising
+permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including
+but not limited to software source code, documentation source, and configuration
+files.
+
+"Object" form shall mean any form resulting from mechanical transformation or
+translation of a Source form, including but not limited to compiled object code,
+generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made
+available under the License, as indicated by a copyright notice that is included
+in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that
+is based on (or derived from) the Work and for which the editorial revisions,
+annotations, elaborations, or other modifications represent, as a whole, an
+original work of authorship. For the purposes of this License, Derivative Works
+shall not include works that remain separable from, or merely link (or bind by
+name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version
+of the Work and any modifications or additions to that Work or Derivative Works
+thereof, that is intentionally submitted to Licensor for inclusion in the Work
+by the copyright owner or by an individual or Legal Entity authorized to submit
+on behalf of the copyright owner. For the purposes of this definition,
+"submitted" means any form of electronic, verbal, or written communication sent
+to the Licensor or its representatives, including but not limited to
+communication on electronic mailing lists, source code control systems, and
+issue tracking systems that are managed by, or on behalf of, the Licensor for
+the purpose of discussing and improving the Work, but excluding communication
+that is conspicuously marked or otherwise designated in writing by the copyright
+owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
+of whom a Contribution has been received by Licensor and subsequently
+incorporated within the Work.
+
+2. Grant of Copyright License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the Work and such
+Derivative Works in Source or Object form.
+
+3. Grant of Patent License.
+
+Subject to the terms and conditions of this License, each Contributor hereby
+grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
+irrevocable (except as stated in this section) patent license to make, have
+made, use, offer to sell, sell, import, and otherwise transfer the Work, where
+such license applies only to those patent claims licensable by such Contributor
+that are necessarily infringed by their Contribution(s) alone or by combination
+of their Contribution(s) with the Work to which such Contribution(s) was
+submitted. If You institute patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+Contribution incorporated within the Work constitutes direct or contributory
+patent infringement, then any patent licenses granted to You under this License
+for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution.
+
+You may reproduce and distribute copies of the Work or Derivative Works thereof
+in any medium, with or without modifications, and in Source or Object form,
+provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of
+this License; and
+You must cause any modified files to carry prominent notices stating that You
+changed the files; and
+You must retain, in the Source form of any Derivative Works that You distribute,
+all copyright, patent, trademark, and attribution notices from the Source form
+of the Work, excluding those notices that do not pertain to any part of the
+Derivative Works; and
+If the Work includes a "NOTICE" text file as part of its distribution, then any
+Derivative Works that You distribute must include a readable copy of the
+attribution notices contained within such NOTICE file, excluding those notices
+that do not pertain to any part of the Derivative Works, in at least one of the
+following places: within a NOTICE text file distributed as part of the
+Derivative Works; within the Source form or documentation, if provided along
+with the Derivative Works; or, within a display generated by the Derivative
+Works, if and wherever such third-party notices normally appear. The contents of
+the NOTICE file are for informational purposes only and do not modify the
+License. You may add Your own attribution notices within Derivative Works that
+You distribute, alongside or as an addendum to the NOTICE text from the Work,
+provided that such additional attribution notices cannot be construed as
+modifying the License.
+You may add Your own copyright statement to Your modifications and may provide
+additional or different license terms and conditions for use, reproduction, or
+distribution of Your modifications, or for any such Derivative Works as a whole,
+provided Your use, reproduction, and distribution of the Work otherwise complies
+with the conditions stated in this License.
+
+5. Submission of Contributions.
+
+Unless You explicitly state otherwise, any Contribution intentionally submitted
+for inclusion in the Work by You to the Licensor shall be under the terms and
+conditions of this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify the terms of
+any separate license agreement you may have executed with Licensor regarding
+such Contributions.
+
+6. Trademarks.
+
+This License does not grant permission to use the trade names, trademarks,
+service marks, or product names of the Licensor, except as required for
+reasonable and customary use in describing the origin of the Work and
+reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty.
+
+Unless required by applicable law or agreed to in writing, Licensor provides the
+Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+including, without limitation, any warranties or conditions of TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
+solely responsible for determining the appropriateness of using or
+redistributing the Work and assume any risks associated with Your exercise of
+permissions under this License.
+
+8. Limitation of Liability.
+
+In no event and under no legal theory, whether in tort (including negligence),
+contract, or otherwise, unless required by applicable law (such as deliberate
+and grossly negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special, incidental,
+or consequential damages of any character arising as a result of this License or
+out of the use or inability to use the Work (including but not limited to
+damages for loss of goodwill, work stoppage, computer failure or malfunction, or
+any and all other commercial damages or losses), even if such Contributor has
+been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability.
+
+While redistributing the Work or Derivative Works thereof, You may choose to
+offer, and charge a fee for, acceptance of support, warranty, indemnity, or
+other liability obligations and/or rights consistent with this License. However,
+in accepting such obligations, You may act only on Your own behalf and on Your
+sole responsibility, not on behalf of any other Contributor, and only if You
+agree to indemnify, defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason of your
+accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "[]" replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included on
+the same "printed page" as the copyright notice for easier identification within
+third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

+ 18 - 0
node_modules/@img/sharp-linuxmusl-x64/README.md

@@ -0,0 +1,18 @@
+# `@img/sharp-linuxmusl-x64`
+
+Prebuilt sharp for use with Linux (musl) x64.
+
+## Licensing
+
+Copyright 2013 Lovell Fuller and others.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+[https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0)
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.

BIN
node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node


+ 46 - 0
node_modules/@img/sharp-linuxmusl-x64/package.json

@@ -0,0 +1,46 @@
+{
+  "name": "@img/sharp-linuxmusl-x64",
+  "version": "0.33.5",
+  "description": "Prebuilt sharp for use with Linux (musl) x64",
+  "author": "Lovell Fuller <npm@lovell.info>",
+  "homepage": "https://sharp.pixelplumbing.com",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/lovell/sharp.git",
+    "directory": "npm/linuxmusl-x64"
+  },
+  "license": "Apache-2.0",
+  "funding": {
+    "url": "https://opencollective.com/libvips"
+  },
+  "preferUnplugged": true,
+  "optionalDependencies": {
+    "@img/sharp-libvips-linuxmusl-x64": "1.0.4"
+  },
+  "files": [
+    "lib"
+  ],
+  "publishConfig": {
+    "access": "public"
+  },
+  "type": "commonjs",
+  "exports": {
+    "./sharp.node": "./lib/sharp-linuxmusl-x64.node",
+    "./package": "./package.json"
+  },
+  "engines": {
+    "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+  },
+  "config": {
+    "musl": ">=1.2.2"
+  },
+  "os": [
+    "linux"
+  ],
+  "libc": [
+    "musl"
+  ],
+  "cpu": [
+    "x64"
+  ]
+}

+ 14 - 0
node_modules/@redis/bloom/README.md

@@ -0,0 +1,14 @@
+# @redis/bloom
+
+This package provides support for the [RedisBloom](https://redisbloom.io) module, which adds additional probabilistic data structures to Redis.  It extends the [Node Redis client](https://github.com/redis/node-redis) to include functions for each of the RediBloom commands.
+
+To use these extra commands, your Redis server must have the RedisBloom module installed.
+
+RedisBloom provides the following probabilistic data structures:
+
+* Bloom Filter: for checking set membership with a high degree of certainty.
+* Cuckoo Filter: for checking set membership with a high degree of certainty.
+* Count-Min Sketch: Determine the frequency of events in a stream.
+* Top-K: Maintain a list of k most frequently seen items.
+
+For complete examples, see `bloom-filter.js`, `cuckoo-filter.js`, `count-min-sketch.js` and `topk.js` in the Node Redis examples folder.

+ 3 - 0
node_modules/@redis/bloom/dist/commands/bloom/ADD.d.ts

@@ -0,0 +1,3 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: string, item: string): Array<string>;
+export { transformBooleanReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';

+ 10 - 0
node_modules/@redis/bloom/dist/commands/bloom/ADD.js

@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, item) {
+    return ['BF.ADD', key, item];
+}
+exports.transformArguments = transformArguments;
+var generic_transformers_1 = require("@redis/client/dist/lib/commands/generic-transformers");
+Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });

+ 4 - 0
node_modules/@redis/bloom/dist/commands/bloom/CARD.d.ts

@@ -0,0 +1,4 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare const IS_READ_ONLY = true;
+export declare function transformArguments(key: string): Array<string>;
+export declare function transformReply(): number;

+ 9 - 0
node_modules/@redis/bloom/dist/commands/bloom/CARD.js

@@ -0,0 +1,9 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+exports.IS_READ_ONLY = true;
+function transformArguments(key) {
+    return ['BF.CARD', key];
+}
+exports.transformArguments = transformArguments;

+ 4 - 0
node_modules/@redis/bloom/dist/commands/bloom/EXISTS.d.ts

@@ -0,0 +1,4 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare const IS_READ_ONLY = true;
+export declare function transformArguments(key: string, item: string): Array<string>;
+export { transformBooleanReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';

+ 11 - 0
node_modules/@redis/bloom/dist/commands/bloom/EXISTS.js

@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+exports.IS_READ_ONLY = true;
+function transformArguments(key, item) {
+    return ['BF.EXISTS', key, item];
+}
+exports.transformArguments = transformArguments;
+var generic_transformers_1 = require("@redis/client/dist/lib/commands/generic-transformers");
+Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });

+ 23 - 0
node_modules/@redis/bloom/dist/commands/bloom/INFO.d.ts

@@ -0,0 +1,23 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare const IS_READ_ONLY = true;
+export declare function transformArguments(key: string): Array<string>;
+export type InfoRawReply = [
+    _: string,
+    capacity: number,
+    _: string,
+    size: number,
+    _: string,
+    numberOfFilters: number,
+    _: string,
+    numberOfInsertedItems: number,
+    _: string,
+    expansionRate: number
+];
+export interface InfoReply {
+    capacity: number;
+    size: number;
+    numberOfFilters: number;
+    numberOfInsertedItems: number;
+    expansionRate: number;
+}
+export declare function transformReply(reply: InfoRawReply): InfoReply;

+ 19 - 0
node_modules/@redis/bloom/dist/commands/bloom/INFO.js

@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+exports.IS_READ_ONLY = true;
+function transformArguments(key) {
+    return ['BF.INFO', key];
+}
+exports.transformArguments = transformArguments;
+function transformReply(reply) {
+    return {
+        capacity: reply[1],
+        size: reply[3],
+        numberOfFilters: reply[5],
+        numberOfInsertedItems: reply[7],
+        expansionRate: reply[9]
+    };
+}
+exports.transformReply = transformReply;

+ 11 - 0
node_modules/@redis/bloom/dist/commands/bloom/INSERT.d.ts

@@ -0,0 +1,11 @@
+import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands';
+export declare const FIRST_KEY_INDEX = 1;
+interface InsertOptions {
+    CAPACITY?: number;
+    ERROR?: number;
+    EXPANSION?: number;
+    NOCREATE?: true;
+    NONSCALING?: true;
+}
+export declare function transformArguments(key: string, items: RedisCommandArgument | Array<RedisCommandArgument>, options?: InsertOptions): RedisCommandArguments;
+export { transformBooleanArrayReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';

+ 28 - 0
node_modules/@redis/bloom/dist/commands/bloom/INSERT.js

@@ -0,0 +1,28 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+const generic_transformers_1 = require("@redis/client/dist/lib/commands/generic-transformers");
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, items, options) {
+    const args = ['BF.INSERT', key];
+    if (options?.CAPACITY) {
+        args.push('CAPACITY', options.CAPACITY.toString());
+    }
+    if (options?.ERROR) {
+        args.push('ERROR', options.ERROR.toString());
+    }
+    if (options?.EXPANSION) {
+        args.push('EXPANSION', options.EXPANSION.toString());
+    }
+    if (options?.NOCREATE) {
+        args.push('NOCREATE');
+    }
+    if (options?.NONSCALING) {
+        args.push('NONSCALING');
+    }
+    args.push('ITEMS');
+    return (0, generic_transformers_1.pushVerdictArguments)(args, items);
+}
+exports.transformArguments = transformArguments;
+var generic_transformers_2 = require("@redis/client/dist/lib/commands/generic-transformers");
+Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_2.transformBooleanArrayReply; } });

+ 4 - 0
node_modules/@redis/bloom/dist/commands/bloom/LOADCHUNK.d.ts

@@ -0,0 +1,4 @@
+import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands';
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: string, iteretor: number, chunk: RedisCommandArgument): RedisCommandArguments;
+export declare function transformReply(): 'OK';

+ 8 - 0
node_modules/@redis/bloom/dist/commands/bloom/LOADCHUNK.js

@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, iteretor, chunk) {
+    return ['BF.LOADCHUNK', key, iteretor.toString(), chunk];
+}
+exports.transformArguments = transformArguments;

+ 3 - 0
node_modules/@redis/bloom/dist/commands/bloom/MADD.d.ts

@@ -0,0 +1,3 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: string, items: Array<string>): Array<string>;
+export { transformBooleanArrayReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';

+ 10 - 0
node_modules/@redis/bloom/dist/commands/bloom/MADD.js

@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, items) {
+    return ['BF.MADD', key, ...items];
+}
+exports.transformArguments = transformArguments;
+var generic_transformers_1 = require("@redis/client/dist/lib/commands/generic-transformers");
+Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });

+ 4 - 0
node_modules/@redis/bloom/dist/commands/bloom/MEXISTS.d.ts

@@ -0,0 +1,4 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare const IS_READ_ONLY = true;
+export declare function transformArguments(key: string, items: Array<string>): Array<string>;
+export { transformBooleanArrayReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';

+ 11 - 0
node_modules/@redis/bloom/dist/commands/bloom/MEXISTS.js

@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+exports.IS_READ_ONLY = true;
+function transformArguments(key, items) {
+    return ['BF.MEXISTS', key, ...items];
+}
+exports.transformArguments = transformArguments;
+var generic_transformers_1 = require("@redis/client/dist/lib/commands/generic-transformers");
+Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });

+ 8 - 0
node_modules/@redis/bloom/dist/commands/bloom/RESERVE.d.ts

@@ -0,0 +1,8 @@
+export declare const FIRST_KEY_INDEX = 1;
+interface ReserveOptions {
+    EXPANSION?: number;
+    NONSCALING?: true;
+}
+export declare function transformArguments(key: string, errorRate: number, capacity: number, options?: ReserveOptions): Array<string>;
+export declare function transformReply(): 'OK';
+export {};

+ 15 - 0
node_modules/@redis/bloom/dist/commands/bloom/RESERVE.js

@@ -0,0 +1,15 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, errorRate, capacity, options) {
+    const args = ['BF.RESERVE', key, errorRate.toString(), capacity.toString()];
+    if (options?.EXPANSION) {
+        args.push('EXPANSION', options.EXPANSION.toString());
+    }
+    if (options?.NONSCALING) {
+        args.push('NONSCALING');
+    }
+    return args;
+}
+exports.transformArguments = transformArguments;

+ 13 - 0
node_modules/@redis/bloom/dist/commands/bloom/SCANDUMP.d.ts

@@ -0,0 +1,13 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare const IS_READ_ONLY = true;
+export declare function transformArguments(key: string, iterator: number): Array<string>;
+type ScanDumpRawReply = [
+    iterator: number,
+    chunk: string
+];
+interface ScanDumpReply {
+    iterator: number;
+    chunk: string;
+}
+export declare function transformReply([iterator, chunk]: ScanDumpRawReply): ScanDumpReply;
+export {};

+ 16 - 0
node_modules/@redis/bloom/dist/commands/bloom/SCANDUMP.js

@@ -0,0 +1,16 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+exports.IS_READ_ONLY = true;
+function transformArguments(key, iterator) {
+    return ['BF.SCANDUMP', key, iterator.toString()];
+}
+exports.transformArguments = transformArguments;
+function transformReply([iterator, chunk]) {
+    return {
+        iterator,
+        chunk
+    };
+}
+exports.transformReply = transformReply;

+ 33 - 0
node_modules/@redis/bloom/dist/commands/bloom/index.d.ts

@@ -0,0 +1,33 @@
+import * as ADD from './ADD';
+import * as CARD from './CARD';
+import * as EXISTS from './EXISTS';
+import * as INFO from './INFO';
+import * as INSERT from './INSERT';
+import * as LOADCHUNK from './LOADCHUNK';
+import * as MADD from './MADD';
+import * as MEXISTS from './MEXISTS';
+import * as RESERVE from './RESERVE';
+import * as SCANDUMP from './SCANDUMP';
+declare const _default: {
+    ADD: typeof ADD;
+    add: typeof ADD;
+    CARD: typeof CARD;
+    card: typeof CARD;
+    EXISTS: typeof EXISTS;
+    exists: typeof EXISTS;
+    INFO: typeof INFO;
+    info: typeof INFO;
+    INSERT: typeof INSERT;
+    insert: typeof INSERT;
+    LOADCHUNK: typeof LOADCHUNK;
+    loadChunk: typeof LOADCHUNK;
+    MADD: typeof MADD;
+    mAdd: typeof MADD;
+    MEXISTS: typeof MEXISTS;
+    mExists: typeof MEXISTS;
+    RESERVE: typeof RESERVE;
+    reserve: typeof RESERVE;
+    SCANDUMP: typeof SCANDUMP;
+    scanDump: typeof SCANDUMP;
+};
+export default _default;

+ 34 - 0
node_modules/@redis/bloom/dist/commands/bloom/index.js

@@ -0,0 +1,34 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const ADD = require("./ADD");
+const CARD = require("./CARD");
+const EXISTS = require("./EXISTS");
+const INFO = require("./INFO");
+const INSERT = require("./INSERT");
+const LOADCHUNK = require("./LOADCHUNK");
+const MADD = require("./MADD");
+const MEXISTS = require("./MEXISTS");
+const RESERVE = require("./RESERVE");
+const SCANDUMP = require("./SCANDUMP");
+exports.default = {
+    ADD,
+    add: ADD,
+    CARD,
+    card: CARD,
+    EXISTS,
+    exists: EXISTS,
+    INFO,
+    info: INFO,
+    INSERT,
+    insert: INSERT,
+    LOADCHUNK,
+    loadChunk: LOADCHUNK,
+    MADD,
+    mAdd: MADD,
+    MEXISTS,
+    mExists: MEXISTS,
+    RESERVE,
+    reserve: RESERVE,
+    SCANDUMP,
+    scanDump: SCANDUMP
+};

+ 8 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/INCRBY.d.ts

@@ -0,0 +1,8 @@
+export declare const FIRST_KEY_INDEX = 1;
+interface IncrByItem {
+    item: string;
+    incrementBy: number;
+}
+export declare function transformArguments(key: string, items: IncrByItem | Array<IncrByItem>): Array<string>;
+export declare function transformReply(): Array<number>;
+export {};

+ 20 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/INCRBY.js

@@ -0,0 +1,20 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, items) {
+    const args = ['CMS.INCRBY', key];
+    if (Array.isArray(items)) {
+        for (const item of items) {
+            pushIncrByItem(args, item);
+        }
+    }
+    else {
+        pushIncrByItem(args, items);
+    }
+    return args;
+}
+exports.transformArguments = transformArguments;
+function pushIncrByItem(args, { item, incrementBy }) {
+    args.push(item, incrementBy.toString());
+}

+ 17 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/INFO.d.ts

@@ -0,0 +1,17 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare const IS_READ_ONLY = true;
+export declare function transformArguments(key: string): Array<string>;
+export type InfoRawReply = [
+    _: string,
+    width: number,
+    _: string,
+    depth: number,
+    _: string,
+    count: number
+];
+export interface InfoReply {
+    width: number;
+    depth: number;
+    count: number;
+}
+export declare function transformReply(reply: InfoRawReply): InfoReply;

+ 17 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/INFO.js

@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+exports.IS_READ_ONLY = true;
+function transformArguments(key) {
+    return ['CMS.INFO', key];
+}
+exports.transformArguments = transformArguments;
+function transformReply(reply) {
+    return {
+        width: reply[1],
+        depth: reply[3],
+        count: reply[5]
+    };
+}
+exports.transformReply = transformReply;

+ 3 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/INITBYDIM.d.ts

@@ -0,0 +1,3 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: string, width: number, depth: number): Array<string>;
+export declare function transformReply(): 'OK';

+ 8 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/INITBYDIM.js

@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, width, depth) {
+    return ['CMS.INITBYDIM', key, width.toString(), depth.toString()];
+}
+exports.transformArguments = transformArguments;

+ 3 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/INITBYPROB.d.ts

@@ -0,0 +1,3 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: string, error: number, probability: number): Array<string>;
+export declare function transformReply(): 'OK';

+ 8 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/INITBYPROB.js

@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, error, probability) {
+    return ['CMS.INITBYPROB', key, error.toString(), probability.toString()];
+}
+exports.transformArguments = transformArguments;

+ 9 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/MERGE.d.ts

@@ -0,0 +1,9 @@
+export declare const FIRST_KEY_INDEX = 1;
+interface Sketch {
+    name: string;
+    weight: number;
+}
+type Sketches = Array<string> | Array<Sketch>;
+export declare function transformArguments(dest: string, src: Sketches): Array<string>;
+export declare function transformReply(): 'OK';
+export {};

+ 28 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/MERGE.js

@@ -0,0 +1,28 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(dest, src) {
+    const args = [
+        'CMS.MERGE',
+        dest,
+        src.length.toString()
+    ];
+    if (isStringSketches(src)) {
+        args.push(...src);
+    }
+    else {
+        for (const sketch of src) {
+            args.push(sketch.name);
+        }
+        args.push('WEIGHTS');
+        for (const sketch of src) {
+            args.push(sketch.weight.toString());
+        }
+    }
+    return args;
+}
+exports.transformArguments = transformArguments;
+function isStringSketches(src) {
+    return typeof src[0] === 'string';
+}

+ 5 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/QUERY.d.ts

@@ -0,0 +1,5 @@
+import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
+export declare const FIRST_KEY_INDEX = 1;
+export declare const IS_READ_ONLY = true;
+export declare function transformArguments(key: string, items: string | Array<string>): RedisCommandArguments;
+export declare function transformReply(): Array<number>;

+ 10 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/QUERY.js

@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
+const generic_transformers_1 = require("@redis/client/dist/lib/commands/generic-transformers");
+exports.FIRST_KEY_INDEX = 1;
+exports.IS_READ_ONLY = true;
+function transformArguments(key, items) {
+    return (0, generic_transformers_1.pushVerdictArguments)(['CMS.QUERY', key], items);
+}
+exports.transformArguments = transformArguments;

+ 21 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/index.d.ts

@@ -0,0 +1,21 @@
+import * as INCRBY from './INCRBY';
+import * as INFO from './INFO';
+import * as INITBYDIM from './INITBYDIM';
+import * as INITBYPROB from './INITBYPROB';
+import * as MERGE from './MERGE';
+import * as QUERY from './QUERY';
+declare const _default: {
+    INCRBY: typeof INCRBY;
+    incrBy: typeof INCRBY;
+    INFO: typeof INFO;
+    info: typeof INFO;
+    INITBYDIM: typeof INITBYDIM;
+    initByDim: typeof INITBYDIM;
+    INITBYPROB: typeof INITBYPROB;
+    initByProb: typeof INITBYPROB;
+    MERGE: typeof MERGE;
+    merge: typeof MERGE;
+    QUERY: typeof QUERY;
+    query: typeof QUERY;
+};
+export default _default;

+ 22 - 0
node_modules/@redis/bloom/dist/commands/count-min-sketch/index.js

@@ -0,0 +1,22 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const INCRBY = require("./INCRBY");
+const INFO = require("./INFO");
+const INITBYDIM = require("./INITBYDIM");
+const INITBYPROB = require("./INITBYPROB");
+const MERGE = require("./MERGE");
+const QUERY = require("./QUERY");
+exports.default = {
+    INCRBY,
+    incrBy: INCRBY,
+    INFO,
+    info: INFO,
+    INITBYDIM,
+    initByDim: INITBYDIM,
+    INITBYPROB,
+    initByProb: INITBYPROB,
+    MERGE,
+    merge: MERGE,
+    QUERY,
+    query: QUERY
+};

+ 3 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/ADD.d.ts

@@ -0,0 +1,3 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: string, item: string): Array<string>;
+export { transformBooleanReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';

+ 10 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/ADD.js

@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, item) {
+    return ['CF.ADD', key, item];
+}
+exports.transformArguments = transformArguments;
+var generic_transformers_1 = require("@redis/client/dist/lib/commands/generic-transformers");
+Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });

+ 3 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/ADDNX.d.ts

@@ -0,0 +1,3 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: string, item: string): Array<string>;
+export { transformBooleanReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';

+ 10 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/ADDNX.js

@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, item) {
+    return ['CF.ADDNX', key, item];
+}
+exports.transformArguments = transformArguments;
+var generic_transformers_1 = require("@redis/client/dist/lib/commands/generic-transformers");
+Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });

+ 3 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/COUNT.d.ts

@@ -0,0 +1,3 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: string, item: string): Array<string>;
+export declare function transformReply(): number;

+ 8 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/COUNT.js

@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, item) {
+    return ['CF.COUNT', key, item];
+}
+exports.transformArguments = transformArguments;

+ 3 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/DEL.d.ts

@@ -0,0 +1,3 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: string, item: string): Array<string>;
+export { transformBooleanReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';

+ 10 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/DEL.js

@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, item) {
+    return ['CF.DEL', key, item];
+}
+exports.transformArguments = transformArguments;
+var generic_transformers_1 = require("@redis/client/dist/lib/commands/generic-transformers");
+Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });

+ 4 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/EXISTS.d.ts

@@ -0,0 +1,4 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare const IS_READ_ONLY = true;
+export declare function transformArguments(key: string, item: string): Array<string>;
+export { transformBooleanReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';

+ 11 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/EXISTS.js

@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+exports.IS_READ_ONLY = true;
+function transformArguments(key, item) {
+    return ['CF.EXISTS', key, item];
+}
+exports.transformArguments = transformArguments;
+var generic_transformers_1 = require("@redis/client/dist/lib/commands/generic-transformers");
+Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });

+ 32 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/INFO.d.ts

@@ -0,0 +1,32 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare const IS_READ_ONLY = true;
+export declare function transformArguments(key: string): Array<string>;
+export type InfoRawReply = [
+    _: string,
+    size: number,
+    _: string,
+    numberOfBuckets: number,
+    _: string,
+    numberOfFilters: number,
+    _: string,
+    numberOfInsertedItems: number,
+    _: string,
+    numberOfDeletedItems: number,
+    _: string,
+    bucketSize: number,
+    _: string,
+    expansionRate: number,
+    _: string,
+    maxIteration: number
+];
+export interface InfoReply {
+    size: number;
+    numberOfBuckets: number;
+    numberOfFilters: number;
+    numberOfInsertedItems: number;
+    numberOfDeletedItems: number;
+    bucketSize: number;
+    expansionRate: number;
+    maxIteration: number;
+}
+export declare function transformReply(reply: InfoRawReply): InfoReply;

+ 22 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/INFO.js

@@ -0,0 +1,22 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+exports.IS_READ_ONLY = true;
+function transformArguments(key) {
+    return ['CF.INFO', key];
+}
+exports.transformArguments = transformArguments;
+function transformReply(reply) {
+    return {
+        size: reply[1],
+        numberOfBuckets: reply[3],
+        numberOfFilters: reply[5],
+        numberOfInsertedItems: reply[7],
+        numberOfDeletedItems: reply[9],
+        bucketSize: reply[11],
+        expansionRate: reply[13],
+        maxIteration: reply[15]
+    };
+}
+exports.transformReply = transformReply;

+ 5 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/INSERT.d.ts

@@ -0,0 +1,5 @@
+import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
+import { InsertOptions } from ".";
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: string, items: string | Array<string>, options?: InsertOptions): RedisCommandArguments;
+export { transformBooleanArrayReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';

+ 11 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/INSERT.js

@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+const _1 = require(".");
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, items, options) {
+    return (0, _1.pushInsertOptions)(['CF.INSERT', key], items, options);
+}
+exports.transformArguments = transformArguments;
+var generic_transformers_1 = require("@redis/client/dist/lib/commands/generic-transformers");
+Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });

+ 5 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/INSERTNX.d.ts

@@ -0,0 +1,5 @@
+import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
+import { InsertOptions } from ".";
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: string, items: string | Array<string>, options?: InsertOptions): RedisCommandArguments;
+export { transformBooleanArrayReply as transformReply } from '@redis/client/dist/lib/commands/generic-transformers';

+ 11 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/INSERTNX.js

@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+const _1 = require(".");
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, items, options) {
+    return (0, _1.pushInsertOptions)(['CF.INSERTNX', key], items, options);
+}
+exports.transformArguments = transformArguments;
+var generic_transformers_1 = require("@redis/client/dist/lib/commands/generic-transformers");
+Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });

+ 4 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/LOADCHUNK.d.ts

@@ -0,0 +1,4 @@
+import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands';
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: string, iterator: number, chunk: RedisCommandArgument): RedisCommandArguments;
+export declare function transformReply(): 'OK';

+ 8 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/LOADCHUNK.js

@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, iterator, chunk) {
+    return ['CF.LOADCHUNK', key, iterator.toString(), chunk];
+}
+exports.transformArguments = transformArguments;

+ 9 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/RESERVE.d.ts

@@ -0,0 +1,9 @@
+export declare const FIRST_KEY_INDEX = 1;
+interface ReserveOptions {
+    BUCKETSIZE?: number;
+    MAXITERATIONS?: number;
+    EXPANSION?: number;
+}
+export declare function transformArguments(key: string, capacity: number, options?: ReserveOptions): Array<string>;
+export declare function transformReply(): 'OK';
+export {};

+ 18 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/RESERVE.js

@@ -0,0 +1,18 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, capacity, options) {
+    const args = ['CF.RESERVE', key, capacity.toString()];
+    if (options?.BUCKETSIZE) {
+        args.push('BUCKETSIZE', options.BUCKETSIZE.toString());
+    }
+    if (options?.MAXITERATIONS) {
+        args.push('MAXITERATIONS', options.MAXITERATIONS.toString());
+    }
+    if (options?.EXPANSION) {
+        args.push('EXPANSION', options.EXPANSION.toString());
+    }
+    return args;
+}
+exports.transformArguments = transformArguments;

+ 12 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/SCANDUMP.d.ts

@@ -0,0 +1,12 @@
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: string, iterator: number): Array<string>;
+type ScanDumpRawReply = [
+    iterator: number,
+    chunk: string | null
+];
+interface ScanDumpReply {
+    iterator: number;
+    chunk: string | null;
+}
+export declare function transformReply([iterator, chunk]: ScanDumpRawReply): ScanDumpReply;
+export {};

+ 15 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/SCANDUMP.js

@@ -0,0 +1,15 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, iterator) {
+    return ['CF.SCANDUMP', key, iterator.toString()];
+}
+exports.transformArguments = transformArguments;
+function transformReply([iterator, chunk]) {
+    return {
+        iterator,
+        chunk
+    };
+}
+exports.transformReply = transformReply;

+ 42 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/index.d.ts

@@ -0,0 +1,42 @@
+import * as ADD from './ADD';
+import * as ADDNX from './ADDNX';
+import * as COUNT from './COUNT';
+import * as DEL from './DEL';
+import * as EXISTS from './EXISTS';
+import * as INFO from './INFO';
+import * as INSERT from './INSERT';
+import * as INSERTNX from './INSERTNX';
+import * as LOADCHUNK from './LOADCHUNK';
+import * as RESERVE from './RESERVE';
+import * as SCANDUMP from './SCANDUMP';
+import { RedisCommandArguments } from '@redis/client/dist/lib/commands';
+declare const _default: {
+    ADD: typeof ADD;
+    add: typeof ADD;
+    ADDNX: typeof ADDNX;
+    addNX: typeof ADDNX;
+    COUNT: typeof COUNT;
+    count: typeof COUNT;
+    DEL: typeof DEL;
+    del: typeof DEL;
+    EXISTS: typeof EXISTS;
+    exists: typeof EXISTS;
+    INFO: typeof INFO;
+    info: typeof INFO;
+    INSERT: typeof INSERT;
+    insert: typeof INSERT;
+    INSERTNX: typeof INSERTNX;
+    insertNX: typeof INSERTNX;
+    LOADCHUNK: typeof LOADCHUNK;
+    loadChunk: typeof LOADCHUNK;
+    RESERVE: typeof RESERVE;
+    reserve: typeof RESERVE;
+    SCANDUMP: typeof SCANDUMP;
+    scanDump: typeof SCANDUMP;
+};
+export default _default;
+export interface InsertOptions {
+    CAPACITY?: number;
+    NOCREATE?: true;
+}
+export declare function pushInsertOptions(args: RedisCommandArguments, items: string | Array<string>, options?: InsertOptions): RedisCommandArguments;

+ 51 - 0
node_modules/@redis/bloom/dist/commands/cuckoo/index.js

@@ -0,0 +1,51 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.pushInsertOptions = void 0;
+const ADD = require("./ADD");
+const ADDNX = require("./ADDNX");
+const COUNT = require("./COUNT");
+const DEL = require("./DEL");
+const EXISTS = require("./EXISTS");
+const INFO = require("./INFO");
+const INSERT = require("./INSERT");
+const INSERTNX = require("./INSERTNX");
+const LOADCHUNK = require("./LOADCHUNK");
+const RESERVE = require("./RESERVE");
+const SCANDUMP = require("./SCANDUMP");
+const generic_transformers_1 = require("@redis/client/dist/lib/commands/generic-transformers");
+exports.default = {
+    ADD,
+    add: ADD,
+    ADDNX,
+    addNX: ADDNX,
+    COUNT,
+    count: COUNT,
+    DEL,
+    del: DEL,
+    EXISTS,
+    exists: EXISTS,
+    INFO,
+    info: INFO,
+    INSERT,
+    insert: INSERT,
+    INSERTNX,
+    insertNX: INSERTNX,
+    LOADCHUNK,
+    loadChunk: LOADCHUNK,
+    RESERVE,
+    reserve: RESERVE,
+    SCANDUMP,
+    scanDump: SCANDUMP
+};
+function pushInsertOptions(args, items, options) {
+    if (options?.CAPACITY) {
+        args.push('CAPACITY');
+        args.push(options.CAPACITY.toString());
+    }
+    if (options?.NOCREATE) {
+        args.push('NOCREATE');
+    }
+    args.push('ITEMS');
+    return (0, generic_transformers_1.pushVerdictArguments)(args, items);
+}
+exports.pushInsertOptions = pushInsertOptions;

+ 111 - 0
node_modules/@redis/bloom/dist/commands/index.d.ts

@@ -0,0 +1,111 @@
+declare const _default: {
+    bf: {
+        ADD: typeof import("./bloom/ADD");
+        add: typeof import("./bloom/ADD");
+        CARD: typeof import("./bloom/CARD");
+        card: typeof import("./bloom/CARD");
+        EXISTS: typeof import("./bloom/EXISTS");
+        exists: typeof import("./bloom/EXISTS");
+        INFO: typeof import("./bloom/INFO");
+        info: typeof import("./bloom/INFO");
+        INSERT: typeof import("./bloom/INSERT");
+        insert: typeof import("./bloom/INSERT");
+        LOADCHUNK: typeof import("./bloom/LOADCHUNK");
+        loadChunk: typeof import("./bloom/LOADCHUNK");
+        MADD: typeof import("./bloom/MADD");
+        mAdd: typeof import("./bloom/MADD");
+        MEXISTS: typeof import("./bloom/MEXISTS");
+        mExists: typeof import("./bloom/MEXISTS");
+        RESERVE: typeof import("./bloom/RESERVE");
+        reserve: typeof import("./bloom/RESERVE");
+        SCANDUMP: typeof import("./bloom/SCANDUMP");
+        scanDump: typeof import("./bloom/SCANDUMP");
+    };
+    cms: {
+        INCRBY: typeof import("./count-min-sketch/INCRBY");
+        incrBy: typeof import("./count-min-sketch/INCRBY");
+        INFO: typeof import("./count-min-sketch/INFO");
+        info: typeof import("./count-min-sketch/INFO");
+        INITBYDIM: typeof import("./count-min-sketch/INITBYDIM");
+        initByDim: typeof import("./count-min-sketch/INITBYDIM");
+        INITBYPROB: typeof import("./count-min-sketch/INITBYPROB");
+        initByProb: typeof import("./count-min-sketch/INITBYPROB");
+        MERGE: typeof import("./count-min-sketch/MERGE");
+        merge: typeof import("./count-min-sketch/MERGE");
+        QUERY: typeof import("./count-min-sketch/QUERY");
+        query: typeof import("./count-min-sketch/QUERY");
+    };
+    cf: {
+        ADD: typeof import("./cuckoo/ADD");
+        add: typeof import("./cuckoo/ADD");
+        ADDNX: typeof import("./cuckoo/ADDNX");
+        addNX: typeof import("./cuckoo/ADDNX");
+        COUNT: typeof import("./cuckoo/COUNT");
+        count: typeof import("./cuckoo/COUNT");
+        DEL: typeof import("./cuckoo/DEL");
+        del: typeof import("./cuckoo/DEL");
+        EXISTS: typeof import("./cuckoo/EXISTS");
+        exists: typeof import("./cuckoo/EXISTS");
+        INFO: typeof import("./cuckoo/INFO");
+        info: typeof import("./cuckoo/INFO");
+        INSERT: typeof import("./cuckoo/INSERT");
+        insert: typeof import("./cuckoo/INSERT");
+        INSERTNX: typeof import("./cuckoo/INSERTNX");
+        insertNX: typeof import("./cuckoo/INSERTNX");
+        LOADCHUNK: typeof import("./cuckoo/LOADCHUNK");
+        loadChunk: typeof import("./cuckoo/LOADCHUNK");
+        RESERVE: typeof import("./cuckoo/RESERVE");
+        reserve: typeof import("./cuckoo/RESERVE");
+        SCANDUMP: typeof import("./cuckoo/SCANDUMP");
+        scanDump: typeof import("./cuckoo/SCANDUMP");
+    };
+    tDigest: {
+        ADD: typeof import("./t-digest/ADD");
+        add: typeof import("./t-digest/ADD");
+        BYRANK: typeof import("./t-digest/BYRANK");
+        byRank: typeof import("./t-digest/BYRANK");
+        BYREVRANK: typeof import("./t-digest/BYREVRANK");
+        byRevRank: typeof import("./t-digest/BYREVRANK");
+        CDF: typeof import("./t-digest/CDF");
+        cdf: typeof import("./t-digest/CDF");
+        CREATE: typeof import("./t-digest/CREATE");
+        create: typeof import("./t-digest/CREATE");
+        INFO: typeof import("./t-digest/INFO");
+        info: typeof import("./t-digest/INFO");
+        MAX: typeof import("./t-digest/MAX");
+        max: typeof import("./t-digest/MAX");
+        MERGE: typeof import("./t-digest/MERGE");
+        merge: typeof import("./t-digest/MERGE");
+        MIN: typeof import("./t-digest/MIN");
+        min: typeof import("./t-digest/MIN");
+        QUANTILE: typeof import("./t-digest/QUANTILE");
+        quantile: typeof import("./t-digest/QUANTILE");
+        RANK: typeof import("./t-digest/RANK");
+        rank: typeof import("./t-digest/RANK");
+        RESET: typeof import("./t-digest/RESET");
+        reset: typeof import("./t-digest/RESET");
+        REVRANK: typeof import("./t-digest/REVRANK");
+        revRank: typeof import("./t-digest/REVRANK");
+        TRIMMED_MEAN: typeof import("./t-digest/TRIMMED_MEAN");
+        trimmedMean: typeof import("./t-digest/TRIMMED_MEAN");
+    };
+    topK: {
+        ADD: typeof import("./top-k/ADD");
+        add: typeof import("./top-k/ADD");
+        COUNT: typeof import("./top-k/COUNT");
+        count: typeof import("./top-k/COUNT");
+        INCRBY: typeof import("./top-k/INCRBY");
+        incrBy: typeof import("./top-k/INCRBY");
+        INFO: typeof import("./top-k/INFO");
+        info: typeof import("./top-k/INFO");
+        LIST_WITHCOUNT: typeof import("./top-k/LIST_WITHCOUNT");
+        listWithCount: typeof import("./top-k/LIST_WITHCOUNT");
+        LIST: typeof import("./top-k/LIST");
+        list: typeof import("./top-k/LIST");
+        QUERY: typeof import("./top-k/QUERY");
+        query: typeof import("./top-k/QUERY");
+        RESERVE: typeof import("./top-k/RESERVE");
+        reserve: typeof import("./top-k/RESERVE");
+    };
+};
+export default _default;

+ 14 - 0
node_modules/@redis/bloom/dist/commands/index.js

@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const bloom_1 = require("./bloom");
+const count_min_sketch_1 = require("./count-min-sketch");
+const cuckoo_1 = require("./cuckoo");
+const t_digest_1 = require("./t-digest");
+const top_k_1 = require("./top-k");
+exports.default = {
+    bf: bloom_1.default,
+    cms: count_min_sketch_1.default,
+    cf: cuckoo_1.default,
+    tDigest: t_digest_1.default,
+    topK: top_k_1.default
+};

+ 4 - 0
node_modules/@redis/bloom/dist/commands/t-digest/ADD.d.ts

@@ -0,0 +1,4 @@
+import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands';
+export declare const FIRST_KEY_INDEX = 1;
+export declare function transformArguments(key: RedisCommandArgument, values: Array<number>): RedisCommandArguments;
+export declare function transformReply(): 'OK';

+ 12 - 0
node_modules/@redis/bloom/dist/commands/t-digest/ADD.js

@@ -0,0 +1,12 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+function transformArguments(key, values) {
+    const args = ['TDIGEST.ADD', key];
+    for (const item of values) {
+        args.push(item.toString());
+    }
+    return args;
+}
+exports.transformArguments = transformArguments;

+ 5 - 0
node_modules/@redis/bloom/dist/commands/t-digest/BYRANK.d.ts

@@ -0,0 +1,5 @@
+import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands';
+export declare const FIRST_KEY_INDEX = 1;
+export declare const IS_READ_ONLY = true;
+export declare function transformArguments(key: RedisCommandArgument, ranks: Array<number>): RedisCommandArguments;
+export { transformDoublesReply as transformReply } from '.';

+ 15 - 0
node_modules/@redis/bloom/dist/commands/t-digest/BYRANK.js

@@ -0,0 +1,15 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+exports.IS_READ_ONLY = true;
+function transformArguments(key, ranks) {
+    const args = ['TDIGEST.BYRANK', key];
+    for (const rank of ranks) {
+        args.push(rank.toString());
+    }
+    return args;
+}
+exports.transformArguments = transformArguments;
+var _1 = require(".");
+Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return _1.transformDoublesReply; } });

+ 5 - 0
node_modules/@redis/bloom/dist/commands/t-digest/BYREVRANK.d.ts

@@ -0,0 +1,5 @@
+import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands';
+export declare const FIRST_KEY_INDEX = 1;
+export declare const IS_READ_ONLY = true;
+export declare function transformArguments(key: RedisCommandArgument, ranks: Array<number>): RedisCommandArguments;
+export { transformDoublesReply as transformReply } from '.';

+ 15 - 0
node_modules/@redis/bloom/dist/commands/t-digest/BYREVRANK.js

@@ -0,0 +1,15 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;
+exports.FIRST_KEY_INDEX = 1;
+exports.IS_READ_ONLY = true;
+function transformArguments(key, ranks) {
+    const args = ['TDIGEST.BYREVRANK', key];
+    for (const rank of ranks) {
+        args.push(rank.toString());
+    }
+    return args;
+}
+exports.transformArguments = transformArguments;
+var _1 = require(".");
+Object.defineProperty(exports, "transformReply", { enumerable: true, get: function () { return _1.transformDoublesReply; } });

+ 5 - 0
node_modules/@redis/bloom/dist/commands/t-digest/CDF.d.ts

@@ -0,0 +1,5 @@
+import { RedisCommandArgument, RedisCommandArguments } from '@redis/client/dist/lib/commands';
+export declare const FIRST_KEY_INDEX = 1;
+export declare const IS_READ_ONLY = true;
+export declare function transformArguments(key: RedisCommandArgument, values: Array<number>): RedisCommandArguments;
+export { transformDoublesReply as transformReply } from '.';

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно