@socketsecurity/cli-with-sentry 0.15.56 → 0.15.58

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.
Files changed (36) hide show
  1. package/dist/cli.js +60 -34
  2. package/dist/cli.js.map +1 -1
  3. package/dist/constants.js +3 -3
  4. package/dist/constants.js.map +1 -1
  5. package/dist/types/commands/fix/npm-fix.d.mts.map +1 -1
  6. package/dist/types/commands/fix/pnpm-fix.d.mts.map +1 -1
  7. package/dist/types/commands/scan/handle-reach-scan.d.mts +1 -1
  8. package/dist/types/commands/scan/handle-reach-scan.d.mts.map +1 -1
  9. package/dist/types/commands/scan/scan-reachability.d.mts +1 -1
  10. package/dist/types/commands/scan/scan-reachability.d.mts.map +1 -1
  11. package/dist/types/commands/threat-feed/cmd-threat-feed.d.mts.map +1 -1
  12. package/dist/types/commands/threat-feed/fetch-threat-feed.d.mts +4 -1
  13. package/dist/types/commands/threat-feed/fetch-threat-feed.d.mts.map +1 -1
  14. package/dist/types/commands/threat-feed/handle-threat-feed.d.mts +4 -1
  15. package/dist/types/commands/threat-feed/handle-threat-feed.d.mts.map +1 -1
  16. package/dist/types/utils/purl.d.mts +12 -94
  17. package/dist/types/utils/purl.d.mts.map +1 -1
  18. package/dist/types/utils/socket-package-alert.d.mts.map +1 -1
  19. package/dist/types/utils/socket-url.d.mts.map +1 -1
  20. package/dist/utils.js +2 -1
  21. package/dist/utils.js.map +1 -1
  22. package/dist/vendor.js +21 -21
  23. package/external/@coana-tech/cli/cli.mjs +2 -2
  24. package/external/@socketsecurity/registry/external/@npmcli/package-json/index.js +9 -4
  25. package/external/@socketsecurity/registry/external/@socketregistry/yocto-spinner.js +115 -132
  26. package/external/@socketsecurity/registry/external/@yarnpkg/extensions.js +18 -0
  27. package/external/@socketsecurity/registry/external/browserslist.js +662 -658
  28. package/external/@socketsecurity/registry/external/cacache.js +5 -3
  29. package/external/@socketsecurity/registry/external/libnpmpack.js +9 -4
  30. package/external/@socketsecurity/registry/external/make-fetch-happen.js +5 -3
  31. package/external/@socketsecurity/registry/external/npm-package-arg.js +4 -1
  32. package/external/@socketsecurity/registry/external/pacote.js +9 -4
  33. package/external/@socketsecurity/registry/external/validate-npm-package-name.js +4 -1
  34. package/external/@socketsecurity/registry/manifest.json +4 -4
  35. package/external/blessed-contrib/lib/widget/charts/line.js +5 -5
  36. package/package.json +8 -8
package/dist/vendor.js CHANGED
@@ -32895,7 +32895,7 @@ var isInteractiveExports = /*@__PURE__*/ requireIsInteractive();
32895
32895
  var dist$e = {};
32896
32896
 
32897
32897
  var name$2 = "@socketsecurity/sdk";
32898
- var version$5 = "1.4.41";
32898
+ var version$5 = "1.4.43";
32899
32899
  var license = "MIT";
32900
32900
  var description = "SDK for the Socket API client";
