docs: Enable docs from remote plugin (#10656)
* Add local components to build on new DocsPage functionality. * Add new nav-data format, and placeholder remote-plugins config * Bump to pre-release components and implement remote loading - Migrates /docs to new DocsPage API, and adds remote plugin loading functionality - Migrates /guides and /intro to new DocsPage API * Remove now unused JS nav config * Cut empty comment line
This commit is contained in:
parent
16ccb8f685
commit
a906a1b426
|
@ -0,0 +1,11 @@
|
|||
import s from './style.module.css'
|
||||
|
||||
function DevAlert({ children }) {
|
||||
return (
|
||||
<div className={s.root}>
|
||||
<div className={s.inner}>{children}</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default DevAlert
|
|
@ -0,0 +1,14 @@
|
|||
.root {
|
||||
border-top: 1px solid;
|
||||
border-bottom: 1px solid;
|
||||
border-color: var(--danger-d1);
|
||||
padding: 1rem;
|
||||
font-size: 1rem;
|
||||
background: var(--danger-l2);
|
||||
font-family: var(--font-monospace);
|
||||
color: var(--danger-d1);
|
||||
}
|
||||
|
||||
.inner {
|
||||
composes: g-grid-container from global;
|
||||
}
|
|
@ -0,0 +1,22 @@
|
|||
import React from 'react'
|
||||
import InlineSvg from '@hashicorp/react-inline-svg'
|
||||
import svgRibbonIcon from './ribbon-icon.svg?include'
|
||||
import s from './style.module.css'
|
||||
|
||||
const tierNames = {
|
||||
official: 'Official',
|
||||
community: 'Community',
|
||||
}
|
||||
|
||||
function PluginTierLabel({ tier }) {
|
||||
return (
|
||||
<div className={s.root} data-tier={tier}>
|
||||
{tier === 'official' ? (
|
||||
<InlineSvg className={s.icon} src={svgRibbonIcon} />
|
||||
) : null}
|
||||
<span className={s.text}>{tierNames[tier]}</span>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default PluginTierLabel
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.4347 9.00402C12.5253 8.85068 12.6647 8.72602 12.976 8.42402C13.284 8.12402 13.4047 7.68802 13.292 7.27868C13.1787 6.86868 13.122 6.69202 13.122 6.51535C13.122 6.33868 13.178 6.16202 13.292 5.75068C13.3471 5.5491 13.3469 5.33638 13.2913 5.13493C13.2357 4.93349 13.1267 4.75076 12.976 4.60602C12.6647 4.30335 12.5253 4.17868 12.434 4.02468C12.3447 3.87202 12.3027 3.69135 12.1893 3.28268C12.1318 3.07957 12.0217 2.8952 11.8703 2.7481C11.7189 2.60101 11.5314 2.49636 11.3267 2.44468C10.902 2.33402 10.7167 2.29335 10.5587 2.20468C10.402 2.11535 10.272 1.97935 9.96534 1.68068C9.81164 1.53281 9.62251 1.42695 9.4161 1.37324C9.2097 1.31954 8.99295 1.31981 8.78667 1.37402C8.36267 1.48402 8.18134 1.53935 7.99934 1.53868C7.81734 1.53868 7.63601 1.48402 7.21334 1.37402C7.00716 1.31999 6.79056 1.31982 6.58429 1.37352C6.37803 1.42721 6.18901 1.53298 6.03534 1.68068C5.72534 1.98202 5.59534 2.11802 5.43801 2.20602C5.28001 2.29468 5.09467 2.33468 4.67334 2.44468C4.46871 2.49648 4.28129 2.60117 4.12988 2.74825C3.97847 2.89533 3.86839 3.07964 3.81067 3.28268C3.69734 3.69335 3.65534 3.87402 3.56534 4.02602C3.47467 4.17935 3.33534 4.30335 3.02401 4.60602C2.87327 4.75076 2.76436 4.93349 2.70875 5.13493C2.65313 5.33638 2.65288 5.5491 2.70801 5.75068C2.82201 6.16335 2.87867 6.34002 2.87801 6.51735C2.87801 6.69335 2.82134 6.86935 2.70801 7.27868C2.59534 7.68735 2.71601 8.12402 3.02401 8.42335C3.33467 8.72535 3.47467 8.85068 3.56534 9.00468C3.65534 9.15735 3.69734 9.33802 3.81067 9.74668C3.92334 10.156 4.25201 10.4753 4.67334 10.5847C5.26934 10.74 5.33334 11 5.33334 11.3333V14.6667L8.00001 13.192L10.6667 14.6667V11.3333C10.6667 11.002 10.73 10.74 11.3267 10.5853C11.5313 10.5336 11.7188 10.4289 11.8702 10.2819C12.0216 10.1348 12.1317 9.95043 12.1893 9.74735C12.3027 9.33668 12.3447 9.15602 12.4347 9.00402V9.00402ZM6.00001 6.66668C6.00001 6.13625 6.21072 5.62754 6.58579 5.25247C6.96087 4.8774 7.46957 4.66668 8.00001 4.66668C8.53044 4.66668 9.03915 4.8774 9.41422 5.25247C9.78929 5.62754 10 6.13625 10 6.66668C10 7.19712 9.78929 7.70582 9.41422 8.0809C9.03915 8.45597 8.53044 8.66668 8.00001 8.66668C7.46957 8.66668 6.96087 8.45597 6.58579 8.0809C6.21072 7.70582 6.00001 7.19712 6.00001 6.66668Z" fill="black"/>
|
||||
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
Note: colours have been hard-coded
|
||||
to match Terraform Registry tier labels.
|
||||
*/
|
||||
.root {
|
||||
--background-color: #8f96a2;
|
||||
--text-color: #fff;
|
||||
|
||||
align-items: center;
|
||||
background: var(--background-color);
|
||||
border-radius: 3px;
|
||||
display: inline-flex;
|
||||
margin: 40px 8px 8px 0;
|
||||
padding: 1px 8px 2px 8px;
|
||||
vertical-align: baseline;
|
||||
|
||||
/* variations */
|
||||
&[data-tier='official'] {
|
||||
--background-color: #f8e397;
|
||||
--text-color: #975b06;
|
||||
}
|
||||
|
||||
/* subsequent page titles should get cozy,
|
||||
otherwise the label doesn't look associated */
|
||||
& + h1 {
|
||||
margin-top: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.text {
|
||||
/* composes */
|
||||
composes: g-type-body-small-strong from global;
|
||||
|
||||
/* additional properties */
|
||||
color: var(--text-color);
|
||||
line-height: 21px;
|
||||
}
|
||||
|
||||
.icon {
|
||||
margin-right: 4px;
|
||||
|
||||
& svg {
|
||||
display: block;
|
||||
& [fill] {
|
||||
fill: var(--text-color);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,88 @@
|
|||
import fs from 'fs'
|
||||
import path from 'path'
|
||||
import {
|
||||
getNodeFromPath,
|
||||
getPathsFromNavData,
|
||||
validateNavData,
|
||||
} from '@hashicorp/react-docs-page/server'
|
||||
import renderPageMdx from '@hashicorp/react-docs-page/render-page-mdx'
|
||||
import fetchGithubFile from './utils/fetch-github-file'
|
||||
import mergeRemotePlugins from './utils/merge-remote-plugins'
|
||||
|
||||
const IS_DEV = process.env.VERCEL_ENV !== 'production'
|
||||
|
||||
async function generateStaticPaths(navDataFile, contentDir, options = {}) {
|
||||
const navData = await resolveNavData(navDataFile, contentDir, options)
|
||||
const paths = await getPathsFromNavData(navData)
|
||||
return paths
|
||||
}
|
||||
|
||||
async function generateStaticProps(
|
||||
navDataFile,
|
||||
localContentDir,
|
||||
params,
|
||||
{ productName, remotePluginsFile, additionalComponents } = {}
|
||||
) {
|
||||
const navData = await resolveNavData(navDataFile, localContentDir, {
|
||||
remotePluginsFile,
|
||||
})
|
||||
const pathToMatch = params.page ? params.page.join('/') : ''
|
||||
const navNode = getNodeFromPath(pathToMatch, navData, localContentDir)
|
||||
const { filePath, remoteFile, pluginTier } = navNode
|
||||
// Fetch the MDX file content
|
||||
const [err, mdxString] = filePath
|
||||
? // Read local content from the filesystem
|
||||
[null, fs.readFileSync(path.join(process.cwd(), filePath), 'utf8')]
|
||||
: // Fetch remote content using GitHub's API
|
||||
await fetchGithubFile(remoteFile)
|
||||
if (err) throw new Error(err)
|
||||
// For plugin pages, prefix the MDX content with a
|
||||
// label that reflects the plugin tier
|
||||
// (current options are "Official" or "Community")
|
||||
function mdxContentHook(mdxContent) {
|
||||
if (pluginTier) {
|
||||
const tierMdx = `<PluginTierLabel tier="${pluginTier}" />\n\n`
|
||||
mdxContent = tierMdx + mdxContent
|
||||
}
|
||||
return mdxContent
|
||||
}
|
||||
const { mdxSource, frontMatter } = await renderPageMdx(mdxString, {
|
||||
additionalComponents,
|
||||
productName,
|
||||
mdxContentHook,
|
||||
})
|
||||
// Build the currentPath from page parameters
|
||||
const currentPath = !params.page ? '' : params.page.join('/')
|
||||
// In development, set a flag if there is no GITHUB_API_TOKEN,
|
||||
// as this means dev is seeing only local content, and we want to flag that
|
||||
const isDevMissingRemotePlugins = IS_DEV && !process.env.GITHUB_API_TOKEN
|
||||
return {
|
||||
currentPath,
|
||||
frontMatter,
|
||||
isDevMissingRemotePlugins,
|
||||
mdxSource,
|
||||
mdxString,
|
||||
navData,
|
||||
navNode,
|
||||
}
|
||||
}
|
||||
|
||||
async function resolveNavData(navDataFile, localContentDir, options = {}) {
|
||||
const { remotePluginsFile } = options
|
||||
// Read in files
|
||||
const navDataPath = path.join(process.cwd(), navDataFile)
|
||||
const navData = JSON.parse(fs.readFileSync(navDataPath, 'utf8'))
|
||||
const remotePluginsPath = path.join(process.cwd(), remotePluginsFile)
|
||||
const remotePlugins = JSON.parse(fs.readFileSync(remotePluginsPath, 'utf-8'))
|
||||
// Resolve plugins, this yields branches with NavLeafRemote nodes
|
||||
const withPlugins = await mergeRemotePlugins(remotePlugins, navData, IS_DEV)
|
||||
// Resolve local filePaths for NavLeaf nodes
|
||||
const withFilePaths = await validateNavData(withPlugins, localContentDir)
|
||||
// Return the nav data with:
|
||||
// 1. Plugins merged, transformed into navData structures with NavLeafRemote nodes
|
||||
// 2. filePaths added to all local NavLeaf nodes
|
||||
return withFilePaths
|
||||
}
|
||||
|
||||
export default { generateStaticPaths, generateStaticProps }
|
||||
export { generateStaticPaths, generateStaticProps }
|
|
@ -0,0 +1,71 @@
|
|||
const fetch = require('isomorphic-unfetch')
|
||||
|
||||
const GITHUB_API_TOKEN = process.env.GITHUB_API_TOKEN
|
||||
|
||||
async function githubQuery(body, token) {
|
||||
const result = await fetch('https://api.github.com/graphql', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Authorization: `bearer ${token}`,
|
||||
ContentType: 'application/json',
|
||||
},
|
||||
body: JSON.stringify(body),
|
||||
})
|
||||
return await result.json()
|
||||
}
|
||||
|
||||
// Fetch a file from GitHub using the GraphQL API
|
||||
async function getGithubFile({ repo, branch, filePath }) {
|
||||
const [repo_owner, repo_name] = repo.split('/')
|
||||
// Set up the GraphQL query
|
||||
// (usually we can keep this in a separate file, and rely on a
|
||||
// plaintext loader we've set up in our NextJS config, but we need
|
||||
// to fetch remote content when indexing it, which happens outside
|
||||
// NextJS, so unfortunately it seems this has to be inlined)
|
||||
const query = `
|
||||
query($repo_name: String!, $repo_owner: String!, $object_expression: String!) {
|
||||
repository(name: $repo_name, owner: $repo_owner) {
|
||||
object(expression: $object_expression) {
|
||||
... on Blob {
|
||||
text
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
`
|
||||
// Set variables
|
||||
const variables = {
|
||||
repo_name,
|
||||
repo_owner,
|
||||
object_expression: `${branch}:${filePath}`,
|
||||
}
|
||||
// Query the GitHub API, and parse the navigation data
|
||||
const result = await githubQuery({ query, variables }, GITHUB_API_TOKEN)
|
||||
try {
|
||||
const fileText = result.data.repository.object.text
|
||||
return [null, fileText]
|
||||
} catch (e) {
|
||||
const errorMsg = `Could not fetch remote file text from "${
|
||||
variables.object_expression
|
||||
}" in "${repo_owner}/${repo_name}". Received instead:\n\n${JSON.stringify(
|
||||
result,
|
||||
null,
|
||||
2
|
||||
)}`
|
||||
return [errorMsg, null]
|
||||
}
|
||||
}
|
||||
|
||||
function memoize(method) {
|
||||
let cache = {}
|
||||
|
||||
return async function () {
|
||||
let args = JSON.stringify(arguments[0])
|
||||
if (!cache[args]) {
|
||||
cache[args] = method.apply(this, arguments)
|
||||
}
|
||||
return cache[args]
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = memoize(getGithubFile)
|
|
@ -0,0 +1,166 @@
|
|||
const path = require('path')
|
||||
const fetchGithubFile = require('./fetch-github-file')
|
||||
|
||||
const COMPONENT_TYPES = [
|
||||
'builders',
|
||||
'datasources',
|
||||
'post-processors',
|
||||
'provisioners',
|
||||
]
|
||||
|
||||
async function gatherRemotePlugins(pluginsData, navData, isDev = true) {
|
||||
const allPluginData = await Promise.all(
|
||||
pluginsData.map(async (pluginEntry) => {
|
||||
const componentEntries = await Promise.all(
|
||||
COMPONENT_TYPES.map(async (type) => {
|
||||
const routes = await gatherPluginBranch(pluginEntry, type)
|
||||
if (!routes) return false
|
||||
const isSingleLeaf =
|
||||
routes.length === 1 && typeof routes[0].path !== 'undefined'
|
||||
const navData = isSingleLeaf
|
||||
? { ...routes[0], path: path.join(type, pluginEntry.path) }
|
||||
: { title: pluginEntry.title, routes }
|
||||
return { type, navData }
|
||||
})
|
||||
)
|
||||
const validComponents = componentEntries.filter(Boolean)
|
||||
if (validComponents.length === 0) {
|
||||
const errMsg = `Could not fetch any component documentation for remote plugin from ${pluginEntry.repo}. This may be a GitHub credential issue at build time, or it may be an issue with missing docs in the source repository. Please ensure you have a valid GITHUB_API_TOKEN set in .env.local at the root of the project.`
|
||||
if (isDev) {
|
||||
console.warn(errMsg)
|
||||
} else {
|
||||
throw new Error(errMsg)
|
||||
}
|
||||
}
|
||||
return validComponents
|
||||
})
|
||||
)
|
||||
|
||||
const allPluginsByType = allPluginData.reduce((acc, pluginData) => {
|
||||
pluginData.forEach((p) => {
|
||||
const { type, navData } = p
|
||||
if (!acc[type]) acc[type] = []
|
||||
acc[type].push(navData)
|
||||
})
|
||||
return acc
|
||||
}, {})
|
||||
|
||||
const navDataWithPlugins = navData.slice().map((n) => {
|
||||
// we only care about top-level NavBranch nodes
|
||||
if (!n.routes) return n
|
||||
// for each component type, check if this NavBranch
|
||||
// is the parent route for that type
|
||||
for (var i = 0; i < COMPONENT_TYPES.length; i++) {
|
||||
const type = COMPONENT_TYPES[i]
|
||||
const isTypeRoute = n.routes.filter((nn) => nn.path === type).length > 0
|
||||
if (isTypeRoute) {
|
||||
const pluginsOfType = allPluginsByType[type]
|
||||
if (!pluginsOfType || pluginsOfType.length == 0) return n
|
||||
// if this NavBranch is the parent route for the type,
|
||||
// then append all remote plugins of this type to the
|
||||
// NavBranch's child routes
|
||||
const routesWithPlugins = n.routes.slice().concat(pluginsOfType)
|
||||
// console.log(JSON.stringify(routesWithPlugins, null, 2))
|
||||
// Also, sort the child routes so the order is alphabetical
|
||||
routesWithPlugins.sort((a, b) => {
|
||||
// (exception: "Overview" comes first)
|
||||
if (a.title == 'Overview') return -1
|
||||
if (b.title === 'Overview') return 1
|
||||
// (exception: "Community-Supported" comes last)
|
||||
if (a.title == 'Community-Supported') return 1
|
||||
if (b.title === 'Community-Supported') return -1
|
||||
// (exception: "Custom" comes second-last)
|
||||
if (a.title == 'Custom') return 1
|
||||
if (b.title === 'Custom') return -1
|
||||
return a.title < b.title ? -1 : a.title > b.title ? 1 : 0
|
||||
})
|
||||
// return n
|
||||
return { ...n, routes: routesWithPlugins }
|
||||
}
|
||||
}
|
||||
return n
|
||||
})
|
||||
|
||||
return navDataWithPlugins
|
||||
}
|
||||
|
||||
async function gatherPluginBranch(pluginEntry, component) {
|
||||
const artifactDir = pluginEntry.artifactDir || '.docs-artifacts'
|
||||
const branch = pluginEntry.branch || 'main'
|
||||
const navDataFilePath = `${artifactDir}/${component}/nav-data.json`
|
||||
const [err, fileResult] = await fetchGithubFile({
|
||||
repo: pluginEntry.repo,
|
||||
branch,
|
||||
filePath: navDataFilePath,
|
||||
})
|
||||
// If one component errors, that's expected - we try all components.
|
||||
// We'll check one level up to see if ALL components fail.
|
||||
if (err) return false
|
||||
const navData = JSON.parse(fileResult)
|
||||
const withPrefixedPath = await prefixNavDataPath(
|
||||
navData,
|
||||
{
|
||||
repo: pluginEntry.repo,
|
||||
branch,
|
||||
componentArtifactsDir: path.join('.docs-artifacts', component),
|
||||
},
|
||||
path.join(component, pluginEntry.path)
|
||||
)
|
||||
// Add plugin tier
|
||||
// Parse the plugin tier
|
||||
const pluginOwner = pluginEntry.repo.split('/')[0]
|
||||
const pluginTier = pluginOwner === 'hashicorp' ? 'official' : 'community'
|
||||
const withPluginTier = addPluginTier(withPrefixedPath, pluginTier)
|
||||
// Return the augmented navData
|
||||
return withPluginTier
|
||||
}
|
||||
|
||||
function addPluginTier(navData, pluginTier) {
|
||||
return navData.slice().map((navNode) => {
|
||||
if (typeof navNode.path !== 'undefined') {
|
||||
return { ...navNode, pluginTier }
|
||||
}
|
||||
if (navNode.routes) {
|
||||
return { ...navNode, routes: addPluginTier(navNode.routes, pluginTier) }
|
||||
}
|
||||
return navNode
|
||||
})
|
||||
}
|
||||
|
||||
async function prefixNavDataPath(
|
||||
navData,
|
||||
{ repo, branch, componentArtifactsDir },
|
||||
parentPath
|
||||
) {
|
||||
return await Promise.all(
|
||||
navData.slice().map(async (navNode) => {
|
||||
if (typeof navNode.path !== 'undefined') {
|
||||
const prefixedPath = path.join(parentPath, navNode.path)
|
||||
const remoteFile = {
|
||||
repo,
|
||||
branch,
|
||||
filePath: path.join(componentArtifactsDir, navNode.filePath),
|
||||
}
|
||||
const withPrefixedRoute = {
|
||||
...navNode,
|
||||
path: prefixedPath,
|
||||
remoteFile: remoteFile,
|
||||
}
|
||||
delete withPrefixedRoute.filePath
|
||||
return withPrefixedRoute
|
||||
}
|
||||
if (navNode.routes) {
|
||||
const prefixedRoutes = await prefixNavDataPath(
|
||||
navNode.routes,
|
||||
{ repo, branch, componentArtifactsDir },
|
||||
parentPath
|
||||
)
|
||||
const withPrefixedRoutes = { ...navNode, routes: prefixedRoutes }
|
||||
return withPrefixedRoutes
|
||||
}
|
||||
return navNode
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
module.exports = gatherRemotePlugins
|
File diff suppressed because it is too large
Load Diff
|
@ -1,336 +0,0 @@
|
|||
// The root folder for this documentation category is `pages/docs`
|
||||
//
|
||||
// - A string refers to the name of a file
|
||||
// - A "category" value refers to the name of a directory
|
||||
// - All directories must have an "index.mdx" file to serve as
|
||||
// the landing page for the category
|
||||
|
||||
export default [
|
||||
'--------',
|
||||
'terminology',
|
||||
{
|
||||
category: 'commands',
|
||||
content: ['init', 'build', 'console', 'fix', 'fmt', 'inspect', 'validate', 'hcl2_upgrade'],
|
||||
},
|
||||
{
|
||||
category: 'templates',
|
||||
content: [
|
||||
{
|
||||
category: 'hcl_templates',
|
||||
content: [
|
||||
{
|
||||
category: 'blocks',
|
||||
content: [
|
||||
{
|
||||
category: 'build',
|
||||
content: [
|
||||
'source',
|
||||
'provisioner',
|
||||
'post-processor',
|
||||
'post-processors',
|
||||
],
|
||||
},
|
||||
'locals',
|
||||
'source',
|
||||
'variable',
|
||||
'packer',
|
||||
'data'
|
||||
],
|
||||
},
|
||||
{
|
||||
category: 'functions',
|
||||
content: [
|
||||
{
|
||||
category: 'contextual',
|
||||
content: [
|
||||
'aws_secretsmanager',
|
||||
'consul',
|
||||
'env',
|
||||
'vault',
|
||||
],
|
||||
},
|
||||
{
|
||||
category: 'numeric',
|
||||
content: [
|
||||
'abs',
|
||||
'ceil',
|
||||
'floor',
|
||||
'log',
|
||||
'max',
|
||||
'min',
|
||||
'parseint',
|
||||
'pow',
|
||||
'signum',
|
||||
],
|
||||
},
|
||||
{
|
||||
category: 'string',
|
||||
content: [
|
||||
'chomp',
|
||||
'format',
|
||||
'formatlist',
|
||||
'indent',
|
||||
'join',
|
||||
'lower',
|
||||
'replace',
|
||||
'regex_replace',
|
||||
'regex',
|
||||
'regexall',
|
||||
'split',
|
||||
'strrev',
|
||||
'substr',
|
||||
'title',
|
||||
'trim',
|
||||
'trimprefix',
|
||||
'trimsuffix',
|
||||
'trimspace',
|
||||
'upper',
|
||||
],
|
||||
},
|
||||
{
|
||||
category: 'collection',
|
||||
content: [
|
||||
'chunklist',
|
||||
'coalesce',
|
||||
'coalescelist',
|
||||
'compact',
|
||||
'concat',
|
||||
'contains',
|
||||
'distinct',
|
||||
'element',
|
||||
'flatten',
|
||||
'keys',
|
||||
'length',
|
||||
'lookup',
|
||||
'merge',
|
||||
'range',
|
||||
'reverse',
|
||||
'setintersection',
|
||||
'setproduct',
|
||||
'setunion',
|
||||
'slice',
|
||||
'sort',
|
||||
'values',
|
||||
'zipmap',
|
||||
],
|
||||
},
|
||||
{
|
||||
category: 'encoding',
|
||||
content: [
|
||||
'base64decode',
|
||||
'base64encode',
|
||||
'csvdecode',
|
||||
'jsondecode',
|
||||
'jsonencode',
|
||||
'urlencode',
|
||||
'yamldecode',
|
||||
'yamlencode',
|
||||
],
|
||||
},
|
||||
{
|
||||
category: 'file',
|
||||
content: [
|
||||
'abspath',
|
||||
'basename',
|
||||
'dirname',
|
||||
'file',
|
||||
'fileexists',
|
||||
'fileset',
|
||||
'pathexpand',
|
||||
],
|
||||
},
|
||||
{
|
||||
category: 'datetime',
|
||||
content: ['formatdate', 'timeadd', 'timestamp'],
|
||||
},
|
||||
{
|
||||
category: 'crypto',
|
||||
content: [
|
||||
'bcrypt',
|
||||
'md5',
|
||||
'rsadecrypt',
|
||||
'sha1',
|
||||
'sha256',
|
||||
'sha512',
|
||||
],
|
||||
},
|
||||
{
|
||||
category: 'uuid',
|
||||
content: ['uuidv4', 'uuidv5'],
|
||||
},
|
||||
{
|
||||
category: 'ipnet',
|
||||
content: ['cidrhost', 'cidrnetmask', 'cidrsubnet'],
|
||||
},
|
||||
{
|
||||
category: 'conversion',
|
||||
content: ['can', 'convert', 'try'],
|
||||
},
|
||||
],
|
||||
},
|
||||
'variables',
|
||||
'locals',
|
||||
'contextual-variables',
|
||||
'datasources',
|
||||
'path-variables',
|
||||
'syntax',
|
||||
'onlyexcept',
|
||||
'expressions',
|
||||
'syntax-json',
|
||||
],
|
||||
},
|
||||
{
|
||||
category: "legacy_json_templates",
|
||||
content: [
|
||||
'builders',
|
||||
'communicator',
|
||||
'engine',
|
||||
'post-processors',
|
||||
'provisioners',
|
||||
'user-variables',
|
||||
]
|
||||
},
|
||||
],
|
||||
},
|
||||
'----------',
|
||||
{category: 'communicators', content: ['ssh', 'winrm']},
|
||||
{
|
||||
category: 'builders',
|
||||
content: [
|
||||
'alicloud-ecs',
|
||||
{
|
||||
category: 'amazon',
|
||||
content: ['chroot', 'ebs', 'ebssurrogate', 'ebsvolume', 'instance'],
|
||||
},
|
||||
{
|
||||
category: 'azure',
|
||||
content: ['arm', 'chroot'],
|
||||
},
|
||||
'cloudstack',
|
||||
'digitalocean',
|
||||
'docker',
|
||||
'file',
|
||||
'googlecompute',
|
||||
'hetzner-cloud',
|
||||
'hyperone',
|
||||
{category: 'hyperv', content: ['iso', 'vmcx']},
|
||||
'linode',
|
||||
'lxc',
|
||||
'lxd',
|
||||
'ncloud',
|
||||
'null',
|
||||
'oneandone',
|
||||
'openstack',
|
||||
{category: 'oracle', content: ['classic', 'oci']},
|
||||
{
|
||||
category: 'outscale',
|
||||
content: ['chroot', 'bsu', 'bsusurrogate', 'bsuvolume'],
|
||||
},
|
||||
{category: 'parallels', content: ['iso', 'pvm']},
|
||||
'profitbricks',
|
||||
{category: 'proxmox', content: ['iso', 'clone']},
|
||||
'qemu',
|
||||
'scaleway',
|
||||
'tencentcloud-cvm',
|
||||
'jdcloud',
|
||||
'triton',
|
||||
'ucloud-uhost',
|
||||
'vagrant',
|
||||
{
|
||||
category: 'virtualbox',
|
||||
content: ['iso', 'ovf', 'vm'],
|
||||
},
|
||||
{
|
||||
category: 'vmware',
|
||||
content: ['iso', 'vmx', 'vsphere-iso', 'vsphere-clone'],
|
||||
},
|
||||
'yandex',
|
||||
'custom',
|
||||
'community-supported',
|
||||
],
|
||||
},
|
||||
{
|
||||
category: 'datasources',
|
||||
content: [
|
||||
{
|
||||
category: 'amazon',
|
||||
content: [
|
||||
'ami',
|
||||
'secretsmanager'
|
||||
],
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
category: 'provisioners',
|
||||
content: [
|
||||
'ansible-local',
|
||||
'ansible',
|
||||
'breakpoint',
|
||||
'chef-client',
|
||||
'chef-solo',
|
||||
'converge',
|
||||
'file',
|
||||
'inspec',
|
||||
'powershell',
|
||||
'puppet-masterless',
|
||||
'puppet-server',
|
||||
'salt-masterless',
|
||||
'shell',
|
||||
'shell-local',
|
||||
'windows-shell',
|
||||
'windows-restart',
|
||||
'custom',
|
||||
'community-supported',
|
||||
],
|
||||
},
|
||||
{
|
||||
category: 'post-processors',
|
||||
content: [
|
||||
'alicloud-import',
|
||||
'amazon-import',
|
||||
'artifice',
|
||||
'compress',
|
||||
'checksum',
|
||||
'digitalocean-import',
|
||||
'docker-import',
|
||||
'docker-push',
|
||||
'docker-save',
|
||||
'docker-tag',
|
||||
'exoscale-import',
|
||||
'googlecompute-export',
|
||||
'googlecompute-import',
|
||||
'manifest',
|
||||
'shell-local',
|
||||
'ucloud-import',
|
||||
'vagrant',
|
||||
'vagrant-cloud',
|
||||
'vsphere',
|
||||
'vsphere-template',
|
||||
'yandex-export',
|
||||
'yandex-import',
|
||||
'community-supported',
|
||||
],
|
||||
},
|
||||
'----------',
|
||||
'install',
|
||||
'configure',
|
||||
'----------',
|
||||
{
|
||||
category: 'plugins',
|
||||
content: [
|
||||
{
|
||||
category: 'creation',
|
||||
content: [
|
||||
'custom-builders',
|
||||
'custom-post-processors',
|
||||
'custom-provisioners',
|
||||
'custom-datasources',
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
'---------',
|
||||
'debugging',
|
||||
]
|
|
@ -0,0 +1 @@
|
|||
[]
|
|
@ -0,0 +1,98 @@
|
|||
[
|
||||
{
|
||||
"title": "Upgrade Your Plugin to use the Packer plugin sdk",
|
||||
"path": "1.7-plugin-upgrade"
|
||||
},
|
||||
{
|
||||
"title": "Upgrade Your Template to use Packer init",
|
||||
"path": "1.7-template-upgrade"
|
||||
},
|
||||
{
|
||||
"title": "HCL guides",
|
||||
"routes": [
|
||||
{
|
||||
"title": "Overview",
|
||||
"path": "hcl"
|
||||
},
|
||||
{
|
||||
"title": "From JSON v1",
|
||||
"path": "hcl/from-json-v1"
|
||||
},
|
||||
{
|
||||
"title": "Variables",
|
||||
"path": "hcl/variables"
|
||||
},
|
||||
{
|
||||
"title": "Making a plugin HCL2 enabled",
|
||||
"path": "hcl/component-object-spec"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Automatic OS Installs",
|
||||
"routes": [
|
||||
{
|
||||
"title": "Overview",
|
||||
"path": "automatic-operating-system-installs"
|
||||
},
|
||||
{
|
||||
"title": "Unattended Installation for Windows",
|
||||
"path": "automatic-operating-system-installs/autounattend_windows"
|
||||
},
|
||||
{
|
||||
"title": "Unattended Installation for Debian",
|
||||
"path": "automatic-operating-system-installs/preseed_ubuntu"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Workflow Tips and Tricks",
|
||||
"routes": [
|
||||
{
|
||||
"title": "Overview",
|
||||
"path": "workflow-tips-and-tricks"
|
||||
},
|
||||
{
|
||||
"title": "Isotime Template Function",
|
||||
"path": "workflow-tips-and-tricks/isotime-template-function"
|
||||
},
|
||||
{
|
||||
"title": "Veewee to Packer",
|
||||
"path": "workflow-tips-and-tricks/veewee-to-packer"
|
||||
},
|
||||
{
|
||||
"title": "Use jq to strip comments from a Packer template",
|
||||
"path": "workflow-tips-and-tricks/use-packer-with-comment"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Build Immutable Infrastructure with Packer in CI/CD",
|
||||
"routes": [
|
||||
{
|
||||
"title": "Overview",
|
||||
"path": "packer-on-cicd"
|
||||
},
|
||||
{
|
||||
"title": "Build Images in CI/CD",
|
||||
"path": "packer-on-cicd/build-image-in-cicd"
|
||||
},
|
||||
{
|
||||
"title": "Build a VirtualBox Image with Packer in TeamCity",
|
||||
"path": "packer-on-cicd/build-virtualbox-image"
|
||||
},
|
||||
{
|
||||
"title": "Pipelineing Builds",
|
||||
"path": "packer-on-cicd/pipelineing-builds"
|
||||
},
|
||||
{
|
||||
"title": "Trigger Terraform Enterprise runs",
|
||||
"path": "packer-on-cicd/trigger-tfe"
|
||||
},
|
||||
{
|
||||
"title": "Upload a VirtualBox Image to S3",
|
||||
"path": "packer-on-cicd/upload-images-to-artifact"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
|
@ -1,37 +0,0 @@
|
|||
// The root folder for this documentation category is `pages/guides`
|
||||
//
|
||||
// - A string refers to the name of a file
|
||||
// - A "category" value refers to the name of a directory
|
||||
// - All directories must have an "index.mdx" file to serve as
|
||||
// the landing page for the category
|
||||
|
||||
export default [
|
||||
'1.7-plugin-upgrade',
|
||||
'1.7-template-upgrade',
|
||||
{
|
||||
category: 'hcl',
|
||||
content: ['from-json-v1', 'variables', 'component-object-spec'],
|
||||
},
|
||||
{
|
||||
category: 'automatic-operating-system-installs',
|
||||
content: ['autounattend_windows', 'preseed_ubuntu'],
|
||||
},
|
||||
{
|
||||
category: 'workflow-tips-and-tricks',
|
||||
content: [
|
||||
'isotime-template-function',
|
||||
'veewee-to-packer',
|
||||
'use-packer-with-comment',
|
||||
],
|
||||
},
|
||||
{
|
||||
category: 'packer-on-cicd',
|
||||
content: [
|
||||
'build-image-in-cicd',
|
||||
'build-virtualbox-image',
|
||||
'pipelineing-builds',
|
||||
'trigger-tfe',
|
||||
'upload-images-to-artifact',
|
||||
],
|
||||
},
|
||||
]
|
|
@ -0,0 +1,39 @@
|
|||
[
|
||||
{
|
||||
"title": "Why Use Packer?",
|
||||
"path": "why"
|
||||
},
|
||||
{
|
||||
"title": "Use Cases",
|
||||
"path": "use-cases"
|
||||
},
|
||||
{
|
||||
"title": "Getting Started",
|
||||
"routes": [
|
||||
{
|
||||
"title": "Install",
|
||||
"href": "/intro/getting-started/install"
|
||||
},
|
||||
{
|
||||
"title": "Build An Image",
|
||||
"href": "/intro/getting-started/build-image"
|
||||
},
|
||||
{
|
||||
"title": "Provision",
|
||||
"href": "/intro/getting-started/provision"
|
||||
},
|
||||
{
|
||||
"title": "Parallel Builds",
|
||||
"href": "/intro/getting-started/parallel-builds"
|
||||
},
|
||||
{
|
||||
"title": "Vagrant Boxes",
|
||||
"href": "/intro/getting-started/vagrant"
|
||||
},
|
||||
{
|
||||
"title": "Next Steps",
|
||||
"href": "/intro/getting-started/next"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
|
@ -1,41 +0,0 @@
|
|||
// The root folder for this documentation category is `pages/intro`
|
||||
//
|
||||
// - A string refers to the name of a file
|
||||
// - A "category" value refers to the name of a directory
|
||||
// - All directories must have an "index.mdx" file to serve as
|
||||
// the landing page for the category
|
||||
|
||||
export default [
|
||||
'why',
|
||||
'use-cases',
|
||||
{
|
||||
category: 'getting-started',
|
||||
name: 'Getting Started',
|
||||
content: [
|
||||
{
|
||||
title: 'Install',
|
||||
href: '/intro/getting-started/install',
|
||||
},
|
||||
{
|
||||
title: 'Build An Image',
|
||||
href: '/intro/getting-started/build-image',
|
||||
},
|
||||
{
|
||||
title: 'Provision',
|
||||
href: '/intro/getting-started/provision',
|
||||
},
|
||||
{
|
||||
title: 'Parallel Builds',
|
||||
href: '/intro/getting-started/parallel-builds',
|
||||
},
|
||||
{
|
||||
title: 'Vagrant Boxes',
|
||||
href: '/intro/getting-started/vagrant',
|
||||
},
|
||||
{
|
||||
title: 'Next Steps',
|
||||
href: '/intro/getting-started/next',
|
||||
},
|
||||
],
|
||||
},
|
||||
]
|
|
@ -2416,9 +2416,9 @@
|
|||
}
|
||||
},
|
||||
"@babel/runtime-corejs3": {
|
||||
"version": "7.12.13",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.13.tgz",
|
||||
"integrity": "sha512-8fSpqYRETHATtNitsCXq8QQbKJP31/KnDl2Wz2Vtui9nKzjss2ysuZtyVsWjBtvkeEFo346gkwjYPab1hvrXkQ==",
|
||||
"version": "7.13.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.13.7.tgz",
|
||||
"integrity": "sha512-zkDsGGSRU2YyYTXkPfcxuYuCVc6xBOeH1ZMh72ywBvmrDs+kSmoMuCUXZJUPbXZafrPivDHS2Oq7wI37gaTvqw==",
|
||||
"requires": {
|
||||
"core-js-pure": "^3.0.0",
|
||||
"regenerator-runtime": "^0.13.4"
|
||||
|
@ -2551,17 +2551,17 @@
|
|||
}
|
||||
},
|
||||
"@bugsnag/browser": {
|
||||
"version": "7.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-7.6.0.tgz",
|
||||
"integrity": "sha512-8sth20TM8BVfebkqxqJQOCM2P2L4foOgFH2QA3ruG0iknDKZDhE7XcoWgmUP9zVSNJqkCyiIzcBOuiwZW8JaSQ==",
|
||||
"version": "7.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-7.7.0.tgz",
|
||||
"integrity": "sha512-o3Y/8ZINTCyCiDid01xF4RwAfRCtt4Ak65sbEUjuen90Lf62LcqNIrguRotum5/5GrXl/ktm8gk6Tp8XBiS79A==",
|
||||
"requires": {
|
||||
"@bugsnag/core": "^7.6.0"
|
||||
"@bugsnag/core": "^7.7.0"
|
||||
}
|
||||
},
|
||||
"@bugsnag/core": {
|
||||
"version": "7.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.6.0.tgz",
|
||||
"integrity": "sha512-hBYAZJw4ScqoyM1jA1x/m2e4iS2EqYEs0I2hdzBCZFv2ls17ILmU58eRSyVdUfyzbv0J7Hi6DwwBGC4Yb6ROZA==",
|
||||
"version": "7.7.0",
|
||||
"resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.7.0.tgz",
|
||||
"integrity": "sha512-y6xY/ZjHRSD3h1ADdkgH4sUJeJ9TUjNjkui+pjdmQkG4asjA8lBNmjnqirGeAxgL00lg5xvbfLSq9iHdqFW9oQ==",
|
||||
"requires": {
|
||||
"@bugsnag/cuid": "^3.0.0",
|
||||
"@bugsnag/safe-json-stringify": "^6.0.0",
|
||||
|
@ -2585,11 +2585,11 @@
|
|||
}
|
||||
},
|
||||
"@bugsnag/node": {
|
||||
"version": "7.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-7.6.0.tgz",
|
||||
"integrity": "sha512-n3BVb04bq4z16nOM4gbWoXsi6k8R9bryWS/NAYi/jQg6tgyBkNYzmK0ojf3fYJ7uAgCjUJNMX6S9UHSJy/MMcQ==",
|
||||
"version": "7.8.0",
|
||||
"resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-7.8.0.tgz",
|
||||
"integrity": "sha512-2ZkXP5gmTE4LcPu2TB350BUmClbwsPZ1ZjYMiHqHDb2Xjoico0PNt6F9tBLjDRy9jS/pFGbjt/iOpyfr4GFm8A==",
|
||||
"requires": {
|
||||
"@bugsnag/core": "^7.6.0",
|
||||
"@bugsnag/core": "^7.7.0",
|
||||
"byline": "^5.0.0",
|
||||
"error-stack-parser": "^2.0.2",
|
||||
"iserror": "^0.0.2",
|
||||
|
@ -2682,9 +2682,9 @@
|
|||
"integrity": "sha512-REr07tPJDKpyTh/u9tUS3sf29LnkDrWFVgY7FTvDJfbJ60IJ/R1TYNmcE7QKREGJ8j0p43QWEDabqVWOWvOXFA=="
|
||||
},
|
||||
"@hashicorp/nextjs-scripts": {
|
||||
"version": "16.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/nextjs-scripts/-/nextjs-scripts-16.0.1.tgz",
|
||||
"integrity": "sha512-k29n91PSqVeneBwsZ8botPA/fK5oheWiqoFqZxSYSmMPS4rfmC0HUW05RIXhkSEl7KvTuYGzt8BfsciSPvDPtw==",
|
||||
"version": "16.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/nextjs-scripts/-/nextjs-scripts-16.2.0.tgz",
|
||||
"integrity": "sha512-CpqCaBji51EKp+1yoIKx1J2OLLunueVASgPMnnVgNkUokbt5PGFLbujgpC/hP9OroPtc7HlsXmvI6zEN/MWXYg==",
|
||||
"requires": {
|
||||
"@bugsnag/js": "7.5.4",
|
||||
"@bugsnag/plugin-react": "7.5.4",
|
||||
|
@ -2807,6 +2807,11 @@
|
|||
"slugify": "1.3.6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hashicorp/react-inline-svg": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.2.tgz",
|
||||
"integrity": "sha512-AAFnBslSTgnEr++dTbMn3sybAqvn7myIj88ijGigF6u11eSRiV64zqEcyYLQKWTV6dF4AvYoxiYC6GSOgiM0Yw=="
|
||||
},
|
||||
"slugify": {
|
||||
"version": "1.3.6",
|
||||
"resolved": "https://registry.npmjs.org/slugify/-/slugify-1.3.6.tgz",
|
||||
|
@ -2832,6 +2837,13 @@
|
|||
"requires": {
|
||||
"@hashicorp/react-inline-svg": "^1.0.0",
|
||||
"slugify": "^1.3.6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hashicorp/react-inline-svg": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.2.tgz",
|
||||
"integrity": "sha512-AAFnBslSTgnEr++dTbMn3sybAqvn7myIj88ijGigF6u11eSRiV64zqEcyYLQKWTV6dF4AvYoxiYC6GSOgiM0Yw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2842,42 +2854,234 @@
|
|||
"integrity": "sha512-AYIe6tcOxlKPe5Sq89o/Vk0rGE6Z1dCzf+N3ynECTh5L2A1zusf9xeM659QEh/edE/Ll9EBBLmq49sQXLNDxTw=="
|
||||
},
|
||||
"@hashicorp/react-docs-page": {
|
||||
"version": "10.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-docs-page/-/react-docs-page-10.3.2.tgz",
|
||||
"integrity": "sha512-gTOBF7MqOQdH2tYw3npUYwLMF8d9d1Rugp0Rk2QdjIzTRbKT3nO1CRyD+YfZTe2HPNdc+rKI2iM39Tc1TT39DA==",
|
||||
"version": "10.9.4-alpha.18",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-docs-page/-/react-docs-page-10.9.4-alpha.18.tgz",
|
||||
"integrity": "sha512-+eRKJ2PX9s4Is0ZT2O8ZBcBWuDt7OGxwBrqKF1ulo/DcZunj7pODCQQulb+jAtQyq7YzikWdFmQ/pcvwaVHK6Q==",
|
||||
"requires": {
|
||||
"@hashicorp/react-content": "^6.1.1",
|
||||
"@hashicorp/react-docs-sidenav": "^6.0.1",
|
||||
"@hashicorp/react-head": "^1.1.6",
|
||||
"@hashicorp/react-search": "^3.0.0",
|
||||
"@hashicorp/react-content": "^6.3.0",
|
||||
"@hashicorp/react-docs-sidenav": "6.1.1-alpha.16",
|
||||
"@hashicorp/react-head": "^1.2.0",
|
||||
"@hashicorp/react-search": "^4.1.0",
|
||||
"fs-exists-sync": "0.1.0",
|
||||
"gray-matter": "4.0.2",
|
||||
"js-yaml": "3.14.0",
|
||||
"line-reader": "0.4.0",
|
||||
"moize": "^5.4.7",
|
||||
"readdirp": "3.5.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hashicorp/react-content": {
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-content/-/react-content-6.1.1.tgz",
|
||||
"integrity": "sha512-X6BauLEsv6VOi+iGnDBxC6nzvx06WKM7s8K/VqJHQ5PTmCaPrgaaRZh99qQcnIXpuHcmScs85wq8yAfD8zpOUQ=="
|
||||
},
|
||||
"readdirp": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
|
||||
"integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
|
||||
"@algolia/cache-browser-local-storage": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.8.5.tgz",
|
||||
"integrity": "sha512-9rs/Yi82ilgifweJamOy4DlJ4xPGsCN/zg+RKy4vjytNhOrkEHLRQC8vPZ3OhD8KVlw9lRQIZTlgjgFl8iMeeA==",
|
||||
"requires": {
|
||||
"picomatch": "^2.2.1"
|
||||
"@algolia/cache-common": "4.8.5"
|
||||
}
|
||||
},
|
||||
"@algolia/cache-common": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.8.5.tgz",
|
||||
"integrity": "sha512-4SvRWnagKtwBFAy8Rsfmv0/Uk53fZL+6dy2idwdx6SjMGKSs0y1Qv+thb4h/k/H5MONisAoT9C2rgZ/mqwh5yw=="
|
||||
},
|
||||
"@algolia/cache-in-memory": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.8.5.tgz",
|
||||
"integrity": "sha512-XBBfqs28FbjwLboY3sxvuzBgYsuXdFsj2mUvkgxfb0GVEzwW4I0NM7KzSPwT+iht55WS1PgIOnynjmhPsrubCw==",
|
||||
"requires": {
|
||||
"@algolia/cache-common": "4.8.5"
|
||||
}
|
||||
},
|
||||
"@algolia/client-account": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.8.5.tgz",
|
||||
"integrity": "sha512-DjXMpeCdY4J4IDBfowiG6Xl9ec/FhG1NpPQM0Uv4xXsc/TeeZ1JgbgNDhWe9jW0jBEALy+a/RmPrZ0vsxcadsg==",
|
||||
"requires": {
|
||||
"@algolia/client-common": "4.8.5",
|
||||
"@algolia/client-search": "4.8.5",
|
||||
"@algolia/transporter": "4.8.5"
|
||||
}
|
||||
},
|
||||
"@algolia/client-analytics": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.8.5.tgz",
|
||||
"integrity": "sha512-PQEY+chbHmZnRJdaWsvUYzDpEPr60az0EPUexdouvXGZId15/SnDaXjnf89F7tYmCzkHdUtG4bSvPzAupQ4AFA==",
|
||||
"requires": {
|
||||
"@algolia/client-common": "4.8.5",
|
||||
"@algolia/client-search": "4.8.5",
|
||||
"@algolia/requester-common": "4.8.5",
|
||||
"@algolia/transporter": "4.8.5"
|
||||
}
|
||||
},
|
||||
"@algolia/client-common": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.8.5.tgz",
|
||||
"integrity": "sha512-Dn8vog2VrGsJeOcBMcSAEIjBtPyogzUBGlh1DtVd0m8GN6q+cImCESl6DY846M2PTYWsLBKBksq37eUfSe9FxQ==",
|
||||
"requires": {
|
||||
"@algolia/requester-common": "4.8.5",
|
||||
"@algolia/transporter": "4.8.5"
|
||||
}
|
||||
},
|
||||
"@algolia/client-recommendation": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-recommendation/-/client-recommendation-4.8.5.tgz",
|
||||
"integrity": "sha512-ffawCC1C25rCa8/JU2niRZgwr8aV9b2qsLVMo73GXFzi2lceXPAe9K68mt/BGHU+w7PFUwVHsV2VmB+G/HQRVw==",
|
||||
"requires": {
|
||||
"@algolia/client-common": "4.8.5",
|
||||
"@algolia/requester-common": "4.8.5",
|
||||
"@algolia/transporter": "4.8.5"
|
||||
}
|
||||
},
|
||||
"@algolia/client-search": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.8.5.tgz",
|
||||
"integrity": "sha512-Ru2MljGZWrSQ0CVsDla11oGEPL/RinmVkLJfBtQ+/pk1868VfpAQFGKtOS/b8/xLrMA0Vm4EfC3Mgclk/p3KJA==",
|
||||
"requires": {
|
||||
"@algolia/client-common": "4.8.5",
|
||||
"@algolia/requester-common": "4.8.5",
|
||||
"@algolia/transporter": "4.8.5"
|
||||
}
|
||||
},
|
||||
"@algolia/logger-common": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.8.5.tgz",
|
||||
"integrity": "sha512-PS6NS6bpED0rAxgCPGhjZJg9why0PnoVEE7ZoCbPq6lsAOc6FPlQLri4OiLyU7wx8RWDoVtOadyzulqAAsfPSQ=="
|
||||
},
|
||||
"@algolia/logger-console": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.8.5.tgz",
|
||||
"integrity": "sha512-3+4gLSbwzuGmrb5go3IZNcFIYVMSbB4c8UMtWEJ/gDBtgGZIvT6f/KlvVSOHIhthSxaM3Y13V6Qile/SpGqc6A==",
|
||||
"requires": {
|
||||
"@algolia/logger-common": "4.8.5"
|
||||
}
|
||||
},
|
||||
"@algolia/requester-browser-xhr": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.8.5.tgz",
|
||||
"integrity": "sha512-M/Gf2vv/fU4+CqDW+wok7HPpEcLym3NtDzU9zaPzGYI/9X7o36581oyfnzt2pNfsXSQVj5a2pZVUWC3Z4SO27w==",
|
||||
"requires": {
|
||||
"@algolia/requester-common": "4.8.5"
|
||||
}
|
||||
},
|
||||
"@algolia/requester-common": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.8.5.tgz",
|
||||
"integrity": "sha512-OIhsdwIrJVAlVlP7cwlt+RoR5AmxAoTGrFokOY9imVmgqXUUljdKO/DjhRL8vwYGFEidZ9efIjAIQ2B3XOhT9A=="
|
||||
},
|
||||
"@algolia/requester-node-http": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.8.5.tgz",
|
||||
"integrity": "sha512-viHAjfo53A3VSE7Bb/nzgpSMZ3prPp2qti7Wg8w7qxhntppKp3Fln6t4Vp+BoPOqruLsj139xXhheAKeRcYa0w==",
|
||||
"requires": {
|
||||
"@algolia/requester-common": "4.8.5"
|
||||
}
|
||||
},
|
||||
"@algolia/transporter": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.8.5.tgz",
|
||||
"integrity": "sha512-Rb3cMlh/GoJK0+g+49GNA3IvR/EXsDEBwpyM+FOotSwxgiGt1wGBHM0K2v0GHwIEcuww02pl6KMDVlilA+qh0g==",
|
||||
"requires": {
|
||||
"@algolia/cache-common": "4.8.5",
|
||||
"@algolia/logger-common": "4.8.5",
|
||||
"@algolia/requester-common": "4.8.5"
|
||||
}
|
||||
},
|
||||
"@hashicorp/react-content": {
|
||||
"version": "6.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-content/-/react-content-6.3.0.tgz",
|
||||
"integrity": "sha512-B+QMlkMGryeNx3dGON4ExbzNvvll2ZXN3x+TkX80tUGClMI80MKjfSXiXIoVixlp22DMNG6wrnL42LC4WzZOxg=="
|
||||
},
|
||||
"@hashicorp/react-head": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-head/-/react-head-1.2.0.tgz",
|
||||
"integrity": "sha512-6BNmhsrzVwJFOAcT3WhSeDlCdtlD3d7vzhXOGfkpPYVnYRaIpLLC6seemAr/wqZhYB87W+KvFilz8vZcpDAZzQ=="
|
||||
},
|
||||
"@hashicorp/react-inline-svg": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.2.tgz",
|
||||
"integrity": "sha512-AAFnBslSTgnEr++dTbMn3sybAqvn7myIj88ijGigF6u11eSRiV64zqEcyYLQKWTV6dF4AvYoxiYC6GSOgiM0Yw=="
|
||||
},
|
||||
"@hashicorp/react-search": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-search/-/react-search-4.1.0.tgz",
|
||||
"integrity": "sha512-TZChez9q/4bn/flQXRo0h/9B0kDMvin759hd8+vRrt1M3Qhz2C1TKpfZRKrX6dFZI8w4obGm1EzUzR130gdFfQ==",
|
||||
"requires": {
|
||||
"@hashicorp/react-inline-svg": "^1.0.2",
|
||||
"@hashicorp/remark-plugins": "^3.0.0",
|
||||
"algoliasearch": "^4.8.4",
|
||||
"dotenv": "^8.2.0",
|
||||
"glob": "^7.1.6",
|
||||
"gray-matter": "^4.0.2",
|
||||
"react-instantsearch-dom": "^6.9.0",
|
||||
"remark": "^12.0.1",
|
||||
"search-insights": "^1.6.0",
|
||||
"unist-util-visit": "^2.0.3"
|
||||
}
|
||||
},
|
||||
"algoliasearch": {
|
||||
"version": "4.8.5",
|
||||
"resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.8.5.tgz",
|
||||
"integrity": "sha512-GjKjpeevpePEJYinGokASNtIkl1t5EseNMlqDNAc+sXE8+iyyeqTyiJsN7bwlRG2BIremuslE/NlwdEfUuBLJw==",
|
||||
"requires": {
|
||||
"@algolia/cache-browser-local-storage": "4.8.5",
|
||||
"@algolia/cache-common": "4.8.5",
|
||||
"@algolia/cache-in-memory": "4.8.5",
|
||||
"@algolia/client-account": "4.8.5",
|
||||
"@algolia/client-analytics": "4.8.5",
|
||||
"@algolia/client-common": "4.8.5",
|
||||
"@algolia/client-recommendation": "4.8.5",
|
||||
"@algolia/client-search": "4.8.5",
|
||||
"@algolia/logger-common": "4.8.5",
|
||||
"@algolia/logger-console": "4.8.5",
|
||||
"@algolia/requester-browser-xhr": "4.8.5",
|
||||
"@algolia/requester-common": "4.8.5",
|
||||
"@algolia/requester-node-http": "4.8.5",
|
||||
"@algolia/transporter": "4.8.5"
|
||||
}
|
||||
},
|
||||
"algoliasearch-helper": {
|
||||
"version": "3.4.4",
|
||||
"resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.4.4.tgz",
|
||||
"integrity": "sha512-OjyVLjykaYKCMxxRMZNiwLp8CS310E0qAeIY2NaublcmLAh8/SL19+zYHp7XCLtMem2ZXwl3ywMiA32O9jszuw==",
|
||||
"requires": {
|
||||
"events": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"events": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
|
||||
"integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
|
||||
},
|
||||
"react-instantsearch-core": {
|
||||
"version": "6.10.0",
|
||||
"resolved": "https://registry.npmjs.org/react-instantsearch-core/-/react-instantsearch-core-6.10.0.tgz",
|
||||
"integrity": "sha512-bn8rh/od4nw43caOiAsArA2Pw/JXX/7jL+nYe0n/Se66P7VR7UIA1i1ycthOrJzXCn9iNVFJFNMfyAN0HYVaWg==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.1.2",
|
||||
"algoliasearch-helper": "^3.4.3",
|
||||
"prop-types": "^15.6.2",
|
||||
"react-fast-compare": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"react-instantsearch-dom": {
|
||||
"version": "6.10.0",
|
||||
"resolved": "https://registry.npmjs.org/react-instantsearch-dom/-/react-instantsearch-dom-6.10.0.tgz",
|
||||
"integrity": "sha512-t1IGn1i4btp9a8wNNV/OCYwfJwCx5CuCP6WNwBxYY1QeL27RKGaWPxvz6FjfRFCfrOvD2556STyvVriyGhDoeg==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.1.2",
|
||||
"algoliasearch-helper": "^3.4.3",
|
||||
"classnames": "^2.2.5",
|
||||
"prop-types": "^15.6.2",
|
||||
"react-fast-compare": "^3.0.0",
|
||||
"react-instantsearch-core": "^6.10.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@hashicorp/react-docs-sidenav": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-docs-sidenav/-/react-docs-sidenav-6.0.1.tgz",
|
||||
"integrity": "sha512-M1G9iehFrNCaBj0v9l9gAi6nRSc43wdkIf6OUeQS82I3QkIKzrBw3hx1PJpElkqoq+CJKk45yZv9jFFjEF3yxg==",
|
||||
"version": "6.1.1-alpha.16",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-docs-sidenav/-/react-docs-sidenav-6.1.1-alpha.16.tgz",
|
||||
"integrity": "sha512-RpPjNwMNe5L2LA1vvgp496CauVJ8wLnKge1lPBZKL5931jR1SFEMwuWLB8R6Pe2HmkIC55nPB/c43GrmPN4FFw==",
|
||||
"requires": {
|
||||
"@hashicorp/react-link-wrap": "^0.0.3",
|
||||
"fuzzysearch": "1.0.3"
|
||||
}
|
||||
},
|
||||
|
@ -2930,9 +3134,9 @@
|
|||
}
|
||||
},
|
||||
"@hashicorp/react-inline-svg": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.0.tgz",
|
||||
"integrity": "sha512-xzo9ubozATeW+irl93rkmtQulNNctgYzxUXxFn1Lcy9Y8L7bkLz7CROotv7TiUohkTCHPMzP4aBC8JPfTS1crw=="
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-5.0.0.tgz",
|
||||
"integrity": "sha512-Nivb1ye+gquXeTaxhu5s0GBRGBoEptqJVaYC8F+77firw+e6D6VlOKSn6VLqTU9hVkEKFhOJUA+gUNAXGEcfXg=="
|
||||
},
|
||||
"@hashicorp/react-link-wrap": {
|
||||
"version": "0.0.3",
|
||||
|
@ -2967,6 +3171,13 @@
|
|||
"requires": {
|
||||
"@hashicorp/react-inline-svg": "^1.0.0",
|
||||
"slugify": "^1.3.6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hashicorp/react-inline-svg": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-inline-svg/-/react-inline-svg-1.0.2.tgz",
|
||||
"integrity": "sha512-AAFnBslSTgnEr++dTbMn3sybAqvn7myIj88ijGigF6u11eSRiV64zqEcyYLQKWTV6dF4AvYoxiYC6GSOgiM0Yw=="
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3037,9 +3248,9 @@
|
|||
}
|
||||
},
|
||||
"@hashicorp/react-tabs": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-tabs/-/react-tabs-3.0.0.tgz",
|
||||
"integrity": "sha512-SsLMqUuntkMufnW1jrfhRGyxOZ46+7fHzh2G4v8cMODN8TsR3bTZdimXNA5vNi3p0/v4Mslp+F83f9+NKSNELg==",
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@hashicorp/react-tabs/-/react-tabs-3.0.1.tgz",
|
||||
"integrity": "sha512-utidkiSZ9o9ewMSH7DD9AMBw+XRjOjNB/JU4P9g4F855DVquTIbzOQD1U+/5m/VTbeQvsPyWOWwkFLM6boEr0g==",
|
||||
"requires": {
|
||||
"@hashicorp/react-global-styles": "^4.5.0",
|
||||
"@hashicorp/react-inline-svg": "^1.0.2",
|
||||
|
@ -3529,9 +3740,9 @@
|
|||
}
|
||||
},
|
||||
"unified": {
|
||||
"version": "9.2.0",
|
||||
"resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz",
|
||||
"integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==",
|
||||
"version": "9.2.1",
|
||||
"resolved": "https://registry.npmjs.org/unified/-/unified-9.2.1.tgz",
|
||||
"integrity": "sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA==",
|
||||
"requires": {
|
||||
"bail": "^1.0.0",
|
||||
"extend": "^3.0.0",
|
||||
|
@ -3923,14 +4134,14 @@
|
|||
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
|
||||
},
|
||||
"array-includes": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.2.tgz",
|
||||
"integrity": "sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw==",
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz",
|
||||
"integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==",
|
||||
"requires": {
|
||||
"call-bind": "^1.0.0",
|
||||
"call-bind": "^1.0.2",
|
||||
"define-properties": "^1.1.3",
|
||||
"es-abstract": "^1.18.0-next.1",
|
||||
"get-intrinsic": "^1.0.1",
|
||||
"es-abstract": "^1.18.0-next.2",
|
||||
"get-intrinsic": "^1.1.1",
|
||||
"is-string": "^1.0.5"
|
||||
}
|
||||
},
|
||||
|
@ -4067,9 +4278,9 @@
|
|||
}
|
||||
},
|
||||
"axe-core": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.1.tgz",
|
||||
"integrity": "sha512-5Kgy8Cz6LPC9DJcNb3yjAXTu3XihQgEdnIg50c//zOC/MyLP0Clg+Y8Sh9ZjjnvBrDZU4DgXS9C3T9r4/scGZQ=="
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.2.tgz",
|
||||
"integrity": "sha512-V+Nq70NxKhYt89ArVcaNL9FDryB3vQOd+BFXZIfO3RP6rwtj+2yqqqdHEkacutglPaZLkJeuXKCjCJDMGPtPqg=="
|
||||
},
|
||||
"axobject-query": {
|
||||
"version": "2.2.0",
|
||||
|
@ -5418,9 +5629,9 @@
|
|||
}
|
||||
},
|
||||
"core-js-pure": {
|
||||
"version": "3.8.3",
|
||||
"resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.8.3.tgz",
|
||||
"integrity": "sha512-V5qQZVAr9K0xu7jXg1M7qTEwuxUgqr7dUOezGaNa7i+Xn9oXAU/d1fzqD9ObuwpVQOaorO5s70ckyi1woP9lVA=="
|
||||
"version": "3.9.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.9.0.tgz",
|
||||
"integrity": "sha512-3pEcmMZC9Cq0D4ZBh3pe2HLtqxpGNJBLXF/kZ2YzK17RbKp94w0HFbdbSx8H8kAlZG5k76hvLrkPm57Uyef+kg=="
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
|
@ -6358,11 +6569,11 @@
|
|||
}
|
||||
},
|
||||
"resolve": {
|
||||
"version": "1.19.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
|
||||
"integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
|
||||
"version": "1.20.0",
|
||||
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
|
||||
"integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
|
||||
"requires": {
|
||||
"is-core-module": "^2.1.0",
|
||||
"is-core-module": "^2.2.0",
|
||||
"path-parse": "^1.0.6"
|
||||
}
|
||||
}
|
||||
|
@ -6822,6 +7033,11 @@
|
|||
"resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
|
||||
"integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w=="
|
||||
},
|
||||
"fast-equals": {
|
||||
"version": "1.6.3",
|
||||
"resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-1.6.3.tgz",
|
||||
"integrity": "sha512-4WKW0AL5+WEqO0zWavAfYGY1qwLsBgE//DN4TTcVEN2UlINgkv9b3vm2iHicoenWKSX9mKWmGOsU/iI5IST7pQ=="
|
||||
},
|
||||
"fast-glob": {
|
||||
"version": "3.2.5",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz",
|
||||
|
@ -6845,15 +7061,20 @@
|
|||
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
|
||||
"integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
|
||||
},
|
||||
"fast-stringify": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/fast-stringify/-/fast-stringify-1.1.2.tgz",
|
||||
"integrity": "sha512-SfslXjiH8km0WnRiuPfpUKwlZjW5I878qsOm+2x8x3TgqmElOOLh1rgJFb+PolNdNRK3r8urEefqx0wt7vx1dA=="
|
||||
},
|
||||
"fastest-levenshtein": {
|
||||
"version": "1.0.12",
|
||||
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz",
|
||||
"integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow=="
|
||||
},
|
||||
"fastq": {
|
||||
"version": "1.10.1",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.10.1.tgz",
|
||||
"integrity": "sha512-AWuv6Ery3pM+dY7LYS8YIaCiQvUaos9OB1RyNgaOWnaX+Tik7Onvcsf8x8c+YtDeT0maYLniBip2hox5KtEXXA==",
|
||||
"version": "1.11.0",
|
||||
"resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz",
|
||||
"integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==",
|
||||
"requires": {
|
||||
"reusify": "^1.0.4"
|
||||
}
|
||||
|
@ -6876,9 +7097,9 @@
|
|||
}
|
||||
},
|
||||
"file-entry-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA==",
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
|
||||
"integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
|
||||
"requires": {
|
||||
"flat-cache": "^3.0.4"
|
||||
}
|
||||
|
@ -7024,9 +7245,9 @@
|
|||
"integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA="
|
||||
},
|
||||
"form-data": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz",
|
||||
"integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==",
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
|
||||
"integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==",
|
||||
"requires": {
|
||||
"asynckit": "^0.4.0",
|
||||
"combined-stream": "^1.0.8",
|
||||
|
@ -8852,9 +9073,9 @@
|
|||
}
|
||||
},
|
||||
"listr2": {
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/listr2/-/listr2-3.3.1.tgz",
|
||||
"integrity": "sha512-8Zoxe7s/8nNr4bJ8bdAduHD8uJce+exmMmUWTXlq0WuUdffnH3muisHPHPFtW2vvOfohIsq7FGCaguUxN/h3Iw==",
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/listr2/-/listr2-3.3.3.tgz",
|
||||
"integrity": "sha512-CeQrTeot/OQTrd2loXEBMfwlOjlPeHu/9alA8UyEoiEyncpj/mv2zRLgx32JzO62wbJIBSKgGM2L23XeOwrRlg==",
|
||||
"requires": {
|
||||
"chalk": "^4.1.0",
|
||||
"cli-truncate": "^2.1.0",
|
||||
|
@ -9313,6 +9534,11 @@
|
|||
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
|
||||
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
|
||||
},
|
||||
"micro-memoize": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/micro-memoize/-/micro-memoize-2.1.2.tgz",
|
||||
"integrity": "sha512-COjNutiFgnDHXZEIM/jYuZPwq2h8zMUeScf6Sh6so98a+REqdlpaNS7Cb2ffGfK5I+xfgoA3Rx49NGuNJTJq3w=="
|
||||
},
|
||||
"micromark": {
|
||||
"version": "2.11.4",
|
||||
"resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz",
|
||||
|
@ -9462,6 +9688,16 @@
|
|||
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
|
||||
"optional": true
|
||||
},
|
||||
"moize": {
|
||||
"version": "5.4.7",
|
||||
"resolved": "https://registry.npmjs.org/moize/-/moize-5.4.7.tgz",
|
||||
"integrity": "sha512-7PZH8QFJ51cIVtDv7wfUREBd3gL59JB0v/ARA3RI9zkSRa9LyGjS1Bdldii2J1/NQXRQ/3OOVOSdnZrCcVaZlw==",
|
||||
"requires": {
|
||||
"fast-equals": "^1.6.0",
|
||||
"fast-stringify": "^1.1.0",
|
||||
"micro-memoize": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"mozjpeg": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/mozjpeg/-/mozjpeg-7.0.0.tgz",
|
||||
|
@ -10138,24 +10374,24 @@
|
|||
}
|
||||
},
|
||||
"object.fromentries": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.3.tgz",
|
||||
"integrity": "sha512-IDUSMXs6LOSJBWE++L0lzIbSqHl9KDCfff2x/JSEIDtEUavUnyMYC2ZGay/04Zq4UT8lvd4xNhU4/YHKibAOlw==",
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz",
|
||||
"integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==",
|
||||
"requires": {
|
||||
"call-bind": "^1.0.0",
|
||||
"call-bind": "^1.0.2",
|
||||
"define-properties": "^1.1.3",
|
||||
"es-abstract": "^1.18.0-next.1",
|
||||
"es-abstract": "^1.18.0-next.2",
|
||||
"has": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"object.getownpropertydescriptors": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz",
|
||||
"integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==",
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz",
|
||||
"integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==",
|
||||
"requires": {
|
||||
"call-bind": "^1.0.0",
|
||||
"call-bind": "^1.0.2",
|
||||
"define-properties": "^1.1.3",
|
||||
"es-abstract": "^1.18.0-next.1"
|
||||
"es-abstract": "^1.18.0-next.2"
|
||||
}
|
||||
},
|
||||
"object.pick": {
|
||||
|
@ -10167,13 +10403,13 @@
|
|||
}
|
||||
},
|
||||
"object.values": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.2.tgz",
|
||||
"integrity": "sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag==",
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.3.tgz",
|
||||
"integrity": "sha512-nkF6PfDB9alkOUxpf1HNm/QlkeW3SReqL5WXeBLpEJJnlPSvRaDQpW3gQTksTN3fgJX4hL42RzKyOin6ff3tyw==",
|
||||
"requires": {
|
||||
"call-bind": "^1.0.0",
|
||||
"call-bind": "^1.0.2",
|
||||
"define-properties": "^1.1.3",
|
||||
"es-abstract": "^1.18.0-next.1",
|
||||
"es-abstract": "^1.18.0-next.2",
|
||||
"has": "^1.0.3"
|
||||
}
|
||||
},
|
||||
|
@ -11307,6 +11543,11 @@
|
|||
"resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
|
||||
"integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM="
|
||||
},
|
||||
"queue-microtask": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz",
|
||||
"integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg=="
|
||||
},
|
||||
"quick-lru": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
|
||||
|
@ -11653,9 +11894,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"unified": {
|
||||
"version": "9.2.0",
|
||||
"resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz",
|
||||
"integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==",
|
||||
"version": "9.2.1",
|
||||
"resolved": "https://registry.npmjs.org/unified/-/unified-9.2.1.tgz",
|
||||
"integrity": "sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA==",
|
||||
"requires": {
|
||||
"bail": "^1.0.0",
|
||||
"extend": "^3.0.0",
|
||||
|
@ -11941,14 +12182,17 @@
|
|||
"integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ=="
|
||||
},
|
||||
"run-parallel": {
|
||||
"version": "1.1.10",
|
||||
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz",
|
||||
"integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw=="
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
|
||||
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
|
||||
"requires": {
|
||||
"queue-microtask": "^1.2.2"
|
||||
}
|
||||
},
|
||||
"rxjs": {
|
||||
"version": "6.6.3",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
|
||||
"integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
|
||||
"version": "6.6.6",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz",
|
||||
"integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==",
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
}
|
||||
|
@ -12722,34 +12966,34 @@
|
|||
}
|
||||
},
|
||||
"string.prototype.matchall": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz",
|
||||
"integrity": "sha512-OBxYDA2ifZQ2e13cP82dWFMaCV9CGF8GzmN4fljBVw5O5wep0lu4gacm1OL6MjROoUnB8VbkWRThqkV2YFLNxw==",
|
||||
"version": "4.0.4",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.4.tgz",
|
||||
"integrity": "sha512-pknFIWVachNcyqRfaQSeu/FUfpvJTe4uskUSZ9Wc1RijsPuzbZ8TyYT8WCNnntCjUEqQ3vUHMAfVj2+wLAisPQ==",
|
||||
"requires": {
|
||||
"call-bind": "^1.0.0",
|
||||
"call-bind": "^1.0.2",
|
||||
"define-properties": "^1.1.3",
|
||||
"es-abstract": "^1.18.0-next.1",
|
||||
"es-abstract": "^1.18.0-next.2",
|
||||
"has-symbols": "^1.0.1",
|
||||
"internal-slot": "^1.0.2",
|
||||
"regexp.prototype.flags": "^1.3.0",
|
||||
"side-channel": "^1.0.3"
|
||||
"internal-slot": "^1.0.3",
|
||||
"regexp.prototype.flags": "^1.3.1",
|
||||
"side-channel": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"string.prototype.trimend": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz",
|
||||
"integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
|
||||
"integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==",
|
||||
"requires": {
|
||||
"call-bind": "^1.0.0",
|
||||
"call-bind": "^1.0.2",
|
||||
"define-properties": "^1.1.3"
|
||||
}
|
||||
},
|
||||
"string.prototype.trimstart": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz",
|
||||
"integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz",
|
||||
"integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==",
|
||||
"requires": {
|
||||
"call-bind": "^1.0.0",
|
||||
"call-bind": "^1.0.2",
|
||||
"define-properties": "^1.1.3"
|
||||
}
|
||||
},
|
||||
|
@ -12965,9 +13209,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"ajv": {
|
||||
"version": "7.0.4",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-7.0.4.tgz",
|
||||
"integrity": "sha512-xzzzaqgEQfmuhbhAoqjJ8T/1okb6gAzXn/eQRNpAN1AEUoHJTNF9xCDRTtf/s3SKldtZfa+RJeTs+BQq+eZ/sw==",
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-7.1.1.tgz",
|
||||
"integrity": "sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==",
|
||||
"requires": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"json-schema-traverse": "^1.0.0",
|
||||
|
@ -13554,9 +13798,9 @@
|
|||
}
|
||||
},
|
||||
"tlds": {
|
||||
"version": "1.216.0",
|
||||
"resolved": "https://registry.npmjs.org/tlds/-/tlds-1.216.0.tgz",
|
||||
"integrity": "sha512-y9A+eMRKLdAOclcFRTk3durpvCWiEdWcQhCOopCO654pckH9+o5Z5VgBsTTAFqtyxB8yFRXSG1q7BCCeHyrm0w=="
|
||||
"version": "1.218.0",
|
||||
"resolved": "https://registry.npmjs.org/tlds/-/tlds-1.218.0.tgz",
|
||||
"integrity": "sha512-JpD3eSrYaIFlU/OvtI5WTEK+v5qXZSeUifz4hT2bJsJKx5ykjZvg6i5yXVBJNjoN3XbTCtryc7H5v8B16yHfMg=="
|
||||
},
|
||||
"tmp": {
|
||||
"version": "0.0.33",
|
||||
|
@ -14017,9 +14261,9 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"mime": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz",
|
||||
"integrity": "sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag=="
|
||||
"version": "2.5.2",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
|
||||
"integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -14395,9 +14639,9 @@
|
|||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
},
|
||||
"yargs-parser": {
|
||||
"version": "20.2.4",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
|
||||
"integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA=="
|
||||
"version": "20.2.6",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz",
|
||||
"integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA=="
|
||||
},
|
||||
"yauzl": {
|
||||
"version": "2.10.0",
|
||||
|
|
|
@ -5,11 +5,12 @@
|
|||
"author": "HashiCorp",
|
||||
"dependencies": {
|
||||
"@hashicorp/mktg-global-styles": "2.1.0",
|
||||
"@hashicorp/nextjs-scripts": "16.0.1",
|
||||
"@hashicorp/nextjs-scripts": "16.2.0",
|
||||
"@hashicorp/react-button": "4.0.0",
|
||||
"@hashicorp/react-docs-page": "^10.3.2",
|
||||
"@hashicorp/react-docs-page": "10.9.4-alpha.18",
|
||||
"@hashicorp/react-hashi-stack-menu": "^1.1.0",
|
||||
"@hashicorp/react-head": "1.1.6",
|
||||
"@hashicorp/react-inline-svg": "5.0.0",
|
||||
"@hashicorp/react-markdown-page": "^0.1.0",
|
||||
"@hashicorp/react-product-downloader": "4.0.2",
|
||||
"@hashicorp/react-search": "^3.0.0",
|
||||
|
|
|
@ -1,33 +1,75 @@
|
|||
import { productName, productSlug } from 'data/metadata'
|
||||
import order from 'data/docs-navigation.js'
|
||||
import DocsPage from '@hashicorp/react-docs-page'
|
||||
import PluginTierLabel from 'components/plugin-tier-label'
|
||||
import DevAlert from 'components/dev-alert'
|
||||
// Imports below are only used server-side
|
||||
import {
|
||||
generateStaticPaths,
|
||||
generateStaticProps,
|
||||
} from '@hashicorp/react-docs-page/server'
|
||||
} from 'components/remote-plugin-docs/server'
|
||||
|
||||
const subpath = 'docs'
|
||||
// Configure the docs path
|
||||
const BASE_ROUTE = 'docs'
|
||||
const NAV_DATA = 'data/docs-nav-data.json'
|
||||
const CONTENT_DIR = 'content/docs'
|
||||
// override default "main" value for branch for "edit on this page"
|
||||
const MAIN_BRANCH = 'master'
|
||||
// add remote plugin docs loading
|
||||
const OPTIONS = {
|
||||
remotePluginsFile: 'data/docs-remote-plugins.json',
|
||||
additionalComponents: { PluginTierLabel },
|
||||
}
|
||||
|
||||
export default function DocsLayout(props) {
|
||||
function DocsLayout({ isDevMissingRemotePlugins, ...props }) {
|
||||
return (
|
||||
<>
|
||||
{isDevMissingRemotePlugins ? (
|
||||
<DevAlert>
|
||||
<strong className="g-type-label-strong">
|
||||
Note for local development
|
||||
</strong>
|
||||
<p>
|
||||
<span role="img" aria-label="Alert: ">
|
||||
🚨
|
||||
</span>{' '}
|
||||
<strong>This preview is missing plugin docs</strong> pulled from
|
||||
remote repos.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<span role="img" aria-label="Fix: ">
|
||||
🛠
|
||||
</span>{' '}
|
||||
<strong>To preview docs pulled from plugin repos</strong>, please
|
||||
include a <code>GITHUB_API_TOKEN</code> in{' '}
|
||||
<code>website/.env.local</code>.
|
||||
</p>
|
||||
</DevAlert>
|
||||
) : null}
|
||||
<DocsPage
|
||||
additionalComponents={OPTIONS.additionalComponents}
|
||||
baseRoute={BASE_ROUTE}
|
||||
mainBranch="master" // used for "edit on this page", default "main"
|
||||
product={{ name: productName, slug: productSlug }}
|
||||
subpath={subpath}
|
||||
order={order}
|
||||
staticProps={props}
|
||||
mainBranch="master"
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export async function getStaticPaths() {
|
||||
return generateStaticPaths(subpath)
|
||||
const paths = await generateStaticPaths(NAV_DATA, CONTENT_DIR, OPTIONS)
|
||||
return { paths, fallback: false }
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }) {
|
||||
return generateStaticProps({
|
||||
subpath,
|
||||
productName,
|
||||
const props = await generateStaticProps(
|
||||
NAV_DATA,
|
||||
CONTENT_DIR,
|
||||
params,
|
||||
})
|
||||
OPTIONS
|
||||
)
|
||||
return { props }
|
||||
}
|
||||
|
||||
export default DocsLayout
|
||||
|
|
|
@ -1,33 +1,33 @@
|
|||
import { productName, productSlug } from 'data/metadata'
|
||||
import order from 'data/guides-navigation.js'
|
||||
import DocsPage from '@hashicorp/react-docs-page'
|
||||
// Imports below are only used server-side
|
||||
import {
|
||||
generateStaticPaths,
|
||||
generateStaticProps,
|
||||
} from '@hashicorp/react-docs-page/server'
|
||||
|
||||
const subpath = 'guides'
|
||||
// Configure the docs path
|
||||
const BASE_ROUTE = 'guides'
|
||||
const NAV_DATA = 'data/guides-nav-data.json'
|
||||
const CONTENT_DIR = 'content/guides'
|
||||
|
||||
export default function GuidesLayout(props) {
|
||||
return (
|
||||
<DocsPage
|
||||
baseRoute={BASE_ROUTE}
|
||||
mainBranch="master" // used for "edit on this page", default "main"
|
||||
product={{ name: productName, slug: productSlug }}
|
||||
subpath={subpath}
|
||||
order={order}
|
||||
staticProps={props}
|
||||
mainBranch="master"
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
export async function getStaticPaths() {
|
||||
return generateStaticPaths(subpath)
|
||||
const paths = await generateStaticPaths(NAV_DATA, CONTENT_DIR)
|
||||
return { paths, fallback: false }
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }) {
|
||||
return generateStaticProps({
|
||||
subpath,
|
||||
productName,
|
||||
params,
|
||||
})
|
||||
const props = await generateStaticProps(NAV_DATA, CONTENT_DIR, params)
|
||||
return { props }
|
||||
}
|
||||
|
|
|
@ -1,33 +1,33 @@
|
|||
import { productName, productSlug } from 'data/metadata'
|
||||
import order from 'data/intro-navigation.js'
|
||||
import DocsPage from '@hashicorp/react-docs-page'
|
||||
// Imports below are only used server-side
|
||||
import {
|
||||
generateStaticPaths,
|
||||
generateStaticProps,
|
||||
} from '@hashicorp/react-docs-page/server'
|
||||
|
||||
const subpath = 'intro'
|
||||
// Configure the docs path
|
||||
const BASE_ROUTE = 'intro'
|
||||
const NAV_DATA = 'data/intro-nav-data.json'
|
||||
const CONTENT_DIR = 'content/intro'
|
||||
|
||||
export default function IntroLayout(props) {
|
||||
return (
|
||||
<DocsPage
|
||||
baseRoute={BASE_ROUTE}
|
||||
mainBranch="master" // used for "edit on this page", default "main"
|
||||
product={{ name: productName, slug: productSlug }}
|
||||
subpath={subpath}
|
||||
order={order}
|
||||
staticProps={props}
|
||||
mainBranch="master"
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
export async function getStaticPaths() {
|
||||
return generateStaticPaths(subpath)
|
||||
const paths = await generateStaticPaths(NAV_DATA, CONTENT_DIR)
|
||||
return { paths, fallback: false }
|
||||
}
|
||||
|
||||
export async function getStaticProps({ params }) {
|
||||
return generateStaticProps({
|
||||
subpath,
|
||||
productName,
|
||||
params,
|
||||
})
|
||||
const props = await generateStaticProps(NAV_DATA, CONTENT_DIR, params)
|
||||
return { props }
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
@import '~@hashicorp/react-consent-manager/style.css';
|
||||
@import '~@hashicorp/react-content/style.css';
|
||||
@import '~@hashicorp/react-docs-page/style.css';
|
||||
@import '~@hashicorp/react-docs-sidenav/style.css';
|
||||
@import '~@hashicorp/react-product-downloader/dist/style.css';
|
||||
@import '~@hashicorp/react-search/style.css';
|
||||
@import '~@hashicorp/react-subnav/style.css';
|
||||
|
|
Loading…
Reference in New Issue