@visulima/vis 1.0.0-alpha.1 → 1.0.0-alpha.11

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 (120) hide show
  1. package/CHANGELOG.md +403 -12
  2. package/LICENSE.md +283 -0
  3. package/README.md +254 -9
  4. package/dist/bin.js +9 -146
  5. package/dist/config/index.d.ts +1818 -0
  6. package/dist/config/index.js +2 -0
  7. package/dist/generate/index.d.ts +157 -0
  8. package/dist/generate/index.js +3 -0
  9. package/dist/packem_chunks/applyDefaults.js +336 -0
  10. package/dist/packem_chunks/bin.js +9577 -0
  11. package/dist/packem_chunks/doctor-probe.js +112 -0
  12. package/dist/packem_chunks/fix.js +234 -0
  13. package/dist/packem_chunks/handler.js +99 -0
  14. package/dist/packem_chunks/handler10.js +53 -0
  15. package/dist/packem_chunks/handler11.js +32 -0
  16. package/dist/packem_chunks/handler12.js +100 -0
  17. package/dist/packem_chunks/handler13.js +25 -0
  18. package/dist/packem_chunks/handler14.js +916 -0
  19. package/dist/packem_chunks/handler15.js +206 -0
  20. package/dist/packem_chunks/handler16.js +124 -0
  21. package/dist/packem_chunks/handler17.js +13 -0
  22. package/dist/packem_chunks/handler18.js +106 -0
  23. package/dist/packem_chunks/handler19.js +19 -0
  24. package/dist/packem_chunks/handler2.js +75 -0
  25. package/dist/packem_chunks/handler20.js +29 -0
  26. package/dist/packem_chunks/handler21.js +222 -0
  27. package/dist/packem_chunks/handler22.js +237 -0
  28. package/dist/packem_chunks/handler23.js +101 -0
  29. package/dist/packem_chunks/handler24.js +110 -0
  30. package/dist/packem_chunks/handler25.js +402 -0
  31. package/dist/packem_chunks/handler26.js +13 -0
  32. package/dist/packem_chunks/handler27.js +63 -0
  33. package/dist/packem_chunks/handler28.js +34 -0
  34. package/dist/packem_chunks/handler29.js +458 -0
  35. package/dist/packem_chunks/handler3.js +95 -0
  36. package/dist/packem_chunks/handler30.js +170 -0
  37. package/dist/packem_chunks/handler31.js +530 -0
  38. package/dist/packem_chunks/handler32.js +214 -0
  39. package/dist/packem_chunks/handler33.js +119 -0
  40. package/dist/packem_chunks/handler34.js +630 -0
  41. package/dist/packem_chunks/handler35.js +283 -0
  42. package/dist/packem_chunks/handler36.js +542 -0
  43. package/dist/packem_chunks/handler37.js +762 -0
  44. package/dist/packem_chunks/handler38.js +989 -0
  45. package/dist/packem_chunks/handler39.js +574 -0
  46. package/dist/packem_chunks/handler4.js +90 -0
  47. package/dist/packem_chunks/handler40.js +1685 -0
  48. package/dist/packem_chunks/handler41.js +1088 -0
  49. package/dist/packem_chunks/handler42.js +797 -0
  50. package/dist/packem_chunks/handler43.js +2658 -0
  51. package/dist/packem_chunks/handler44.js +3886 -0
  52. package/dist/packem_chunks/handler45.js +2574 -0
  53. package/dist/packem_chunks/handler46.js +3769 -0
  54. package/dist/packem_chunks/handler47.js +1491 -0
  55. package/dist/packem_chunks/handler5.js +174 -0
  56. package/dist/packem_chunks/handler6.js +95 -0
  57. package/dist/packem_chunks/handler7.js +115 -0
  58. package/dist/packem_chunks/handler8.js +12 -0
  59. package/dist/packem_chunks/handler9.js +29 -0
  60. package/dist/packem_chunks/heal-accept.js +522 -0
  61. package/dist/packem_chunks/heal.js +673 -0
  62. package/dist/packem_chunks/index.js +873 -0
  63. package/dist/packem_chunks/loader.js +23 -0
  64. package/dist/packem_shared/VisUpdateApp-D-Yz_wvg.js +1316 -0
  65. package/dist/packem_shared/_commonjsHelpers-BqLXS_qQ.js +5 -0
  66. package/dist/packem_shared/ai-analysis-CHeB1joD.js +367 -0
  67. package/dist/packem_shared/ai-cache-Be_jexe4.js +142 -0
  68. package/dist/packem_shared/ai-fix-B9iQVcD2.js +379 -0
  69. package/dist/packem_shared/cache-directory-2qvs4goY.js +98 -0
  70. package/dist/packem_shared/catalog-BJTtyi-O.js +1371 -0
  71. package/dist/packem_shared/dependency-scan-A0KSklpG.js +188 -0
  72. package/dist/packem_shared/docker-2iZzc280.js +181 -0
  73. package/dist/packem_shared/failure-log-Cz3Z4SKL.js +100 -0
  74. package/dist/packem_shared/flakiness-goTxXuCX.js +180 -0
  75. package/dist/packem_shared/otel-DCvqCTz_.js +158 -0
  76. package/dist/packem_shared/otelPlugin-DFaLDvJf.js +3 -0
  77. package/dist/packem_shared/registry-CbqXI0rc.js +272 -0
  78. package/dist/packem_shared/run-summary-utils-PVMl4aIh.js +130 -0
  79. package/dist/packem_shared/runtime-check-Cobi3p6l.js +127 -0
  80. package/dist/packem_shared/selectors-SM69TfqC.js +194 -0
  81. package/dist/packem_shared/symbols-Ta7g2nU-.js +14 -0
  82. package/dist/packem_shared/toolchain-BdZd9eBi.js +975 -0
  83. package/dist/packem_shared/typosquats-C-bCh3PX.js +1210 -0
  84. package/dist/packem_shared/use-measured-height-CNP0vT4M.js +20 -0
  85. package/dist/packem_shared/utils-CthVdBPS.js +40 -0
  86. package/dist/packem_shared/xxh3-Ck8mXNg1.js +239 -0
  87. package/index.js +773 -0
  88. package/package.json +82 -21
  89. package/schemas/project.schema.json +420 -0
  90. package/schemas/vis-config.schema.json +501 -0
  91. package/skills/vis/SKILL.md +96 -0
  92. package/templates/buildkite-ci/.buildkite/pipeline.yml.tera +85 -0
  93. package/templates/buildkite-ci/template.yml +20 -0
  94. package/dist/ai-analysis.d.ts +0 -40
  95. package/dist/ai-cache.d.ts +0 -21
  96. package/dist/bin.d.ts +0 -1
  97. package/dist/catalog.d.ts +0 -110
  98. package/dist/commands/affected.d.ts +0 -3
  99. package/dist/commands/ai.d.ts +0 -3
  100. package/dist/commands/analyze.d.ts +0 -3
  101. package/dist/commands/check.d.ts +0 -3
  102. package/dist/commands/graph.d.ts +0 -3
  103. package/dist/commands/hook/constants.d.ts +0 -8
  104. package/dist/commands/hook/index.d.ts +0 -3
  105. package/dist/commands/hook/install.d.ts +0 -7
  106. package/dist/commands/hook/migrate.d.ts +0 -27
  107. package/dist/commands/hook/uninstall.d.ts +0 -3
  108. package/dist/commands/migrate/constants.d.ts +0 -12
  109. package/dist/commands/migrate/deps.d.ts +0 -32
  110. package/dist/commands/migrate/index.d.ts +0 -3
  111. package/dist/commands/migrate/json.d.ts +0 -20
  112. package/dist/commands/migrate/lint-staged.d.ts +0 -62
  113. package/dist/commands/migrate/types.d.ts +0 -20
  114. package/dist/commands/run.d.ts +0 -3
  115. package/dist/commands/staged.d.ts +0 -3
  116. package/dist/commands/update.d.ts +0 -3
  117. package/dist/config.d.ts +0 -40
  118. package/dist/config.js +0 -1
  119. package/dist/package-manager.d.ts +0 -23
  120. package/dist/workspace.d.ts +0 -58
