modelmix 4.2.0 → 4.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # 🧬 ModelMix: Unified API for Diverse AI LLM
1
+ # 🧬 ModelMix: Reliable interface with automatic fallback for AI LLMs
2
2
 
3
3
  **ModelMix** is a versatile module that enables seamless integration of various language models from different providers through a unified interface. With ModelMix, you can effortlessly manage and utilize multiple AI models while controlling request rates to avoid provider restrictions. The module also supports the Model Context Protocol (MCP), allowing you to enhance your models with powerful capabilities like web search, code execution, and custom functions.
4
4
 
@@ -8,7 +8,7 @@ Ever found yourself wanting to integrate AI models into your projects but worrie
8
8
 
9
9
  - **Unified Interface**: Interact with multiple AI models through a single, coherent API.
10
10
  - **Request Rate Control**: Manage the rate of requests to adhere to provider limitations using Bottleneck.
11
- - **Flexible Integration**: Easily integrate popular models like OpenAI, Anthropic, Gemini, Perplexity, Groq, Together AI, Lambda, Ollama, LM Studio or custom models.
11
+ - **Flexible Integration**: Easily integrate popular models like OpenAI, Anthropic, Gemini, Perplexity, Groq, Together AI, Lambda, OpenRouter, Ollama, LM Studio or custom models.
12
12
  - **History Tracking**: Automatically logs the conversation history with model responses, allowing you to limit the number of historical messages with `max_history`.
13
13
  - **Model Fallbacks**: Automatically try different models if one fails or is unavailable.
14
14
  - **Chain Multiple Models**: Create powerful chains of models that work together, with automatic fallback if one fails.
@@ -27,6 +27,7 @@ Only the API keys you plan to use are required.
27
27
  ```plaintext
28
28
  ANTHROPIC_API_KEY="sk-ant-..."
29
29
  OPENAI_API_KEY="sk-proj-..."
30
+ OPENROUTER_API_KEY="sk-or-..."
30
31
  MINIMAX_API_KEY="your-minimax-key..."
31
32
  ...
32
33
  GEMINI_API_KEY="AIza..."
@@ -40,7 +41,7 @@ import { ModelMix } from 'modelmix';
40
41
 
41
42
  // Get structured JSON responses
42
43
  const model = ModelMix.new()
43
- .sonnet4() // Anthropic claude-sonnet-4-20250514
44
+ .sonnet45() // Anthropic claude-sonnet-4-20250514
44
45
  .addText("Name and capital of 3 South American countries.");
45
46
 
46
47
  const outputExample = { countries: [{ name: "", capital: "" }] };
@@ -58,10 +59,9 @@ const setup = {
58
59
  };
59
60
 
60
61
  const model = await ModelMix.new(setup)
61
- .sonnet4() // (main model) Anthropic claude-sonnet-4-20250514
62
- .gpt5mini() // (fallback 1) OpenAI gpt-5-mini
63
- .gemini25flash({ config: { temperature: 0 } }) // (fallback 2) Google gemini-2.5-flash
64
- .gpt5nano() // (fallback 3) OpenAI gpt-5-nano
62
+ .sonnet45() // (main model) Anthropic claude-sonnet-4-5-20250929
63
+ .gpt5mini() // (fallback 2) OpenAI gpt-5-mini
64
+ .gemini3flash({ config: { temperature: 0 } }) // (fallback 3) Google gemini-3-flash
65
65
  .grok3mini() // (fallback 4) Grok grok-3-mini
66
66
  .addText("What's your name?");
67
67
 
@@ -77,6 +77,16 @@ const ETH = ModelMix.new()
77
77
  console.log(ETH.price);
78
78
  ```
79
79
 
80
+ **This example uses providers with free quotas (OpenRouter, Groq, Cerebras) - just get the API key and you're ready to go. If one model runs out of quota, ModelMix automatically falls back to the next model in the chain.**
81
+ ```javascript
82
+ ModelMix.new()
83
+ .gptOss()
84
+ .kimiK2()
85
+ .deepseekR1()
86
+ .hermes3()
87
+ .addText('What is the capital of France?');
88
+ ```
89
+
80
90
  This pattern allows you to:
