guardrail-security 1.0.0

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 (95) hide show
  1. package/dist/attack-surface/analyzer.d.ts +50 -0
  2. package/dist/attack-surface/analyzer.d.ts.map +1 -0
  3. package/dist/attack-surface/analyzer.js +83 -0
  4. package/dist/attack-surface/index.d.ts +5 -0
  5. package/dist/attack-surface/index.d.ts.map +1 -0
  6. package/dist/attack-surface/index.js +20 -0
  7. package/dist/index.d.ts +15 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +33 -0
  10. package/dist/languages/index.d.ts +21 -0
  11. package/dist/languages/index.d.ts.map +1 -0
  12. package/dist/languages/index.js +78 -0
  13. package/dist/languages/java-analyzer.d.ts +72 -0
  14. package/dist/languages/java-analyzer.d.ts.map +1 -0
  15. package/dist/languages/java-analyzer.js +417 -0
  16. package/dist/languages/python-analyzer.d.ts +70 -0
  17. package/dist/languages/python-analyzer.d.ts.map +1 -0
  18. package/dist/languages/python-analyzer.js +425 -0
  19. package/dist/license/compatibility-matrix.d.ts +28 -0
  20. package/dist/license/compatibility-matrix.d.ts.map +1 -0
  21. package/dist/license/compatibility-matrix.js +323 -0
  22. package/dist/license/engine.d.ts +77 -0
  23. package/dist/license/engine.d.ts.map +1 -0
  24. package/dist/license/engine.js +264 -0
  25. package/dist/license/index.d.ts +6 -0
  26. package/dist/license/index.d.ts.map +1 -0
  27. package/dist/license/index.js +21 -0
  28. package/dist/sbom/generator.d.ts +108 -0
  29. package/dist/sbom/generator.d.ts.map +1 -0
  30. package/dist/sbom/generator.js +271 -0
  31. package/dist/sbom/index.d.ts +5 -0
  32. package/dist/sbom/index.d.ts.map +1 -0
  33. package/dist/sbom/index.js +20 -0
  34. package/dist/secrets/guardian.d.ts +113 -0
  35. package/dist/secrets/guardian.d.ts.map +1 -0
  36. package/dist/secrets/guardian.js +334 -0
  37. package/dist/secrets/index.d.ts +10 -0
  38. package/dist/secrets/index.d.ts.map +1 -0
  39. package/dist/secrets/index.js +30 -0
  40. package/dist/secrets/patterns.d.ts +42 -0
  41. package/dist/secrets/patterns.d.ts.map +1 -0
  42. package/dist/secrets/patterns.js +165 -0
  43. package/dist/secrets/pre-commit.d.ts +39 -0
  44. package/dist/secrets/pre-commit.d.ts.map +1 -0
  45. package/dist/secrets/pre-commit.js +127 -0
  46. package/dist/secrets/vault-integration.d.ts +83 -0
  47. package/dist/secrets/vault-integration.d.ts.map +1 -0
  48. package/dist/secrets/vault-integration.js +295 -0
  49. package/dist/secrets/vault-providers.d.ts +110 -0
  50. package/dist/secrets/vault-providers.d.ts.map +1 -0
  51. package/dist/secrets/vault-providers.js +417 -0
  52. package/dist/supply-chain/detector.d.ts +80 -0
  53. package/dist/supply-chain/detector.d.ts.map +1 -0
  54. package/dist/supply-chain/detector.js +168 -0
  55. package/dist/supply-chain/index.d.ts +11 -0
  56. package/dist/supply-chain/index.d.ts.map +1 -0
  57. package/dist/supply-chain/index.js +26 -0
  58. package/dist/supply-chain/malicious-db.d.ts +41 -0
  59. package/dist/supply-chain/malicious-db.d.ts.map +1 -0
  60. package/dist/supply-chain/malicious-db.js +82 -0
  61. package/dist/supply-chain/script-analyzer.d.ts +54 -0
  62. package/dist/supply-chain/script-analyzer.d.ts.map +1 -0
  63. package/dist/supply-chain/script-analyzer.js +160 -0
  64. package/dist/supply-chain/typosquat.d.ts +58 -0
  65. package/dist/supply-chain/typosquat.d.ts.map +1 -0
  66. package/dist/supply-chain/typosquat.js +257 -0
  67. package/dist/supply-chain/vulnerability-db.d.ts +114 -0
  68. package/dist/supply-chain/vulnerability-db.d.ts.map +1 -0
  69. package/dist/supply-chain/vulnerability-db.js +310 -0
  70. package/package.json +34 -0
  71. package/src/__tests__/license/engine.test.ts +250 -0
  72. package/src/__tests__/supply-chain/typosquat.test.ts +191 -0
  73. package/src/attack-surface/analyzer.ts +152 -0
  74. package/src/attack-surface/index.ts +5 -0
  75. package/src/index.ts +21 -0
  76. package/src/languages/index.ts +91 -0
  77. package/src/languages/java-analyzer.ts +490 -0
  78. package/src/languages/python-analyzer.ts +498 -0
  79. package/src/license/compatibility-matrix.ts +366 -0
  80. package/src/license/engine.ts +345 -0
  81. package/src/license/index.ts +6 -0
  82. package/src/sbom/generator.ts +355 -0
  83. package/src/sbom/index.ts +5 -0
  84. package/src/secrets/guardian.ts +448 -0
  85. package/src/secrets/index.ts +10 -0
  86. package/src/secrets/patterns.ts +186 -0
  87. package/src/secrets/pre-commit.ts +158 -0
  88. package/src/secrets/vault-integration.ts +360 -0
  89. package/src/secrets/vault-providers.ts +446 -0
  90. package/src/supply-chain/detector.ts +252 -0
  91. package/src/supply-chain/index.ts +11 -0
  92. package/src/supply-chain/malicious-db.ts +103 -0
  93. package/src/supply-chain/script-analyzer.ts +194 -0
  94. package/src/supply-chain/typosquat.ts +302 -0
  95. package/src/supply-chain/vulnerability-db.ts +386 -0
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ /**
3
+ * Supply Chain Attack Detection
4
+ *
5
+ * Detects typosquatting, malicious packages, and generates SBOMs
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ __exportStar(require("./detector"), exports);
23
+ __exportStar(require("./typosquat"), exports);
24
+ __exportStar(require("./malicious-db"), exports);
25
+ __exportStar(require("./script-analyzer"), exports);
26
+ __exportStar(require("./vulnerability-db"), exports);
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Malicious Package Database
3
+ *
4
+ * Checks packages against known malicious packages
5
+ */
6
+ export interface MaliciousPackageInfo {
7
+ name: string;
8
+ version?: string;
9
+ reason: string;
10
+ severity: 'low' | 'medium' | 'high' | 'critical';
11
+ cve?: string;
12
+ reported: Date;
13
+ }
14
+ export declare class MaliciousPackageDB {
15
+ private maliciousPackages;
16
+ constructor();
17
+ /**
18
+ * Check if package is known to be malicious
19
+ */
20
+ checkPackage(name: string, version: string): Promise<{
21
+ isMalicious: boolean;
22
+ matches: MaliciousPackageInfo[];
23
+ }>;
24
+ /**
25
+ * Load malicious packages database
26
+ */
27
+ private loadDatabase;
28
+ /**
29
+ * Update database from external sources
30
+ */
31
+ updateDatabase(): Promise<{
32
+ added: number;
33
+ updated: number;
34
+ }>;
35
+ /**
36
+ * Add custom malicious package
37
+ */
38
+ addMaliciousPackage(info: MaliciousPackageInfo): void;
39
+ }
40
+ export declare const maliciousPackageDB: MaliciousPackageDB;
41
+ //# sourceMappingURL=malicious-db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"malicious-db.d.ts","sourceRoot":"","sources":["../../src/supply-chain/malicious-db.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,IAAI,CAAC;CAChB;AAaD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,iBAAiB,CAAkD;;IAM3E;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QACzD,WAAW,EAAE,OAAO,CAAC;QACrB,OAAO,EAAE,oBAAoB,EAAE,CAAC;KACjC,CAAC;IAyBF;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAWnE;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI;CAMtD;AAGD,eAAO,MAAM,kBAAkB,oBAA2B,CAAC"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ /**
3
+ * Malicious Package Database
4
+ *
5
+ * Checks packages against known malicious packages
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.maliciousPackageDB = exports.MaliciousPackageDB = void 0;
9
+ /**
10
+ * Known malicious packages (this would be updated regularly from external sources)
11
+ */
12
+ const KNOWN_MALICIOUS = [
13
+ // Example entries - in production, this would be fetched from:
14
+ // - npm security advisories
15
+ // - Snyk vulnerability database
16
+ // - GitHub Advisory Database
17
+ // - Custom threat intelligence feeds
18
+ ];
19
+ class MaliciousPackageDB {
20
+ maliciousPackages = new Map();
21
+ constructor() {
22
+ this.loadDatabase();
23
+ }
24
+ /**
25
+ * Check if package is known to be malicious
26
+ */
27
+ async checkPackage(name, version) {
28
+ const matches = [];
29
+ // Check exact name match
30
+ const nameMatches = this.maliciousPackages.get(name) || [];
31
+ for (const match of nameMatches) {
32
+ // If no version specified in DB, flag all versions
33
+ if (!match.version) {
34
+ matches.push(match);
35
+ continue;
36
+ }
37
+ // Check version match
38
+ if (match.version === version || match.version === '*') {
39
+ matches.push(match);
40
+ }
41
+ }
42
+ return {
43
+ isMalicious: matches.length > 0,
44
+ matches,
45
+ };
46
+ }
47
+ /**
48
+ * Load malicious packages database
49
+ */
50
+ loadDatabase() {
51
+ for (const pkg of KNOWN_MALICIOUS) {
52
+ if (!this.maliciousPackages.has(pkg.name)) {
53
+ this.maliciousPackages.set(pkg.name, []);
54
+ }
55
+ this.maliciousPackages.get(pkg.name).push(pkg);
56
+ }
57
+ }
58
+ /**
59
+ * Update database from external sources
60
+ */
61
+ async updateDatabase() {
62
+ // In production, this would:
63
+ // 1. Fetch from npm security advisories API
64
+ // 2. Fetch from Snyk API
65
+ // 3. Fetch from GitHub Advisory Database
66
+ // 4. Merge with existing database
67
+ // 5. Return statistics
68
+ return { added: 0, updated: 0 };
69
+ }
70
+ /**
71
+ * Add custom malicious package
72
+ */
73
+ addMaliciousPackage(info) {
74
+ if (!this.maliciousPackages.has(info.name)) {
75
+ this.maliciousPackages.set(info.name, []);
76
+ }
77
+ this.maliciousPackages.get(info.name).push(info);
78
+ }
79
+ }
80
+ exports.MaliciousPackageDB = MaliciousPackageDB;
81
+ // Export singleton
82
+ exports.maliciousPackageDB = new MaliciousPackageDB();
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Script Analyzer
3
+ *
4
+ * Analyzes package.json scripts for suspicious behavior
5
+ */
6
+ export interface ScriptAnalysisResult {
7
+ scriptName: string;
8
+ scriptContent: string;
9
+ isSuspicious: boolean;
10
+ threats: ScriptThreat[];
11
+ riskScore: number;
12
+ }
13
+ export interface ScriptThreat {
14
+ type: 'data_exfiltration' | 'crypto_mining' | 'backdoor' | 'malicious_download' | 'privilege_escalation';
15
+ pattern: string;
16
+ severity: 'low' | 'medium' | 'high' | 'critical';
17
+ description: string;
18
+ }
19
+ export declare class ScriptAnalyzer {
20
+ /**
21
+ * Analyze package.json scripts
22
+ */
23
+ analyzeScripts(_packageName: string, _version: string): Promise<ScriptAnalysisResult[]>;
24
+ /**
25
+ * Analyze a single script
26
+ */
27
+ analyzeScript(scriptName: string, scriptContent: string): ScriptAnalysisResult;
28
+ /**
29
+ * Detect data exfiltration patterns
30
+ */
31
+ detectExfiltration(script: string): boolean;
32
+ /**
33
+ * Detect crypto mining
34
+ */
35
+ detectCryptoMining(script: string): boolean;
36
+ /**
37
+ * Detect backdoor patterns
38
+ */
39
+ private detectBackdoor;
40
+ /**
41
+ * Detect malicious downloads
42
+ */
43
+ private detectMaliciousDownload;
44
+ /**
45
+ * Detect privilege escalation
46
+ */
47
+ private detectPrivilegeEscalation;
48
+ /**
49
+ * Calculate risk score
50
+ */
51
+ private calculateRiskScore;
52
+ }
53
+ export declare const scriptAnalyzer: ScriptAnalyzer;
54
+ //# sourceMappingURL=script-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-analyzer.d.ts","sourceRoot":"","sources":["../../src/supply-chain/script-analyzer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,mBAAmB,GAAG,eAAe,GAAG,UAAU,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;IACzG,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,cAAc;IACzB;;OAEG;IACG,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAM7F;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,oBAAoB;IAiE9E;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAa3C;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAY3C;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAWjC;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAgB3B;AAGD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ /**
3
+ * Script Analyzer
4
+ *
5
+ * Analyzes package.json scripts for suspicious behavior
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.scriptAnalyzer = exports.ScriptAnalyzer = void 0;
9
+ class ScriptAnalyzer {
10
+ /**
11
+ * Analyze package.json scripts
12
+ */
13
+ async analyzeScripts(_packageName, _version) {
14
+ // In production, this would fetch package.json from npm registry
15
+ // For now, return empty array
16
+ return [];
17
+ }
18
+ /**
19
+ * Analyze a single script
20
+ */
21
+ analyzeScript(scriptName, scriptContent) {
22
+ const threats = [];
23
+ // Check for data exfiltration
24
+ if (this.detectExfiltration(scriptContent)) {
25
+ threats.push({
26
+ type: 'data_exfiltration',
27
+ pattern: 'network_request',
28
+ severity: 'high',
29
+ description: 'Script makes network requests that could exfiltrate data',
30
+ });
31
+ }
32
+ // Check for crypto mining
33
+ if (this.detectCryptoMining(scriptContent)) {
34
+ threats.push({
35
+ type: 'crypto_mining',
36
+ pattern: 'crypto_miner',
37
+ severity: 'high',
38
+ description: 'Script contains crypto mining code',
39
+ });
40
+ }
41
+ // Check for backdoors
42
+ if (this.detectBackdoor(scriptContent)) {
43
+ threats.push({
44
+ type: 'backdoor',
45
+ pattern: 'reverse_shell',
46
+ severity: 'critical',
47
+ description: 'Script opens a backdoor or reverse shell',
48
+ });
49
+ }
50
+ // Check for malicious downloads
51
+ if (this.detectMaliciousDownload(scriptContent)) {
52
+ threats.push({
53
+ type: 'malicious_download',
54
+ pattern: 'download_execute',
55
+ severity: 'critical',
56
+ description: 'Script downloads and executes code',
57
+ });
58
+ }
59
+ // Check for privilege escalation
60
+ if (this.detectPrivilegeEscalation(scriptContent)) {
61
+ threats.push({
62
+ type: 'privilege_escalation',
63
+ pattern: 'sudo_usage',
64
+ severity: 'high',
65
+ description: 'Script attempts privilege escalation',
66
+ });
67
+ }
68
+ // Calculate risk score
69
+ const riskScore = this.calculateRiskScore(threats);
70
+ return {
71
+ scriptName,
72
+ scriptContent,
73
+ isSuspicious: threats.length > 0,
74
+ threats,
75
+ riskScore,
76
+ };
77
+ }
78
+ /**
79
+ * Detect data exfiltration patterns
80
+ */
81
+ detectExfiltration(script) {
82
+ const patterns = [
83
+ /curl\s+.*\|\s*bash/i, // Pipe to bash
84
+ /wget\s+.*\|\s*sh/i, // Pipe to sh
85
+ /fetch\(['"]http/i, // HTTP requests
86
+ /axios\./i, // Axios requests
87
+ /http\.request/i, // HTTP module
88
+ /child_process\.exec.*curl/i, // Execute curl
89
+ ];
90
+ return patterns.some((p) => p.test(script));
91
+ }
92
+ /**
93
+ * Detect crypto mining
94
+ */
95
+ detectCryptoMining(script) {
96
+ const patterns = [
97
+ /coinhive/i,
98
+ /cryptonight/i,
99
+ /monero/i,
100
+ /xmrig/i,
101
+ /stratum\+tcp/i,
102
+ ];
103
+ return patterns.some((p) => p.test(script));
104
+ }
105
+ /**
106
+ * Detect backdoor patterns
107
+ */
108
+ detectBackdoor(script) {
109
+ const patterns = [
110
+ /nc\s+-l/i, // Netcat listener
111
+ /\/bin\/sh\s+-i/i, // Interactive shell
112
+ /bash\s+-i/i, // Interactive bash
113
+ /python.*socket/i, // Python socket
114
+ ];
115
+ return patterns.some((p) => p.test(script));
116
+ }
117
+ /**
118
+ * Detect malicious downloads
119
+ */
120
+ detectMaliciousDownload(script) {
121
+ const patterns = [
122
+ /curl.*\|\s*bash/i,
123
+ /wget.*&&.*chmod\s*\+x/i,
124
+ /download.*&&.*execute/i,
125
+ ];
126
+ return patterns.some((p) => p.test(script));
127
+ }
128
+ /**
129
+ * Detect privilege escalation
130
+ */
131
+ detectPrivilegeEscalation(script) {
132
+ const patterns = [
133
+ /sudo\s+/i,
134
+ /su\s+-/i,
135
+ /chmod\s+777/i,
136
+ /chown\s+root/i,
137
+ ];
138
+ return patterns.some((p) => p.test(script));
139
+ }
140
+ /**
141
+ * Calculate risk score
142
+ */
143
+ calculateRiskScore(threats) {
144
+ const severityScores = {
145
+ low: 25,
146
+ medium: 50,
147
+ high: 75,
148
+ critical: 100,
149
+ };
150
+ if (threats.length === 0)
151
+ return 0;
152
+ const totalScore = threats.reduce((sum, threat) => {
153
+ return sum + severityScores[threat.severity];
154
+ }, 0);
155
+ return Math.min(100, totalScore / threats.length);
156
+ }
157
+ }
158
+ exports.ScriptAnalyzer = ScriptAnalyzer;
159
+ // Export singleton
160
+ exports.scriptAnalyzer = new ScriptAnalyzer();
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Typosquatting Detection
3
+ *
4
+ * Detects potential typosquatting attacks against popular packages
5
+ */
6
+ export interface TyposquatResult {
7
+ isTyposquat: boolean;
8
+ suspiciousPackage: string;
9
+ targetPackage?: string;
10
+ similarity: number;
11
+ patterns: string[];
12
+ }
13
+ export declare class TyposquatDetector {
14
+ private popularPackages;
15
+ constructor();
16
+ /**
17
+ * Detect typosquatting
18
+ */
19
+ detectTyposquatting(packageName: string): Promise<TyposquatResult>;
20
+ /**
21
+ * Check for character swap (e.g., raect vs react)
22
+ */
23
+ private checkCharacterSwap;
24
+ /**
25
+ * Check for missing character (e.g., reat vs react)
26
+ */
27
+ private checkMissingCharacter;
28
+ /**
29
+ * Check for extra character (e.g., reactt vs react)
30
+ */
31
+ private checkExtraCharacter;
32
+ /**
33
+ * Check for homoglyph substitution (e.g., react with Cyrillic 'а')
34
+ */
35
+ private checkHomoglyph;
36
+ /**
37
+ * Check for combosquatting (e.g., react-native-safe vs react)
38
+ */
39
+ private checkCombosquatting;
40
+ /**
41
+ * Check Levenshtein distance
42
+ */
43
+ private checkLevenshtein;
44
+ /**
45
+ * Calculate Levenshtein distance
46
+ */
47
+ levenshteinDistance(a: string, b: string): number;
48
+ /**
49
+ * Get popular packages list
50
+ */
51
+ getPopularPackages(): Promise<string[]>;
52
+ /**
53
+ * Add custom popular package
54
+ */
55
+ addPopularPackage(packageName: string): void;
56
+ }
57
+ export declare const typosquatDetector: TyposquatDetector;
58
+ //# sourceMappingURL=typosquat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typosquat.d.ts","sourceRoot":"","sources":["../../src/supply-chain/typosquat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAuBH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,eAAe,CAAc;;IAMrC;;OAEG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA2CxE;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAqB7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqB3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAoCtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmB3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAsCjD;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI7C;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;CAG7C;AAGD,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}