verification-layer 0.19.0 → 0.21.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 (43) hide show
  1. package/README.md +53 -0
  2. package/dist/cli.js +362 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/marketplace/index.d.ts +8 -0
  5. package/dist/marketplace/index.d.ts.map +1 -0
  6. package/dist/marketplace/index.js +7 -0
  7. package/dist/marketplace/index.js.map +1 -0
  8. package/dist/marketplace/installer.d.ts +62 -0
  9. package/dist/marketplace/installer.d.ts.map +1 -0
  10. package/dist/marketplace/installer.js +254 -0
  11. package/dist/marketplace/installer.js.map +1 -0
  12. package/dist/marketplace/registry.d.ts +52 -0
  13. package/dist/marketplace/registry.d.ts.map +1 -0
  14. package/dist/marketplace/registry.js +759 -0
  15. package/dist/marketplace/registry.js.map +1 -0
  16. package/dist/marketplace/types.d.ts +123 -0
  17. package/dist/marketplace/types.d.ts.map +1 -0
  18. package/dist/marketplace/types.js +6 -0
  19. package/dist/marketplace/types.js.map +1 -0
  20. package/dist/scan.d.ts.map +1 -1
  21. package/dist/scan.js +3 -1
  22. package/dist/scan.js.map +1 -1
  23. package/dist/scanners/hipaa2026/index.d.ts +8 -0
  24. package/dist/scanners/hipaa2026/index.d.ts.map +1 -0
  25. package/dist/scanners/hipaa2026/index.js +313 -0
  26. package/dist/scanners/hipaa2026/index.js.map +1 -0
  27. package/dist/scanners/hipaa2026/index.test.d.ts +5 -0
  28. package/dist/scanners/hipaa2026/index.test.d.ts.map +1 -0
  29. package/dist/scanners/hipaa2026/index.test.js +321 -0
  30. package/dist/scanners/hipaa2026/index.test.js.map +1 -0
  31. package/dist/scanners/hipaa2026/patterns.d.ts +57 -0
  32. package/dist/scanners/hipaa2026/patterns.d.ts.map +1 -0
  33. package/dist/scanners/hipaa2026/patterns.js +268 -0
  34. package/dist/scanners/hipaa2026/patterns.js.map +1 -0
  35. package/dist/scanners/skills/index.d.ts +7 -0
  36. package/dist/scanners/skills/index.d.ts.map +1 -0
  37. package/dist/scanners/skills/index.js +159 -0
  38. package/dist/scanners/skills/index.js.map +1 -0
  39. package/dist/scanners/skills/patterns.d.ts +20 -0
  40. package/dist/scanners/skills/patterns.d.ts.map +1 -0
  41. package/dist/scanners/skills/patterns.js +215 -0
  42. package/dist/scanners/skills/patterns.js.map +1 -0
  43. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/marketplace/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,YAAY,EACV,eAAe,EACf,WAAW,EACX,aAAa,EACb,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,SAAS,EACT,SAAS,GACV,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Community Rules Marketplace
