{"version":3,"file":"index.mjs","sources":["../ts/types.ts","../ts/util/type-maps.ts","../ts/util/guards.ts","../ts/util/node-type.ts"],"sourcesContent":["/* eslint-disable */\n\n// This file was automatically generated by `typescript.ts`.\n// Do not modify it by hand. Instead, modify the source `.schema.yaml` files\n// in the `schema` directory and run `npm run build:ts` to regenerate it.\n\n// Remove properties from an Object if their values is undefined\nconst compact = <O extends object>(o: O): O =>\n  Object.entries(o).reduce(\n    (compactedO: O, [k, v]) =>\n      v === undefined ? compactedO : { ...compactedO, [k]: v },\n    {} as O\n  )\n\nexport interface Types {\n  ArrayValidator: ArrayValidator\n  Article: Article\n  AudioObject: AudioObject\n  BlockContent: BlockContent\n  BooleanValidator: BooleanValidator\n  Brand: Brand\n  Cite: Cite\n  CiteGroup: CiteGroup\n  Code: Code\n  CodeBlock: CodeBlock\n  CodeBlockTypes: CodeBlockTypes\n  CodeChunk: CodeChunk\n  CodeError: CodeError\n  CodeExpression: CodeExpression\n  CodeFragment: CodeFragment\n  CodeFragmentTypes: CodeFragmentTypes\n  CodeTypes: CodeTypes\n  Collection: Collection\n  ConstantValidator: ConstantValidator\n  ContactPoint: ContactPoint\n  CreativeWork: CreativeWork\n  CreativeWorkTypes: CreativeWorkTypes\n  Datatable: Datatable\n  DatatableColumn: DatatableColumn\n  Date: Date\n  Delete: Delete\n  Emphasis: Emphasis\n  Entity: Entity\n  EntityTypes: EntityTypes\n  EnumValidator: EnumValidator\n  Figure: Figure\n  Function: Function\n  Grant: Grant\n  GrantTypes: GrantTypes\n  Heading: Heading\n  ImageObject: ImageObject\n  Include: Include\n  InlineContent: InlineContent\n  IntegerValidator: IntegerValidator\n  Link: Link\n  List: List\n  ListItem: ListItem\n  Mark: Mark\n  MarkTypes: MarkTypes\n  Math: Math\n  MathBlock: MathBlock\n  MathFragment: MathFragment\n  MathTypes: MathTypes\n  MediaObject: MediaObject\n  MediaObjectTypes: MediaObjectTypes\n  MonetaryGrant: MonetaryGrant\n  Node: Node\n  NumberValidator: NumberValidator\n  NumberValidatorTypes: NumberValidatorTypes\n  Organization: Organization\n  Paragraph: Paragraph\n  Parameter: Parameter\n  Periodical: Periodical\n  Person: Person\n  Product: Product\n  PropertyValue: PropertyValue\n  PublicationIssue: PublicationIssue\n  PublicationVolume: PublicationVolume\n  Quote: Quote\n  QuoteBlock: QuoteBlock\n  SoftwareApplication: SoftwareApplication\n  SoftwareEnvironment: SoftwareEnvironment\n  SoftwareSession: SoftwareSession\n  SoftwareSourceCode: SoftwareSourceCode\n  StringValidator: StringValidator\n  Strong: Strong\n  Subscript: Subscript\n  Superscript: Superscript\n  Table: Table\n  TableCell: TableCell\n  TableRow: TableRow\n  ThematicBreak: ThematicBreak\n  Thing: Thing\n  ThingTypes: ThingTypes\n  TupleValidator: TupleValidator\n  ValidatorTypes: ValidatorTypes\n  Variable: Variable\n  VariableTypes: VariableTypes\n  VideoObject: VideoObject\n  VolumeMount: VolumeMount\n}\n\n/**\n * The most simple compound (ie. non-atomic like `number`, `string` etc) type.\n */\nexport interface Entity {\n  type:\n    | 'Entity'\n    | 'ArrayValidator'\n    | 'Article'\n    | 'AudioObject'\n    | 'BooleanValidator'\n    | 'Brand'\n    | 'Cite'\n    | 'CiteGroup'\n    | 'Code'\n    | 'CodeBlock'\n    | 'CodeChunk'\n    | 'CodeError'\n    | 'CodeExpression'\n    | 'CodeFragment'\n    | 'Collection'\n    | 'ConstantValidator'\n    | 'ContactPoint'\n    | 'CreativeWork'\n    | 'Datatable'\n    | 'DatatableColumn'\n    | 'Date'\n    | 'Delete'\n    | 'Emphasis'\n    | 'EnumValidator'\n    | 'Figure'\n    | 'Function'\n    | 'Grant'\n    | 'Heading'\n    | 'ImageObject'\n    | 'Include'\n    | 'IntegerValidator'\n    | 'Link'\n    | 'List'\n    | 'ListItem'\n    | 'Mark'\n    | 'Math'\n    | 'MathBlock'\n    | 'MathFragment'\n    | 'MediaObject'\n    | 'MonetaryGrant'\n    | 'NumberValidator'\n    | 'Organization'\n    | 'Paragraph'\n    | 'Parameter'\n    | 'Periodical'\n    | 'Person'\n    | 'Product'\n    | 'PropertyValue'\n    | 'PublicationIssue'\n    | 'PublicationVolume'\n    | 'Quote'\n    | 'QuoteBlock'\n    | 'SoftwareApplication'\n    | 'SoftwareEnvironment'\n    | 'SoftwareSession'\n    | 'SoftwareSourceCode'\n    | 'StringValidator'\n    | 'Strong'\n    | 'Subscript'\n    | 'Superscript'\n    | 'Table'\n    | 'TableCell'\n    | 'TableRow'\n    | 'ThematicBreak'\n    | 'Thing'\n    | 'TupleValidator'\n    | 'Variable'\n    | 'VideoObject'\n    | 'VolumeMount'\n  id?: string\n  meta?: { [key: string]: any }\n}\n\n/**\n * Create a `Entity` node\n * @param props Object containing Entity schema properties as key/value pairs\n * @returns {Entity} Entity schema node\n */\nexport const entity = (props: Omit<Entity, 'type'> = {}): Entity => ({\n  ...compact(props),\n  type: 'Entity'\n})\n\n/**\n * A validator specifying constraints on an array node.\n */\nexport interface ArrayValidator extends Entity {\n  type: 'ArrayValidator'\n  contains?: ValidatorTypes\n  items?: ValidatorTypes\n  maxItems?: number\n  minItems?: number\n  uniqueItems?: boolean\n}\n\n/**\n * Create a `ArrayValidator` node\n * @param props Object containing ArrayValidator schema properties as key/value pairs\n * @returns {ArrayValidator} ArrayValidator schema node\n */\nexport const arrayValidator = (\n  props: Omit<ArrayValidator, 'type'> = {}\n): ArrayValidator => ({\n  ...compact(props),\n  type: 'ArrayValidator'\n})\n\n/**\n * A schema specifying that a node must be a boolean value.\n */\nexport interface BooleanValidator extends Entity {\n  type: 'BooleanValidator'\n}\n\n/**\n * Create a `BooleanValidator` node\n * @param props Object containing BooleanValidator schema properties as key/value pairs\n * @returns {BooleanValidator} BooleanValidator schema node\n */\nexport const booleanValidator = (\n  props: Omit<BooleanValidator, 'type'> = {}\n): BooleanValidator => ({\n  ...compact(props),\n  type: 'BooleanValidator'\n})\n\n/**\n * A reference to a CreativeWork that is cited in another CreativeWork.\n */\nexport interface Cite extends Entity {\n  type: 'Cite'\n  target: string\n  citationMode?: 'normal' | 'suppressAuthor'\n  content?: Array<InlineContent>\n  pageEnd?: string | number\n  pageStart?: string | number\n  pagination?: string\n  prefix?: string\n  suffix?: string\n}\n\n/**\n * Create a `Cite` node\n * @param props Object containing Cite schema properties as key/value pairs\n * @returns {Cite} Cite schema node\n */\nexport const cite = (props: Omit<Cite, 'type'>): Cite => ({\n  ...compact(props),\n  type: 'Cite'\n})\n\n/**\n * A group of `Cite` nodes\n */\nexport interface CiteGroup extends Entity {\n  type: 'CiteGroup'\n  items: Array<Cite>\n}\n\n/**\n * Create a `CiteGroup` node\n * @param props Object containing CiteGroup schema properties as key/value pairs\n * @returns {CiteGroup} CiteGroup schema node\n */\nexport const citeGroup = (props: Omit<CiteGroup, 'type'>): CiteGroup => ({\n  ...compact(props),\n  type: 'CiteGroup'\n})\n\n/**\n * Base type for code nodes e.g. `CodeBlock`, `CodeExpression`.\n */\nexport interface Code extends Entity {\n  type: 'Code' | 'CodeBlock' | 'CodeChunk' | 'CodeExpression' | 'CodeFragment'\n  text: string\n  format?: string\n  programmingLanguage?: string\n}\n\n/**\n * Create a `Code` node\n * @param props Object containing Code schema properties as key/value pairs\n * @returns {Code} Code schema node\n */\nexport const code = (props: Omit<Code, 'type'>): Code => ({\n  ...compact(props),\n  type: 'Code'\n})\n\n/**\n * A code block.\n */\nexport interface CodeBlock extends Code {\n  type: 'CodeBlock' | 'CodeChunk'\n  exportFrom?: string\n  importTo?: string\n}\n\n/**\n * Create a `CodeBlock` node\n * @param props Object containing CodeBlock schema properties as key/value pairs\n * @returns {CodeBlock} CodeBlock schema node\n */\nexport const codeBlock = (props: Omit<CodeBlock, 'type'>): CodeBlock => ({\n  ...compact(props),\n  type: 'CodeBlock'\n})\n\n/**\n * A executable chunk of code.\n */\nexport interface CodeChunk extends CodeBlock {\n  type: 'CodeChunk'\n  alters?: Array<string>\n  assigns?: Array<string | Variable>\n  declares?: Array<string | Variable | Function>\n  duration?: number\n  errors?: Array<CodeError>\n  imports?: Array<string | SoftwareSourceCode | SoftwareApplication>\n  outputs?: Array<Node>\n  reads?: Array<string>\n  uses?: Array<string | Variable>\n}\n\n/**\n * Create a `CodeChunk` node\n * @param props Object containing CodeChunk schema properties as key/value pairs\n * @returns {CodeChunk} CodeChunk schema node\n */\nexport const codeChunk = (props: Omit<CodeChunk, 'type'>): CodeChunk => ({\n  ...compact(props),\n  type: 'CodeChunk'\n})\n\n/**\n * Inline code.\n */\nexport interface CodeFragment extends Code {\n  type: 'CodeFragment' | 'CodeExpression'\n}\n\n/**\n * Create a `CodeFragment` node\n * @param props Object containing CodeFragment schema properties as key/value pairs\n * @returns {CodeFragment} CodeFragment schema node\n */\nexport const codeFragment = (\n  props: Omit<CodeFragment, 'type'>\n): CodeFragment => ({\n  ...compact(props),\n  type: 'CodeFragment'\n})\n\n/**\n * An expression defined in programming language source code.\n */\nexport interface CodeExpression extends CodeFragment {\n  type: 'CodeExpression'\n  errors?: Array<CodeError>\n  output?: Node\n}\n\n/**\n * Create a `CodeExpression` node\n * @param props Object containing CodeExpression schema properties as key/value pairs\n * @returns {CodeExpression} CodeExpression schema node\n */\nexport const codeExpression = (\n  props: Omit<CodeExpression, 'type'>\n): CodeExpression => ({\n  ...compact(props),\n  type: 'CodeExpression'\n})\n\n/**\n * An error that occurred when parsing, compiling or executing a Code node.\n */\nexport interface CodeError extends Entity {\n  type: 'CodeError'\n  errorMessage?: string\n  errorType?: string\n  stackTrace?: string\n}\n\n/**\n * Create a `CodeError` node\n * @param props Object containing CodeError schema properties as key/value pairs\n * @returns {CodeError} CodeError schema node\n */\nexport const codeError = (props: Omit<CodeError, 'type'> = {}): CodeError => ({\n  ...compact(props),\n  type: 'CodeError'\n})\n\n/**\n * A validator specifying a constant value that a node must have.\n */\nexport interface ConstantValidator extends Entity {\n  type: 'ConstantValidator'\n  value?: Node\n}\n\n/**\n * Create a `ConstantValidator` node\n * @param props Object containing ConstantValidator schema properties as key/value pairs\n * @returns {ConstantValidator} ConstantValidator schema node\n */\nexport const constantValidator = (\n  props: Omit<ConstantValidator, 'type'> = {}\n): ConstantValidator => ({\n  ...compact(props),\n  type: 'ConstantValidator'\n})\n\n/**\n * A date encoded as a ISO 8601 string.\n */\nexport interface Date extends Entity {\n  type: 'Date'\n  value: string\n}\n\n/**\n * Create a `Date` node\n * @param props Object containing Date schema properties as key/value pairs\n * @returns {Date} Date schema node\n */\nexport const date = (props: Omit<Date, 'type'>): Date => ({\n  ...compact(props),\n  type: 'Date'\n})\n\n/**\n * A base class for nodes that mark some other inline content\n * in some way (e.g. as being emphasised, or quoted).\n */\nexport interface Mark extends Entity {\n  type:\n    | 'Mark'\n    | 'Delete'\n    | 'Emphasis'\n    | 'Quote'\n    | 'Strong'\n    | 'Subscript'\n    | 'Superscript'\n  content: Array<InlineContent>\n}\n\n/**\n * Create a `Mark` node\n * @param props Object containing Mark schema properties as key/value pairs\n * @returns {Mark} Mark schema node\n */\nexport const mark = (props: Omit<Mark, 'type'>): Mark => ({\n  ...compact(props),\n  type: 'Mark'\n})\n\n/**\n * Content that is marked for deletion\n */\nexport interface Delete extends Mark {\n  type: 'Delete'\n}\n\n/**\n * Create a `Delete` node\n * @param props Object containing Delete schema properties as key/value pairs\n * @returns {Delete} Delete schema node\n */\nexport const del = (props: Omit<Delete, 'type'>): Delete => ({\n  ...compact(props),\n  type: 'Delete'\n})\n\n/**\n * Emphasised content.\n */\nexport interface Emphasis extends Mark {\n  type: 'Emphasis'\n}\n\n/**\n * Create a `Emphasis` node\n * @param props Object containing Emphasis schema properties as key/value pairs\n * @returns {Emphasis} Emphasis schema node\n */\nexport const emphasis = (props: Omit<Emphasis, 'type'>): Emphasis => ({\n  ...compact(props),\n  type: 'Emphasis'\n})\n\n/**\n * The most generic type of item.\n */\nexport interface Thing extends Entity {\n  type:\n    | 'Thing'\n    | 'Article'\n    | 'AudioObject'\n    | 'Brand'\n    | 'Collection'\n    | 'ContactPoint'\n    | 'CreativeWork'\n    | 'Datatable'\n    | 'DatatableColumn'\n    | 'Figure'\n    | 'Grant'\n    | 'ImageObject'\n    | 'MediaObject'\n    | 'MonetaryGrant'\n    | 'Organization'\n    | 'Periodical'\n    | 'Person'\n    | 'Product'\n    | 'PropertyValue'\n    | 'PublicationIssue'\n    | 'PublicationVolume'\n    | 'SoftwareApplication'\n    | 'SoftwareEnvironment'\n    | 'SoftwareSession'\n    | 'SoftwareSourceCode'\n    | 'Table'\n    | 'VideoObject'\n    | 'VolumeMount'\n  alternateNames?: Array<string>\n  description?: string | Array<Node>\n  identifiers?: Array<string | PropertyValue>\n  name?: string\n  url?: string\n}\n\n/**\n * Create a `Thing` node\n * @param props Object containing Thing schema properties as key/value pairs\n * @returns {Thing} Thing schema node\n */\nexport const thing = (props: Omit<Thing, 'type'> = {}): Thing => ({\n  ...compact(props),\n  type: 'Thing'\n})\n\n/**\n * A brand used by an organization or person for labeling a product,\n * product group, or similar.\n */\nexport interface Brand extends Thing {\n  type: 'Brand'\n  name: string\n  logo?: string | ImageObject\n  reviews?: Array<string>\n}\n\n/**\n * Create a `Brand` node\n * @param props Object containing Brand schema properties as key/value pairs\n * @returns {Brand} Brand schema node\n */\nexport const brand = (props: Omit<Brand, 'type'>): Brand => ({\n  ...compact(props),\n  type: 'Brand'\n})\n\n/**\n * A contact point, for example, a R&D department.\n */\nexport interface ContactPoint extends Thing {\n  type: 'ContactPoint'\n  availableLanguages?: Array<string>\n  emails?: Array<string>\n  telephoneNumbers?: Array<string>\n}\n\n/**\n * Create a `ContactPoint` node\n * @param props Object containing ContactPoint schema properties as key/value pairs\n * @returns {ContactPoint} ContactPoint schema node\n */\nexport const contactPoint = (\n  props: Omit<ContactPoint, 'type'> = {}\n): ContactPoint => ({\n  ...compact(props),\n  type: 'ContactPoint'\n})\n\n/**\n * A creative work, including books, movies, photographs, software programs, etc.\n */\nexport interface CreativeWork extends Thing {\n  type:\n    | 'CreativeWork'\n    | 'Article'\n    | 'AudioObject'\n    | 'Collection'\n    | 'Datatable'\n    | 'Figure'\n    | 'ImageObject'\n    | 'MediaObject'\n    | 'Periodical'\n    | 'PublicationIssue'\n    | 'PublicationVolume'\n    | 'SoftwareApplication'\n    | 'SoftwareSourceCode'\n    | 'Table'\n    | 'VideoObject'\n  authors?: Array<Person | Organization>\n  content?: Array<Node>\n  dateAccepted?: Date | string\n  dateCreated?: Date | string\n  dateModified?: Date | string\n  datePublished?: Date | string\n  dateReceived?: Date | string\n  editors?: Array<Person>\n  fundedBy?: Array<Grant | MonetaryGrant>\n  funders?: Array<Person | Organization>\n  isPartOf?: CreativeWorkTypes\n  keywords?: Array<string>\n  licenses?: Array<string | CreativeWorkTypes>\n  parts?: Array<CreativeWorkTypes>\n  publisher?: Person | Organization\n  references?: Array<string | CreativeWorkTypes>\n  text?: string\n  title?: string | Array<Node>\n  version?: string | number\n}\n\n/**\n * Create a `CreativeWork` node\n * @param props Object containing CreativeWork schema properties as key/value pairs\n * @returns {CreativeWork} CreativeWork schema node\n */\nexport const creativeWork = (\n  props: Omit<CreativeWork, 'type'> = {}\n): CreativeWork => ({\n  ...compact(props),\n  type: 'CreativeWork'\n})\n\n/**\n * An article, including news and scholarly articles.\n */\nexport interface Article extends CreativeWork {\n  type: 'Article'\n}\n\n/**\n * Create a `Article` node\n * @param props Object containing Article schema properties as key/value pairs\n * @returns {Article} Article schema node\n */\nexport const article = (props: Omit<Article, 'type'> = {}): Article => ({\n  ...compact(props),\n  type: 'Article'\n})\n\n/**\n * A created collection of CreativeWorks or other artefacts.\n */\nexport interface Collection extends CreativeWork {\n  type: 'Collection'\n  parts: Array<CreativeWorkTypes>\n}\n\n/**\n * Create a `Collection` node\n * @param props Object containing Collection schema properties as key/value pairs\n * @returns {Collection} Collection schema node\n */\nexport const collection = (props: Omit<Collection, 'type'>): Collection => ({\n  ...compact(props),\n  type: 'Collection'\n})\n\n/**\n * A table of data.\n */\nexport interface Datatable extends CreativeWork {\n  type: 'Datatable'\n  columns: Array<DatatableColumn>\n}\n\n/**\n * Create a `Datatable` node\n * @param props Object containing Datatable schema properties as key/value pairs\n * @returns {Datatable} Datatable schema node\n */\nexport const datatable = (props: Omit<Datatable, 'type'>): Datatable => ({\n  ...compact(props),\n  type: 'Datatable'\n})\n\n/**\n * A media object, such as an image, video, or audio object embedded in a web page or a\n * downloadable dataset.\n */\nexport interface MediaObject extends CreativeWork {\n  type: 'MediaObject' | 'AudioObject' | 'ImageObject' | 'VideoObject'\n  contentUrl: string\n  bitrate?: number\n  contentSize?: number\n  embedUrl?: string\n  format?: string\n}\n\n/**\n * Create a `MediaObject` node\n * @param props Object containing MediaObject schema properties as key/value pairs\n * @returns {MediaObject} MediaObject schema node\n */\nexport const mediaObject = (props: Omit<MediaObject, 'type'>): MediaObject => ({\n  ...compact(props),\n  type: 'MediaObject'\n})\n\n/**\n * An audio file\n */\nexport interface AudioObject extends MediaObject {\n  type: 'AudioObject'\n  caption?: string\n  transcript?: string\n}\n\n/**\n * Create a `AudioObject` node\n * @param props Object containing AudioObject schema properties as key/value pairs\n * @returns {AudioObject} AudioObject schema node\n */\nexport const audioObject = (props: Omit<AudioObject, 'type'>): AudioObject => ({\n  ...compact(props),\n  type: 'AudioObject'\n})\n\n/**\n * A column of data within a Datatable.\n */\nexport interface DatatableColumn extends Thing {\n  type: 'DatatableColumn'\n  name: string\n  values: Array<any>\n  validator?: ArrayValidator\n}\n\n/**\n * Create a `DatatableColumn` node\n * @param props Object containing DatatableColumn schema properties as key/value pairs\n * @returns {DatatableColumn} DatatableColumn schema node\n */\nexport const datatableColumn = (\n  props: Omit<DatatableColumn, 'type'>\n): DatatableColumn => ({\n  ...compact(props),\n  type: 'DatatableColumn'\n})\n\n/**\n * A schema specifying that a node must be one of several values.\n */\nexport interface EnumValidator extends Entity {\n  type: 'EnumValidator'\n  values?: Array<Node>\n}\n\n/**\n * Create a `EnumValidator` node\n * @param props Object containing EnumValidator schema properties as key/value pairs\n * @returns {EnumValidator} EnumValidator schema node\n */\nexport const enumValidator = (\n  props: Omit<EnumValidator, 'type'> = {}\n): EnumValidator => ({\n  ...compact(props),\n  type: 'EnumValidator'\n})\n\n/**\n * Encapsulates one or more images, videos, tables, etc, and provides captions and labels for them.\n */\nexport interface Figure extends CreativeWork {\n  type: 'Figure'\n  caption?: Array<Node>\n  label?: string\n}\n\n/**\n * Create a `Figure` node\n * @param props Object containing Figure schema properties as key/value pairs\n * @returns {Figure} Figure schema node\n */\nexport const figure = (props: Omit<Figure, 'type'> = {}): Figure => ({\n  ...compact(props),\n  type: 'Figure'\n})\n\n/**\n * A function with a name, which might take Parameters and return a value of a certain type.\n */\nexport interface Function extends Entity {\n  type: 'Function'\n  name?: string\n  parameters?: Array<Parameter>\n  returns?: ValidatorTypes\n}\n\n/**\n * Create a `Function` node\n * @param props Object containing Function schema properties as key/value pairs\n * @returns {Function} Function schema node\n */\nexport const function_ = (props: Omit<Function, 'type'> = {}): Function => ({\n  ...compact(props),\n  type: 'Function'\n})\n\n/**\n * A grant, typically financial or otherwise quantifiable, of resources.\n */\nexport interface Grant extends Thing {\n  type: 'Grant' | 'MonetaryGrant'\n  fundedItems?: Array<Thing>\n  sponsors?: Array<Person | Organization>\n}\n\n/**\n * Create a `Grant` node\n * @param props Object containing Grant schema properties as key/value pairs\n * @returns {Grant} Grant schema node\n */\nexport const grant = (props: Omit<Grant, 'type'> = {}): Grant => ({\n  ...compact(props),\n  type: 'Grant'\n})\n\n/**\n * Heading\n */\nexport interface Heading extends Entity {\n  type: 'Heading'\n  content: Array<InlineContent>\n  depth?: number\n}\n\n/**\n * Create a `Heading` node\n * @param props Object containing Heading schema properties as key/value pairs\n * @returns {Heading} Heading schema node\n */\nexport const heading = (props: Omit<Heading, 'type'>): Heading => ({\n  ...compact(props),\n  type: 'Heading'\n})\n\n/**\n * An image file.\n */\nexport interface ImageObject extends MediaObject {\n  type: 'ImageObject'\n  caption?: string\n  thumbnail?: ImageObject\n}\n\n/**\n * Create a `ImageObject` node\n * @param props Object containing ImageObject schema properties as key/value pairs\n * @returns {ImageObject} ImageObject schema node\n */\nexport const imageObject = (props: Omit<ImageObject, 'type'>): ImageObject => ({\n  ...compact(props),\n  type: 'ImageObject'\n})\n\n/**\n * A directive to include content from an external source (e.g. file, URL) or content.\n */\nexport interface Include extends Entity {\n  type: 'Include'\n  source: string\n  content?: Array<BlockContent>\n  format?: string\n}\n\n/**\n * Create a `Include` node\n * @param props Object containing Include schema properties as key/value pairs\n * @returns {Include} Include schema node\n */\nexport const include = (props: Omit<Include, 'type'>): Include => ({\n  ...compact(props),\n  type: 'Include'\n})\n\n/**\n * A validator specifying the constraints on a numeric node.\n */\nexport interface NumberValidator extends Entity {\n  type: 'NumberValidator' | 'IntegerValidator'\n  exclusiveMaximum?: number\n  exclusiveMinimum?: number\n  maximum?: number\n  minimum?: number\n  multipleOf?: number\n}\n\n/**\n * Create a `NumberValidator` node\n * @param props Object containing NumberValidator schema properties as key/value pairs\n * @returns {NumberValidator} NumberValidator schema node\n */\nexport const numberValidator = (\n  props: Omit<NumberValidator, 'type'> = {}\n): NumberValidator => ({\n  ...compact(props),\n  type: 'NumberValidator'\n})\n\n/**\n * A validator specifying the constraints on an integer node.\n */\nexport interface IntegerValidator extends NumberValidator {\n  type: 'IntegerValidator'\n}\n\n/**\n * Create a `IntegerValidator` node\n * @param props Object containing IntegerValidator schema properties as key/value pairs\n * @returns {IntegerValidator} IntegerValidator schema node\n */\nexport const integerValidator = (\n  props: Omit<IntegerValidator, 'type'> = {}\n): IntegerValidator => ({\n  ...compact(props),\n  type: 'IntegerValidator'\n})\n\n/**\n * A hyperlink to other pages, sections within the same document, resources, or any URL.\n */\nexport interface Link extends Entity {\n  type: 'Link'\n  content: Array<InlineContent>\n  target: string\n  exportFrom?: string\n  importTo?: string\n  relation?: string\n  title?: string\n}\n\n/**\n * Create a `Link` node\n * @param props Object containing Link schema properties as key/value pairs\n * @returns {Link} Link schema node\n */\nexport const link = (props: Omit<Link, 'type'>): Link => ({\n  ...compact(props),\n  type: 'Link'\n})\n\n/**\n * A list of items.\n */\nexport interface List extends Entity {\n  type: 'List'\n  items: Array<ListItem>\n  order?: 'ascending' | 'descending' | 'unordered'\n}\n\n/**\n * Create a `List` node\n * @param props Object containing List schema properties as key/value pairs\n * @returns {List} List schema node\n */\nexport const list = (props: Omit<List, 'type'>): List => ({\n  ...compact(props),\n  type: 'List'\n})\n\n/**\n * A single item in a list.\n */\nexport interface ListItem extends Entity {\n  type: 'ListItem'\n  content: Array<Node>\n  checked?: boolean\n}\n\n/**\n * Create a `ListItem` node\n * @param props Object containing ListItem schema properties as key/value pairs\n * @returns {ListItem} ListItem schema node\n */\nexport const listItem = (props: Omit<ListItem, 'type'>): ListItem => ({\n  ...compact(props),\n  type: 'ListItem'\n})\n\n/**\n * A mathematical variable or equation.\n */\nexport interface Math extends Entity {\n  type: 'Math' | 'MathBlock' | 'MathFragment'\n  text: string\n  errors?: Array<string>\n  mathLanguage?: string\n}\n\n/**\n * Create a `Math` node\n * @param props Object containing Math schema properties as key/value pairs\n * @returns {Math} Math schema node\n */\nexport const math = (props: Omit<Math, 'type'>): Math => ({\n  ...compact(props),\n  type: 'Math'\n})\n\n/**\n * A block of math, e.g an equation, to be treated as block content.\n */\nexport interface MathBlock extends Math {\n  type: 'MathBlock'\n}\n\n/**\n * Create a `MathBlock` node\n * @param props Object containing MathBlock schema properties as key/value pairs\n * @returns {MathBlock} MathBlock schema node\n */\nexport const mathBlock = (props: Omit<MathBlock, 'type'>): MathBlock => ({\n  ...compact(props),\n  type: 'MathBlock'\n})\n\n/**\n * A fragment of math, e.g a variable name, to be treated as inline content.\n */\nexport interface MathFragment extends Math {\n  type: 'MathFragment'\n}\n\n/**\n * Create a `MathFragment` node\n * @param props Object containing MathFragment schema properties as key/value pairs\n * @returns {MathFragment} MathFragment schema node\n */\nexport const mathFragment = (\n  props: Omit<MathFragment, 'type'>\n): MathFragment => ({\n  ...compact(props),\n  type: 'MathFragment'\n})\n\n/**\n * A monetary grant.\n */\nexport interface MonetaryGrant extends Grant {\n  type: 'MonetaryGrant'\n  amounts?: number\n  funders?: Array<Person | Organization>\n}\n\n/**\n * Create a `MonetaryGrant` node\n * @param props Object containing MonetaryGrant schema properties as key/value pairs\n * @returns {MonetaryGrant} MonetaryGrant schema node\n */\nexport const monetaryGrant = (\n  props: Omit<MonetaryGrant, 'type'> = {}\n): MonetaryGrant => ({\n  ...compact(props),\n  type: 'MonetaryGrant'\n})\n\n/**\n * An organization such as a school, NGO, corporation, club, etc.\n */\nexport interface Organization extends Thing {\n  type: 'Organization'\n  address?: string\n  brands?: Array<Brand>\n  contactPoints?: Array<ContactPoint>\n  departments?: Array<Organization>\n  funders?: Array<Organization | Person>\n  legalName?: string\n  logo?: string | ImageObject\n  parentOrganization?: Organization\n}\n\n/**\n * Create a `Organization` node\n * @param props Object containing Organization schema properties as key/value pairs\n * @returns {Organization} Organization schema node\n */\nexport const organization = (\n  props: Omit<Organization, 'type'> = {}\n): Organization => ({\n  ...compact(props),\n  type: 'Organization'\n})\n\n/**\n * Paragraph\n */\nexport interface Paragraph extends Entity {\n  type: 'Paragraph'\n  content: Array<InlineContent>\n}\n\n/**\n * Create a `Paragraph` node\n * @param props Object containing Paragraph schema properties as key/value pairs\n * @returns {Paragraph} Paragraph schema node\n */\nexport const paragraph = (props: Omit<Paragraph, 'type'>): Paragraph => ({\n  ...compact(props),\n  type: 'Paragraph'\n})\n\n/**\n * A variable representing a name / value pair.\n */\nexport interface Variable extends Entity {\n  type: 'Variable' | 'Parameter'\n  name: string\n  readonly?: boolean\n  validator?: ValidatorTypes\n  value?: Node\n}\n\n/**\n * Create a `Variable` node\n * @param props Object containing Variable schema properties as key/value pairs\n * @returns {Variable} Variable schema node\n */\nexport const variable = (props: Omit<Variable, 'type'>): Variable => ({\n  ...compact(props),\n  type: 'Variable'\n})\n\n/**\n * A parameter that can be set and used in evaluated code.\n */\nexport interface Parameter extends Variable {\n  type: 'Parameter'\n  default?: Node\n  extends?: boolean\n  repeats?: boolean\n  required?: boolean\n}\n\n/**\n * Create a `Parameter` node\n * @param props Object containing Parameter schema properties as key/value pairs\n * @returns {Parameter} Parameter schema node\n */\nexport const parameter = (props: Omit<Parameter, 'type'>): Parameter => ({\n  ...compact(props),\n  type: 'Parameter'\n})\n\n/**\n * A periodical publication.\n */\nexport interface Periodical extends CreativeWork {\n  type: 'Periodical'\n  dateEnd?: Date | string\n  dateStart?: Date | string\n  issns?: Array<string>\n}\n\n/**\n * Create a `Periodical` node\n * @param props Object containing Periodical schema properties as key/value pairs\n * @returns {Periodical} Periodical schema node\n */\nexport const periodical = (\n  props: Omit<Periodical, 'type'> = {}\n): Periodical => ({\n  ...compact(props),\n  type: 'Periodical'\n})\n\n/**\n * A person (alive, dead, undead, or fictional).\n */\nexport interface Person extends Thing {\n  type: 'Person'\n  address?: string\n  affiliations?: Array<Organization>\n  emails?: Array<string>\n  familyNames?: Array<string>\n  funders?: Array<Organization | Person>\n  givenNames?: Array<string>\n  honorificPrefix?: string\n  honorificSuffix?: string\n  jobTitle?: string\n  memberOf?: Array<Organization>\n  telephoneNumbers?: Array<string>\n}\n\n/**\n * Create a `Person` node\n * @param props Object containing Person schema properties as key/value pairs\n * @returns {Person} Person schema node\n */\nexport const person = (props: Omit<Person, 'type'> = {}): Person => ({\n  ...compact(props),\n  type: 'Person'\n})\n\n/**\n * Any offered product or service. For example, a pair of shoes;\n * a haircut; or an episode of a TV show streamed online.\n */\nexport interface Product extends Thing {\n  type: 'Product'\n  brands?: Array<Brand>\n  logo?: string | ImageObject\n  productID?: string\n}\n\n/**\n * Create a `Product` node\n * @param props Object containing Product schema properties as key/value pairs\n * @returns {Product} Product schema node\n */\nexport const product = (props: Omit<Product, 'type'> = {}): Product => ({\n  ...compact(props),\n  type: 'Product'\n})\n\n/**\n * A property-value pair.\n */\nexport interface PropertyValue extends Thing {\n  type: 'PropertyValue'\n  value: Node\n  propertyID?: string\n}\n\n/**\n * Create a `PropertyValue` node\n * @param props Object containing PropertyValue schema properties as key/value pairs\n * @returns {PropertyValue} PropertyValue schema node\n */\nexport const propertyValue = (\n  props: Omit<PropertyValue, 'type'>\n): PropertyValue => ({\n  ...compact(props),\n  type: 'PropertyValue'\n})\n\n/**\n * A part of a successively published publication such as a periodical or publication\n * volume, often numbered.\n */\nexport interface PublicationIssue extends CreativeWork {\n  type: 'PublicationIssue'\n  issueNumber?: string | number\n  pageEnd?: string | number\n  pageStart?: string | number\n  pagination?: string\n}\n\n/**\n * Create a `PublicationIssue` node\n * @param props Object containing PublicationIssue schema properties as key/value pairs\n * @returns {PublicationIssue} PublicationIssue schema node\n */\nexport const publicationIssue = (\n  props: Omit<PublicationIssue, 'type'> = {}\n): PublicationIssue => ({\n  ...compact(props),\n  type: 'PublicationIssue'\n})\n\n/**\n * A part of a successively published publication such as a periodical or multi-volume work.\n */\nexport interface PublicationVolume extends CreativeWork {\n  type: 'PublicationVolume'\n  pageEnd?: string | number\n  pageStart?: string | number\n  pagination?: string\n  volumeNumber?: string | number\n}\n\n/**\n * Create a `PublicationVolume` node\n * @param props Object containing PublicationVolume schema properties as key/value pairs\n * @returns {PublicationVolume} PublicationVolume schema node\n */\nexport const publicationVolume = (\n  props: Omit<PublicationVolume, 'type'> = {}\n): PublicationVolume => ({\n  ...compact(props),\n  type: 'PublicationVolume'\n})\n\n/**\n * Inline, quoted content.\n */\nexport interface Quote extends Mark {\n  type: 'Quote'\n  cite?: Cite | string\n}\n\n/**\n * Create a `Quote` node\n * @param props Object containing Quote schema properties as key/value pairs\n * @returns {Quote} Quote schema node\n */\nexport const quote = (props: Omit<Quote, 'type'>): Quote => ({\n  ...compact(props),\n  type: 'Quote'\n})\n\n/**\n * A section quoted from somewhere else.\n */\nexport interface QuoteBlock extends Entity {\n  type: 'QuoteBlock'\n  content: Array<BlockContent>\n  cite?: Cite | string\n}\n\n/**\n * Create a `QuoteBlock` node\n * @param props Object containing QuoteBlock schema properties as key/value pairs\n * @returns {QuoteBlock} QuoteBlock schema node\n */\nexport const quoteBlock = (props: Omit<QuoteBlock, 'type'>): QuoteBlock => ({\n  ...compact(props),\n  type: 'QuoteBlock'\n})\n\n/**\n * A software application.\n */\nexport interface SoftwareApplication extends CreativeWork {\n  type: 'SoftwareApplication'\n  softwareRequirements?: Array<SoftwareApplication>\n  softwareVersion?: string\n}\n\n/**\n * Create a `SoftwareApplication` node\n * @param props Object containing SoftwareApplication schema properties as key/value pairs\n * @returns {SoftwareApplication} SoftwareApplication schema node\n */\nexport const softwareApplication = (\n  props: Omit<SoftwareApplication, 'type'> = {}\n): SoftwareApplication => ({\n  ...compact(props),\n  type: 'SoftwareApplication'\n})\n\n/**\n * A computational environment.\n */\nexport interface SoftwareEnvironment extends Thing {\n  type: 'SoftwareEnvironment'\n  name: string\n  adds?: Array<SoftwareSourceCode>\n  extends?: Array<SoftwareEnvironment>\n  removes?: Array<SoftwareSourceCode>\n}\n\n/**\n * Create a `SoftwareEnvironment` node\n * @param props Object containing SoftwareEnvironment schema properties as key/value pairs\n * @returns {SoftwareEnvironment} SoftwareEnvironment schema node\n */\nexport const softwareEnvironment = (\n  props: Omit<SoftwareEnvironment, 'type'>\n): SoftwareEnvironment => ({\n  ...compact(props),\n  type: 'SoftwareEnvironment'\n})\n\n/**\n * Definition of a compute session, including its software and compute resource\n * requirements and status.\n */\nexport interface SoftwareSession extends Thing {\n  type: 'SoftwareSession'\n  clientsLimit?: number\n  clientsRequest?: number\n  cpuLimit?: number\n  cpuRequest?: number\n  dateEnd?: Date | string\n  dateStart?: Date | string\n  durationLimit?: number\n  durationRequest?: number\n  environment?: SoftwareEnvironment\n  memoryLimit?: number\n  memoryRequest?: number\n  networkTransferLimit?: number\n  networkTransferRequest?: number\n  status?:\n    | 'unknown'\n    | 'starting'\n    | 'started'\n    | 'stopping'\n    | 'stopped'\n    | 'failed'\n  timeoutLimit?: number\n  timeoutRequest?: number\n  volumeMounts?: Array<VolumeMount>\n}\n\n/**\n * Create a `SoftwareSession` node\n * @param props Object containing SoftwareSession schema properties as key/value pairs\n * @returns {SoftwareSession} SoftwareSession schema node\n */\nexport const softwareSession = (\n  props: Omit<SoftwareSession, 'type'> = {}\n): SoftwareSession => ({\n  ...compact(props),\n  type: 'SoftwareSession'\n})\n\n/**\n * Computer programming source code. Example: Full (compile ready) solutions, code snippet samples, scripts, templates.\n */\nexport interface SoftwareSourceCode extends CreativeWork {\n  type: 'SoftwareSourceCode'\n  codeRepository?: string\n  codeSampleType?: string\n  maintainers?: Array<Organization | Person>\n  programmingLanguage?: string\n  runtimePlatform?: Array<string>\n  softwareRequirements?: Array<\n    SoftwareSourceCode | SoftwareApplication | string\n  >\n  targetProducts?: Array<SoftwareApplication>\n}\n\n/**\n * Create a `SoftwareSourceCode` node\n * @param props Object containing SoftwareSourceCode schema properties as key/value pairs\n * @returns {SoftwareSourceCode} SoftwareSourceCode schema node\n */\nexport const softwareSourceCode = (\n  props: Omit<SoftwareSourceCode, 'type'> = {}\n): SoftwareSourceCode => ({\n  ...compact(props),\n  type: 'SoftwareSourceCode'\n})\n\n/**\n * A schema specifying constraints on a string node.\n */\nexport interface StringValidator extends Entity {\n  type: 'StringValidator'\n  maxLength?: number\n  minLength?: number\n  pattern?: string\n}\n\n/**\n * Create a `StringValidator` node\n * @param props Object containing StringValidator schema properties as key/value pairs\n * @returns {StringValidator} StringValidator schema node\n */\nexport const stringValidator = (\n  props: Omit<StringValidator, 'type'> = {}\n): StringValidator => ({\n  ...compact(props),\n  type: 'StringValidator'\n})\n\n/**\n * Strongly emphasised content.\n */\nexport interface Strong extends Mark {\n  type: 'Strong'\n}\n\n/**\n * Create a `Strong` node\n * @param props Object containing Strong schema properties as key/value pairs\n * @returns {Strong} Strong schema node\n */\nexport const strong = (props: Omit<Strong, 'type'>): Strong => ({\n  ...compact(props),\n  type: 'Strong'\n})\n\n/**\n * Subscripted content.\n */\nexport interface Subscript extends Mark {\n  type: 'Subscript'\n}\n\n/**\n * Create a `Subscript` node\n * @param props Object containing Subscript schema properties as key/value pairs\n * @returns {Subscript} Subscript schema node\n */\nexport const subscript = (props: Omit<Subscript, 'type'>): Subscript => ({\n  ...compact(props),\n  type: 'Subscript'\n})\n\n/**\n * Superscripted content.\n */\nexport interface Superscript extends Mark {\n  type: 'Superscript'\n}\n\n/**\n * Create a `Superscript` node\n * @param props Object containing Superscript schema properties as key/value pairs\n * @returns {Superscript} Superscript schema node\n */\nexport const superscript = (props: Omit<Superscript, 'type'>): Superscript => ({\n  ...compact(props),\n  type: 'Superscript'\n})\n\n/**\n * A table.\n */\nexport interface Table extends CreativeWork {\n  type: 'Table'\n  rows: Array<TableRow>\n}\n\n/**\n * Create a `Table` node\n * @param props Object containing Table schema properties as key/value pairs\n * @returns {Table} Table schema node\n */\nexport const table = (props: Omit<Table, 'type'>): Table => ({\n  ...compact(props),\n  type: 'Table'\n})\n\n/**\n * A cell within a `Table`.\n */\nexport interface TableCell extends Entity {\n  type: 'TableCell'\n  content: Array<Node>\n  cellType?: 'data' | 'header'\n  colspan?: number\n  name?: string\n  rowspan?: number\n}\n\n/**\n * Create a `TableCell` node\n * @param props Object containing TableCell schema properties as key/value pairs\n * @returns {TableCell} TableCell schema node\n */\nexport const tableCell = (props: Omit<TableCell, 'type'>): TableCell => ({\n  ...compact(props),\n  type: 'TableCell'\n})\n\n/**\n * A row within a Table.\n */\nexport interface TableRow extends Entity {\n  type: 'TableRow'\n  cells: Array<TableCell>\n  rowType?: 'header' | 'footer'\n}\n\n/**\n * Create a `TableRow` node\n * @param props Object containing TableRow schema properties as key/value pairs\n * @returns {TableRow} TableRow schema node\n */\nexport const tableRow = (props: Omit<TableRow, 'type'>): TableRow => ({\n  ...compact(props),\n  type: 'TableRow'\n})\n\n/**\n * A thematic break, such as a scene change in a story, a transition to another topic, or a new document.\n */\nexport interface ThematicBreak extends Entity {\n  type: 'ThematicBreak'\n}\n\n/**\n * Create a `ThematicBreak` node\n * @param props Object containing ThematicBreak schema properties as key/value pairs\n * @returns {ThematicBreak} ThematicBreak schema node\n */\nexport const thematicBreak = (\n  props: Omit<ThematicBreak, 'type'> = {}\n): ThematicBreak => ({\n  ...compact(props),\n  type: 'ThematicBreak'\n})\n\n/**\n * A validator specifying constraints on an array of heterogeneous items.\n */\nexport interface TupleValidator extends Entity {\n  type: 'TupleValidator'\n  items?: Array<ValidatorTypes>\n}\n\n/**\n * Create a `TupleValidator` node\n * @param props Object containing TupleValidator schema properties as key/value pairs\n * @returns {TupleValidator} TupleValidator schema node\n */\nexport const tupleValidator = (\n  props: Omit<TupleValidator, 'type'> = {}\n): TupleValidator => ({\n  ...compact(props),\n  type: 'TupleValidator'\n})\n\n/**\n * A video file.\n */\nexport interface VideoObject extends MediaObject {\n  type: 'VideoObject'\n  caption?: string\n  thumbnail?: ImageObject\n  transcript?: string\n}\n\n/**\n * Create a `VideoObject` node\n * @param props Object containing VideoObject schema properties as key/value pairs\n * @returns {VideoObject} VideoObject schema node\n */\nexport const videoObject = (props: Omit<VideoObject, 'type'>): VideoObject => ({\n  ...compact(props),\n  type: 'VideoObject'\n})\n\n/**\n * Describes a volume mount from a host to container.\n */\nexport interface VolumeMount extends Thing {\n  type: 'VolumeMount'\n  mountDestination: string\n  mountOptions?: Array<string>\n  mountSource?: string\n  mountType?: string\n}\n\n/**\n * Create a `VolumeMount` node\n * @param props Object containing VolumeMount schema properties as key/value pairs\n * @returns {VolumeMount} VolumeMount schema node\n */\nexport const volumeMount = (props: Omit<VolumeMount, 'type'>): VolumeMount => ({\n  ...compact(props),\n  type: 'VolumeMount'\n})\n\n/**\n * Union type for valid block content.\n */\nexport type BlockContent =\n  | CodeBlock\n  | CodeChunk\n  | Heading\n  | List\n  | ListItem\n  | MathBlock\n  | Paragraph\n  | QuoteBlock\n  | Table\n  | ThematicBreak\n\n/**\n * All type schemas that are derived from CodeBlock\n */\nexport type CodeBlockTypes = CodeBlock | CodeChunk\n\n/**\n * All type schemas that are derived from CodeFragment\n */\nexport type CodeFragmentTypes = CodeFragment | CodeExpression\n\n/**\n * All type schemas that are derived from Code\n */\nexport type CodeTypes =\n  | Code\n  | CodeBlock\n  | CodeChunk\n  | CodeExpression\n  | CodeFragment\n\n/**\n * All type schemas that are derived from CreativeWork\n */\nexport type CreativeWorkTypes =\n  | CreativeWork\n  | Article\n  | AudioObject\n  | Collection\n  | Datatable\n  | Figure\n  | ImageObject\n  | MediaObject\n  | Periodical\n  | PublicationIssue\n  | PublicationVolume\n  | SoftwareApplication\n  | SoftwareSourceCode\n  | Table\n  | VideoObject\n\n/**\n * All type schemas that are derived from Entity\n */\nexport type EntityTypes =\n  | Entity\n  | ArrayValidator\n  | Article\n  | AudioObject\n  | BooleanValidator\n  | Brand\n  | Cite\n  | CiteGroup\n  | Code\n  | CodeBlock\n  | CodeChunk\n  | CodeError\n  | CodeExpression\n  | CodeFragment\n  | Collection\n  | ConstantValidator\n  | ContactPoint\n  | CreativeWork\n  | Datatable\n  | DatatableColumn\n  | Date\n  | Delete\n  | Emphasis\n  | EnumValidator\n  | Figure\n  | Function\n  | Grant\n  | Heading\n  | ImageObject\n  | Include\n  | IntegerValidator\n  | Link\n  | List\n  | ListItem\n  | Mark\n  | Math\n  | MathBlock\n  | MathFragment\n  | MediaObject\n  | MonetaryGrant\n  | NumberValidator\n  | Organization\n  | Paragraph\n  | Parameter\n  | Periodical\n  | Person\n  | Product\n  | PropertyValue\n  | PublicationIssue\n  | PublicationVolume\n  | Quote\n  | QuoteBlock\n  | SoftwareApplication\n  | SoftwareEnvironment\n  | SoftwareSession\n  | SoftwareSourceCode\n  | StringValidator\n  | Strong\n  | Subscript\n  | Superscript\n  | Table\n  | TableCell\n  | TableRow\n  | ThematicBreak\n  | Thing\n  | TupleValidator\n  | Variable\n  | VideoObject\n  | VolumeMount\n\n/**\n * All type schemas that are derived from Grant\n */\nexport type GrantTypes = Grant | MonetaryGrant\n\n/**\n * Union type for valid inline content.\n */\nexport type InlineContent =\n  | null\n  | boolean\n  | number\n  | string\n  | CodeFragment\n  | CodeExpression\n  | Delete\n  | Emphasis\n  | ImageObject\n  | Link\n  | MathFragment\n  | Quote\n  | Strong\n  | Subscript\n  | Superscript\n  | Cite\n  | CiteGroup\n\n/**\n * All type schemas that are derived from Mark\n */\nexport type MarkTypes =\n  | Mark\n  | Delete\n  | Emphasis\n  | Quote\n  | Strong\n  | Subscript\n  | Superscript\n\n/**\n * All type schemas that are derived from Math\n */\nexport type MathTypes = Math | MathBlock | MathFragment\n\n/**\n * All type schemas that are derived from MediaObject\n */\nexport type MediaObjectTypes =\n  | MediaObject\n  | AudioObject\n  | ImageObject\n  | VideoObject\n\n/**\n * Union type for all valid nodes.\n */\nexport type Node =\n  | null\n  | boolean\n  | number\n  | string\n  | Array<any>\n  | { [key: string]: any }\n  | Entity\n\n/**\n * All type schemas that are derived from NumberValidator\n */\nexport type NumberValidatorTypes = NumberValidator | IntegerValidator\n\n/**\n * All type schemas that are derived from Thing\n */\nexport type ThingTypes =\n  | Thing\n  | Article\n  | AudioObject\n  | Brand\n  | Collection\n  | ContactPoint\n  | CreativeWork\n  | Datatable\n  | DatatableColumn\n  | Figure\n  | Grant\n  | ImageObject\n  | MediaObject\n  | MonetaryGrant\n  | Organization\n  | Periodical\n  | Person\n  | Product\n  | PropertyValue\n  | PublicationIssue\n  | PublicationVolume\n  | SoftwareApplication\n  | SoftwareEnvironment\n  | SoftwareSession\n  | SoftwareSourceCode\n  | Table\n  | VideoObject\n  | VolumeMount\n\n/**\n * Union type for all validator types.\n */\nexport type ValidatorTypes =\n  | ConstantValidator\n  | EnumValidator\n  | BooleanValidator\n  | NumberValidator\n  | IntegerValidator\n  | StringValidator\n  | ArrayValidator\n  | TupleValidator\n\n/**\n * All type schemas that are derived from Variable\n */\nexport type VariableTypes = Variable | Parameter\n","import * as types from '../types'\nimport { TypeMap } from './type-map'\n\ntype Primitives = undefined | null | boolean | string | number\n\nexport const codeBlockTypes: TypeMap<Exclude<\n  types.CodeBlockTypes,\n  Primitives\n>> = {\n  CodeBlock: 'CodeBlock',\n  CodeChunk: 'CodeChunk'\n}\n\nexport const codeFragmentTypes: TypeMap<Exclude<\n  types.CodeFragmentTypes,\n  Primitives\n>> = {\n  CodeFragment: 'CodeFragment',\n  CodeExpression: 'CodeExpression'\n}\n\nexport const codeTypes: TypeMap<Exclude<types.CodeTypes, Primitives>> = {\n  Code: 'Code',\n  CodeBlock: 'CodeBlock',\n  CodeChunk: 'CodeChunk',\n  CodeExpression: 'CodeExpression',\n  CodeFragment: 'CodeFragment'\n}\n\nexport const creativeWorkTypes: TypeMap<Exclude<\n  types.CreativeWorkTypes,\n  Primitives\n>> = {\n  CreativeWork: 'CreativeWork',\n  Article: 'Article',\n  AudioObject: 'AudioObject',\n  Collection: 'Collection',\n  Datatable: 'Datatable',\n  Figure: 'Figure',\n  ImageObject: 'ImageObject',\n  MediaObject: 'MediaObject',\n  Periodical: 'Periodical',\n  PublicationIssue: 'PublicationIssue',\n  PublicationVolume: 'PublicationVolume',\n  SoftwareApplication: 'SoftwareApplication',\n  SoftwareSourceCode: 'SoftwareSourceCode',\n  Table: 'Table',\n  VideoObject: 'VideoObject'\n}\n\nexport const entityTypes: TypeMap<Exclude<types.EntityTypes, Primitives>> = {\n  Entity: 'Entity',\n  ArrayValidator: 'ArrayValidator',\n  Article: 'Article',\n  AudioObject: 'AudioObject',\n  BooleanValidator: 'BooleanValidator',\n  Brand: 'Brand',\n  Cite: 'Cite',\n  CiteGroup: 'CiteGroup',\n  Code: 'Code',\n  CodeBlock: 'CodeBlock',\n  CodeChunk: 'CodeChunk',\n  CodeError: 'CodeError',\n  CodeExpression: 'CodeExpression',\n  CodeFragment: 'CodeFragment',\n  Collection: 'Collection',\n  ConstantValidator: 'ConstantValidator',\n  ContactPoint: 'ContactPoint',\n  CreativeWork: 'CreativeWork',\n  Datatable: 'Datatable',\n  DatatableColumn: 'DatatableColumn',\n  Date: 'Date',\n  Delete: 'Delete',\n  Emphasis: 'Emphasis',\n  EnumValidator: 'EnumValidator',\n  Figure: 'Figure',\n  Function: 'Function',\n  Grant: 'Grant',\n  Heading: 'Heading',\n  ImageObject: 'ImageObject',\n  Include: 'Include',\n  IntegerValidator: 'IntegerValidator',\n  Link: 'Link',\n  List: 'List',\n  ListItem: 'ListItem',\n  Mark: 'Mark',\n  Math: 'Math',\n  MathBlock: 'MathBlock',\n  MathFragment: 'MathFragment',\n  MediaObject: 'MediaObject',\n  MonetaryGrant: 'MonetaryGrant',\n  NumberValidator: 'NumberValidator',\n  Organization: 'Organization',\n  Paragraph: 'Paragraph',\n  Parameter: 'Parameter',\n  Periodical: 'Periodical',\n  Person: 'Person',\n  Product: 'Product',\n  PropertyValue: 'PropertyValue',\n  PublicationIssue: 'PublicationIssue',\n  PublicationVolume: 'PublicationVolume',\n  Quote: 'Quote',\n  QuoteBlock: 'QuoteBlock',\n  SoftwareApplication: 'SoftwareApplication',\n  SoftwareEnvironment: 'SoftwareEnvironment',\n  SoftwareSession: 'SoftwareSession',\n  SoftwareSourceCode: 'SoftwareSourceCode',\n  StringValidator: 'StringValidator',\n  Strong: 'Strong',\n  Subscript: 'Subscript',\n  Superscript: 'Superscript',\n  Table: 'Table',\n  TableCell: 'TableCell',\n  TableRow: 'TableRow',\n  ThematicBreak: 'ThematicBreak',\n  Thing: 'Thing',\n  TupleValidator: 'TupleValidator',\n  Variable: 'Variable',\n  VideoObject: 'VideoObject',\n  VolumeMount: 'VolumeMount'\n}\n\nexport const grantTypes: TypeMap<Exclude<types.GrantTypes, Primitives>> = {\n  Grant: 'Grant',\n  MonetaryGrant: 'MonetaryGrant'\n}\n\nexport const markTypes: TypeMap<Exclude<types.MarkTypes, Primitives>> = {\n  Mark: 'Mark',\n  Delete: 'Delete',\n  Emphasis: 'Emphasis',\n  Quote: 'Quote',\n  Strong: 'Strong',\n  Subscript: 'Subscript',\n  Superscript: 'Superscript'\n}\n\nexport const mathTypes: TypeMap<Exclude<types.MathTypes, Primitives>> = {\n  Math: 'Math',\n  MathBlock: 'MathBlock',\n  MathFragment: 'MathFragment'\n}\n\nexport const mediaObjectTypes: TypeMap<Exclude<\n  types.MediaObjectTypes,\n  Primitives\n>> = {\n  MediaObject: 'MediaObject',\n  AudioObject: 'AudioObject',\n  ImageObject: 'ImageObject',\n  VideoObject: 'VideoObject'\n}\n\nexport const numberValidatorTypes: TypeMap<Exclude<\n  types.NumberValidatorTypes,\n  Primitives\n>> = {\n  NumberValidator: 'NumberValidator',\n  IntegerValidator: 'IntegerValidator'\n}\n\nexport const thingTypes: TypeMap<Exclude<types.ThingTypes, Primitives>> = {\n  Thing: 'Thing',\n  Article: 'Article',\n  AudioObject: 'AudioObject',\n  Brand: 'Brand',\n  Collection: 'Collection',\n  ContactPoint: 'ContactPoint',\n  CreativeWork: 'CreativeWork',\n  Datatable: 'Datatable',\n  DatatableColumn: 'DatatableColumn',\n  Figure: 'Figure',\n  Grant: 'Grant',\n  ImageObject: 'ImageObject',\n  MediaObject: 'MediaObject',\n  MonetaryGrant: 'MonetaryGrant',\n  Organization: 'Organization',\n  Periodical: 'Periodical',\n  Person: 'Person',\n  Product: 'Product',\n  PropertyValue: 'PropertyValue',\n  PublicationIssue: 'PublicationIssue',\n  PublicationVolume: 'PublicationVolume',\n  SoftwareApplication: 'SoftwareApplication',\n  SoftwareEnvironment: 'SoftwareEnvironment',\n  SoftwareSession: 'SoftwareSession',\n  SoftwareSourceCode: 'SoftwareSourceCode',\n  Table: 'Table',\n  VideoObject: 'VideoObject',\n  VolumeMount: 'VolumeMount'\n}\n\nexport const validatorTypes: TypeMap<Exclude<\n  types.ValidatorTypes,\n  Primitives\n>> = {\n  ConstantValidator: 'ConstantValidator',\n  EnumValidator: 'EnumValidator',\n  BooleanValidator: 'BooleanValidator',\n  NumberValidator: 'NumberValidator',\n  IntegerValidator: 'IntegerValidator',\n  StringValidator: 'StringValidator',\n  ArrayValidator: 'ArrayValidator',\n  TupleValidator: 'TupleValidator'\n}\n\nexport const variableTypes: TypeMap<Exclude<\n  types.VariableTypes,\n  Primitives\n>> = {\n  Variable: 'Variable',\n  Parameter: 'Parameter'\n}\n\nexport const blockContentTypes: TypeMap<Exclude<\n  types.BlockContent,\n  Primitives\n>> = {\n  CodeBlock: 'CodeBlock',\n  CodeChunk: 'CodeChunk',\n  Heading: 'Heading',\n  List: 'List',\n  ListItem: 'ListItem',\n  MathBlock: 'MathBlock',\n  Paragraph: 'Paragraph',\n  QuoteBlock: 'QuoteBlock',\n  Table: 'Table',\n  ThematicBreak: 'ThematicBreak'\n}\n\nexport const inlineContentTypes: TypeMap<Exclude<\n  types.InlineContent,\n  Primitives\n>> = {\n  CodeFragment: 'CodeFragment',\n  CodeExpression: 'CodeExpression',\n  Delete: 'Delete',\n  Emphasis: 'Emphasis',\n  ImageObject: 'ImageObject',\n  Link: 'Link',\n  MathFragment: 'MathFragment',\n  Quote: 'Quote',\n  Strong: 'Strong',\n  Subscript: 'Subscript',\n  Superscript: 'Superscript',\n  Cite: 'Cite',\n  CiteGroup: 'CiteGroup'\n}\n","import {\n  Article,\n  Entity,\n  InlineContent,\n  ListItem,\n  Node,\n  Paragraph,\n  Types\n} from '../types'\nimport { TypeMap, TypeMapGeneric } from './type-map'\nimport {\n  blockContentTypes,\n  codeTypes,\n  creativeWorkTypes,\n  inlineContentTypes\n} from './type-maps'\n\ntype ExtractGeneric<Type> = Type extends TypeMap<infer X>\n  ? X\n  : Type extends TypeMapGeneric<infer Y>\n  ? Y\n  : never\n\n/**\n * Returns a function which returns true is the type is a member\n * of the type map.\n *\n * @param {TypeMap} typeMap An object containing schema type values\n */\nexport const typeIs = <T extends Partial<TypeMap | TypeMapGeneric>>(\n  typeMap: T\n) => (type: string): boolean => Object.keys(typeMap).includes(type)\n\n/**\n * Returns a type guard to determine whether a node belongs to a set\n * of types.\n * Returns a boolean value and narrows the TypeScript inferred type to\n * the type.\n *\n * @template {TypeMap} T\n * @param {T} typeMap\n * @param {Node} node A Stencila schema node object\n */\nexport const nodeIs = <T extends Partial<TypeMap | TypeMapGeneric>>(\n  typeMap: T\n) => (node?: Node): node is ExtractGeneric<T> => {\n  return isEntity(node) ? typeIs(typeMap)(node.type) : false\n}\n\n/**\n * Returns a type guard to determine whether a node is of a particular type.\n * Returns a boolean value and narrows the TypeScript inferred type to\n * the type.\n *\n * @param type The type to test for\n */\n// eslint-disable-next-line\nexport const is = <Ts extends Entity>(type: keyof TypeMap<Ts>) => {\n  // @ts-ignore\n  const typeMap: TypeMap<Ts> = {\n    [type]: type\n  }\n  return nodeIs(typeMap)\n}\n\n/**\n * A type guard to determine whether a node is of a specific type.\n * Returns a boolean value and narrows the TypeScript inferred type to\n * the type.\n *\n * e.g. `isA('Paragraph', node)`\n *\n * @param type The name of the type to test for\n * @param node The node being tested\n */\nexport const isA = <K extends keyof Types>(\n  type: K,\n  node: Node | undefined\n): node is Types[K] => {\n  return isEntity(node) && node.type === type\n}\n\nexport const isInstanceOf = <\n  E = never,\n  TM = TypeMap<E extends Entity ? E : never>\n>(\n  typeMap: E extends never ? never : TM,\n  node?: Node\n): node is E => {\n  return isEntity(node) && Object.keys(typeMap).includes(node.type)\n}\n\n/**\n * Returns a type guard to determine whether a node is of a specific type.\n * Returns a boolean value and narrows the TypeScript inferred type to\n * the type.\n *\n * e.g. `article.content.filter(isType('Paragraph'))`\n *\n * @param type The type to test for\n */\nexport const isType = <K extends keyof Types>(type: K) => (\n  node?: Node\n): node is Types[K] => {\n  return node !== undefined && isA(type, node)\n}\n\n/**\n * Type guard to determine whether a node is a primitive type.\n * Returns a boolean value and narrows the TypeScript inferred type.\n *\n * @param {Node} node The node to get the type for\n * @returns {(node is null | boolean | number | string)} Returns true if node is one of `null`, `boolean`, `string`, or `number`\n */\nexport const isPrimitive = (\n  node?: Node\n): node is null | boolean | number | string => {\n  const type = typeof node\n  if (node === null) return true\n  if (type === 'boolean') return true\n  if (type === 'number') return true\n  if (type === 'string') return true\n  return false\n}\n\n/**\n * Type guard to determine whether a node is an `Entity`\n *\n * @param {Node} node The node to get the type for\n * @returns {(node is Entity)} Returns true if node is an `Entity` or derived type\n */\nexport const isEntity = (node?: Node): node is Entity => {\n  if (node === null || node === undefined) return false\n  return Object.prototype.hasOwnProperty.call(node, 'type')\n}\n\n/**\n * Type guard to determine whether a node is both `InlineContent` and\n * and an `Entity`.\n *\n * @param {Node} node The node to get the type for\n * @returns {(node is InlineContent)}\n */\nexport const isInlineEntity = (node?: Node): node is InlineContent => {\n  return typeof node === 'object' && isEntity(node)\n    ? typeIs(inlineContentTypes)(node.type)\n    : false\n}\n/**\n * Type guard to determine whether a node is `InlineContent`.\n *\n * @param {Node} node The node to get the type for\n * @returns {(node is InlineContent)}\n */\nexport const isInlineContent = (node?: Node): node is InlineContent => {\n  return isPrimitive(node) || isInlineEntity(node)\n}\n\n/**\n * Type guard to determine whether a node is `BlockContent`.\n *\n * @param {Node} node The node to get the type for\n * @returns {(node is BlockContent)}\n */\nexport const isBlockContent = nodeIs(blockContentTypes)\n\n/**\n * Type guard to determine whether a node is a `CreativeWork`.\n *\n * @param {Node} node The node to get the type for\n * @returns {(node is CreativeWork)}\n */\nexport const isCreativeWork = nodeIs(creativeWorkTypes)\n\n/**\n * Type guard to determine whether a node is a `Code`.\n *\n * @param {Node} node The node to get the type for\n * @returns {(node is Code)}\n */\nexport const isCode = nodeIs(codeTypes)\n\n/**\n * Type guard to determine whether a node is an `Article`.\n *\n * @param {Node} node The node to get the type for\n * @returns {(node is Article)}\n */\nexport const isArticle = is<Article>('Article')\n\n/**\n * Type guard to determine whether a node is an `Paragraph`.\n *\n * @param {Node} node The node to get the type for\n * @returns {(node is Paragraph)}\n */\nexport const isParagraph = is<Paragraph>('Paragraph')\n\n/**\n * Type guard to determine whether a node is an `ListItem`.\n *\n * @param {Node} node The node to get the type for\n * @returns {(node is ListItem)}\n */\nexport const isListItem = is<ListItem>('ListItem')\n","import { Node } from '../types'\nimport { isEntity } from './guards'\n\n/**\n * Get the type of a node\n * @param {Node} node The schema node to get the type for\n */\nexport const nodeType = (node: Node): string => {\n  if (node === null) return 'null'\n  if (typeof node === 'boolean') return 'boolean'\n  if (typeof node === 'number') return 'number'\n  if (typeof node === 'string') return 'string'\n  if (Array.isArray(node)) return 'array'\n  if (isEntity(node)) return node.type\n  return typeof node\n}\n"],"names":["compact","o","Object","entries","reduce","compactedO","v","undefined","entity","props","type","arrayValidator","booleanValidator","cite","citeGroup","code","codeBlock","codeChunk","codeFragment","codeExpression","codeError","constantValidator","date","mark","del","emphasis","thing","brand","contactPoint","creativeWork","article","collection","datatable","mediaObject","audioObject","datatableColumn","enumValidator","figure","function_","grant","heading","imageObject","include","numberValidator","integerValidator","link","list","listItem","math","mathBlock","mathFragment","monetaryGrant","organization","paragraph","variable","parameter","periodical","person","product","propertyValue","publicationIssue","publicationVolume","quote","quoteBlock","softwareApplication","softwareEnvironment","softwareSession","softwareSourceCode","stringValidator","strong","subscript","superscript","table","tableCell","tableRow","thematicBreak","tupleValidator","videoObject","volumeMount","codeBlockTypes","CodeBlock","CodeChunk","codeFragmentTypes","CodeFragment","CodeExpression","codeTypes","Code","creativeWorkTypes","CreativeWork","Article","AudioObject","Collection","Datatable","Figure","ImageObject","MediaObject","Periodical","PublicationIssue","PublicationVolume","SoftwareApplication","SoftwareSourceCode","Table","VideoObject","entityTypes","Entity","ArrayValidator","BooleanValidator","Brand","Cite","CiteGroup","CodeError","ConstantValidator","ContactPoint","DatatableColumn","Date","Delete","Emphasis","EnumValidator","Function","Grant","Heading","Include","IntegerValidator","Link","List","ListItem","Mark","Math","MathBlock","MathFragment","MonetaryGrant","NumberValidator","Organization","Paragraph","Parameter","Person","Product","PropertyValue","Quote","QuoteBlock","SoftwareEnvironment","SoftwareSession","StringValidator","Strong","Subscript","Superscript","TableCell","TableRow","ThematicBreak","Thing","TupleValidator","Variable","VolumeMount","grantTypes","markTypes","mathTypes","mediaObjectTypes","numberValidatorTypes","thingTypes","validatorTypes","variableTypes","blockContentTypes","inlineContentTypes","typeIs","typeMap","keys","includes","nodeIs","node","isEntity","is","isA","isInstanceOf","isType","isPrimitive","prototype","hasOwnProperty","call","isInlineEntity","isInlineContent","isBlockContent","isCreativeWork","isCode","isArticle","isParagraph","isListItem","nodeType","Array","isArray"],"mappings":"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"}