2025-05-12 05:38:44 +09:00

236 lines
7.3 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const FILENAME_REGEX = "^[a-zA-Z-._d,s]+$";
exports.default = {
$schema: "http://json-schema.org/schema#",
id: "https://gitbook.com/schemas/book.json",
title: "HonKit Configuration",
type: "object",
properties: {
root: {
type: "string",
title: "Path fro the root folder containing the book's content"
},
title: {
type: "string",
title: "Title of the book, default is extracted from README"
},
author: {
type: "string",
title: "Name of the author"
},
authorSort: {
type: "string",
title: "String to be used to sort the author(s)"
},
producer: {
type: "string",
title: "Name of the producer"
},
publisher: {
type: "string",
title: "Name of the publisher"
},
pubdate: {
type: "string",
title: "Publication date of the book"
},
series: {
type: "string",
title: "Series this book belongs to"
},
seriesIndex: {
type: "string",
title: "Index of the book in this series"
},
isbn: {
type: "string",
title: "ISBN for published book"
},
language: {
type: "string",
title: "Language of the book"
},
gitbook: {
type: "string",
default: "*",
title: "GitBook/HonKit version to match"
},
direction: {
type: "string",
enum: ["ltr", "rtl"],
title: "Direction of texts, default is detected in the pages"
},
theme: {
type: "string",
default: "default",
title: "Name of the theme plugin to use"
},
variables: {
type: "object",
title: "Templating context variables"
},
plugins: {
oneOf: [{ $ref: "#/definitions/pluginsArray" }, { $ref: "#/definitions/pluginsString" }],
default: []
},
pluginsConfig: {
type: "object",
title: "Configuration for plugins"
},
structure: {
type: "object",
properties: {
langs: {
default: "LANGS.md",
type: "string",
title: "File to use as languages index",
pattern: FILENAME_REGEX
},
readme: {
default: "README.md",
type: "string",
title: "File to use as preface",
pattern: FILENAME_REGEX
},
glossary: {
default: "GLOSSARY.md",
type: "string",
title: "File to use as glossary index",
pattern: FILENAME_REGEX
},
summary: {
default: "SUMMARY.md",
type: "string",
title: "File to use as table of contents",
pattern: FILENAME_REGEX
}
},
additionalProperties: false
},
pdf: {
type: "object",
title: "PDF specific configurations",
properties: {
pageNumbers: {
type: "boolean",
default: true,
title: "Add page numbers to the bottom of every page"
},
fontSize: {
type: "integer",
minimum: 8,
maximum: 30,
default: 12,
title: "Font size for the PDF output"
},
fontFamily: {
type: "string",
default: "Arial",
title: "Font family for the PDF output"
},
paperSize: {
type: "string",
enum: [
"a0",
"a1",
"a2",
"a3",
"a4",
"a5",
"a6",
"b0",
"b1",
"b2",
"b3",
"b4",
"b5",
"b6",
"legal",
"letter"
],
default: "a4",
title: "Paper size for the PDF"
},
chapterMark: {
type: "string",
enum: ["pagebreak", "rule", "both", "none"],
default: "pagebreak",
title: "How to mark detected chapters"
},
pageBreaksBefore: {
type: "string",
default: "/",
title: 'An XPath expression. Page breaks are inserted before the specified elements. To disable use the expression: "/"'
},
margin: {
type: "object",
properties: {
right: {
type: "integer",
title: "Right Margin",
minimum: 0,
maximum: 100,
default: 62
},
left: {
type: "integer",
title: "Left Margin",
minimum: 0,
maximum: 100,
default: 62
},
top: {
type: "integer",
title: "Top Margin",
minimum: 0,
maximum: 100,
default: 56
},
bottom: {
type: "integer",
title: "Bottom Margin",
minimum: 0,
maximum: 100,
default: 56
}
}
},
embedFonts: {
type: "boolean",
default: false,
title: "Embed all fonts into the PDF"
}
}
}
},
required: [],
definitions: {
pluginsArray: {
type: "array",
items: {
oneOf: [{ $ref: "#/definitions/pluginObject" }, { $ref: "#/definitions/pluginString" }]
}
},
pluginsString: {
type: "string"
},
pluginString: {
type: "string"
},
pluginObject: {
type: "object",
properties: {
name: {
type: "string"
},
version: {
type: "string"
}
},
additionalProperties: false,
required: ["name"]
}
}
};