Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'defu' in functional components in JavaScript. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
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
}