3
+ * Export all marketplace functionality
4
+ */
5
+ export { MarketplaceRegistry } from './registry.js';
6
+ export { RulesInstaller } from './installer.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/marketplace/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Marketplace Rules Installer
3
+ * Downloads and installs community rules
4
+ */
5
+ import type { InstalledRule } from './types.js';
6
+ export declare class RulesInstaller {
7
+ private registry;
8
+ private projectRoot;
9
+ constructor(projectRoot: string);
10
+ /**
11
+ * Install a rule from the marketplace
12
+ */
13
+ install(ruleId: string, version?: string): Promise<InstalledRule>;
14
+ /**
15
+ * Install a package (collection of rules)
16
+ */
17
+ installPackage(packageId: string): Promise<InstalledRule[]>;
18
+ /**
19
+ * Uninstall a rule
20
+ */
21
+ uninstall(ruleId: string): Promise<void>;
22
+ /**
23
+ * List installed rules
24
+ */
25
+ listInstalled(): Promise<InstalledRule[]>;
26
+ /**
27
+ * Update installed rules to latest versions
28
+ */
29
+ updateAll(): Promise<{
30
+ updated: string[];
31
+ failed: string[];
32
+ }>;
33
+ /**
34
+ * Enable/disable a rule
35
+ */
36
+ toggleRule(ruleId: string, enabled: boolean): Promise<void>;
37
+ /**
38
+ * Convert marketplace rule to vlayer custom rule format
39
+ */
40
+ private convertToCustomRule;
41
+ /**
42
+ * Generate YAML from rule object
43
+ */
44
+ private generateYAML;
45
+ /**
46
+ * Ensure marketplace directory exists
47
+ */
48
+ private ensureMarketplaceDir;
49
+ /**
50
+ * Track installation in installed.json
51
+ */
52
+ private trackInstallation;
53
+ /**
54
+ * Remove from installed tracking
55
+ */
56
+ private removeFromInstalled;
57
+ /**
58
+ * Save installed rules list
59
+ */
60
+ private saveInstalled;
61
+ }
62
+ //# sourceMappingURL=installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/marketplace/installer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAmB,aAAa,EAAsB,MAAM,YAAY,CAAC;AAKrF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM;IAK/B;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAiDvE;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoBjE;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB9C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAU/C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IA0BnE;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAcjE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4B3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAuDpB;;OAEG;YACW,oBAAoB;IAKlC;;OAEG;YACW,iBAAiB;IAa/B;;OAEG;YACW,mBAAmB;IAMjC;;OAEG;YACW,aAAa;CAK5B"}
@@ -0,0 +1,254 @@
1
+ /**
2
+ * Marketplace Rules Installer
3
+ * Downloads and installs community rules
4
+ */
5
+ import * as fs from 'fs/promises';
6
+ import * as path from 'path';
7
+ import { MarketplaceRegistry } from './registry.js';
8
+ const MARKETPLACE_DIR = '.vlayer/marketplace';
9
+ const INSTALLED_RULES_FILE = `${MARKETPLACE_DIR}/installed.json`;
10
+ export class RulesInstaller {
11
+ registry;
12
+ projectRoot;
13
+ constructor(projectRoot) {
14
+ this.registry = new MarketplaceRegistry();
15
+ this.projectRoot = projectRoot;
16
+ }
17
+ /**
18
+ * Install a rule from the marketplace
19
+ */
20
+ async install(ruleId, version) {
21
+ // Fetch rule from registry
22
+ const rule = await this.registry.getRule(ruleId);
23
+ if (!rule) {
24
+ throw new Error(`Rule not found: ${ruleId}`);
25
+ }
26
+ // Check version match
27
+ if (version && rule.version !== version) {
28
+ throw new Error(`Rule version mismatch. Requested: ${version}, Available: ${rule.version}`);
29
+ }
30
+ // Ensure marketplace directory exists
31
+ await this.ensureMarketplaceDir();
32
+ // Convert to vlayer custom rule format
33
+ const customRule = this.convertToCustomRule(rule);
34
+ // Save rule file
35
+ const ruleFilePath = path.join(this.projectRoot, MARKETPLACE_DIR, `${ruleId}.yaml`);
36
+ const yaml = this.generateYAML(customRule);
37
+ await fs.writeFile(ruleFilePath, yaml, 'utf-8');
38
+ // Track installation
39
+ const installed = {
40
+ id: ruleId,
41
+ source: 'marketplace',
42
+ version: rule.version,
43
+ installedAt: new Date().toISOString(),
44
+ enabled: true,
45
+ config: {
46
+ ruleId,
47
+ version: rule.version,
48
+ enabled: true,
49
+ },
50
+ };
51
+ await this.trackInstallation(installed);
52
+ return installed;
53
+ }
54
+ /**
55
+ * Install a package (collection of rules)
56
+ */
57
+ async installPackage(packageId) {
58
+ const pkg = await this.registry.getPackage(packageId);
59
+ if (!pkg) {
60
+ throw new Error(`Package not found: ${packageId}`);
61
+ }
62
+ const installed = [];
63
+ for (const ruleId of pkg.rules) {
64
+ try {
65
+ const rule = await this.install(ruleId);
66
+ installed.push(rule);
67
+ }
68
+ catch (error) {
69
+ console.error(`Failed to install rule ${ruleId}:`, error);
70
+ }
71
+ }
72
+ return installed;
73
+ }
74
+ /**
75
+ * Uninstall a rule
76
+ */
77
+ async uninstall(ruleId) {
78
+ const ruleFilePath = path.join(this.projectRoot, MARKETPLACE_DIR, `${ruleId}.yaml`);
79
+ try {
80
+ await fs.unlink(ruleFilePath);
81
+ }
82
+ catch (error) {
83
+ // File might not exist
84
+ }
85
+ await this.removeFromInstalled(ruleId);
86
+ }
87
+ /**
88
+ * List installed rules
89
+ */
90
+ async listInstalled() {
91
+ try {
92
+ const installedPath = path.join(this.projectRoot, INSTALLED_RULES_FILE);
93
+ const content = await fs.readFile(installedPath, 'utf-8');
94
+ return JSON.parse(content);
95
+ }
96
+ catch (error) {
97
+ return [];
98
+ }
99
+ }
100
+ /**
101
+ * Update installed rules to latest versions
102
+ */
103
+ async updateAll() {
104
+ const installed = await this.listInstalled();
105
+ const updated = [];
106
+ const failed = [];
107
+ for (const rule of installed) {
108
+ try {
109
+ const latest = await this.registry.getRule(rule.id);
110
+ if (!latest) {
111
+ failed.push(rule.id);
112
+ continue;
113
+ }
114
+ if (latest.version !== rule.version) {
115
+ await this.uninstall(rule.id);
116
+ await this.install(rule.id, latest.version);
117
+ updated.push(rule.id);
118
+ }
119
+ }
120
+ catch (error) {
121
+ failed.push(rule.id);
122
+ }
123
+ }
124
+ return { updated, failed };
125
+ }
126
+ /**
127
+ * Enable/disable a rule
128
+ */
129
+ async toggleRule(ruleId, enabled) {
130
+ const installed = await this.listInstalled();
131
+ const rule = installed.find((r) => r.id === ruleId);
132
+ if (!rule) {
133
+ throw new Error(`Rule not installed: ${ruleId}`);
134
+ }
135
+ rule.enabled = enabled;
136
+ rule.config.enabled = enabled;
137
+ await this.saveInstalled(installed);
138
+ }
139
+ /**
140
+ * Convert marketplace rule to vlayer custom rule format
141
+ */
142
+ convertToCustomRule(rule) {
143
+ return {
144
+ id: rule.id,
145
+ name: rule.name,
146
+ description: rule.description,
147
+ category: rule.category,
148
+ severity: rule.severity,
149
+ pattern: rule.ruleDefinition.pattern,
150
+ flags: rule.ruleDefinition.flags,
151
+ include: rule.ruleDefinition.include,
152
+ exclude: rule.ruleDefinition.exclude,
153
+ recommendation: rule.recommendation,
154
+ hipaaReference: rule.references[0] || '',
155
+ mustNotContain: rule.ruleDefinition.mustNotContain,
156
+ contexts: rule.ruleDefinition.contexts,
157
+ metadata: {
158
+ author: rule.author.name,
159
+ organization: rule.author.organization,
160
+ version: rule.version,
161
+ framework: rule.framework,
162
+ jurisdiction: rule.jurisdiction,
163
+ payer: rule.payer,
164
+ verified: rule.verified,
165
+ source: 'vlayer-marketplace',
166
+ },
167
+ };
168
+ }
169
+ /**
170
+ * Generate YAML from rule object
171
+ */
172
+ generateYAML(rule) {
173
+ const lines = [];
174
+ lines.push(`# ${rule.name}`);
175
+ lines.push(`# Source: vlayer-marketplace`);
176
+ lines.push(`# Author: ${rule.metadata.author || 'Unknown'}`);
177
+ if (rule.metadata.organization) {
178
+ lines.push(`# Organization: ${rule.metadata.organization}`);
179
+ }
180
+ lines.push(`# Version: ${rule.metadata.version}`);
181
+ if (rule.metadata.verified) {
182
+ lines.push(`# Verified: true ✓`);
183
+ }
184
+ lines.push('');
185
+ lines.push('rules:');
186
+ lines.push(` - id: ${rule.id}`);
187
+ lines.push(` name: "${rule.name}"`);
188
+ lines.push(` description: "${rule.description}"`);
189
+ lines.push(` category: ${rule.category}`);
190
+ lines.push(` severity: ${rule.severity}`);
191
+ lines.push(` pattern: "${rule.pattern}"`);
192
+ if (rule.flags) {
193
+ lines.push(` flags: "${rule.flags}"`);
194
+ }
195
+ if (rule.include && rule.include.length > 0) {
196
+ lines.push(` include:`);
197
+ rule.include.forEach((p) => lines.push(` - "${p}"`));
198
+ }
199
+ if (rule.exclude && rule.exclude.length > 0) {
200
+ lines.push(` exclude:`);
201
+ rule.exclude.forEach((p) => lines.push(` - "${p}"`));
202
+ }
203
+ lines.push(` recommendation: "${rule.recommendation}"`);
204
+ if (rule.hipaaReference) {
205
+ lines.push(` hipaaReference: "${rule.hipaaReference}"`);
206
+ }
207
+ if (rule.mustNotContain) {
208
+ lines.push(` mustNotContain: "${rule.mustNotContain}"`);
209
+ }
210
+ if (rule.contexts && rule.contexts.length > 0) {
211
+ lines.push(` contexts:`);
212
+ rule.contexts.forEach((c) => lines.push(` - ${c}`));
213
+ }
214
+ return lines.join('\n');
215
+ }
216
+ /**
217
+ * Ensure marketplace directory exists
218
+ */
219
+ async ensureMarketplaceDir() {
220
+ const dir = path.join(this.projectRoot, MARKETPLACE_DIR);
221
+ await fs.mkdir(dir, { recursive: true });
222
+ }
223
+ /**
224
+ * Track installation in installed.json
225
+ */
226
+ async trackInstallation(rule) {
227
+ const installed = await this.listInstalled();
228
+ const existing = installed.findIndex((r) => r.id === rule.id);
229
+ if (existing >= 0) {
230
+ installed[existing] = rule; // Update
231
+ }
232
+ else {
233
+ installed.push(rule); // Add new
234
+ }
235
+ await this.saveInstalled(installed);
236
+ }
237
+ /**
238
+ * Remove from installed tracking
239
+ */
240
+ async removeFromInstalled(ruleId) {
241
+ const installed = await this.listInstalled();
242
+ const filtered = installed.filter((r) => r.id !== ruleId);
243
+ await this.saveInstalled(filtered);
244
+ }
245
+ /**
246
+ * Save installed rules list
247
+ */
248
+ async saveInstalled(rules) {
249
+ await this.ensureMarketplaceDir();
250
+ const installedPath = path.join(this.projectRoot, INSTALLED_RULES_FILE);
251
+ await fs.writeFile(installedPath, JSON.stringify(rules, null, 2), 'utf-8');
252
+ }
253
+ }
254
+ //# sourceMappingURL=installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/marketplace/installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Marketplace Registry Client
3
+ * Connects to vlayer community rules registry
4
+ */
5
+ import type { MarketplaceRule, RulePackage, SearchFilters, SearchResult, MarketplaceMetadata } from './types.js';
6
+ export declare class MarketplaceRegistry {
7
+ private cache;
8
+ private cacheExpiry;
9
+ private readonly CACHE_TTL;
10
+ /**
11
+ * Search rules in the marketplace
12
+ */
13
+ search(query: string, filters?: SearchFilters, page?: number, pageSize?: number): Promise<SearchResult>;
14
+ /**
15
+ * Get rule by ID
16
+ */
17
+ getRule(ruleId: string): Promise<MarketplaceRule | null>;
18
+ /**
19
+ * Get package by ID
20
+ */
21
+ getPackage(packageId: string): Promise<RulePackage | null>;
22
+ /**
23
+ * Get marketplace metadata/stats
24
+ */
25
+ getMetadata(): Promise<MarketplaceMetadata>;
26
+ /**
27
+ * Get featured rules
28
+ */
29
+ getFeatured(limit?: number): Promise<MarketplaceRule[]>;
30
+ /**
31
+ * Get all rules from registry
32
+ */
33
+ private getAllRules;
34
+ /**
35
+ * Get all packages from registry
36
+ */
37
+ private getAllPackages;
38
+ /**
39
+ * Cache helpers
40
+ */
41
+ private getFromCache;
42
+ private setCache;
43
+ /**
44
+ * Builtin example rules (will be moved to registry API)
45
+ */
46
+ private getBuiltinRules;
47
+ /**
48
+ * Builtin example packages
49
+ */
50
+ private getBuiltinPackages;
51
+ }
52
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/marketplace/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,aAAa,EACb,YAAY,EACZ,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAUpB,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IAErC;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,EACvB,IAAI,SAAI,EACR,QAAQ,SAAK,GACZ,OAAO,CAAC,YAAY,CAAC;IAwDxB;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAK9D;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAKhE;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAmDjD;;OAEG;IACG,WAAW,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAczD;;OAEG;YACW,WAAW;IAiBzB;;OAEG;YACW,cAAc;IAgB5B;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,QAAQ;IAKhB;;OAEG;IACH,OAAO,CAAC,eAAe;IA4hBvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAuE3B"}