configSchema top-level constant

Map<String, dynamic> const configSchema

Implementation

const configSchema = <String, dynamic>{
  r'$schema': 'http://json-schema.org/draft-06/schema#',
  r'$id': 'https://gitbook.com/schemas/book.json',
  'title': 'GitBook 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',
    },
    'isbn': {
      'type': 'string',
      'title': 'ISBN for published book',
    },
    'language': {
      'type': 'string',
      'title': 'Language of the book',
    },
    'author': {
      'type': 'string',
      'title': 'Name of the author',
    },
    'gitbook': {
      'type': 'string',
      'default': '*',
      'title': 'GitBook 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': [
        {r'$ref': '#/definitions/pluginsArray'},
        {r'$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': _filenameRegex,
        },
        'readme': {
          'default': 'README.md',
          'type': 'string',
          'title': 'File to use as preface',
          'pattern': _filenameRegex,
        },
        'glossary': {
          'default': 'GLOSSARY.md',
          'type': 'string',
          'title': 'File to use as glossary index',
          'pattern': _filenameRegex,
        },
        'summary': {
          'default': 'SUMMARY.md',
          'type': 'string',
          'title': 'File to use as table of contents',
          'pattern': _filenameRegex,
        },
      },
      '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': _pageBreakTitle,
        },
        '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,
            },
          },
        },
      },
    },
  },
  'required': [],
  'definitions': {
    'pluginsArray': {
      'type': 'array',
      'items': {
        'oneOf': [
          {r'$ref': '#/definitions/pluginObject'},
          {r'$ref': '#/definitions/pluginString'},
        ],
      },
    },
    'pluginsString': {
      'type': 'string',
    },
    'pluginString': {
      'type': 'string',
    },
    'pluginObject': {
      'type': 'object',
      'properties': {
        'name': {
          'type': 'string',
        },
        'version': {
          'type': 'string',
        }
      },
      'additionalProperties': false,
      'required': ['name'],
    },
  },
};