in src/schema/firefox-schemas-import.js [127:181]
export function rewriteValue(key, value, namespace) {
if (Array.isArray(value)) {
return value.map((val) => rewriteValue(key, val, namespace));
}
if (key === 'additionalProperties' && isUnrecognizedProperty(value)) {
return undefined;
}
if (typeof value === 'object') {
if ('$ref' in value && Object.keys(value).length > 1) {
const { $ref, ...rest } = value;
if (Object.keys(rest).length === 1 && 'optional' in rest) {
return {
$ref: rewriteValue('$ref', $ref, namespace),
...rest,
};
}
return {
allOf: [
{ $ref: rewriteValue('$ref', $ref, namespace) },
rewriteValue(key, rest, namespace),
],
};
}
const rewritten = inner.rewriteObject(value, namespace);
if ('properties' in rewritten) {
const { required, ...properties } = rewriteOptionalToRequired(
rewritten.properties
);
if (required.length > 0) {
return { ...rewritten, properties, required };
}
return { ...rewritten, properties };
}
return rewritten;
}
if (key === '$ref') {
if (value.includes('#/types')) {
return value;
}
if (value in refMap) {
return refMap[value];
}
return rewriteIdRef(value);
}
if (key === 'type' && value === 'any') {
return undefined;
}
if (key === 'id') {
return undefined;
}
if (key === 'pattern') {
return rewritePatternFlags(value);
}
return value;
}