@dependabit/manifest 0.1.1
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/CHANGELOG.md +7 -0
- package/LICENSE +21 -0
- package/README.md +32 -0
- package/dist/config.d.ts +27 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +79 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.d.ts +43 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +191 -0
- package/dist/manifest.js.map +1 -0
- package/dist/schema.d.ts +488 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +213 -0
- package/dist/schema.js.map +1 -0
- package/dist/size-check.d.ts +39 -0
- package/dist/size-check.d.ts.map +1 -0
- package/dist/size-check.js +84 -0
- package/dist/size-check.js.map +1 -0
- package/dist/validator.d.ts +53 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +110 -0
- package/dist/validator.js.map +1 -0
- package/package.json +38 -0
- package/src/config.test.ts +266 -0
- package/src/config.ts +96 -0
- package/src/index.ts +16 -0
- package/src/manifest.test.ts +400 -0
- package/src/manifest.ts +261 -0
- package/src/schema.test.ts +293 -0
- package/src/schema.ts +265 -0
- package/src/size-check.test.ts +246 -0
- package/src/size-check.ts +124 -0
- package/src/validator.test.ts +161 -0
- package/src/validator.ts +131 -0
- package/tsconfig.json +10 -0
- package/tsconfig.tsbuildinfo +1 -0
package/dist/schema.js
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// Version tracking
|
|
3
|
+
export const ManifestVersionSchema = z.literal('1.0.0');
|
|
4
|
+
// Access methods (HOW to retrieve/check dependency)
|
|
5
|
+
export const AccessMethodSchema = z.enum(['context7', 'arxiv', 'openapi', 'github-api', 'http']);
|
|
6
|
+
// Dependency types (WHAT the dependency represents)
|
|
7
|
+
export const DependencyTypeSchema = z.enum([
|
|
8
|
+
'reference-implementation',
|
|
9
|
+
'schema',
|
|
10
|
+
'documentation',
|
|
11
|
+
'research-paper',
|
|
12
|
+
'api-example',
|
|
13
|
+
'other'
|
|
14
|
+
]);
|
|
15
|
+
// Detection methods
|
|
16
|
+
export const DetectionMethodSchema = z.enum([
|
|
17
|
+
'llm-analysis',
|
|
18
|
+
'manual',
|
|
19
|
+
'package-json',
|
|
20
|
+
'requirements-txt',
|
|
21
|
+
'code-comment'
|
|
22
|
+
]);
|
|
23
|
+
// Severity levels
|
|
24
|
+
export const SeveritySchema = z.enum(['breaking', 'major', 'minor']);
|
|
25
|
+
// Authentication configuration
|
|
26
|
+
export const AuthConfigSchema = z
|
|
27
|
+
.object({
|
|
28
|
+
type: z.enum(['token', 'basic', 'oauth', 'none']),
|
|
29
|
+
// Reference to an environment variable or secret identifier.
|
|
30
|
+
// Do NOT store raw secret values directly in the manifest.
|
|
31
|
+
secretEnvVar: z.string().optional()
|
|
32
|
+
})
|
|
33
|
+
.optional();
|
|
34
|
+
// Monitoring rules
|
|
35
|
+
export const MonitoringRulesSchema = z.object({
|
|
36
|
+
enabled: z.boolean().default(true),
|
|
37
|
+
checkFrequency: z.enum(['hourly', 'daily', 'weekly', 'monthly']).default('daily'),
|
|
38
|
+
ignoreChanges: z.boolean().default(false),
|
|
39
|
+
severityOverride: SeveritySchema.optional()
|
|
40
|
+
});
|
|
41
|
+
// Individual dependency entry
|
|
42
|
+
export const DependencyEntrySchema = z.object({
|
|
43
|
+
id: z.string().uuid(),
|
|
44
|
+
url: z.string().url(),
|
|
45
|
+
type: DependencyTypeSchema,
|
|
46
|
+
accessMethod: AccessMethodSchema,
|
|
47
|
+
name: z.string(),
|
|
48
|
+
description: z.string().optional(),
|
|
49
|
+
// Version/state tracking
|
|
50
|
+
currentVersion: z.string().optional(),
|
|
51
|
+
currentStateHash: z.string(),
|
|
52
|
+
// Metadata
|
|
53
|
+
detectionMethod: DetectionMethodSchema,
|
|
54
|
+
detectionConfidence: z.number().min(0).max(1),
|
|
55
|
+
detectedAt: z.string().datetime(),
|
|
56
|
+
lastChecked: z.string().datetime(),
|
|
57
|
+
lastChanged: z.string().datetime().optional(),
|
|
58
|
+
// Configuration
|
|
59
|
+
auth: AuthConfigSchema,
|
|
60
|
+
monitoring: MonitoringRulesSchema.optional(),
|
|
61
|
+
// Relationships
|
|
62
|
+
referencedIn: z.array(z.object({
|
|
63
|
+
file: z.string(),
|
|
64
|
+
line: z.number().optional(),
|
|
65
|
+
context: z.string().optional()
|
|
66
|
+
})),
|
|
67
|
+
// Change history
|
|
68
|
+
changeHistory: z
|
|
69
|
+
.array(z.object({
|
|
70
|
+
detectedAt: z.string().datetime(),
|
|
71
|
+
oldVersion: z.string().optional(),
|
|
72
|
+
newVersion: z.string().optional(),
|
|
73
|
+
severity: SeveritySchema,
|
|
74
|
+
issueNumber: z.number().optional(),
|
|
75
|
+
falsePositive: z.boolean().default(false)
|
|
76
|
+
}))
|
|
77
|
+
.default([])
|
|
78
|
+
});
|
|
79
|
+
// Complete manifest
|
|
80
|
+
export const DependencyManifestSchema = z.object({
|
|
81
|
+
version: ManifestVersionSchema,
|
|
82
|
+
generatedAt: z.string().datetime(),
|
|
83
|
+
generatedBy: z.object({
|
|
84
|
+
action: z.string(),
|
|
85
|
+
version: z.string(),
|
|
86
|
+
llmProvider: z.string(),
|
|
87
|
+
llmModel: z.string().optional()
|
|
88
|
+
}),
|
|
89
|
+
repository: z.object({
|
|
90
|
+
owner: z.string(),
|
|
91
|
+
name: z.string(),
|
|
92
|
+
branch: z.string(),
|
|
93
|
+
commit: z.string()
|
|
94
|
+
}),
|
|
95
|
+
dependencies: z.array(DependencyEntrySchema),
|
|
96
|
+
statistics: z.object({
|
|
97
|
+
totalDependencies: z.number(),
|
|
98
|
+
byType: z.record(z.string(), z.number()),
|
|
99
|
+
byAccessMethod: z.record(z.string(), z.number()),
|
|
100
|
+
byDetectionMethod: z.record(z.string(), z.number()),
|
|
101
|
+
averageConfidence: z.number(),
|
|
102
|
+
falsePositiveRate: z.number().min(0).max(1).optional()
|
|
103
|
+
})
|
|
104
|
+
});
|
|
105
|
+
// Schedule configuration (dependabot-compatible)
|
|
106
|
+
export const ScheduleSchema = z.object({
|
|
107
|
+
interval: z.enum(['hourly', 'daily', 'weekly', 'monthly']),
|
|
108
|
+
day: z
|
|
109
|
+
.enum(['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'])
|
|
110
|
+
.optional(),
|
|
111
|
+
time: z
|
|
112
|
+
.string()
|
|
113
|
+
.regex(/^([01]\d|2[0-3]):([0-5]\d)$/)
|
|
114
|
+
.optional(),
|
|
115
|
+
timezone: z.string().default('UTC')
|
|
116
|
+
});
|
|
117
|
+
// LLM provider configuration
|
|
118
|
+
export const LLMConfigSchema = z.object({
|
|
119
|
+
provider: z
|
|
120
|
+
.enum(['github-copilot', 'claude', 'openai', 'azure-openai'])
|
|
121
|
+
.default('github-copilot'),
|
|
122
|
+
model: z.string().optional(),
|
|
123
|
+
maxTokens: z.number().int().positive().default(4000),
|
|
124
|
+
temperature: z.number().min(0).max(2).default(0.3)
|
|
125
|
+
});
|
|
126
|
+
// Issue configuration
|
|
127
|
+
export const IssueConfigSchema = z.object({
|
|
128
|
+
labels: z.array(z.string()).default(['dependabit', 'dependency-update']),
|
|
129
|
+
assignees: z.array(z.string()).default([]),
|
|
130
|
+
aiAgentAssignment: z
|
|
131
|
+
.object({
|
|
132
|
+
enabled: z.boolean().default(false),
|
|
133
|
+
breaking: z.string().optional(),
|
|
134
|
+
major: z.string().optional(),
|
|
135
|
+
minor: z.string().optional()
|
|
136
|
+
})
|
|
137
|
+
.optional(),
|
|
138
|
+
titleTemplate: z.string().default('[dependabit] {name}: {change}'),
|
|
139
|
+
bodyTemplate: z.string().optional()
|
|
140
|
+
});
|
|
141
|
+
// Per-dependency override
|
|
142
|
+
export const DependencyOverrideSchema = z.object({
|
|
143
|
+
url: z.string().url(),
|
|
144
|
+
schedule: ScheduleSchema.optional(),
|
|
145
|
+
monitoring: MonitoringRulesSchema.optional(),
|
|
146
|
+
issues: IssueConfigSchema.optional()
|
|
147
|
+
});
|
|
148
|
+
// Complete configuration
|
|
149
|
+
export const DependabitConfigSchema = z.object({
|
|
150
|
+
version: z.literal('1'),
|
|
151
|
+
// Global settings
|
|
152
|
+
llm: LLMConfigSchema.optional(),
|
|
153
|
+
schedule: ScheduleSchema.default({ interval: 'daily', timezone: 'UTC' }),
|
|
154
|
+
issues: IssueConfigSchema.optional(),
|
|
155
|
+
// Monitoring behavior
|
|
156
|
+
monitoring: z
|
|
157
|
+
.object({
|
|
158
|
+
enabled: z.boolean().default(true),
|
|
159
|
+
autoUpdate: z.boolean().default(true),
|
|
160
|
+
falsePositiveThreshold: z.number().min(0).max(1).default(0.1)
|
|
161
|
+
})
|
|
162
|
+
.optional(),
|
|
163
|
+
// Dependency-specific overrides
|
|
164
|
+
dependencies: z.array(DependencyOverrideSchema).optional(),
|
|
165
|
+
// Exclusions
|
|
166
|
+
ignore: z
|
|
167
|
+
.object({
|
|
168
|
+
urls: z.array(z.string()).optional(),
|
|
169
|
+
types: z.array(DependencyTypeSchema).optional(),
|
|
170
|
+
patterns: z.array(z.string()).optional()
|
|
171
|
+
})
|
|
172
|
+
.optional()
|
|
173
|
+
});
|
|
174
|
+
// Change detection schemas
|
|
175
|
+
export const ChangeTypeSchema = z.enum([
|
|
176
|
+
'version-bump',
|
|
177
|
+
'content-changed',
|
|
178
|
+
'released',
|
|
179
|
+
'deprecated',
|
|
180
|
+
'unavailable',
|
|
181
|
+
'unknown'
|
|
182
|
+
]);
|
|
183
|
+
export const ChangeDetectionRecordSchema = z.object({
|
|
184
|
+
id: z.string().uuid(),
|
|
185
|
+
timestamp: z.string().datetime(),
|
|
186
|
+
// Dependency reference
|
|
187
|
+
dependencyId: z.string().uuid(),
|
|
188
|
+
dependencyUrl: z.string().url(),
|
|
189
|
+
dependencyName: z.string(),
|
|
190
|
+
// Change details
|
|
191
|
+
changeType: ChangeTypeSchema,
|
|
192
|
+
severity: SeveritySchema,
|
|
193
|
+
// State comparison
|
|
194
|
+
oldState: z.object({
|
|
195
|
+
version: z.string().optional(),
|
|
196
|
+
hash: z.string(),
|
|
197
|
+
checkedAt: z.string().datetime()
|
|
198
|
+
}),
|
|
199
|
+
newState: z.object({
|
|
200
|
+
version: z.string().optional(),
|
|
201
|
+
hash: z.string(),
|
|
202
|
+
checkedAt: z.string().datetime()
|
|
203
|
+
}),
|
|
204
|
+
// Change description
|
|
205
|
+
summary: z.string(),
|
|
206
|
+
details: z.string().optional(),
|
|
207
|
+
breakingChanges: z.array(z.string()).optional(),
|
|
208
|
+
// Action taken
|
|
209
|
+
issueCreated: z.boolean().default(false),
|
|
210
|
+
issueNumber: z.number().optional(),
|
|
211
|
+
issueUrl: z.string().url().optional()
|
|
212
|
+
});
|
|
213
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest size validation and warnings
|
|
3
|
+
* Checks manifest size and warns when approaching limits
|
|
4
|
+
*/
|
|
5
|
+
export interface SizeCheckResult {
|
|
6
|
+
sizeBytes: number;
|
|
7
|
+
sizeMB: number;
|
|
8
|
+
status: 'ok' | 'warning' | 'error';
|
|
9
|
+
message?: string | undefined;
|
|
10
|
+
}
|
|
11
|
+
export interface SizeCheckOptions {
|
|
12
|
+
warnThreshold?: number;
|
|
13
|
+
errorThreshold?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Check manifest size and return status
|
|
17
|
+
*/
|
|
18
|
+
export declare function checkManifestSize(content: string | Buffer, options?: SizeCheckOptions): SizeCheckResult;
|
|
19
|
+
/**
|
|
20
|
+
* Get formatted size string
|
|
21
|
+
*/
|
|
22
|
+
export declare function formatSize(bytes: number): string;
|
|
23
|
+
/**
|
|
24
|
+
* Validate manifest object size before serialization
|
|
25
|
+
*/
|
|
26
|
+
export declare function validateManifestObject(manifest: unknown, options?: SizeCheckOptions): SizeCheckResult;
|
|
27
|
+
/**
|
|
28
|
+
* Estimate manifest size impact of adding an entry
|
|
29
|
+
*/
|
|
30
|
+
export declare function estimateEntrySize(entry: unknown): number;
|
|
31
|
+
/**
|
|
32
|
+
* Check if adding an entry would exceed limits
|
|
33
|
+
*/
|
|
34
|
+
export declare function canAddEntry(currentManifest: unknown, newEntry: unknown, options?: SizeCheckOptions): {
|
|
35
|
+
canAdd: boolean;
|
|
36
|
+
currentSize: SizeCheckResult;
|
|
37
|
+
estimatedSize: SizeCheckResult;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=size-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"size-check.d.ts","sourceRoot":"","sources":["../src/size-check.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,OAAO,CAAC,EAAE,gBAAgB,GACzB,eAAe,CAgCjB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,gBAAgB,GACzB,eAAe,CAGjB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGxD;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,eAAe,EAAE,OAAO,EACxB,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,gBAAgB,GACzB;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,eAAe,CAAC;IAC7B,aAAa,EAAE,eAAe,CAAC;CAChC,CAuBA"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manifest size validation and warnings
|
|
3
|
+
* Checks manifest size and warns when approaching limits
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Check manifest size and return status
|
|
7
|
+
*/
|
|
8
|
+
export function checkManifestSize(content, options) {
|
|
9
|
+
const warnThreshold = (options?.warnThreshold ?? 1) * 1024 * 1024; // Convert MB to bytes
|
|
10
|
+
const errorThreshold = (options?.errorThreshold ?? 10) * 1024 * 1024;
|
|
11
|
+
const sizeBytes = typeof content === 'string' ? Buffer.byteLength(content, 'utf8') : content.length;
|
|
12
|
+
const sizeMB = sizeBytes / (1024 * 1024);
|
|
13
|
+
if (sizeBytes >= errorThreshold) {
|
|
14
|
+
return {
|
|
15
|
+
sizeBytes,
|
|
16
|
+
sizeMB,
|
|
17
|
+
status: 'error',
|
|
18
|
+
message: `Manifest size (${sizeMB.toFixed(2)}MB) exceeds maximum limit of ${(errorThreshold / 1024 / 1024).toFixed(0)}MB. Consider splitting or pruning data.`
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
if (sizeBytes >= warnThreshold) {
|
|
22
|
+
return {
|
|
23
|
+
sizeBytes,
|
|
24
|
+
sizeMB,
|
|
25
|
+
status: 'warning',
|
|
26
|
+
message: `Manifest size (${sizeMB.toFixed(2)}MB) is approaching limit. Warning threshold: ${(warnThreshold / 1024 / 1024).toFixed(0)}MB, Max: ${(errorThreshold / 1024 / 1024).toFixed(0)}MB.`
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
sizeBytes,
|
|
31
|
+
sizeMB,
|
|
32
|
+
status: 'ok'
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get formatted size string
|
|
37
|
+
*/
|
|
38
|
+
export function formatSize(bytes) {
|
|
39
|
+
if (bytes < 1024) {
|
|
40
|
+
return `${bytes} B`;
|
|
41
|
+
}
|
|
42
|
+
if (bytes < 1024 * 1024) {
|
|
43
|
+
return `${(bytes / 1024).toFixed(2)} KB`;
|
|
44
|
+
}
|
|
45
|
+
return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Validate manifest object size before serialization
|
|
49
|
+
*/
|
|
50
|
+
export function validateManifestObject(manifest, options) {
|
|
51
|
+
const serialized = JSON.stringify(manifest, null, 2);
|
|
52
|
+
return checkManifestSize(serialized, options);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Estimate manifest size impact of adding an entry
|
|
56
|
+
*/
|
|
57
|
+
export function estimateEntrySize(entry) {
|
|
58
|
+
const serialized = JSON.stringify(entry);
|
|
59
|
+
return Buffer.byteLength(serialized, 'utf8');
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Check if adding an entry would exceed limits
|
|
63
|
+
*/
|
|
64
|
+
export function canAddEntry(currentManifest, newEntry, options) {
|
|
65
|
+
const currentSize = validateManifestObject(currentManifest, options);
|
|
66
|
+
const entrySize = estimateEntrySize(newEntry);
|
|
67
|
+
// Estimate new size (accounting for JSON formatting)
|
|
68
|
+
const estimatedBytes = currentSize.sizeBytes + entrySize + 100; // Add buffer for formatting
|
|
69
|
+
const estimatedSizeMB = estimatedBytes / (1024 * 1024);
|
|
70
|
+
const errorThreshold = (options?.errorThreshold ?? 10) * 1024 * 1024;
|
|
71
|
+
const canAdd = estimatedBytes < errorThreshold;
|
|
72
|
+
const estimatedResult = checkManifestSize(Buffer.alloc(estimatedBytes), options);
|
|
73
|
+
return {
|
|
74
|
+
canAdd,
|
|
75
|
+
currentSize,
|
|
76
|
+
estimatedSize: {
|
|
77
|
+
...estimatedResult,
|
|
78
|
+
message: canAdd
|
|
79
|
+
? estimatedResult.message
|
|
80
|
+
: `Adding entry would exceed size limit (estimated: ${estimatedSizeMB.toFixed(2)}MB)`
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=size-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"size-check.js","sourceRoot":"","sources":["../src/size-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { type DependencyManifest, type DependencyEntry, type DependabitConfig } from './schema.js';
|
|
2
|
+
import { ZodError } from 'zod';
|
|
3
|
+
/**
|
|
4
|
+
* Validation error class with detailed error information
|
|
5
|
+
*/
|
|
6
|
+
export declare class ValidationError extends Error {
|
|
7
|
+
readonly errors: ZodError;
|
|
8
|
+
constructor(message: string, errors: ZodError);
|
|
9
|
+
/**
|
|
10
|
+
* Get formatted error messages
|
|
11
|
+
*/
|
|
12
|
+
getFormattedErrors(): string[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Validate a dependency manifest
|
|
16
|
+
* @throws {ValidationError} if validation fails
|
|
17
|
+
*/
|
|
18
|
+
export declare function validateManifest(data: unknown): DependencyManifest;
|
|
19
|
+
/**
|
|
20
|
+
* Validate a dependency entry
|
|
21
|
+
* @throws {ValidationError} if validation fails
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateDependencyEntry(data: unknown): DependencyEntry;
|
|
24
|
+
/**
|
|
25
|
+
* Validate a dependabit configuration
|
|
26
|
+
* @throws {ValidationError} if validation fails
|
|
27
|
+
*/
|
|
28
|
+
export declare function validateConfig(data: unknown): DependabitConfig;
|
|
29
|
+
/**
|
|
30
|
+
* Safe validation that returns success/error result
|
|
31
|
+
*/
|
|
32
|
+
export declare function safeValidateManifest(data: unknown): {
|
|
33
|
+
success: boolean;
|
|
34
|
+
data?: DependencyManifest;
|
|
35
|
+
error?: ValidationError;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Safe validation for dependency entry
|
|
39
|
+
*/
|
|
40
|
+
export declare function safeValidateDependencyEntry(data: unknown): {
|
|
41
|
+
success: boolean;
|
|
42
|
+
data?: DependencyEntry;
|
|
43
|
+
error?: ValidationError;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Safe validation for config
|
|
47
|
+
*/
|
|
48
|
+
export declare function safeValidateConfig(data: unknown): {
|
|
49
|
+
success: boolean;
|
|
50
|
+
data?: DependabitConfig;
|
|
51
|
+
error?: ValidationError;
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAE/B;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,MAAM,EAAE,QAAQ;IAFlC,YACE,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,QAAQ,EAIjC;IAED;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE,CAE7B;CACF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,CASlE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,eAAe,CAStE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAS9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAUA;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,OAAO,GAAG;IAC1D,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAUA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAUA"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { DependencyManifestSchema, DependencyEntrySchema, DependabitConfigSchema } from './schema.js';
|
|
2
|
+
import { ZodError } from 'zod';
|
|
3
|
+
/**
|
|
4
|
+
* Validation error class with detailed error information
|
|
5
|
+
*/
|
|
6
|
+
export class ValidationError extends Error {
|
|
7
|
+
errors;
|
|
8
|
+
constructor(message, errors) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.errors = errors;
|
|
11
|
+
this.name = 'ValidationError';
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get formatted error messages
|
|
15
|
+
*/
|
|
16
|
+
getFormattedErrors() {
|
|
17
|
+
return this.errors.issues.map((issue) => `${issue.path.join('.')}: ${issue.message}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Validate a dependency manifest
|
|
22
|
+
* @throws {ValidationError} if validation fails
|
|
23
|
+
*/
|
|
24
|
+
export function validateManifest(data) {
|
|
25
|
+
try {
|
|
26
|
+
return DependencyManifestSchema.parse(data);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
if (error instanceof ZodError) {
|
|
30
|
+
throw new ValidationError('Manifest validation failed', error);
|
|
31
|
+
}
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Validate a dependency entry
|
|
37
|
+
* @throws {ValidationError} if validation fails
|
|
38
|
+
*/
|
|
39
|
+
export function validateDependencyEntry(data) {
|
|
40
|
+
try {
|
|
41
|
+
return DependencyEntrySchema.parse(data);
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
if (error instanceof ZodError) {
|
|
45
|
+
throw new ValidationError('Dependency entry validation failed', error);
|
|
46
|
+
}
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Validate a dependabit configuration
|
|
52
|
+
* @throws {ValidationError} if validation fails
|
|
53
|
+
*/
|
|
54
|
+
export function validateConfig(data) {
|
|
55
|
+
try {
|
|
56
|
+
return DependabitConfigSchema.parse(data);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (error instanceof ZodError) {
|
|
60
|
+
throw new ValidationError('Config validation failed', error);
|
|
61
|
+
}
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Safe validation that returns success/error result
|
|
67
|
+
*/
|
|
68
|
+
export function safeValidateManifest(data) {
|
|
69
|
+
try {
|
|
70
|
+
const validated = validateManifest(data);
|
|
71
|
+
return { success: true, data: validated };
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
if (error instanceof ValidationError) {
|
|
75
|
+
return { success: false, error };
|
|
76
|
+
}
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Safe validation for dependency entry
|
|
82
|
+
*/
|
|
83
|
+
export function safeValidateDependencyEntry(data) {
|
|
84
|
+
try {
|
|
85
|
+
const validated = validateDependencyEntry(data);
|
|
86
|
+
return { success: true, data: validated };
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
if (error instanceof ValidationError) {
|
|
90
|
+
return { success: false, error };
|
|
91
|
+
}
|
|
92
|
+
throw error;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Safe validation for config
|
|
97
|
+
*/
|
|
98
|
+
export function safeValidateConfig(data) {
|
|
99
|
+
try {
|
|
100
|
+
const validated = validateConfig(data);
|
|
101
|
+
return { success: true, data: validated };
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (error instanceof ValidationError) {
|
|
105
|
+
return { success: false, error };
|
|
106
|
+
}
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dependabit/manifest",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Manifest schema and validation for dependency tracking",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"yaml": "^2.8.2",
|
|
16
|
+
"zod": "^4.3.6"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@types/node": "^25.2.2",
|
|
20
|
+
"tsx": "^4.21.0",
|
|
21
|
+
"typescript": "^5.9.3",
|
|
22
|
+
"vitest": "^4.0.18"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [
|
|
25
|
+
"manifest",
|
|
26
|
+
"schema",
|
|
27
|
+
"validation"
|
|
28
|
+
],
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"scripts": {
|
|
31
|
+
"build": "tsgo -p tsconfig.json",
|
|
32
|
+
"clean": "rm -rf dist",
|
|
33
|
+
"dev": "tsx watch src/index.ts",
|
|
34
|
+
"type-check": "tsgo --noEmit -p tsconfig.json",
|
|
35
|
+
"test": "vitest run",
|
|
36
|
+
"test:watch": "vitest"
|
|
37
|
+
}
|
|
38
|
+
}
|