@@ -0,0 +1,1210 @@
1
+ import { createRequire as __cjs_createRequire } from "node:module";
2
+
3
+ const __cjs_require = __cjs_createRequire(import.meta.url);
4
+
5
+ const __cjs_getProcess = typeof globalThis !== "undefined" && typeof globalThis.process !== "undefined" ? globalThis.process : process;
6
+
7
+ const __cjs_getBuiltinModule = (module) => {
8
+ // Check if we're in Node.js and version supports getBuiltinModule
9
+ if (typeof __cjs_getProcess !== "undefined" && __cjs_getProcess.versions && __cjs_getProcess.versions.node) {
10
+ const [major, minor] = __cjs_getProcess.versions.node.split(".").map(Number);
11
+ // Node.js 20.16.0+ and 22.3.0+
12
+ if (major > 22 || (major === 22 && minor >= 3) || (major === 20 && minor >= 16)) {
13
+ return __cjs_getProcess.getBuiltinModule(module);
14
+ }
15
+ }
16
+ // Fallback to createRequire
17
+ return __cjs_require(module);
18
+ };
19
+
20
+ const {
21
+ createInterface
22
+ } = __cjs_getBuiltinModule("node:readline");
23
+ import { red, yellow } from '@visulima/colorize';
24
+ import { isAccessibleSync, readJsonSync } from '@visulima/fs';
25
+ import { join } from '@visulima/path';
26
+ import { g as getDefaultExportFromCjs } from './_commonjsHelpers-BqLXS_qQ.js';
27
+ import { p as pail } from '../packem_chunks/bin.js';
28
+
29
+ var ajv = [
30
+ "aj",
31
+ "aju",
32
+ "av",
33
+ "avj",
34
+ "ejv",
35
+ "jav",
36
+ "jv"
37
+ ];
38
+ var angular = [
39
+ "angula",
40
+ "angular-node",
41
+ "angularjs"
42
+ ];
43
+ var autoprefixer = [
44
+ "auto-prefixer"
45
+ ];
46
+ var axios = [
47
+ "aaxios",
48
+ "aios",
49
+ "axio",
50
+ "axioos",
51
+ "axios-node",
52
+ "axioss",
53
+ "axis",
54
+ "axiso",
55
+ "axois",
56
+ "axos",
57
+ "axxios"
58
+ ];
59
+ var babel = [
60
+ "abel",
61
+ "babbel",
62
+ "babe",
63
+ "babel-js",
64
+ "babel-node",
65
+ "babl",
66
+ "bable",
67
+ "bbael",
68
+ "bebel"
69
+ ];
70
+ var bcrypt = [
71
+ "bcrpyt",
72
+ "bcrypt-node",
73
+ "brcypt",
74
+ "crypt",
75
+ "dcrypt"
76
+ ];
77
+ var bcryptjs = [
78
+ "bcryptjs-node",
79
+ "dcryptjs"
80
+ ];
81
+ var bunyan = [
82
+ "bunan",
83
+ "bunya",
84
+ "bunyan-node",
85
+ "buynan"
86
+ ];
87
+ var chai = [
88
+ "cai",
89
+ "cha",
90
+ "chaijs",
91
+ "chal",
92
+ "chi",
93
+ "chia",
94
+ "hai"
95
+ ];
96
+ var chalk = [
97
+ "cahlk",
98
+ "calk",
99
+ "cchalk",
100
+ "ch4lk",
101
+ "cha1k",
102
+ "chaalk",
103
+ "chaik",
104
+ "chak",
105
+ "chakl",
106
+ "chalk-node",
107
+ "chalkk",
108
+ "challk",
109
+ "chhalk",
110
+ "chlak",
111
+ "chlk",
112
+ "halk",
113
+ "hcalk"
114
+ ];
115
+ var cheerio = [
116
+ "cheero",
117
+ "cherio"
118
+ ];
119
+ var color = [
120
+ "c0lor",
121
+ "ccolor",
122
+ "clor",
123
+ "colo",
124
+ "coloor",
125
+ "color-js",
126
+ "colorjs",
127
+ "colorr",
128
+ "colr",
129
+ "coolor",
130
+ "coolr"
131
+ ];
132
+ var colors = [
133
+ "ccolors",
134
+ "colors-node",
135
+ "colorss",
136
+ "colorz",
137
+ "colrs",
138
+ "coolors"
139
+ ];
140
+ var commander = [
141
+ "c0mmander",
142
+ "ccommander",
143
+ "cmmander",
144
+ "cmomander",
145
+ "co-mmander",
146
+ "comamnder",
147
+ "comander",
148
+ "comm4nder",
149
+ "commaander",
150
+ "commader",
151
+ "commadner",
152
+ "commamder",
153
+ "command3r",
154
+ "commandder",
155
+ "commande",
156
+ "commandeer",
157
+ "commander-js",
158
+ "commanderr",
159
+ "commandr",
160
+ "commandre",
161
+ "commanedr",
162
+ "commaner",
163
+ "commannder",
164
+ "commender",
165
+ "commmander",
166
+ "commnader",
167
+ "commnder",
168
+ "coommander",
169
+ "ocmmander",
170
+ "ommander"
171
+ ];
172
+ var cors = [
173
+ "cor",
174
+ "corss",
175
+ "cos",
176
+ "cosr",
177
+ "cros",
178
+ "crs",
179
+ "ors"
180
+ ];
181
+ var dayjs = [
182
+ "days"
183
+ ];
184
+ var debug = [
185
+ "d3bug",
186
+ "dbeug",
187
+ "dbug",
188
+ "ddebug",
189
+ "debbug",
190
+ "debg",
191
+ "debgu",
192
+ "debu",
193
+ "debu9",
194
+ "debug-js",
195
+ "debug-node",
196
+ "debugg",
197
+ "debugjs",
198
+ "debuug",
199
+ "deebug",
200
+ "deubg",
201
+ "deug",
202
+ "ebug",
203
+ "edbug"
204
+ ];
205
+ var dotenv = [
206
+ "dot-env",
207
+ "dotenv-node",
208
+ "dotenvjs",
209
+ "dotevn"
210
+ ];
211
+ var electron = [
212
+ "3lectron",
213
+ "eectron",
214
+ "eelctron",
215
+ "eelectron",
216
+ "el3ctron",
217
+ "elcetron",
218
+ "elctron",
219
+ "elecctron",
220
+ "elecron",
221
+ "elecrton",
222
+ "electon",
223
+ "electorn",
224
+ "electr0n",
225
+ "electrn",
226
+ "electrno",
227
+ "electro",
228
+ "electrom",
229
+ "electron-node",
230
+ "electronn",
231
+ "electroon",
232
+ "electrron",
233
+ "electtron",
234
+ "eleectron",
235
+ "eletcron",
236
+ "eletron",
237
+ "ellectron",
238
+ "lectron",
239
+ "leectron"
240
+ ];
241
+ var esbuild = [
242
+ "asbuild",
243
+ "ebuild",
244
+ "esbuild-node",
245
+ "esbuildjs",
246
+ "ezbuild",
247
+ "sbuild"
248
+ ];
249
+ var eslint = [
250
+ "aslint",
251
+ "elint",
252
+ "eslint-js",
253
+ "eslint-node",
254
+ "eslit",
255
+ "ezlint",
256
+ "slint"
257
+ ];
258
+ var express = [
259
+ "eexpress",
260
+ "epress",
261
+ "epxress",
262
+ "experss",
263
+ "expess",
264
+ "exppress",
265
+ "expreess",
266
+ "expres",
267
+ "express-node",
268
+ "expressjs",
269
+ "expresss",
270
+ "exprress",
271
+ "exprses",
272
+ "exprss",
273
+ "exress",
274
+ "exrpess",
275
+ "exxpress",
276
+ "xepress",
277
+ "xpress"
278
+ ];
279
+ var fastify = [
280
+ "astify"
281
+ ];
282
+ var firebase = [
283
+ "firebasejs"
284
+ ];
285
+ var formidable = [
286
+ "form1dable"
287
+ ];
288
+ var glob = [
289
+ "glb",
290
+ "glo",
291
+ "glob-js",
292
+ "globjs",
293
+ "gob",
294
+ "golb",
295
+ "lob"
296
+ ];
297
+ var got = [
298
+ "go",
299
+ "goot",
300
+ "gotjs",
301
+ "gott",
302
+ "gt",
303
+ "gto",
304
+ "ogt",
305
+ "ot",
306
+ "qot"
307
+ ];
308
+ var helmet = [
309
+ "helmetjs",
310
+ "helnet"
311
+ ];
312
+ var hono = [
313
+ "homo",
314
+ "hon",
315
+ "hoo",
316
+ "hoon",
317
+ "ohno",
318
+ "ono"
319
+ ];
320
+ var inquirer = [
321
+ "inquire",
322
+ "inquirer-js",
323
+ "nquirer"
324
+ ];
325
+ var ioredis = [
326
+ "iredis"
327
+ ];
328
+ var jest = [
329
+ "ejst",
330
+ "est",
331
+ "jast",
332
+ "jes",
333
+ "jestjs",
334
+ "jestt",
335
+ "jet",
336
+ "jets",
337
+ "jst"
338
+ ];
339
+ var jimp = [
340
+ "imp",
341
+ "jim",
342
+ "jip",
343
+ "jmp"
344
+ ];
345
+ var joi = [
346
+ "ji",
347
+ "jio",
348
+ "jo",
349
+ "joii",
350
+ "jol",
351
+ "oi",
352
+ "oji"
353
+ ];
354
+ var jsdom = [
355
+ "jdom",
356
+ "jsdm",
357
+ "jsdo",
358
+ "jsdom-js",
359
+ "jsdon",
360
+ "jsom",
361
+ "sdom"
362
+ ];
363
+ var jsonwebtoken = [
364
+ "jsonwebtoken-js",
365
+ "jsonwebtoken-node"
366
+ ];
367
+ var koa = [
368
+ "ka",
369
+ "kao",
370
+ "ko",
371
+ "koaa",
372
+ "koajs",
373
+ "koe",
374
+ "oa",
375
+ "oka"
376
+ ];
377
+ var lodash = [
378
+ "1odash",
379
+ "iodash",
380
+ "l0dash",
381
+ "ldash",
382
+ "ldoash",
383
+ "llodash",
384
+ "lo-dash",
385
+ "loadsh",
386
+ "loash",
387
+ "lobash",
388
+ "lod4sh",
389
+ "lodaash",
390
+ "lodah",
391
+ "lodahs",
392
+ "lodas",
393
+ "lodash-node",
394
+ "lodashh",
395
+ "lodassh",
396
+ "loddash",
397
+ "lodesh",
398
+ "lodsah",
399
+ "lodsh",
400
+ "loodash",
401
+ "odash",
402
+ "oldash"
403
+ ];
404
+ var lucia = [
405
+ "luca",
406
+ "luci",
407
+ "lucie"
408
+ ];
409
+ var luxon = [
410
+ "luon",
411
+ "luxo",
412
+ "luxon-js"
413
+ ];
414
+ var micromatch = [
415
+ "imcromatch",
416
+ "mciromatch",
417
+ "micormatch",
418
+ "micrmoatch",
419
+ "micro-match",
420
+ "microamtch",
421
+ "micromacth",
422
+ "micromathc",
423
+ "micromtach",
424
+ "mircomatch"
425
+ ];
426
+ var minimatch = [
427
+ "minimath"
428
+ ];
429
+ var mocha = [
430
+ "mcha",
431
+ "mmocha",
432
+ "moca",
433
+ "moch",
434
+ "mocha-js",
435
+ "moha",
436
+ "nocha",
437
+ "ocha"
438
+ ];
439
+ var moment = [
440
+ "m0ment",
441
+ "mment",
442
+ "mmoent",
443
+ "mmoment",
444
+ "moemnt",
445
+ "moent",
446
+ "mom3nt",
447
+ "momeent",
448
+ "momemt",
449
+ "momen",
450
+ "momen7",
451
+ "momennt",
452
+ "moment-js",
453
+ "momentjs",
454
+ "momentt",
455
+ "momet",
456
+ "mometn",
457
+ "momment",
458
+ "momnet",
459
+ "momnt",
460
+ "monent",
461
+ "mooment",
462
+ "oment",
463
+ "omment"
464
+ ];
465
+ var mongoose = [
466
+ "mognoose",
467
+ "mogoose",
468
+ "mongoos",
469
+ "mongose",
470
+ "monqoose",
471
+ "moongoose"
472
+ ];
473
+ var morgan = [
474
+ "moran",
475
+ "organ"
476
+ ];
477
+ var multer = [
478
+ "muler",
479
+ "multer-js",
480
+ "muter"
481
+ ];
482
+ var mysql2 = [
483
+ "mysql"
484
+ ];
485
+ var next = [
486
+ "ext",
487
+ "mext",
488
+ "n3xt",
489
+ "naxt",
490
+ "net",
491
+ "netx",
492
+ "nex",
493
+ "next-js",
494
+ "next-node",
495
+ "nextjs",
496
+ "nxt"
497
+ ];
498
+ var nodemailer = [
499
+ "node-mailer",
500
+ "nodemailer-js"
501
+ ];
502
+ var nodemon = [
503
+ "nodemo",
504
+ "nodemonjs",
505
+ "nodmeon"
506
+ ];
507
+ var ora = [
508
+ "oar",
509
+ "or",
510
+ "ora-node",
511
+ "ore",
512
+ "ra",
513
+ "roa"
514
+ ];
515
+ var parcel = [
516
+ "arcel",
517
+ "parce",
518
+ "parceljs"
519
+ ];
520
+ var passport = [
521
+ "passport-js"
522
+ ];
523
+ var phaser = [
524
+ "phase",
525
+ "phaser-node"
526
+ ];
527
+ var pino = [
528
+ "ino",
529
+ "pimo",
530
+ "pin",
531
+ "pino-node",
532
+ "pinojs",
533
+ "pio",
534
+ "pion"
535
+ ];
536
+ var playwright = [
537
+ "playright",
538
+ "playwright-js"
539
+ ];
540
+ var postcss = [
541
+ "postcss-js",
542
+ "postcss-node",
543
+ "potscss"
544
+ ];
545
+ var prettier = [
546
+ "pettier",
547
+ "pprettier",
548
+ "pretier",
549
+ "prettierjs",
550
+ "prettierr",
551
+ "prtetier"
552
+ ];
553
+ var prisma = [
554
+ "prima",
555
+ "prism",
556
+ "prisma-js",
557
+ "prismajs",
558
+ "prizma"
559
+ ];
560
+ var puppeteer = [
561
+ "pupeteer"
562
+ ];
563
+ var ramda = [
564
+ "rada",
565
+ "rama",
566
+ "ramd",
567
+ "randa"
568
+ ];
569
+ var react = [
570
+ "eact",
571
+ "eract",
572
+ "r3act",
573
+ "raact",
574
+ "ract",
575
+ "raect",
576
+ "re4ct",
577
+ "reaact",
578
+ "reac",
579
+ "reac7",
580
+ "reacct",
581
+ "react-node",
582
+ "reactjs",
583
+ "reactt",
584
+ "reat",
585
+ "reatc",
586
+ "recat",
587
+ "rect",
588
+ "reeact",
589
+ "reect",
590
+ "rreact"
591
+ ];
592
+ var redis = [
593
+ "erdis",
594
+ "radis",
595
+ "rdis",
596
+ "redi",
597
+ "redis-js",
598
+ "redis-node",
599
+ "rediss",
600
+ "rediz",
601
+ "reds",
602
+ "reis",
603
+ "rredis"
604
+ ];
605
+ var resend = [
606
+ "resen",
607
+ "rsend"
608
+ ];
609
+ var rollup = [
610
+ "ollup",
611
+ "rollup-js",
612
+ "rollup-node"
613
+ ];
614
+ var sass = [
615
+ "ass",
616
+ "asss",
617
+ "sas",
618
+ "sass-node",
619
+ "sess",
620
+ "ssas",
621
+ "sss"
622
+ ];
623
+ var semver = [
624
+ "emver",
625
+ "seemver",
626
+ "semver-node",
627
+ "semvre",
628
+ "senver",
629
+ "sever"
630
+ ];
631
+ var sequelize = [
632
+ "sequelize-js",
633
+ "sequelize-node"
634
+ ];
635
+ var sharp = [
636
+ "harp",
637
+ "shap",
638
+ "shar",
639
+ "sharp-js",
640
+ "sharpjs"
641
+ ];
642
+ var stripe = [
643
+ "stipe",
644
+ "strip",
645
+ "stripe-node",
646
+ "tripe"
647
+ ];
648
+ var supabase = [
649
+ "supabase-js"
650
+ ];
651
+ var svelte = [
652
+ "suelte",
653
+ "svelt3",
654
+ "svelte-js",
655
+ "sveltejs",
656
+ "velte"
657
+ ];
658
+ var tailwindcss = [
659
+ "tailwindcss-js"
660
+ ];
661
+ var tauri = [
662
+ "auri",
663
+ "taui"
664
+ ];
665
+ var three = [
666
+ "hree",
667
+ "htree",
668
+ "thee",
669
+ "there",
670
+ "three-js",
671
+ "three-node",
672
+ "tree"
673
+ ];
674
+ var tsx = [
675
+ "stx",
676
+ "sx",
677
+ "ts",
678
+ "tsxx",
679
+ "ttsx",
680
+ "tx",
681
+ "txs",
682
+ "tzx"
683
+ ];
684
+ var typescript = [
685
+ "ttypescript",
686
+ "typecript",
687
+ "typescipt",
688
+ "typescript-node",
689
+ "typescriptjs",
690
+ "typescrit",
691
+ "typescritp"
692
+ ];
693
+ var underscore = [
694
+ "udnerscore",
695
+ "undercore",
696
+ "underscoer",
697
+ "underscore-node",
698
+ "underscroe",
699
+ "undersocre",
700
+ "undesrcore"
701
+ ];
702
+ var uuid = [
703
+ "uid",
704
+ "uud",
705
+ "uudi",
706
+ "uui",
707
+ "uuid-js",
708
+ "uuid-node",
709
+ "uuidjs",
710
+ "vuid"
711
+ ];
712
+ var vite = [
713
+ "ite",
714
+ "vie",
715
+ "vit",
716
+ "vita",
717
+ "vite-node",
718
+ "vitee",
719
+ "vlte",
720
+ "vte"
721
+ ];
722
+ var vitest = [
723
+ "itest",
724
+ "uitest",
725
+ "vitestjs",
726
+ "vitezt",
727
+ "vittest",
728
+ "vtest"
729
+ ];
730
+ var vue = [
731
+ "ue",
732
+ "uue",
733
+ "uve",
734
+ "ve",
735
+ "veu",
736
+ "vu",
737
+ "vu3",
738
+ "vua",
739
+ "vue-node",
740
+ "vuee",
741
+ "vuejs",
742
+ "vuue",
743
+ "vve",
744
+ "vvue"
745
+ ];
746
+ var webpack = [
747
+ "web-pack",
748
+ "weback",
749
+ "webpac",
750
+ "webpack-node",
751
+ "webpackjs",
752
+ "webpak",
753
+ "weebpack",
754
+ "wepack",
755
+ "wepback"
756
+ ];
757
+ var winston = [
758
+ "winson",
759
+ "winston-js",
760
+ "winstoon"
761
+ ];
762
+ var yup = [
763
+ "up",
764
+ "uyp",
765
+ "yp",
766
+ "yu",
767
+ "yupjs",
768
+ "yupp"
769
+ ];
770
+ var zod = [
771
+ "od",
772
+ "zd",
773
+ "zdo",
774
+ "zo",
775
+ "zob",
776
+ "zod-js",
777
+ "zodjs"
778
+ ];
779
+ const autoBlocklistData = {
780
+ ajv: ajv,
781
+ angular: angular,
782
+ autoprefixer: autoprefixer,
783
+ "aws-sdk": [
784
+ "awssdk",
785
+ "ews-sdk"
786
+ ],
787
+ axios: axios,
788
+ babel: babel,
789
+ bcrypt: bcrypt,
790
+ bcryptjs: bcryptjs,
791
+ "body-parser": [
792
+ "body-paresr",
793
+ "body-parse",
794
+ "body-parser-js",
795
+ "body_parser"
796
+ ],
797
+ bunyan: bunyan,
798
+ chai: chai,
799
+ chalk: chalk,
800
+ cheerio: cheerio,
801
+ color: color,
802
+ colors: colors,
803
+ commander: commander,
804
+ "cookie-parser": [
805
+ "cookie-parse",
806
+ "cookieparser"
807
+ ],
808
+ cors: cors,
809
+ "cross-env": [
810
+ "crossenv"
811
+ ],
812
+ "date-fns": [
813
+ "data-fns",
814
+ "date-fn"
815
+ ],
816
+ dayjs: dayjs,
817
+ debug: debug,
818
+ dotenv: dotenv,
819
+ electron: electron,
820
+ esbuild: esbuild,
821
+ eslint: eslint,
822
+ express: express,
823
+ fastify: fastify,
824
+ firebase: firebase,
825
+ formidable: formidable,
826
+ glob: glob,
827
+ got: got,
828
+ helmet: helmet,
829
+ hono: hono,
830
+ inquirer: inquirer,
831
+ ioredis: ioredis,
832
+ jest: jest,
833
+ jimp: jimp,
834
+ joi: joi,
835
+ jsdom: jsdom,
836
+ jsonwebtoken: jsonwebtoken,
837
+ koa: koa,
838
+ lodash: lodash,
839
+ lucia: lucia,
840
+ luxon: luxon,
841
+ micromatch: micromatch,
842
+ minimatch: minimatch,
843
+ mocha: mocha,
844
+ moment: moment,
845
+ mongoose: mongoose,
846
+ morgan: morgan,
847
+ multer: multer,
848
+ mysql2: mysql2,
849
+ next: next,
850
+ "node-fetch": [
851
+ "node-fecth",
852
+ "node-fethc",
853
+ "node.fetch"
854
+ ],
855
+ nodemailer: nodemailer,
856
+ nodemon: nodemon,
857
+ ora: ora,
858
+ parcel: parcel,
859
+ passport: passport,
860
+ phaser: phaser,
861
+ pino: pino,
862
+ playwright: playwright,
863
+ postcss: postcss,
864
+ prettier: prettier,
865
+ prisma: prisma,
866
+ puppeteer: puppeteer,
867
+ ramda: ramda,
868
+ react: react,
869
+ "react-dom": [
870
+ "eact-dom",
871
+ "eract-dom",
872
+ "r3act-dom",
873
+ "ract-dom",
874
+ "raect-dom",
875
+ "re4ct-dom",
876
+ "reaact-dom",
877
+ "reac-dom",
878
+ "reac7-dom",
879
+ "reacct-dom",
880
+ "react-bom",
881
+ "react-d0m",
882
+ "react-ddom",
883
+ "react-dm",
884
+ "react-dmo",
885
+ "react-do",
886
+ "react-domm",
887
+ "react-don",
888
+ "react-doom",
889
+ "react-odm",
890
+ "react-om",
891
+ "react.dom",
892
+ "reactdom",
893
+ "reactt-dom",
894
+ "reat-dom",
895
+ "reatc-dom",
896
+ "recat-dom",
897
+ "rect-dom",
898
+ "reeact-dom",
899
+ "rreact-dom"
900
+ ],
901
+ redis: redis,
902
+ resend: resend,
903
+ rollup: rollup,
904
+ sass: sass,
905
+ semver: semver,
906
+ sequelize: sequelize,
907
+ sharp: sharp,
908
+ "socket.io": [
909
+ "ocket.io",
910
+ "oscket.io",
911
+ "scket.io",
912
+ "scoket.io",
913
+ "soccket.io",
914
+ "socekt.io",
915
+ "socet.io",
916
+ "sock3t.io",
917
+ "socke.io",
918
+ "socke7.io",
919
+ "sockeet.io",
920
+ "socket.1o",
921
+ "socket.i",
922
+ "socket.iio",
923
+ "socket.ioo",
924
+ "socket.lo",
925
+ "socket.o",
926
+ "socket.oi",
927
+ "sockett.io",
928
+ "sockket.io",
929
+ "sockt.io",
930
+ "sockte.io",
931
+ "sokcet.io",
932
+ "soket.io",
933
+ "soocket.io",
934
+ "ssocket.io"
935
+ ],
936
+ stripe: stripe,
937
+ supabase: supabase,
938
+ svelte: svelte,
939
+ tailwindcss: tailwindcss,
940
+ tauri: tauri,
941
+ three: three,
942
+ "ts-node": [
943
+ "tts-node"
944
+ ],
945
+ tsx: tsx,
946
+ typescript: typescript,
947
+ underscore: underscore,
948
+ uuid: uuid,
949
+ vite: vite,
950
+ vitest: vitest,
951
+ vue: vue,
952
+ webpack: webpack,
953
+ winston: winston,
954
+ yup: yup,
955
+ zod: zod
956
+ };
957
+
958
+ var typosquatsManual;
959
+ var hasRequiredTyposquatsManual;
960
+
961
+ function requireTyposquatsManual () {
962
+ if (hasRequiredTyposquatsManual) return typosquatsManual;
963
+ hasRequiredTyposquatsManual = 1;
964
+ typosquatsManual = {
965
+ "@tanstack/start": [
966
+ "start-tanstack-app",
967
+ "tanstack",
968
+ "tanstack-app",
969
+ "tanstack-start"
970
+ ]
971
+ };
972
+ return typosquatsManual;
973
+ }
974
+
975
+ var typosquatsManualExports = /*@__PURE__*/ requireTyposquatsManual();
976
+ const manualBlocklistData = /*@__PURE__*/getDefaultExportFromCjs(typosquatsManualExports);
977
+
978
+ const SUBSTITUTIONS = {
979
+ a: ["4", "e"],
980
+ b: ["d"],
981
+ d: ["b"],
982
+ e: ["3", "a"],
983
+ g: ["9", "q"],
984
+ i: ["1", "l"],
985
+ l: ["1", "i"],
986
+ m: ["n"],
987
+ n: ["m"],
988
+ o: ["0"],
989
+ s: ["5", "z"],
990
+ t: ["7"],
991
+ u: ["v"],
992
+ v: ["u"]
993
+ };
994
+ const SCOPED_BRAND_SUFFIXES = ["app", "cli", "core", "kit", "lib", "pkg", "sdk"];
995
+ const generateVariants = (name) => {
996
+ const variants = /* @__PURE__ */ new Set();
997
+ if (name.length < 3) {
998
+ return variants;
999
+ }
1000
+ for (let i = 0; i < name.length; i++) {
1001
+ const isSeparator = name[i] === "-" || name[i] === "." || name[i] === "_";
1002
+ if (!isSeparator) {
1003
+ variants.add(name.slice(0, i) + name.slice(i + 1));
1004
+ }
1005
+ if (!isSeparator) {
1006
+ variants.add(name.slice(0, i) + name[i] + name.slice(i));
1007
+ }
1008
+ if (i < name.length - 1 && name[i] !== name[i + 1]) {
1009
+ const nextIsSeparator = name[i + 1] === "-" || name[i + 1] === "." || name[i + 1] === "_";
1010
+ if (!isSeparator && !nextIsSeparator) {
1011
+ const chars = name.split("");
1012
+ [chars[i], chars[i + 1]] = [chars[i + 1], chars[i]];
1013
+ variants.add(chars.join(""));
1014
+ }
1015
+ }
1016
+ const ch = name[i].toLowerCase();
1017
+ const subs = SUBSTITUTIONS[ch];
1018
+ if (subs) {
1019
+ for (const replacement of subs) {
1020
+ variants.add(name.slice(0, i) + replacement + name.slice(i + 1));
1021
+ }
1022
+ }
1023
+ }
1024
+ const SEP_RE = /[-._]/g;
1025
+ const hasSeparator = SEP_RE.test(name);
1026
+ if (hasSeparator) {
1027
+ variants.add(name.replaceAll(SEP_RE, ""));
1028
+ variants.add(name.replaceAll(SEP_RE, "-"));
1029
+ variants.add(name.replaceAll(SEP_RE, "."));
1030
+ variants.add(name.replaceAll(SEP_RE, "_"));
1031
+ } else if (name.length > 5) {
1032
+ for (let i = 2; i < name.length - 2; i++) {
1033
+ variants.add(`${name.slice(0, i)}-${name.slice(i)}`);
1034
+ variants.add(`${name.slice(0, i)}.${name.slice(i)}`);
1035
+ variants.add(`${name.slice(0, i)}_${name.slice(i)}`);
1036
+ }
1037
+ }
1038
+ if (!name.startsWith("@")) {
1039
+ variants.add(`${name}-js`);
1040
+ variants.add(`${name}js`);
1041
+ variants.add(`${name}-node`);
1042
+ }
1043
+ if (name.startsWith("@")) {
1044
+ const slash = name.indexOf("/");
1045
+ if (slash > 1 && slash < name.length - 1) {
1046
+ const scope = name.slice(1, slash);
1047
+ const sub = name.slice(slash + 1);
1048
+ if (scope.length >= 3) {
1049
+ variants.add(scope);
1050
+ }
1051
+ for (const sep of ["", "-", ".", "_"]) {
1052
+ variants.add(`${scope}${sep}${sub}`);
1053
+ variants.add(`${sub}${sep}${scope}`);
1054
+ }
1055
+ for (const suffix of SCOPED_BRAND_SUFFIXES) {
1056
+ variants.add(`${scope}-${suffix}`);
1057
+ variants.add(`${sub}-${scope}-${suffix}`);
1058
+ variants.add(`${suffix}-${scope}-${sub}`);
1059
+ }
1060
+ }
1061
+ }
1062
+ variants.delete(name);
1063
+ return variants;
1064
+ };
1065
+ let cachedBlocklist;
1066
+ let cachedReverseLookup;
1067
+ const loadBlocklist = () => {
1068
+ if (!cachedBlocklist) {
1069
+ const merged = {};
1070
+ for (const source of [autoBlocklistData, manualBlocklistData]) {
1071
+ for (const [legitimate, typosquats] of Object.entries(source)) {
1072
+ const bucket = merged[legitimate] ?? (merged[legitimate] = []);
1073
+ for (const typo of typosquats) {
1074
+ if (!bucket.includes(typo)) {
1075
+ bucket.push(typo);
1076
+ }
1077
+ }
1078
+ }
1079
+ }
1080
+ cachedBlocklist = merged;
1081
+ }
1082
+ return cachedBlocklist;
1083
+ };
1084
+ const getReverseLookup = () => {
1085
+ if (!cachedReverseLookup) {
1086
+ cachedReverseLookup = /* @__PURE__ */ new Map();
1087
+ for (const [legitimate, typosquats] of Object.entries(loadBlocklist())) {
1088
+ for (const typo of typosquats) {
1089
+ cachedReverseLookup.set(typo, legitimate);
1090
+ }
1091
+ }
1092
+ }
1093
+ return cachedReverseLookup;
1094
+ };
1095
+ const bareName = (packageName) => packageName.startsWith("@") ? packageName.split("/")[1] ?? packageName : packageName;
1096
+ const checkTyposquat = (packageName) => {
1097
+ const bare = bareName(packageName);
1098
+ const blocklisted = getReverseLookup().get(bare);
1099
+ if (blocklisted) {
1100
+ return { input: packageName, legitimate: blocklisted, method: "blocklist" };
1101
+ }
1102
+ for (const legitimate of Object.keys(loadBlocklist())) {
1103
+ if (generateVariants(legitimate).has(bare)) {
1104
+ return { input: packageName, legitimate, method: "heuristic" };
1105
+ }
1106
+ }
1107
+ return void 0;
1108
+ };
1109
+ const checkTyposquats = (packageNames, allowlist) => {
1110
+ const allowed = allowlist ? new Set(allowlist) : void 0;
1111
+ const matches = [];
1112
+ for (const name of packageNames) {
1113
+ if (allowed?.has(name)) {
1114
+ continue;
1115
+ }
1116
+ const match = checkTyposquat(name);
1117
+ if (match) {
1118
+ matches.push(match);
1119
+ }
1120
+ }
1121
+ return matches;
1122
+ };
1123
+ const printTyposquatWarnings = (matches, context) => {
1124
+ pail.warn("");
1125
+ pail.warn(red(`Possible typosquat${matches.length === 1 ? "" : "s"} ${context}:`));
1126
+ for (const match of matches) {
1127
+ const method = match.method === "blocklist" ? "known typosquat" : "similar name";
1128
+ pail.warn(` ${yellow("⚠")} ${red(match.input)} — did you mean ${yellow(match.legitimate)}? (${method})`);
1129
+ }
1130
+ pail.warn("");
1131
+ };
1132
+ const askConfirmation = async (question) => {
1133
+ if (!process.stdin.isTTY) {
1134
+ pail.warn("Aborting: potential typosquat detected in non-interactive mode. Use --no-typosquat-check to skip.");
1135
+ return void 0;
1136
+ }
1137
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
1138
+ const answer = await new Promise((resolve) => {
1139
+ rl.question(question, (a) => {
1140
+ resolve(a.trim().toLowerCase());
1141
+ });
1142
+ });
1143
+ rl.close();
1144
+ return answer;
1145
+ };
1146
+ const runTyposquatCheck = async (packageNames, allowlist) => {
1147
+ const matches = checkTyposquats(packageNames, allowlist);
1148
+ if (matches.length === 0) {
1149
+ return { ok: true, packages: packageNames };
1150
+ }
1151
+ printTyposquatWarnings(matches, "detected");
1152
+ const answer = await askConfirmation(
1153
+ `Use suggested package${matches.length === 1 ? "" : "s"} instead? [S]uggested / [y]es, keep original / [N]o, abort (default: N) `
1154
+ );
1155
+ if (answer === void 0) {
1156
+ return { ok: false, packages: packageNames };
1157
+ }
1158
+ if (answer === "s" || answer === "suggested") {
1159
+ const replacements = new Map(matches.map((m) => [m.input, m.legitimate]));
1160
+ const corrected = packageNames.map((name) => replacements.get(name) ?? name);
1161
+ return { ok: true, packages: corrected };
1162
+ }
1163
+ if (answer === "y" || answer === "yes") {
1164
+ return { ok: true, packages: packageNames };
1165
+ }
1166
+ return { ok: false, packages: packageNames };
1167
+ };
1168
+ const ALIAS_RE = /^(?:npm|pnpm|yarn):(.+?)(?:@.*)?$/;
1169
+ const parseAliasTarget = (value) => {
1170
+ const match = ALIAS_RE.exec(value);
1171
+ return match?.[1];
1172
+ };
1173
+ const readDepsFromPackageJson = (packageJsonPath) => {
1174
+ if (!isAccessibleSync(packageJsonPath)) {
1175
+ return [];
1176
+ }
1177
+ const pkg = readJsonSync(packageJsonPath);
1178
+ const allDeps = {
1179
+ ...pkg.dependencies,
1180
+ ...pkg.devDependencies,
1181
+ ...pkg.optionalDependencies,
1182
+ ...pkg.peerDependencies
1183
+ };
1184
+ const names = /* @__PURE__ */ new Set();
1185
+ for (const [key, value] of Object.entries(allDeps)) {
1186
+ names.add(key);
1187
+ const aliasTarget = parseAliasTarget(value);
1188
+ if (aliasTarget) {
1189
+ names.add(aliasTarget);
1190
+ }
1191
+ }
1192
+ return [...names];
1193
+ };
1194
+ const scanDepsForTyposquats = async (cwd, allowlist) => {
1195
+ const packageJsonPath = join(cwd, "package.json");
1196
+ const depNames = readDepsFromPackageJson(packageJsonPath);
1197
+ if (depNames.length === 0) {
1198
+ return true;
1199
+ }
1200
+ const matches = checkTyposquats(depNames, allowlist);
1201
+ if (matches.length === 0) {
1202
+ return true;
1203
+ }
1204
+ printTyposquatWarnings(matches, "in package.json dependencies");
1205
+ pail.warn("Fix the package name in package.json before proceeding.");
1206
+ const answer = await askConfirmation("Continue anyway? [y/N] ");
1207
+ return answer === "y" || answer === "yes";
1208
+ };
1209
+
1210
+ export { runTyposquatCheck as r, scanDepsForTyposquats as s };