Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'markdown-magic' 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.
}).map((file) => {
const filePath = path.join(lessonsPath, file)
const examples = globby.sync([
// `!node_modules`,
`${filePath}/**/**.md`,
`!${filePath}/node_modules/**/**`,
`!${filePath}/**/node_modules/**/**`,
// `!${filePath}/node_modules/**/**.md`,
// `!${filePath}/**/node_modules/**/**.md`,
])
// console.log('examples', examples)
// console.log('filePath', filePath)
// process.exit(1)
let md = `### ${formatName(file)}
${generateTable(examples)}
`
return md
module.exports = function generateCommandData() {
const commandsPath = path.join(__dirname, '..', 'src/commands')
const netlifyDevPath = path.join(__dirname, '..', 'node_modules/netlify-dev-plugin/src/commands')
// console.log('commandsPath', commandsPath)
const commands = globby.sync([`${commandsPath}/**/**.js`, `${netlifyDevPath}/**/**.js`])
const allCommands = commands.map(file => {
let cmd = {}
try {
cmd = require(file)
} catch (e) {
throw e
}
const command = commandFromPath(file)
const parentCommand = command.split(':')[0]
const parent = command === parentCommand ? true : false
return {
command: command,
commandGroup: parentCommand,
isParent: parent,
path: file,
markdownMagic(markdownFiles, config, () => {
/* Post process the docs */
const processedDocs = globby.sync(['../docs/**/**.md'])
processedDocs.map(f => {
const filePath = path.resolve(f)
const fileContents = fs.readFileSync(filePath, 'utf8')
// Fix garbage chalk output
const updatedContents = fileContents.replace(/\[92m/, '').replace(/\[39m/, '')
fs.writeFileSync(filePath, updatedContents)
})
console.log('Docs updated!')
})
GENERATE_LESSONS_STEPS(content, options, instance) {
// console.log('instance.outputDir', instance.outputDir)
// debug single file
// if (instance.outputDir !== "_instructor/events/step-functions") {
// return content
// }
const lessonFiles = globby.sync(['**', '!node_modules'], {
cwd: instance.outputDir
})
const jsRegex = /\/\* Step([\s\S]*?)\*\//g
const ymlRegex = / *?# Step([\s\S]*?) #\n*?/g
const htmlRegex = / *?\<\!-- Step([\s\S]*?) ?--\>\n*?/g
var matches = []
if (lessonFiles) {
lessonFiles.map((f) => {
const filePath = path.join(instance.outputDir, f)
if (fs.lstatSync(filePath).isDirectory()) {
// skip dirs
return
}
const fileContents = fs.readFileSync(filePath, 'utf8')
const fileType = path.extname(f)
GENERATE_LESSONS_STEPS(content, options, instance) {
//console.log('instance.outputDir', instance.outputDir)
// debug single file
// if (instance.outputDir !== "_instructor/events/step-functions") {
// return content
// }
const lessonFiles = globby.sync(['**', '!node_modules'], {
cwd: instance.outputDir
})
const jsRegex = /\/\* Step([\s\S]*?)\*\//g
const ymlRegex = / *?# Step([\s\S]*?) #\n*?/g
const htmlRegex = / *?\<\!-- Step([\s\S]*?) ?--\>\n*?/g
var matches = []
if (lessonFiles) {
lessonFiles.map((f) => {
const filePath = path.join(instance.outputDir, f)
if (fs.lstatSync(filePath).isDirectory()) {
// skip dirs
return;
}
const fileContents = fs.readFileSync(filePath, 'utf8')
const fileType = path.extname(f)
var regex = jsRegex
const path = require('path')
const chalk = require('chalk')
const markdownMagic = require('markdown-magic')
const globby = require('markdown-magic').globby
console.log('Post process lesson files')
const removeComments = / *?\<\!-- ([\s\S]*?) ?--\>\n\n*?/g
const directories = [
'lessons-code-complete/**/**.md',
'lessons/**/**.md',
'!node_modules'
]
const lessonFiles = globby.sync(directories)
if (lessonFiles) {
console.log(chalk.yellow('Removing comments from student files'))
lessonFiles.map((f) => {
const filePath = path.resolve(f)
// console.log('filePath', filePath)
const fileContents = fs.readFileSync(filePath, 'utf8')
//console.log(fileContents)
const fileType = path.extname(f)
const updatedContents = fileContents.replace(removeComments, '')
fs.writeFileSync(filePath, updatedContents)
//console.log('updatedContents', updatedContents)
})
console.log(chalk.green('All Done!'))
}
const magicConfig = {
transforms: {
METHODS() {
const categories = generateCategoryDocs(srcData)
return reduceObjIndexed(
(markdown, category) => {
return markdown + renderCategoryMarkdown(category)
},
'',
categories
)
}
}
}
markdownMagic([API_README_PATH], magicConfig, (error) => {
if (error) {
// eslint-disable-next-line no-console
console.log('Error while generating docs')
return reject(error)
}
// eslint-disable-next-line no-console
console.log('🎉 Docs updated!')
resolve()
})
})
SERVERLESS_EXAMPLE_TABLE() {
const examples = globby.sync(['**/package.json', '!node_modules/**/package.json', '!**/node_modules/**/package.json', '!package.json']);
// Make table header
let md = '| Example | Runtime |\n';
md += '|:--------------------------- |:-----|\n';
examples.forEach((example) => {
const data = JSON.parse(fs.readFileSync(example, 'utf8'));
const dirname = path.dirname(example);
const exampleUrl = `https://github.com/serverless/examples/tree/master/${dirname}`;
const runtime = getRuntime(dirname);
const description = (data.description) ? `<br> ${data.description}` : '';
// add table rows
md += `| [${formatPluginName(data.name)}](${exampleUrl}) ${description} | ${runtime} |\n`;
});
return md;
},
/*
"name": "David Wells",
"github": "davidwells",
"avatar": "https://avatars2.githubusercontent.com/u/532272?v=3&s=60",
"bio": {
"short": "David Wells is a developer at Serverless, Inc.",
"long": "David is a Full Stack JavaScript Developer, entrepreneur, past life marketer. Developer @ http://serverless.com "
}
}
const authorArray = fs.readdirSync(authorDirectory).map((author) =>{
return author.replace('.json', '')
})
// test author directory
globby(['*', '!node_modules'], {
cwd: authorDirectory
}).then(paths => {
paths.forEach((file) => {
const fp = path.join(authorDirectory, file)
if (file.match(/\.json/)) {
const author = fs.readFileSync(fp, 'utf8')
const valid = hasSameProps(authorData, JSON.parse(author))
if (!valid) {
const msg = `${file} has missing value in author profile.
Author data must match (if no value applies use false):
${JSON.stringify(authorData, null, 2)}`
throw new Error(msg)
}
} else {
// not json throw error
throw new Error(`${file} file type not allowed in authors directory ${file}`);
paths.forEach((file) => {
const fp = path.join(authorDirectory, file)
if (file.match(/\.json/)) {
const author = fs.readFileSync(fp, 'utf8')
const valid = hasSameProps(authorData, JSON.parse(author))
if (!valid) {
const msg = `${file} has missing value in author profile.
Author data must match (if no value applies use false):
${JSON.stringify(authorData, null, 2)}`
throw new Error(msg)
}
} else {
// not json throw error
throw new Error(`${file} file type not allowed in authors directory ${file}`);
}
})