Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const config = await importModule(path.join(this.options.rootDir, `nuxt.${rootId}.js`))
await writeJson(path.join(buildDirRoot, 'config.json'), config, { spaces: 2 })
return
}
const configPath = path.join(this.options.rootDir, `nuxt.${rootId}.json`)
if (!await exists(configPath)) {
await writeJson(configPath, config, { spaces: 2 })
return
}
try {
const existingConfig = await readJson(configPath, { throws: true })
const updated = defu(existingConfig || {}, config)
await writeJson(configPath, updated, { spaces: 2 })
await writeJson(path.join(buildDirRoot, 'config.json'), updated, { spaces: 2 })
} catch (err) {
// eslint-disable-next-line no-console
console.warn(err)
}
}
const config = await importModule(path.join(this.options.rootDir, `nuxt.${rootId}.js`))
await writeJson(path.join(buildDirRoot, 'config.json'), config, { spaces: 2 })
return
}
const configPath = path.join(this.options.rootDir, `nuxt.${rootId}.json`)
if (!await exists(configPath)) {
await writeJson(configPath, config, { spaces: 2 })
return
}
try {
const existingConfig = await readJson(configPath, { throws: true })
const updated = defu(existingConfig || {}, config)
await writeJson(configPath, updated, { spaces: 2 })
await writeJson(path.join(buildDirRoot, 'config.json'), updated, { spaces: 2 })
} catch (err) {
// eslint-disable-next-line no-console
console.warn(err)
}
}
export async function registerBlueprint (blueprintId, rootId, id, rootOptions) {
// Load blueprint specification
const blueprint = blueprints[blueprintId]
// Populate mode default options
const options = defu(rootOptions[id] || {}, blueprint.options)
// add ref back to rootOptions
rootOptions[id] = options
const context = {
blueprintId,
rootId,
id,
rootOptions,
options,
registeredBlueprintIds,
availableBlueprintIds,
data: undefined
}
// Determine if mode is enabled
if (!blueprint.enabled.call(this, context)) {
export async function loadConfig ({ rootId, rootDir, config }) {
const fileExtensions = ['js', 'json']
for (const fileExtension of fileExtensions) {
const jsConfigPath = path.join(rootDir, `nuxt.${rootId}.${fileExtension}`)
// JavaScript config has precedence over JSON config
if (await exists(jsConfigPath)) {
// load external config
const externalConfig = await importModule(jsConfigPath)
// apply defaults
config = defu(externalConfig, config)
config.configPath = jsConfigPath
break
}
}
return config
}
constructor (nuxt, options = {}) {
// singleton blueprints dont support being loaded twice
if (new.target.features.singleton && !runOnceGuard(new.target, 'constructed')) {
throw new Error(`${new.target.name}: trying to load a singleton blueprint which is already loaded`)
}
super(nuxt)
this.id = options.id || this.constructor.id || 'blueprint'
this.blueprintOptions = defu(options, defaultOptions)
this.templateOptions = this.blueprintOptions
}
constructor (nuxt, options = {}) {
// singleton blueprints dont support being loaded twice
if (new.target.features.singleton && !runOnceGuard(new.target, 'constructed')) {
throw new Error(`${new.target.name}: trying to load a singleton blueprint which is already loaded`)
}
super(nuxt)
this.id = options.id || this.constructor.id || 'blueprint'
this.blueprintOptions = defu(options, defaultOptions)
this.templateOptions = this.blueprintOptions
}
let raw = await readFile(join(root, sourcePath))
const { name: fileName } = path.parse(sourcePath)
let meta
if (raw.trimLeft().startsWith('---')) {
const { content, data } = graymatter(raw)
raw = content
meta = defu(data, defaultMetaSettings)
if (meta.sidebar === 'auto') {
meta.sidebarDepth = maxSidebarDepth
}
} else {
meta = defu({}, defaultMetaSettings)
}
const { toc, html: body } = await options.source.markdown.call(this, raw, mdProcessor)
const title = await options.source.title.call(this, fileName, raw, toc)
sourcePath = sourcePath.substr(0, sourcePath.lastIndexOf('.')).replace(isIndexRE, '') || 'index'
const urlPath = sourcePath === 'index' ? '/' : `/${sourcePath.replace(/\/index$/, '')}/`
let locale = ''
const locales = rootOptions.i18n && rootOptions.i18n.locales
if (locales) {
({ code: locale } = locales.find(l => l.code === sourcePath || sourcePath.startsWith(`${l.code}/`)) || {})
}
export async function parsePage ({ rootOptions, id, options }, { root, prefix: pagePrefix = '', path: sourcePath }, mdProcessor) {
const src = sourcePath
pagePrefix = normalizePath(pagePrefix, true, false, true)
let raw = await readFile(join(root, sourcePath))
const { name: fileName } = path.parse(sourcePath)
let meta
if (raw.trimLeft().startsWith('---')) {
const { content, data } = graymatter(raw)
raw = content
meta = defu(data, defaultMetaSettings)
if (meta.sidebar === 'auto') {
meta.sidebarDepth = maxSidebarDepth
}
} else {
meta = defu({}, defaultMetaSettings)
}
const { toc, html: body } = await options.source.markdown.call(this, raw, mdProcessor)
const title = await options.source.title.call(this, fileName, raw, toc)
sourcePath = sourcePath.substr(0, sourcePath.lastIndexOf('.')).replace(isIndexRE, '') || 'index'
const urlPath = sourcePath === 'index' ? '/' : `/${sourcePath.replace(/\/index$/, '')}/`
metadata (source) {
const defaultMetaSettings = this.constructor.defaultConfig.metaSettings
if (source.trimLeft().startsWith('---')) {
const { content, data } = graymatter(source)
const meta = defu(data, defaultMetaSettings)
if (meta.sidebar === 'auto') {
meta.sidebarDepth = this.constructor.defaultConfig.maxSidebarDepth
}
return {
content,
meta
}
}
return {
meta: {
...defaultMetaSettings
}
}
constructor (auth, options) {
super(auth, defu(options, DEFAULTS))
this.refreshInterval = undefined
this.isRefreshing = false
this.hasRefreshTokenChanged = false
}