80 lines
2.9 KiB
TypeScript
80 lines
2.9 KiB
TypeScript
|
|
import { JSONSchema4, JSONSchema6, JSONSchema7 } from 'json-schema';
|
|
|
|
const v4_schemas = new Set([
|
|
'http://json-schema.org/schema#',
|
|
'https://json-schema.org/schema#',
|
|
'http://json-schema.org/schema',
|
|
'https://json-schema.org/schema',
|
|
'http://json-schema.org/hyper-schema#',
|
|
'https://json-schema.org/hyper-schema#',
|
|
'http://json-schema.org/hyper-schema',
|
|
'https://json-schema.org/hyper-schema',
|
|
'http://json-schema.org/draft-04/schema#',
|
|
'https://json-schema.org/draft-04/schema#',
|
|
'http://json-schema.org/draft-04/schema',
|
|
'https://json-schema.org/draft-04/schema',
|
|
'http://json-schema.org/draft-04/hyper-schema#',
|
|
'https://json-schema.org/draft-04/hyper-schema#',
|
|
'http://json-schema.org/draft-04/hyper-schema',
|
|
'https://json-schema.org/draft-04/hyper-schema',
|
|
'http://json-schema.org/draft-03/schema#',
|
|
'https://json-schema.org/draft-03/schema#',
|
|
'http://json-schema.org/draft-03/schema',
|
|
'https://json-schema.org/draft-03/schema',
|
|
'http://json-schema.org/draft-03/hyper-schema#',
|
|
'https://json-schema.org/draft-03/hyper-schema#',
|
|
'http://json-schema.org/draft-03/hyper-schema',
|
|
'https://json-schema.org/draft-03/hyper-schema',
|
|
])
|
|
|
|
export function is_json_schema_draft4(data: unknown) : data is JSONSchema4 {
|
|
return v4_schemas.has(data?.['$schema']);
|
|
}
|
|
|
|
const v6_schemas = new Set([
|
|
'http://json-schema.org/schema#',
|
|
'https://json-schema.org/schema#',
|
|
'http://json-schema.org/schema',
|
|
'https://json-schema.org/schema',
|
|
'http://json-schema.org/hyper-schema#',
|
|
'https://json-schema.org/hyper-schema#',
|
|
'http://json-schema.org/hyper-schema',
|
|
'https://json-schema.org/hyper-schema',
|
|
'http://json-schema.org/draft-06/schema#',
|
|
'https://json-schema.org/draft-06/schema#',
|
|
'http://json-schema.org/draft-06/schema',
|
|
'https://json-schema.org/draft-06/schema',
|
|
'http://json-schema.org/draft-06/hyper-schema#',
|
|
'https://json-schema.org/draft-06/hyper-schema#',
|
|
'http://json-schema.org/draft-06/hyper-schema',
|
|
'https://json-schema.org/draft-06/hyper-schema',
|
|
]);
|
|
|
|
export function is_json_schema_draft6(data: unknown) : data is JSONSchema6 {
|
|
return v6_schemas.has(data?.['$schema']);
|
|
}
|
|
|
|
const v7_schemas = new Set([
|
|
'http://json-schema.org/schema#',
|
|
'https://json-schema.org/schema#',
|
|
'http://json-schema.org/schema',
|
|
'https://json-schema.org/schema',
|
|
'http://json-schema.org/hyper-schema#',
|
|
'https://json-schema.org/hyper-schema#',
|
|
'http://json-schema.org/hyper-schema',
|
|
'https://json-schema.org/hyper-schema',
|
|
'http://json-schema.org/draft-07/schema#',
|
|
'https://json-schema.org/draft-07/schema#',
|
|
'http://json-schema.org/draft-07/schema',
|
|
'https://json-schema.org/draft-07/schema',
|
|
'http://json-schema.org/draft-07/hyper-schema#',
|
|
'https://json-schema.org/draft-07/hyper-schema#',
|
|
'http://json-schema.org/draft-07/hyper-schema',
|
|
'https://json-schema.org/draft-07/hyper-schema',
|
|
]);
|
|
|
|
export function is_json_schema_draft7(data: unknown) : data is JSONSchema7 {
|
|
return v7_schemas.has(data?.['$schema']);
|
|
}
|