81
91
  - Chain multiple models together
82
92
  - Automatically fall back to the next model if one fails
@@ -409,6 +419,16 @@ new MixOpenAI(args = { config: {}, options: {} })
409
419
  - **config**: Specific configuration settings for OpenAI, including the `apiKey`.
410
420
  - **options**: Default options for OpenAI model instances.
411
421
 
422
+ ### MixOpenRouter Class Overview
423
+
424
+ ```javascript
425
+ new MixOpenRouter(args = { config: {}, options: {} })
426
+ ```
427
+
428
+ - **args**: Configuration object with `config` and `options` properties.
429
+ - **config**: Specific configuration settings for OpenRouter, including the `apiKey`.
430
+ - **options**: Default options for OpenRouter model instances.
431
+
412
432
  ### MixAnthropic Class Overview
413
433
 
414
434
  ```javascript
package/demo/demo.js CHANGED
@@ -27,8 +27,8 @@ const pplxSettings = {
27
27
  mmix.replace({ '{name}': 'ALF' });
28
28
 
29
29
  console.log("\n" + '--------| gpt51() |--------');
30
- const opt = { reasoning_effort: 'none', verbosity: 'low' };
31
- const gpt = mmix.gpt51(opt).addText("Have you ever eaten a {animal}?");
30
+ const gptArgs = { options: { reasoning_effort: "none", verbosity: "low" } };
31
+ const gpt = mmix.gpt51(gptArgs).addText("Have you ever eaten a {animal}?");
32
32
  gpt.replace({ '{animal}': 'cat' });
33
33
  await gpt.json({ time: '24:00:00', message: 'Hello' }, { time: 'Time in format HH:MM:SS' });
34
34
 
package/demo/fireworks.js CHANGED
@@ -6,6 +6,7 @@ async function main() {
6
6
  const ai = ModelMix.new();
7
7
 
8
8
  const response = await ai
9
+ .GLM46()
9
10
  .deepseekV32()
10
11
  .GLM47()
11
12
  .addText('What is the capital of France?')
package/demo/free.js ADDED
@@ -0,0 +1,14 @@
1
+ process.loadEnvFile();
2
+ import { ModelMix } from '../index.js';
3
+
4
+ const ai = ModelMix.new({ config: { debug: true } })
5
+ .gptOss()
6
+ .kimiK2()
7
+ .deepseekR1()
8
+ .hermes3()
9
+ .addText('What is the capital of France?');
10
+
11
+ const response = await ai.message();
12
+ console.log('Response from Claude via OpenRouter:', response);
13
+
14
+
package/demo/gpt51.js CHANGED
@@ -8,14 +8,9 @@ const mmix = new ModelMix({
8
8
  });
9
9
 
10
10
  console.log("\n" + '--------| gpt51() |--------');
11
- const gpt = mmix.gpt51({
12
- config: {
13
- reasoning: {
14
- effort: "low",
15
- summary: "auto"
16
- }
17
- }
18
- });
11
+
12
+ const gptArgs = { options: { reasoning_effort: "none", verbosity: "low" } };
13
+ const gpt = mmix.gpt51(gptArgs);
19
14
 
20
15
  gpt.addText("Explain quantum entanglement in simple terms.");
21
16
  const response = await gpt.message();
@@ -93,7 +93,7 @@ async function contentGenerator() {
93
93
  console.log('\n=== Content Generator ===');
94
94
 
95
95
  const mmix = ModelMix.new({ config: { debug: true, max_history: 1 } })
96
- .gemini25flash()
96
+ .gemini3flash()
97
97
  .setSystem('You are a creative assistant that can generate different types of content.');
98
98
 
99
99
  // Tool for generating passwords
@@ -10,6 +10,8 @@
10
10
  "license": "ISC",
11
11
  "dependencies": {
12
12
  "@anthropic-ai/sdk": "^0.20.9",
13
+ "dotenv": "^17.2.3",
14
+ "isolated-vm": "^6.0.2",
13
15
  "lemonlog": "^1.1.4"
14
16
  }
15
17
  },
@@ -82,6 +84,67 @@
82
84
  "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
83
85
  "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
84
86
  },
87
+ "node_modules/base64-js": {
88
+ "version": "1.5.1",
89
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
90
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
91
+ "funding": [
92
+ {
93
+ "type": "github",
94
+ "url": "https://github.com/sponsors/feross"
95
+ },
96
+ {
97
+ "type": "patreon",
98
+ "url": "https://www.patreon.com/feross"
99
+ },
100
+ {
101
+ "type": "consulting",
102
+ "url": "https://feross.org/support"
103
+ }
104
+ ],
105
+ "license": "MIT"
106
+ },
107
+ "node_modules/bl": {
108
+ "version": "4.1.0",
109
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
110
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
111
+ "license": "MIT",
112
+ "dependencies": {
113
+ "buffer": "^5.5.0",
114
+ "inherits": "^2.0.4",
115
+ "readable-stream": "^3.4.0"
116
+ }
117
+ },
118
+ "node_modules/buffer": {
119
+ "version": "5.7.1",
120
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
121
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
122
+ "funding": [
123
+ {
124
+ "type": "github",
125
+ "url": "https://github.com/sponsors/feross"
126
+ },
127
+ {
128
+ "type": "patreon",
129
+ "url": "https://www.patreon.com/feross"
130
+ },
131
+ {
132
+ "type": "consulting",
133
+ "url": "https://feross.org/support"
134
+ }
135
+ ],
136
+ "license": "MIT",
137
+ "dependencies": {
138
+ "base64-js": "^1.3.1",
139
+ "ieee754": "^1.1.13"
140
+ }
141
+ },
142
+ "node_modules/chownr": {
143
+ "version": "1.1.4",
144
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
145
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
146
+ "license": "ISC"
147
+ },
85
148
  "node_modules/combined-stream": {
86
149
  "version": "1.0.8",
87
150
  "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -110,6 +173,30 @@
110
173
  }
111
174
  }
112
175
  },
176
+ "node_modules/decompress-response": {
177
+ "version": "6.0.0",
178
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
179
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
180
+ "license": "MIT",
181
+ "dependencies": {
182
+ "mimic-response": "^3.1.0"
183
+ },
184
+ "engines": {
185
+ "node": ">=10"
186
+ },
187
+ "funding": {
188
+ "url": "https://github.com/sponsors/sindresorhus"
189
+ }
190
+ },
191
+ "node_modules/deep-extend": {
192
+ "version": "0.6.0",
193
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
194
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
195
+ "license": "MIT",
196
+ "engines": {
197
+ "node": ">=4.0.0"
198
+ }
199
+ },
113
200
  "node_modules/delayed-stream": {
114
201
  "version": "1.0.0",
115
202
  "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -118,6 +205,36 @@
118
205
  "node": ">=0.4.0"
119
206
  }
120
207
  },
208
+ "node_modules/detect-libc": {
209
+ "version": "2.1.2",
210
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
211
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
212
+ "license": "Apache-2.0",
213
+ "engines": {
214
+ "node": ">=8"
215
+ }
216
+ },
217
+ "node_modules/dotenv": {
218
+ "version": "17.2.3",
219
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz",
220
+ "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==",
221
+ "license": "BSD-2-Clause",
222
+ "engines": {
223
+ "node": ">=12"
224
+ },
225
+ "funding": {
226
+ "url": "https://dotenvx.com"
227
+ }
228
+ },
229
+ "node_modules/end-of-stream": {
230
+ "version": "1.4.5",
231
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
232
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
233
+ "license": "MIT",
234
+ "dependencies": {
235
+ "once": "^1.4.0"
236
+ }
237
+ },
121
238
  "node_modules/event-target-shim": {
122
239
  "version": "5.0.1",
123
240
  "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
@@ -126,6 +243,15 @@
126
243
  "node": ">=6"
127
244
  }
128
245
  },
246
+ "node_modules/expand-template": {
247
+ "version": "2.0.3",
248
+ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
249
+ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
250
+ "license": "(MIT OR WTFPL)",
251
+ "engines": {
252
+ "node": ">=6"
253
+ }
254
+ },
129
255
  "node_modules/form-data": {
130
256
  "version": "4.0.0",
131
257
  "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
@@ -164,6 +290,18 @@
164
290
  "node": ">= 14"
165
291
  }
166
292
  },
293
+ "node_modules/fs-constants": {
294
+ "version": "1.0.0",
295
+ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
296
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
297
+ "license": "MIT"
298
+ },
299
+ "node_modules/github-from-package": {
300
+ "version": "0.0.0",
301
+ "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
302
+ "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
303
+ "license": "MIT"
304
+ },
167
305
  "node_modules/humanize-ms": {
168
306
  "version": "1.2.1",
169
307
  "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
@@ -172,6 +310,51 @@
172
310
  "ms": "^2.0.0"
173
311
  }
174
312
  },
313
+ "node_modules/ieee754": {
314
+ "version": "1.2.1",
315
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
316
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
317
+ "funding": [
318
+ {
319
+ "type": "github",
320
+ "url": "https://github.com/sponsors/feross"
321
+ },
322
+ {
323
+ "type": "patreon",
324
+ "url": "https://www.patreon.com/feross"
325
+ },
326
+ {
327
+ "type": "consulting",
328
+ "url": "https://feross.org/support"
329
+ }
330
+ ],
331
+ "license": "BSD-3-Clause"
332
+ },
333
+ "node_modules/inherits": {
334
+ "version": "2.0.4",
335
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
336
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
337
+ "license": "ISC"
338
+ },
339
+ "node_modules/ini": {
340
+ "version": "1.3.8",
341
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
342
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
343
+ "license": "ISC"
344
+ },
345
+ "node_modules/isolated-vm": {
346
+ "version": "6.0.2",
347
+ "resolved": "https://registry.npmjs.org/isolated-vm/-/isolated-vm-6.0.2.tgz",
348
+ "integrity": "sha512-Qw6AJuagG/VJuh2AIcSWmQPsAArti/L+lKhjXU+lyhYkbt3J57XZr+ZjgfTnOr4NJcY1r3f8f0eePS7MRGp+pg==",
349
+ "hasInstallScript": true,
350
+ "license": "ISC",
351
+ "dependencies": {
352
+ "prebuild-install": "^7.1.3"
353
+ },
354
+ "engines": {
355
+ "node": ">=22.0.0"
356
+ }
357
+ },
175
358
  "node_modules/lemonlog": {
176
359
  "version": "1.1.4",
177
360
  "resolved": "https://registry.npmjs.org/lemonlog/-/lemonlog-1.1.4.tgz",
@@ -200,11 +383,56 @@
200
383
  "node": ">= 0.6"
201
384
  }
202
385
  },
386
+ "node_modules/mimic-response": {
387
+ "version": "3.1.0",
388
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
389
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
390
+ "license": "MIT",
391
+ "engines": {
392
+ "node": ">=10"
393
+ },
394
+ "funding": {
395
+ "url": "https://github.com/sponsors/sindresorhus"
396
+ }
397
+ },
398
+ "node_modules/minimist": {
399
+ "version": "1.2.8",
400
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
401
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
402
+ "license": "MIT",
403
+ "funding": {
404
+ "url": "https://github.com/sponsors/ljharb"
405
+ }
406
+ },
407
+ "node_modules/mkdirp-classic": {
408
+ "version": "0.5.3",
409
+ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
410
+ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
411
+ "license": "MIT"
412
+ },
203
413
  "node_modules/ms": {
204
414
  "version": "2.1.3",
205
415
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
206
416
  "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
207
417
  },
418
+ "node_modules/napi-build-utils": {
419
+ "version": "2.0.0",
420
+ "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz",
421
+ "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==",
422
+ "license": "MIT"
423
+ },
424
+ "node_modules/node-abi": {
425
+ "version": "3.85.0",
426
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.85.0.tgz",
427
+ "integrity": "sha512-zsFhmbkAzwhTft6nd3VxcG0cvJsT70rL+BIGHWVq5fi6MwGrHwzqKaxXE+Hl2GmnGItnDKPPkO5/LQqjVkIdFg==",
428
+ "license": "MIT",
429
+ "dependencies": {
430
+ "semver": "^7.3.5"
431
+ },
432
+ "engines": {
433
+ "node": ">=10"
434
+ }
435
+ },
208
436
  "node_modules/node-domexception": {
209
437
  "version": "1.0.0",
210
438
  "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
@@ -242,16 +470,231 @@
242
470
  }
243
471
  }
244
472
  },
473
+ "node_modules/once": {
474
+ "version": "1.4.0",
475
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
476
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
477
+ "license": "ISC",
478
+ "dependencies": {
479
+ "wrappy": "1"
480
+ }
481
+ },
482
+ "node_modules/prebuild-install": {
483
+ "version": "7.1.3",
484
+ "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz",
485
+ "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==",
486
+ "license": "MIT",
487
+ "dependencies": {
488
+ "detect-libc": "^2.0.0",
489
+ "expand-template": "^2.0.3",
490
+ "github-from-package": "0.0.0",
491
+ "minimist": "^1.2.3",
492
+ "mkdirp-classic": "^0.5.3",
493
+ "napi-build-utils": "^2.0.0",
494
+ "node-abi": "^3.3.0",
495
+ "pump": "^3.0.0",
496
+ "rc": "^1.2.7",
497
+ "simple-get": "^4.0.0",
498
+ "tar-fs": "^2.0.0",
499
+ "tunnel-agent": "^0.6.0"
500
+ },
501
+ "bin": {
502
+ "prebuild-install": "bin.js"
503
+ },
504
+ "engines": {
505
+ "node": ">=10"
506
+ }
507
+ },
508
+ "node_modules/pump": {
509
+ "version": "3.0.3",
510
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz",
511
+ "integrity": "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==",
512
+ "license": "MIT",
513
+ "dependencies": {
514
+ "end-of-stream": "^1.1.0",
515
+ "once": "^1.3.1"
516
+ }
517
+ },
518
+ "node_modules/rc": {
519
+ "version": "1.2.8",
520
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
521
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
522
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
523
+ "dependencies": {
524
+ "deep-extend": "^0.6.0",
525
+ "ini": "~1.3.0",
526
+ "minimist": "^1.2.0",
527
+ "strip-json-comments": "~2.0.1"
528
+ },
529
+ "bin": {
530
+ "rc": "cli.js"
531
+ }
532
+ },
533
+ "node_modules/readable-stream": {
534
+ "version": "3.6.2",
535
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
536
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
537
+ "license": "MIT",
538
+ "dependencies": {
539
+ "inherits": "^2.0.3",
540
+ "string_decoder": "^1.1.1",
541
+ "util-deprecate": "^1.0.1"
542
+ },
543
+ "engines": {
544
+ "node": ">= 6"
545
+ }
546
+ },
547
+ "node_modules/safe-buffer": {
548
+ "version": "5.2.1",
549
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
550
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
551
+ "funding": [
552
+ {
553
+ "type": "github",
554
+ "url": "https://github.com/sponsors/feross"
555
+ },
556
+ {
557
+ "type": "patreon",
558
+ "url": "https://www.patreon.com/feross"
559
+ },
560
+ {
561
+ "type": "consulting",
562
+ "url": "https://feross.org/support"
563
+ }
564
+ ],
565
+ "license": "MIT"
566
+ },
567
+ "node_modules/semver": {
568
+ "version": "7.7.3",
569
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
570
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
571
+ "license": "ISC",
572
+ "bin": {
573
+ "semver": "bin/semver.js"
574
+ },
575
+ "engines": {
576
+ "node": ">=10"
577
+ }
578
+ },
579
+ "node_modules/simple-concat": {
580
+ "version": "1.0.1",
581
+ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
582
+ "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
583
+ "funding": [
584
+ {
585
+ "type": "github",
586
+ "url": "https://github.com/sponsors/feross"
587
+ },
588
+ {
589
+ "type": "patreon",
590
+ "url": "https://www.patreon.com/feross"
591
+ },
592
+ {
593
+ "type": "consulting",
594
+ "url": "https://feross.org/support"
595
+ }
596
+ ],
597
+ "license": "MIT"
598
+ },
599
+ "node_modules/simple-get": {
600
+ "version": "4.0.1",
601
+ "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
602
+ "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
603
+ "funding": [
604
+ {
605
+ "type": "github",
606
+ "url": "https://github.com/sponsors/feross"
607
+ },
608
+ {
609
+ "type": "patreon",
610
+ "url": "https://www.patreon.com/feross"
611
+ },
612
+ {
613
+ "type": "consulting",
614
+ "url": "https://feross.org/support"
615
+ }
616
+ ],
617
+ "license": "MIT",
618
+ "dependencies": {
619
+ "decompress-response": "^6.0.0",
620
+ "once": "^1.3.1",
621
+ "simple-concat": "^1.0.0"
622
+ }
623
+ },
624
+ "node_modules/string_decoder": {
625
+ "version": "1.3.0",
626
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
627
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
628
+ "license": "MIT",
629
+ "dependencies": {
630
+ "safe-buffer": "~5.2.0"
631
+ }
632
+ },
633
+ "node_modules/strip-json-comments": {
634
+ "version": "2.0.1",
635
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
636
+ "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
637
+ "license": "MIT",
638
+ "engines": {
639
+ "node": ">=0.10.0"
640
+ }
641
+ },
642
+ "node_modules/tar-fs": {
643
+ "version": "2.1.4",
644
+ "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz",
645
+ "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==",
646
+ "license": "MIT",
647
+ "dependencies": {
648
+ "chownr": "^1.1.1",
649
+ "mkdirp-classic": "^0.5.2",
650
+ "pump": "^3.0.0",
651
+ "tar-stream": "^2.1.4"
652
+ }
653
+ },
654
+ "node_modules/tar-stream": {
655
+ "version": "2.2.0",
656
+ "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
657
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
658
+ "license": "MIT",
659
+ "dependencies": {
660
+ "bl": "^4.0.3",
661
+ "end-of-stream": "^1.4.1",
662
+ "fs-constants": "^1.0.0",
663
+ "inherits": "^2.0.3",
664
+ "readable-stream": "^3.1.1"
665
+ },
666
+ "engines": {
667
+ "node": ">=6"
668
+ }
669
+ },
245
670
  "node_modules/tr46": {
246
671
  "version": "0.0.3",
247
672
  "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
248
673
  "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
249
674
  },
675
+ "node_modules/tunnel-agent": {
676
+ "version": "0.6.0",
677
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
678
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
679
+ "license": "Apache-2.0",
680
+ "dependencies": {
681
+ "safe-buffer": "^5.0.1"
682
+ },
683
+ "engines": {
684
+ "node": "*"
685
+ }
686
+ },
250
687
  "node_modules/undici-types": {
251
688
  "version": "5.26.5",
252
689
  "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
253
690
  "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
254
691
  },
692
+ "node_modules/util-deprecate": {
693
+ "version": "1.0.2",
694
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
695
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
696
+ "license": "MIT"
697
+ },
255
698
  "node_modules/web-streams-polyfill": {
256
699
  "version": "3.3.3",
257
700
  "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
@@ -273,6 +716,12 @@
273
716
  "tr46": "~0.0.3",
274
717
  "webidl-conversions": "^3.0.0"
275
718
  }
719
+ },
720
+ "node_modules/wrappy": {
721
+ "version": "1.0.2",
722
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
723
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
724
+ "license": "ISC"
276
725
  }
277
726
  }
278
727
  }