32901
32901
  var author = {
@@ -32978,36 +32978,36 @@ var scripts = {
32978
32978
  "update:deps": "npx --yes npm-check-updates"
32979
32979
  };
32980
32980
  var dependencies = {
32981
- "@socketsecurity/registry": "1.0.202"
32981
+ "@socketsecurity/registry": "1.0.205"
32982
32982
  };
32983
32983
  var devDependencies = {
32984
32984
  "@biomejs/biome": "1.9.4",
32985
32985
  "@dotenvx/dotenvx": "1.44.1",
32986
32986
  "@eslint/compat": "1.2.9",
32987
32987
  "@eslint/js": "9.28.0",
32988
- "@types/node": "22.15.29",
32989
- "@typescript-eslint/parser": "8.33.0",
32990
- "@vitest/coverage-v8": "3.1.4",
32988
+ "@types/node": "22.15.30",
32989
+ "@typescript-eslint/parser": "8.33.1",
32990
+ "@vitest/coverage-v8": "3.2.2",
32991
32991
  "del-cli": "6.0.0",
32992
32992
  eslint: "9.28.0",
32993
- "eslint-import-resolver-typescript": "4.4.2",
32994
- "eslint-plugin-import-x": "4.15.0",
32995
- "eslint-plugin-jsdoc": "50.6.17",
32996
- "eslint-plugin-n": "17.18.0",
32993
+ "eslint-import-resolver-typescript": "4.4.3",
32994
+ "eslint-plugin-import-x": "4.15.1",
32995
+ "eslint-plugin-jsdoc": "50.7.1",
32996
+ "eslint-plugin-n": "17.19.0",
32997
32997
  "eslint-plugin-sort-destructure-keys": "2.0.0",
32998
32998
  "eslint-plugin-unicorn": "56.0.1",
32999
32999
  globals: "16.2.0",
33000
33000
  husky: "9.1.7",
33001
- knip: "5.59.1",
33001
+ knip: "5.60.2",
33002
33002
  "lint-staged": "16.1.0",
33003
33003
  nock: "14.0.5",
33004
33004
  "npm-run-all2": "8.0.4",
33005
33005
  "openapi-typescript": "6.7.6",
33006
- oxlint: "0.17.0",
33006
+ oxlint: "0.18.0",
33007
33007
  "type-coverage": "2.29.7",
33008
33008
  typescript: "~5.8.3",
33009
- "typescript-eslint": "8.33.0",
33010
- vitest: "3.1.4"
33009
+ "typescript-eslint": "8.33.1",
33010
+ vitest: "3.2.2"
33011
33011
  };
33012
33012
  var overrides = {
33013
33013
  vite: "6.3.5"
@@ -58768,7 +58768,7 @@ function requireAst() {
58768
58768
  return [s, (0, unescape_js_1.unescape)(this.toString()), false, false];
58769
58769
  }
58770
58770
  // XXX abstract out this map method
58771
- let bodyDotAllowed = !repeated || allowDot || dot || false ? '' : this.#partsToRegExp(true);
58771
+ let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ? '' : this.#partsToRegExp(true);
58772
58772
  if (bodyDotAllowed === body) {
58773
58773
  bodyDotAllowed = '';
58774
58774
  }
@@ -62505,7 +62505,7 @@ function requireCommonjs$c() {
62505
62505
  const IFSOCK = 0b1100;
62506
62506
  const IFMT = 0b1111;
62507
62507
  // mask to unset low 4 bits
62508
- const IFMT_UNKNOWN = -16;
62508
+ const IFMT_UNKNOWN = ~IFMT;
62509
62509
  // set after successfully calling readdir() and getting entries.
62510
62510
  const READDIR_CALLED = 0b0000_0001_0000;
62511
62511
  // set after a successful lstat()
@@ -62808,7 +62808,7 @@ function requireCommonjs$c() {
62808
62808
  provisional: 0
62809
62809
  });
62810
62810
  this.#children.set(this, children);
62811
- this.#type &= -17;
62811
+ this.#type &= ~READDIR_CALLED;
62812
62812
  return children;
62813
62813
  }
62814
62814
  /**
@@ -77525,7 +77525,7 @@ function requireCommonjs$8() {
77525
77525
  const IFSOCK = 0b1100;
77526
77526
  const IFMT = 0b1111;
77527
77527
  // mask to unset low 4 bits
77528
- const IFMT_UNKNOWN = -16;
77528
+ const IFMT_UNKNOWN = ~IFMT;
77529
77529
  // set after successfully calling readdir() and getting entries.
77530
77530
  const READDIR_CALLED = 0b0000_0001_0000;
77531
77531
  // set after a successful lstat()
@@ -77828,7 +77828,7 @@ function requireCommonjs$8() {
77828
77828
  provisional: 0
77829
77829
  });
77830
77830
  this.#children.set(this, children);
77831
- this.#type &= -17;
77831
+ this.#type &= ~READDIR_CALLED;
77832
77832
  return children;
77833
77833
  }
77834
77834
  /**
@@ -134545,7 +134545,7 @@ function requireCommonjs$3() {
134545
134545
  const IFSOCK = 0b1100;
134546
134546
  const IFMT = 0b1111;
134547
134547
  // mask to unset low 4 bits
134548
- const IFMT_UNKNOWN = -16;
134548
+ const IFMT_UNKNOWN = ~IFMT;
134549
134549
  // set after successfully calling readdir() and getting entries.
134550
134550
  const READDIR_CALLED = 0b0000_0001_0000;
134551
134551
  // set after a successful lstat()
@@ -134848,7 +134848,7 @@ function requireCommonjs$3() {
134848
134848
  provisional: 0
134849
134849
  });
134850
134850
  this.#children.set(this, children);
134851
- this.#type &= -17;
134851
+ this.#type &= ~READDIR_CALLED;
134852
134852
  return children;
134853
134853
  }
134854
134854
  /**
@@ -164963,5 +164963,5 @@ exports.terminalLinkExports = terminalLinkExports;
164963
164963
  exports.updater = updater$1;
164964
164964
  exports.yargsParser = yargsParser;
164965
164965
  exports.yoctocolorsCjsExports = yoctocolorsCjsExports;
164966
- //# debugId=51c49058-e5c5-4c4b-b329-31681ce29a33
164966
+ //# debugId=54cac667-1a93-40c1-a094-bf9382b9516d
164967
164967
  //# sourceMappingURL=vendor.js.map
@@ -212320,7 +212320,7 @@ async function onlineScan(dependencyTree, apiKey, timeout) {
212320
212320
  }
212321
212321
 
212322
212322
  // dist/version.js
212323
- var version2 = "14.9.21";
212323
+ var version2 = "14.9.22";
212324
212324
 
212325
212325
  // ../../node_modules/.pnpm/axios@1.9.0/node_modules/axios/lib/helpers/bind.js
212326
212326
  function bind2(fn2, thisArg) {
@@ -215986,7 +215986,7 @@ var CliCore = class {
215986
215986
  }
215987
215987
  }
215988
215988
  }
215989
- if (!this.options.repoUrl && !this.options.projectName && !this.options.disableReportSubmission && !this.options.offlineDatabase) {
215989
+ if (!this.options.repoUrl && !this.options.projectName && !this.options.disableReportSubmission && !this.options.offlineDatabase && !this.options.socketMode) {
215990
215990
  throw new Error("Either --repo-url or --project-name is required for dashboard integration. Use --disable-report-submission to skip report submission.");
215991
215991
  }
215992
215992
  if ((this.options.disableReportSubmission || this.options.offlineDatabase) && !this.options.outputDir && !this.options.printReport) {
@@ -4561,7 +4561,9 @@ function requireAst() {
4561
4561
  }
4562
4562
  // XXX abstract out this map method
4563
4563
  let bodyDotAllowed =
4564
- !repeated || allowDot || dot || false ? '' : this.#partsToRegExp(true)
4564
+ !repeated || allowDot || dot || !startNoDot
4565
+ ? ''
4566
+ : this.#partsToRegExp(true)
4565
4567
  if (bodyDotAllowed === body) {
4566
4568
  bodyDotAllowed = ''
4567
4569
  }
@@ -7078,7 +7080,7 @@ function requireCommonjs$1() {
7078
7080
  const IFSOCK = 0b1100
7079
7081
  const IFMT = 0b1111
7080
7082
  // mask to unset low 4 bits
7081
- const IFMT_UNKNOWN = -16
7083
+ const IFMT_UNKNOWN = ~IFMT
7082
7084
  // set after successfully calling readdir() and getting entries.
7083
7085
  const READDIR_CALLED = 0b0000_0001_0000
7084
7086
  // set after a successful lstat()
@@ -7406,7 +7408,7 @@ function requireCommonjs$1() {
7406
7408
  provisional: 0
7407
7409
  })
7408
7410
  this.#children.set(this, children)
7409
- this.#type &= -17
7411
+ this.#type &= ~READDIR_CALLED
7410
7412
  return children
7411
7413
  }
7412
7414
  /**
@@ -14379,7 +14381,7 @@ function requireLib$5() {
14379
14381
  if (!name.length) {
14380
14382
  errors.push('name length must be greater than zero')
14381
14383
  }
14382
- if (name.match(/^\./)) {
14384
+ if (name.startsWith('.')) {
14383
14385
  errors.push('name cannot start with a period')
14384
14386
  }
14385
14387
  if (name.match(/^_/)) {
@@ -14419,6 +14421,9 @@ function requireLib$5() {
14419
14421
  if (nameMatch) {
14420
14422
  const user = nameMatch[1]
14421
14423
  const pkg = nameMatch[2]
14424
+ if (pkg.startsWith('.')) {
14425
+ errors.push('name cannot start with a period')
14426
+ }
14422
14427
  if (
14423
14428
  encodeURIComponent(user) === user &&
14424
14429
  encodeURIComponent(pkg) === pkg
@@ -196,19 +196,18 @@ function requireYoctoSpinner() {
196
196
  return _stripVTControlCharacters(string)
197
197
  }
198
198
  class YoctoSpinner {
199
- #color
200
- #currentFrame = -1
201
- #exitHandlerBound
202
199
  #frames
203
- #indention = ''
204
200
  #interval
201
+ #currentFrame = -1
202
+ #timer
203
+ #text
204
+ #stream
205
+ #color
206
+ #lines = 0
207
+ #exitHandlerBound
205
208
  #isInteractive
206
209
  #lastSpinnerFrameTime = 0
207
- #lines = 0
208
- #signal
209
- #stream
210
- #text
211
- #timer
210
+ #isSpinning = false
212
211
  constructor(options = {}) {
213
212
  const opts = {
214
213
  __proto__: null,
@@ -216,114 +215,82 @@ function requireYoctoSpinner() {
216
215
  }
217
216
  const spinner = opts.spinner ?? getDefaultSpinner()
218
217
  const stream = opts.stream ?? getProcess().stderr
219
- this.#color = opts.color ?? 'cyan'
220
- this.#exitHandlerBound = this.#exitHandler.bind(this)
221
218
  this.#frames = spinner.frames
222
- this.#interval = spinner.interval ?? getDefaultSpinner().interval
219
+ this.#interval = spinner.interval
220
+ this.#text = options.text ?? ''
221
+ this.#stream = stream ?? process.stderr
222
+ this.#color = options.color ?? 'cyan'
223
223
  this.#isInteractive = !!stream.isTTY && isProcessInteractive()
224
- this.#signal = opts.signal
225
- this.#stream = stream
226
- this.#text = opts.text ?? ''
227
- }
228
- #clearTimer() {
229
- clearInterval(this.#timer)
230
- this.#timer = undefined
224
+ this.#exitHandlerBound = this.#exitHandler.bind(this)
231
225
  }
232
- #exitHandler() {
226
+ start(text) {
227
+ if (text) {
228
+ this.#text = text
229
+ }
233
230
  if (this.isSpinning) {
234
- this.stop()
231
+ return this
235
232
  }
236
- }
237
- #hideCursor() {
233
+ this.#isSpinning = true
234
+ this.#hideCursor()
235
+ this.#render()
236
+ this.#subscribeToProcessEvents()
237
+
238
+ // Only start the timer in interactive mode
238
239
  if (this.#isInteractive) {
239
- this.#write('\u001B[?25l')
240
+ this.#timer = setInterval(() => {
241
+ this.#render()
242
+ }, this.#interval)
240
243
  }
244
+ return this
241
245
  }
242
- #lineCount(text) {
243
- const width = this.#stream.columns ?? defaultTtyColumns
244
- const lines = stripVTControlCharacters(text).split('\n')
245
- let lineCount = 0
246
- for (const line of lines) {
247
- lineCount += Math.max(1, Math.ceil(line.length / width))
248
- }
249
- return lineCount
250
- }
251
- #render() {
252
- // Ensure we only update the spinner frame at the wanted interval,
253
- // even if the frame method is called more often.
254
- const now = Date.now()
255
- if (
256
- this.#currentFrame === -1 ||
257
- now - this.#lastSpinnerFrameTime >= this.#interval
258
- ) {
259
- this.#currentFrame = (this.#currentFrame + 1) % this.#frames.length
260
- this.#lastSpinnerFrameTime = now
246
+ stop(finalText) {
247
+ if (!this.isSpinning) {
248
+ return this
261
249
  }
262
- const colors = getYoctocolors()
263
- const applyColor = colors[this.#color] ?? colors.cyan
264
- const frame = this.#frames[this.#currentFrame]
265
- let string = `${frame ? applyColor(frame) : ''}${this.#text ? ` ${this.#text}` : ''}`
266
- if (string) {
267
- if (this.#indention.length) {
268
- string = `${this.#indention}${string}`
269
- }
270
- if (!this.#isInteractive) {
271
- string += '\n'
272
- }
250
+ this.#isSpinning = false
251
+ if (this.#timer) {
252
+ clearInterval(this.#timer)
253
+ this.#timer = undefined
273
254
  }
255
+ this.#showCursor()
274
256
  this.clear()
275
- this.#write(string)
276
- if (this.#isInteractive) {
277
- this.#lines = this.#lineCount(string)
278
- }
279
- }
280
- #setTimer() {
281
- const timeout = setInterval(() => {
282
- this.#render()
283
- }, this.#interval)
284
- // Guard unref usage in case yocto-spinner is somehow built to run in a browser.
285
- // https://nodejs.org/api/timers.html#timeoutunref
286
- timeout?.unref?.()
287
- this.#timer = timeout
288
- }
289
- #showCursor() {
290
- if (this.#isInteractive) {
291
- this.#write('\u001B[?25h')
257
+ this.#unsubscribeFromProcessEvents()
258
+ if (finalText) {
259
+ this.#stream.write(`${finalText}\n`)
292
260
  }
293
- }
294
- #subscribeToExitEvents() {
295
- this.#signal?.addEventListener('abort', this.#exitHandlerBound)
296
- process.once('SIGINT', this.#exitHandlerBound)
297
- process.once('SIGTERM', this.#exitHandlerBound)
261
+ return this
298
262
  }
299
263
  #symbolStop(symbolType, text) {
300
264
  const symbols = getLogSymbols()
301
265
  return this.stop(`${symbols[symbolType]} ${text ?? this.#text}`)
302
266
  }
303
- #unsubscribeFromExitEvents() {
304
- this.#signal?.removeEventListener('abort', this.#exitHandlerBound)
305
- process.off('SIGINT', this.#exitHandlerBound)
306
- process.off('SIGTERM', this.#exitHandlerBound)
267
+ success(text) {
268
+ return this.#symbolStop('success', text)
307
269
  }
308
- #write(text) {
309
- this.#stream.write(text)
270
+ error(text) {
271
+ return this.#symbolStop('error', text)
310
272
  }
311
- get color() {
312
- return this.#color
273
+ warning(text) {
274
+ return this.#symbolStop('warning', text)
313
275
  }
314
- set color(value) {
315
- this.#color = value
316
- this.#render()
276
+ info(text) {
277
+ return this.#symbolStop('info', text)
317
278
  }
318
279
  get isSpinning() {
319
- return this.#timer !== undefined
280
+ return this.#isSpinning
320
281
  }
321
282
  get text() {
322
283
  return this.#text
323
284
  }
324
285
  set text(value) {
325
- const text = value ?? ''
326
- this.#text = typeof text === 'string' ? text : String(text)
286
+ this.#text = value ?? ''
287
+ this.#render()
288
+ }
289
+ get color() {
290
+ return this.#color
291
+ }
292
+ set color(value) {
293
+ this.#color = value
327
294
  this.#render()
328
295
  }
329
296
  clear() {
@@ -331,7 +298,7 @@ function requireYoctoSpinner() {
331
298
  return this
332
299
  }
333
300
  this.#stream.cursorTo(0)
334
- for (let index = 0; index < this.#lines; index += 1) {
301
+ for (let index = 0; index < this.#lines; index++) {
335
302
  if (index > 0) {
336
303
  this.#stream.moveCursor(0, -1)
337
304
  }
@@ -340,55 +307,71 @@ function requireYoctoSpinner() {
340
307
  this.#lines = 0
341
308
  return this
342
309
  }
343
- dedent(spaces = 2) {
344
- this.#indention = this.#indention.slice(0, -spaces)
345
- return this
346
- }
347
- error(text) {
348
- return this.#symbolStop('error', text)
349
- }
350
- indent(spaces = 2) {
351
- this.#indention += ' '.repeat(spaces)
352
- return this
353
- }
354
- info(text) {
355
- return this.#symbolStop('info', text)
310
+ #render() {
311
+ // Ensure we only update the spinner frame at the wanted interval,
312
+ // even if the frame method is called more often.
313
+ const now = Date.now()
314
+ if (
315
+ this.#currentFrame === -1 ||
316
+ now - this.#lastSpinnerFrameTime >= this.#interval
317
+ ) {
318
+ this.#currentFrame = ++this.#currentFrame % this.#frames.length
319
+ this.#lastSpinnerFrameTime = now
320
+ }
321
+ const colors = getYoctocolors()
322
+ const applyColor = colors[this.#color] ?? colors.cyan
323
+ const frame = this.#frames[this.#currentFrame]
324
+ let string = `${applyColor(frame)} ${this.#text}`
325
+ if (!this.#isInteractive) {
326
+ string += '\n'
327
+ }
328
+ this.clear()
329
+ this.#write(string)
330
+ if (this.#isInteractive) {
331
+ this.#lines = this.#lineCount(string)
332
+ }
356
333
  }
357
- resetIndent() {
358
- this.#indention = ''
359
- return this
334
+ #write(text) {
335
+ this.#stream.write(text)
360
336
  }
361
- start(text) {
362
- if (text) {
363
- this.#text = text
364
- }
365
- if (this.isSpinning) {
366
- return this
337
+ #lineCount(text) {
338
+ const width = this.#stream.columns ?? defaultTtyColumns
339
+ const lines = stripVTControlCharacters(text).split('\n')
340
+ let lineCount = 0
341
+ for (const line of lines) {
342
+ lineCount += Math.max(1, Math.ceil(line.length / width))
367
343
  }
368
- this.#hideCursor()
369
- this.#render()
370
- this.#setTimer()
371
- this.#subscribeToExitEvents()
372
- return this
344
+ return lineCount
373
345
  }
374
- stop(finalText) {
375
- if (!this.isSpinning) {
376
- return this
346
+ #hideCursor() {
347
+ if (this.#isInteractive) {
348
+ this.#write('\u001B[?25l')
377
349
  }
378
- this.#showCursor()
379
- this.clear()
380
- this.#clearTimer()
381
- this.#unsubscribeFromExitEvents()
382
- if (finalText) {
383
- this.#write(`${this.#indention}${finalText}\n`)
350
+ }
351
+ #showCursor() {
352
+ if (this.#isInteractive) {
353
+ this.#write('\u001B[?25h')
384
354
  }
385
- return this
386
355
  }
387
- success(text) {
388
- return this.#symbolStop('success', text)
356
+ #subscribeToProcessEvents() {
357
+ process.once('SIGINT', this.#exitHandlerBound)
358
+ process.once('SIGTERM', this.#exitHandlerBound)
389
359
  }
390
- warning(text) {
391
- return this.#symbolStop('warning', text)
360
+ #unsubscribeFromProcessEvents() {
361
+ process.off('SIGINT', this.#exitHandlerBound)
362
+ process.off('SIGTERM', this.#exitHandlerBound)
363
+ }
364
+ #exitHandler(signal) {
365
+ if (this.isSpinning) {
366
+ this.stop()
367
+ }
368
+
369
+ // SIGINT: 128 + 2
370
+ // SIGTERM: 128 + 15
371
+ const exitCode =
372
+ signal === 'SIGINT' ? 130 : signal === 'SIGTERM' ? 143 : 1
373
+ // eslint-disable-next-line n/no-process-exit
374
+ process.exit(exitCode)
392
375
  }
393
376
  }
394
377
  yoctoSpinner = function yoctoSpinner(options) {
@@ -1378,6 +1378,24 @@ function requireLib() {
1378
1378
  csstype: `^3.0.10`
1379
1379
  }
1380
1380
  }
1381
+ ],
1382
+ // https://github.com/fastify/fastify-type-provider-typebox/issues/114
1383
+ // https://github.com/fastify/fastify-type-provider-typebox/pull/165
1384
+ [
1385
+ `@fastify/type-provider-typebox@^5.0.0`,
1386
+ {
1387
+ peerDependencies: {
1388
+ fastify: `^5.0.0`
1389
+ }
1390
+ }
1391
+ ],
1392
+ [
1393
+ `@fastify/type-provider-typebox@^4.0.0`,
1394
+ {
1395
+ peerDependencies: {
1396
+ fastify: `^4.0.0`
1397
+ }
1398
+ }
1381
1399
  ]
1382
1400
  ]
1383
1401
  return lib