docs/lib/frontmatter.js

143 строки
3.2 KiB
JavaScript
Исходник Обычный вид История

const parse = require('@github-docs/frontmatter')
const layoutNames = Object.keys(require('./layouts')).concat([false])
const semverRange = {
type: 'string',
conform: require('semver').validRange,
message: 'Must be a valid SemVer range'
}
const versionIds = Object.keys(require('./all-versions'))
const guideTypes = ['overview', 'quick_start', 'tutorial', 'how_to', 'reference']
const schema = {
properties: {
title: {
type: 'string',
required: true
},
shortTitle: {
type: 'string'
},
intro: {
type: 'string'
},
product: {
type: 'string'
},
permissions: {
type: 'string'
},
// true by default on articles, false on all other content
showMiniToc: {
type: 'boolean'
},
miniTocMaxHeadingLevel: {
type: 'number',
default: 3,
minimum: 2,
maximum: 4
},
mapTopic: {
type: 'boolean'
},
2020-10-21 00:19:14 +03:00
// allow hidden articles under `early-access`
hidden: {
2020-10-21 00:19:14 +03:00
type: 'boolean'
},
layout: {
type: ['string', 'boolean'],
enum: layoutNames,
message: 'must be the filename of an existing layout file, or `false` for no layout'
},
redirect_from: {
type: ['array', 'string']
},
allowTitleToDifferFromFilename: {
type: 'boolean'
},
introLinks: {
type: 'object',
properties: {
quickstart: { type: 'string' },
[Universe] Discussions Public Beta (#16547) * Update README * create structure for discussions landing page * is everything broken * [Universe] Dark mode (#16545) * Fix title * Add Discussions product * Correct title * Correct title * Move quickstart article * Move quickstart back out into article * Add and incorporate reusables * Move information about search * Draft conceptual information * Draft best practices * Draft further reading * Draft product introduction * Draft introduction * Add author metadata * Pluralize * Fix typos * Add introduction * Bump Octicons * Add some reusables * Add images * Revise article * Draft article * Change word * 🔪 the gerund * Add reusable * Revise introduction * Revise list * Simplify * Revise reusable * Fix reusable; add context * Rename reusable * Deduplicate conceptual information * 🔪 gerund * Add link to further reading * Move link and dispose of tip * Delete space * Add images * Add conceptual section * Add word * Delete newline * Revert package.json to state on main * Tweak images * Draft article * Add product name * Remove beta note * Use product name for future-proofing * Begin adding search information * Fix copypasta * little edits * build out a bit more of the guides content * Don't mention integrations for now * Escape quote * Remove authorship information for new defaults * Finish drafting article * Replace encoded character to match description * Revise away inline link * Accommodate 'for more information' in reusable * Fix links * Fix one last bit of copypasta * Update indices * Temporarily remove heading * Update introduction * Add new article 💀 * Remove commits from universe-2020-megabranch * Add article 💀 * update with a very rough draft * Add content about collaboration options to "About repositories" * Add content about discussions to "About issues" * Reorder content * Add is:discussion query * update with a few mmore fleshed out sections * update with more structure * Add reusable * Add screenshots * Clear way for actual procedural * Discussions landing page "Communities" section (#16692) * Make button Overview-able * Make card filtering more extensible * Guard for missing attributes * Use arbitrary dataset attributes * Add section with discussions-community-card * Tweak show more button behavior * Conditionally show "Show more" * Add beta_product frontmatter/label * Remove beta callout note * Hide changelog with no items * Finish importing community info * Fix borked markup * Omit search abr * Two columns should actually be two columns * Use org image, change card layout * Add two more examples * Fix title * Escape quote * Escape another quote * Draft article * Lower case * Relocate conceptual information * Update qualifier name * Draft article * Add conceptual information and links * Remove duplicative section * Fix copypasta * Revise reusable * Update link * Add content on categories * Lint the discussions YAML file * Update introduction and permissions * ⚓ * Reusablize; fix link * more planning content stuff * Escape quotes * Align prerequisites * Soften * Clean up prerequisites * Fix titles; version; add screenshot * Fix links * Actually fix links * Use better variable * Mention pinning * Update screenshots * Add screenshot * forgot to committ * update with reusable * add that screenshot * beef up landing page a bit * remove extra space * messed that up * fix hardcoded linkks weirdo * fix tests * update with permissions content * update with placeholder * filter out standalone category files from test * update * update @becca's :zap: feedback * update with more feedback * so many updates * fix links * fix some more tests * flesh some more things out * update with further reading blah blah * fix some things * remove the gate-features label for beta ship only * Add discussions video to product landing page (#16759) * Add discussions video placeholder * This might work maybe * fix tests * apply all of @becca's and @lecoursen's :zap: feedback :heart: * rename to fix test * Revert "Add discussions video to product landing page (#16759)" This reverts commit 2247e5d0881ca6b36cee421218e8341a7cc12ac7. * update with test fix Co-authored-by: Melanie Yarbrough <11952755+myarb@users.noreply.github.com> Co-authored-by: Laura Coursen <lecoursen@github.com> Co-authored-by: Matt Pollard <mattpollard@users.noreply.github.com> Co-authored-by: Jason Etcovitch <jasonetco@github.com> Co-authored-by: Sarah Schneider <sarahs@github.com>
2020-12-08 01:00:35 +03:00
reference: { type: 'string' },
overview: { type: 'string' }
}
},
authors: {
type: 'array',
items: {
type: 'string'
}
},
featuredLinks: {
type: 'object',
additionalProperties: false,
patternProperties: {
'^[a-zA-Z-_]+$': {
type: 'array',
items: { type: 'string' }
}
}
},
// Shown in `product-landing.html` "What's new" section
changelog: {
type: 'array',
items: {
type: 'object',
properties: {
title: { type: 'string' },
date: { type: 'string', format: 'date' },
href: { type: 'string' }
}
}
},
type: {
type: 'string',
enum: guideTypes
},
learningTracks: {
type: 'array'
},
[Universe] Discussions Public Beta (#16547) * Update README * create structure for discussions landing page * is everything broken * [Universe] Dark mode (#16545) * Fix title * Add Discussions product * Correct title * Correct title * Move quickstart article * Move quickstart back out into article * Add and incorporate reusables * Move information about search * Draft conceptual information * Draft best practices * Draft further reading * Draft product introduction * Draft introduction * Add author metadata * Pluralize * Fix typos * Add introduction * Bump Octicons * Add some reusables * Add images * Revise article * Draft article * Change word * 🔪 the gerund * Add reusable * Revise introduction * Revise list * Simplify * Revise reusable * Fix reusable; add context * Rename reusable * Deduplicate conceptual information * 🔪 gerund * Add link to further reading * Move link and dispose of tip * Delete space * Add images * Add conceptual section * Add word * Delete newline * Revert package.json to state on main * Tweak images * Draft article * Add product name * Remove beta note * Use product name for future-proofing * Begin adding search information * Fix copypasta * little edits * build out a bit more of the guides content * Don't mention integrations for now * Escape quote * Remove authorship information for new defaults * Finish drafting article * Replace encoded character to match description * Revise away inline link * Accommodate 'for more information' in reusable * Fix links * Fix one last bit of copypasta * Update indices * Temporarily remove heading * Update introduction * Add new article 💀 * Remove commits from universe-2020-megabranch * Add article 💀 * update with a very rough draft * Add content about collaboration options to "About repositories" * Add content about discussions to "About issues" * Reorder content * Add is:discussion query * update with a few mmore fleshed out sections * update with more structure * Add reusable * Add screenshots * Clear way for actual procedural * Discussions landing page "Communities" section (#16692) * Make button Overview-able * Make card filtering more extensible * Guard for missing attributes * Use arbitrary dataset attributes * Add section with discussions-community-card * Tweak show more button behavior * Conditionally show "Show more" * Add beta_product frontmatter/label * Remove beta callout note * Hide changelog with no items * Finish importing community info * Fix borked markup * Omit search abr * Two columns should actually be two columns * Use org image, change card layout * Add two more examples * Fix title * Escape quote * Escape another quote * Draft article * Lower case * Relocate conceptual information * Update qualifier name * Draft article * Add conceptual information and links * Remove duplicative section * Fix copypasta * Revise reusable * Update link * Add content on categories * Lint the discussions YAML file * Update introduction and permissions * ⚓ * Reusablize; fix link * more planning content stuff * Escape quotes * Align prerequisites * Soften * Clean up prerequisites * Fix titles; version; add screenshot * Fix links * Actually fix links * Use better variable * Mention pinning * Update screenshots * Add screenshot * forgot to committ * update with reusable * add that screenshot * beef up landing page a bit * remove extra space * messed that up * fix hardcoded linkks weirdo * fix tests * update with permissions content * update with placeholder * filter out standalone category files from test * update * update @becca's :zap: feedback * update with more feedback * so many updates * fix links * fix some more tests * flesh some more things out * update with further reading blah blah * fix some things * remove the gate-features label for beta ship only * Add discussions video to product landing page (#16759) * Add discussions video placeholder * This might work maybe * fix tests * apply all of @becca's and @lecoursen's :zap: feedback :heart: * rename to fix test * Revert "Add discussions video to product landing page (#16759)" This reverts commit 2247e5d0881ca6b36cee421218e8341a7cc12ac7. * update with test fix Co-authored-by: Melanie Yarbrough <11952755+myarb@users.noreply.github.com> Co-authored-by: Laura Coursen <lecoursen@github.com> Co-authored-by: Matt Pollard <mattpollard@users.noreply.github.com> Co-authored-by: Jason Etcovitch <jasonetco@github.com> Co-authored-by: Sarah Schneider <sarahs@github.com>
2020-12-08 01:00:35 +03:00
// Used in `product-landing.html`
beta_product: {
type: 'boolean'
},
// Show in `product-landing.html`
product_video: {
type: 'string',
format: 'url'
},
interactive: {
type: 'boolean'
},
// Platform-specific content preference
defaultPlatform: {
type: 'string',
2020-12-11 03:00:33 +03:00
enum: ['mac', 'windows', 'linux']
}
}
}
schema.properties.versions = {
type: ['object', 'string'], // allow a '*' string to indicate all versions
required: true,
properties: versionIds.reduce((acc, versionId) => {
acc[versionId] = semverRange
return acc
}, {})
}
function frontmatter (markdown, opts = {}) {
const defaults = {
schema,
validateKeyNames: true,
validateKeyOrder: false // TODO: enable this once we've sorted all the keys. See issue 9658
}
return parse(markdown, Object.assign({}, defaults, opts))
}
// attach the schema object so it can be `require`d elsewhere.
frontmatter.schema = schema
module.exports = frontmatter