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.
- package/README.md +53 -0
- package/dist/cli.js +362 -0
- package/dist/cli.js.map +1 -1
- package/dist/marketplace/index.d.ts +8 -0
- package/dist/marketplace/index.d.ts.map +1 -0
- package/dist/marketplace/index.js +7 -0
- package/dist/marketplace/index.js.map +1 -0
- package/dist/marketplace/installer.d.ts +62 -0
- package/dist/marketplace/installer.d.ts.map +1 -0
- package/dist/marketplace/installer.js +254 -0
- package/dist/marketplace/installer.js.map +1 -0
- package/dist/marketplace/registry.d.ts +52 -0
- package/dist/marketplace/registry.d.ts.map +1 -0
- package/dist/marketplace/registry.js +759 -0
- package/dist/marketplace/registry.js.map +1 -0
- package/dist/marketplace/types.d.ts +123 -0
- package/dist/marketplace/types.d.ts.map +1 -0
- package/dist/marketplace/types.js +6 -0
- package/dist/marketplace/types.js.map +1 -0
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +3 -1
- package/dist/scan.js.map +1 -1
- package/dist/scanners/hipaa2026/index.d.ts +8 -0
- package/dist/scanners/hipaa2026/index.d.ts.map +1 -0
- package/dist/scanners/hipaa2026/index.js +313 -0
- package/dist/scanners/hipaa2026/index.js.map +1 -0
- package/dist/scanners/hipaa2026/index.test.d.ts +5 -0
- package/dist/scanners/hipaa2026/index.test.d.ts.map +1 -0
- package/dist/scanners/hipaa2026/index.test.js +321 -0
- package/dist/scanners/hipaa2026/index.test.js.map +1 -0
- package/dist/scanners/hipaa2026/patterns.d.ts +57 -0
- package/dist/scanners/hipaa2026/patterns.d.ts.map +1 -0
- package/dist/scanners/hipaa2026/patterns.js +268 -0
- package/dist/scanners/hipaa2026/patterns.js.map +1 -0
- package/dist/scanners/skills/index.d.ts +7 -0
- package/dist/scanners/skills/index.d.ts.map +1 -0
- package/dist/scanners/skills/index.js +159 -0
- package/dist/scanners/skills/index.js.map +1 -0
- package/dist/scanners/skills/patterns.d.ts +20 -0
- package/dist/scanners/skills/patterns.d.ts.map +1 -0
- package/dist/scanners/skills/patterns.js +215 -0
- package/dist/scanners/skills/patterns.js.map +1 -0
- 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 @@
|
|
|
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"}
|