Skip to content

Commit

Permalink
test: add ReplacementsSchema
Browse files Browse the repository at this point in the history
  • Loading branch information
RahulGautamSingh committed Sep 30, 2024
1 parent 8c78a7e commit 89a2493
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 1 deletion.
1 change: 1 addition & 0 deletions lib/data/replacements.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"$schema": "../../tools/schemas/replacements-schema.json",
"all": {
"description": "Apply crowd-sourced package replacement rules.",
"extends": [
Expand Down
61 changes: 61 additions & 0 deletions tools/schemas/replacements-schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"all": {
"type": "object",
"properties": {
"description": { "type": "string" },
"extends": {
"type": "array",
"items": { "type": "string" }
},
"ignoreDeps": {
"type": "array",
"items": { "type": "string" }
}
},
"required": ["description", "extends"]
}
},
"patternProperties": {
"^[a-zA-Z0-9-]+$": {
"type": "object",
"properties": {
"description": { "type": "string" },
"packageRules": {
"type": "array",
"items": {
"type": "object",
"properties": {
"matchCurrentVersion": { "type": "string" },
"matchDatasources": {
"type": "array",
"items": { "type": "string" }
},
"matchPackageNames": {
"type": "array",
"items": { "type": "string" }
},
"replacementName": { "type": "string" },
"replacementVersion": { "type": "string" },
"description": { "type": "string" },
"replacementNameTemplate": { "type": "string" }
},
"required": ["matchDatasources", "matchPackageNames"]
},
"contains": {
"type": "object",
"oneOf": [
{ "required": ["replacementName"] },
{ "required": ["replacementNameTemplate"] }
]
},
"minItems": 1
}
},
"required": ["description", "packageRules"]
}
},
"additionalProperties": false
}
44 changes: 43 additions & 1 deletion tools/schemas/schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,46 @@ const MonorepoSchema = z.object({
patternGroups: UrlSchema,
});

export { MonorepoSchema };
const PackageRuleSchema = z.object({
matchCurrentVersion: z.string().optional(),
matchDatasources: z.array(z.string()),
matchPackageNames: z.array(z.string()),
replacementName: z.string().optional(),
replacementVersion: z.string().optional(),
description: z.string().optional(),
replacementNameTemplate: z.string().optional(),
});

const RuleSetSchema = z.object({
description: z.string(),
packageRules: z
.array(PackageRuleSchema)
.min(1)
.refine(
(rules) =>
rules.some(
(rule) =>
rule.replacementName !== undefined ||
rule.replacementNameTemplate !== undefined,
),
{
message:
'At least one package rule must have either replacementName or replacementNameTemplate',
},
),
});

const AllSchema = z.object({
description: z.string(),
extends: z.array(z.string()),
ignoreDeps: z.array(z.string()).optional(),
});

const ReplacementsSchema = z
.object({
$schema: z.string(),
all: AllSchema,
})
.catchall(RuleSetSchema);

export { MonorepoSchema, ReplacementsSchema };

0 comments on commit 89a2493

Please sign in to comment.