UNPKG

node-libcurl

Version:

The fastest http(s) client (and much more) for Node.js - Node.js bindings for libcurl

87 lines (78 loc) 1.89 kB
const fs = require('fs') const getDescriptionCommentForOption = (option) => option.description.trim() ? ` /** * ${option.description.trim()} * * Official libcurl documentation: : [${option.url}](${option.url}) */ ` : ` /** * Official libcurl documentation: : [${option.url}](${option.url}) */ ` const createConstantsFile = async ({ constants, variableName, filePath, shouldGenerateCamelCaseMap = false, extraHeaderText = '', }) => { const constantsObj = [ ` /** * @public */ export interface ${variableName} {`, ...constants.map( (option) => ` ${getDescriptionCommentForOption(option)}readonly ${ option.constantName }: "${option.constantName}", `, ), `}`, ].join('\n') const constantsCamelCaseMapObj = shouldGenerateCamelCaseMap ? [ `export const ${variableName}CamelCaseMap = {`, ...constants.map( (option) => `${getDescriptionCommentForOption(option)}${ option.constantNameCamelCase }: "${option.constantName}",`, ), `} as const`, ].join('\n') : '' const optionNameUnionType = ` /** * @public */ export type ${variableName}Name = ${constants .map((option) => require('util').inspect(option.constantName)) .join(' | ')}` fs.writeFileSync( filePath, `/** * Copyright (c) Jonathan Cardoso Machado. All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ // This file was generated by scripts/build-constants.js on ${new Date().toISOString()} // Do not edit manually ${extraHeaderText} ${constantsObj} ${constantsCamelCaseMapObj} ${optionNameUnionType} `, ) } module.exports = { createConstantsFile, getDescriptionCommentForOption, }