jsonschema2markdown/src/detect-version.ts
2023-05-13 19:26:25 -07:00

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']);
}