ctan
Version:
CTAN (Comprehensive TeX Archive Network) API client for Node.js
131 lines (130 loc) • 3.96 kB
JavaScript
export const Author = {
type: 'object',
properties: {
key: { type: 'string' },
givenname: { type: 'string', default: '' },
familyname: { type: 'string', default: '' },
pkgs: {
type: 'array',
items: { type: 'string' },
uniqueItems: true,
nullable: true,
},
},
required: ["key", "givenname", "familyname"],
additionalProperties: true,
};
export const Authors = {
type: 'array',
items: Author,
};
export const PackageSummary = {
type: 'object',
properties: {
key: { type: 'string' },
name: { type: 'string' },
caption: { type: 'string' },
},
required: ["key", "name", "caption"],
additionalProperties: true,
};
export const Packages = {
type: 'array',
items: PackageSummary,
};
export const PackageAuthor = {
type: 'object',
properties: { id: { type: 'string' }, active: { type: 'boolean' } },
required: ["id", "active"],
additionalProperties: true,
};
export const Copyright = {
type: 'object',
properties: {
owner: { type: 'string' },
year: { type: 'string', nullable: true },
},
required: ["owner", "year"],
minProperties: 1,
additionalProperties: true,
};
export const PackageVersion = {
type: 'object',
properties: {
number: { type: 'string', nullable: true },
date: { type: 'string', nullable: true },
},
minProperties: 1,
required: [],
additionalProperties: true,
};
export const PackageDescription = {
type: 'object',
properties: {
text: { type: 'string', nullable: true },
language: { type: 'string', nullable: true },
},
required: [],
additionalProperties: true,
};
export const PackageDocumentation = {
type: 'object',
properties: {
language: { type: 'string', nullable: true },
details: { type: 'string', nullable: true },
href: { type: 'string', nullable: true },
},
required: [],
additionalProperties: true,
};
export const Package = {
type: 'object',
properties: {
id: { type: 'string' },
name: { type: 'string' },
caption: { type: 'string' },
authors: { type: 'array', items: PackageAuthor },
copyright: { type: 'array', items: Copyright, nullable: true },
license: {
type: ['string', 'array'],
oneOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }],
nullable: true,
},
version: { ...PackageVersion, nullable: true },
descriptions: { type: 'array', items: PackageDescription, nullable: true },
documentation: { type: 'array', items: PackageDocumentation },
ctan: {
type: 'object',
properties: {
path: { type: 'string' },
file: { type: 'boolean', nullable: true },
},
required: ['path'],
nullable: true,
additionalProperties: true,
},
install: { type: 'string', nullable: true },
miktex: { type: 'string', nullable: true },
texlive: { type: 'string', nullable: true },
index: { type: 'array', items: { type: 'string' }, nullable: true },
topics: { type: 'array', items: { type: 'string' }, nullable: true },
home: { type: 'string', nullable: true },
also: { type: 'array', items: { type: 'string' }, nullable: true },
},
required: ["id", "name", "caption", "authors", "documentation"],
additionalProperties: true,
};
export const Topic = {
type: 'object',
properties: {
key: { type: 'string' },
details: { type: 'string' },
packages: { type: 'array', items: { type: 'string' }, nullable: true },
},
required: ["key", "details"],
additionalProperties: true,
};
export const Topics = {
type: 'array',
items: Topic,
};