+6
-0
| # Change Log | ||
| ## 1.0.2 | ||
| ### Patch Changes | ||
| - Update node version | ||
| ## 1.0.1 | ||
@@ -4,0 +10,0 @@ |
+4
-4
| { | ||
| "name": "@onr/cli", | ||
| "version": "1.0.1", | ||
| "version": "1.0.2", | ||
| "description": "", | ||
@@ -30,4 +30,4 @@ "main": "dist/index.js", | ||
| "devDependencies": { | ||
| "@onr/eslint-config": "^0.6.6", | ||
| "@onr/prettier-config": "^2.0.1", | ||
| "@onr/eslint-config": "^0.6.7", | ||
| "@onr/prettier-config": "^2.0.2", | ||
| "@types/figlet": "^1.5.4", | ||
@@ -38,3 +38,3 @@ "@types/inquirer": "^6.5.0", | ||
| "@types/mustache": "^4.0.1", | ||
| "@types/node": "^14.14.21", | ||
| "@types/node": "^18.19.47", | ||
| "eslint": "^8.57.0", | ||
@@ -41,0 +41,0 @@ "jest": "^29.7.0", |
| #!/usr/bin/env node |
| #!/usr/bin/env node |
-269
| #!/usr/bin/env node | ||
| "use strict"; | ||
| var __create = Object.create; | ||
| var __defProp = Object.defineProperty; | ||
| var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | ||
| var __getOwnPropNames = Object.getOwnPropertyNames; | ||
| var __getProtoOf = Object.getPrototypeOf; | ||
| var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
| var __copyProps = (to, from, except, desc) => { | ||
| if (from && typeof from === "object" || typeof from === "function") { | ||
| for (let key of __getOwnPropNames(from)) | ||
| if (!__hasOwnProp.call(to, key) && key !== except) | ||
| __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
| } | ||
| return to; | ||
| }; | ||
| var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( | ||
| // If the importer is in node compatibility mode or this is not an ESM | ||
| // file that has been converted to a CommonJS file using a Babel- | ||
| // compatible transform (i.e. "__esModule" has not been set), then set | ||
| // "default" to the CommonJS "module.exports" for node compatibility. | ||
| isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, | ||
| mod | ||
| )); | ||
| var __async = (__this, __arguments, generator) => { | ||
| return new Promise((resolve2, reject) => { | ||
| var fulfilled = (value) => { | ||
| try { | ||
| step(generator.next(value)); | ||
| } catch (e) { | ||
| reject(e); | ||
| } | ||
| }; | ||
| var rejected = (value) => { | ||
| try { | ||
| step(generator.throw(value)); | ||
| } catch (e) { | ||
| reject(e); | ||
| } | ||
| }; | ||
| var step = (x) => x.done ? resolve2(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); | ||
| step((generator = generator.apply(__this, __arguments)).next()); | ||
| }); | ||
| }; | ||
| // src/index.ts | ||
| var import_chalk = __toESM(require("chalk")); | ||
| var import_commander = __toESM(require("commander")); | ||
| var import_figlet = __toESM(require("figlet")); | ||
| var import_inquirer = __toESM(require("inquirer")); | ||
| var import_inquirer_fuzzy_path = __toESM(require("inquirer-fuzzy-path")); | ||
| // src/commonQuestion.ts | ||
| var defaultValue = { | ||
| hasStyle: false, | ||
| isPage: false, | ||
| name: "", | ||
| componentBasedOnModuleName: "", | ||
| hasCustomRoute: false | ||
| }; | ||
| var Common; | ||
| ((Common2) => { | ||
| Common2.commonQuestion = [ | ||
| { | ||
| default: defaultValue.hasStyle, | ||
| message: "Do you want to add style file?", | ||
| name: "hasStyle", | ||
| type: "confirm" | ||
| }, | ||
| { | ||
| default: defaultValue.isPage, | ||
| message: "Is a page module?", | ||
| name: "isPage", | ||
| type: "confirm" | ||
| }, | ||
| { | ||
| when(val) { | ||
| return !val.isPage; | ||
| }, | ||
| message: "Where should the component be placed?", | ||
| type: "fuzzypath", | ||
| name: "componentBasedOnModuleName", | ||
| excludePath: (nodePath) => nodePath.startsWith("node_modules"), | ||
| excludeFilter: (nodePath) => nodePath === ".", | ||
| itemType: "directory", | ||
| depth: 7, | ||
| suggestOnly: true, | ||
| rootPath: "./src/modules" | ||
| }, | ||
| { | ||
| default: defaultValue.name, | ||
| message: (val) => `What is ${val.isPage ? "page" : "component"} name?`, | ||
| type: "input", | ||
| name: "name" | ||
| }, | ||
| { | ||
| default: defaultValue.hasCustomRoute, | ||
| message: "Enable the custom route?", | ||
| type: "confirm", | ||
| name: "hasCustomRoute", | ||
| when(val) { | ||
| return val.isPage; | ||
| } | ||
| }, | ||
| { | ||
| default: "", | ||
| message: "What is the custom route path?", | ||
| type: "input", | ||
| name: "customRouteName", | ||
| when(val) { | ||
| return val.hasCustomRoute; | ||
| } | ||
| } | ||
| ]; | ||
| })(Common || (Common = {})); | ||
| // src/helper.ts | ||
| var import_fs = require("fs"); | ||
| var import_path = require("path"); | ||
| var mustache = __toESM(require("mustache")); | ||
| function createComponentTemplate(props) { | ||
| const template = (0, import_fs.readFileSync)( | ||
| (0, import_path.resolve)(__dirname, "./templates/functional/fc.component.mustache"), | ||
| "utf8" | ||
| ); | ||
| const result = mustache.render(template, props); | ||
| return result; | ||
| } | ||
| function createPageTemplate(props) { | ||
| const template = (0, import_fs.readFileSync)( | ||
| (0, import_path.resolve)(__dirname, "./templates/functional/pages.mustache"), | ||
| "utf8" | ||
| ); | ||
| const result = mustache.render(template, props); | ||
| return result; | ||
| } | ||
| function createDefinitionTemplate(props) { | ||
| const template = (0, import_fs.readFileSync)( | ||
| (0, import_path.resolve)(__dirname, "./templates/functional/fc.d.ts.mustache"), | ||
| "utf8" | ||
| ); | ||
| const result = mustache.render(template, props); | ||
| return result; | ||
| } | ||
| function createStyleTemplate(props) { | ||
| const template = (0, import_fs.readFileSync)( | ||
| (0, import_path.resolve)(__dirname, "./templates/functional/style.component.mustache"), | ||
| "utf8" | ||
| ); | ||
| const result = mustache.render(template, props); | ||
| return result; | ||
| } | ||
| function checkExists(absPath) { | ||
| return (0, import_fs.existsSync)(absPath); | ||
| } | ||
| function writeFileRecursive(data, absPath) { | ||
| (0, import_fs.mkdirSync)((0, import_path.dirname)(absPath), { recursive: true }); | ||
| (0, import_fs.writeFileSync)(absPath, data); | ||
| return true; | ||
| } | ||
| function indexAppend(folderPath, nameOfFile) { | ||
| (0, import_fs.appendFileSync)((0, import_path.resolve)(folderPath, "index.ts"), `export * from './${nameOfFile}'; | ||
| `); | ||
| } | ||
| function caseTransform(str) { | ||
| return str.replace(/([A-Z0-9])/g, ($1) => `-${$1.toLowerCase()}`).replace(/^\-/, ""); | ||
| } | ||
| function firstLetter(str) { | ||
| return { | ||
| upper: `${str[0].toUpperCase()}${str.slice(1)}`, | ||
| lower: `${str[0].toLowerCase()}${str.slice(1)}` | ||
| }; | ||
| } | ||
| function createCustomRoute(routePath, targetPath) { | ||
| const regex = /^(?:[\t ]*(?:\r?\n|\r))+module.exports = routes;/gm; | ||
| const content = (0, import_fs.readFileSync)("./src/server/routes.js", "utf8"); | ||
| const replaceTemplate = mustache.render( | ||
| (0, import_fs.readFileSync)((0, import_path.resolve)(__dirname, "./templates/functional/routes.mustache"), "utf8"), | ||
| { routePath, targetPath } | ||
| ); | ||
| const replaceContent = content.replace(regex, replaceTemplate); | ||
| (0, import_fs.writeFileSync)("./src/server/routes.js", replaceContent, { encoding: "utf8" }); | ||
| } | ||
| var TemplateCreator = class { | ||
| static component(name, rootPath, hasStyle) { | ||
| const styleName = `${firstLetter(name).upper}Style`; | ||
| const _template = createComponentTemplate({ | ||
| name, | ||
| hasStyle, | ||
| styleName, | ||
| definitionName: firstLetter(name).upper, | ||
| isComponent: true, | ||
| tag: "div" | ||
| }); | ||
| const _componentPath = rootPath; | ||
| if (hasStyle) { | ||
| const _styleTemplate = createStyleTemplate({ | ||
| name: `${firstLetter(name).upper}Style`, | ||
| tag: "div" | ||
| }); | ||
| writeFileRecursive(_styleTemplate, (0, import_path.resolve)(_componentPath, `styles/${name}.ts`)); | ||
| indexAppend((0, import_path.resolve)(_componentPath, `styles`), name); | ||
| } | ||
| writeFileRecursive(_template, (0, import_path.resolve)(_componentPath, `${name}.tsx`)); | ||
| indexAppend(_componentPath, `${name}`); | ||
| } | ||
| static pageWriter(name, rootPath, hasStyle = false) { | ||
| const _path = (0, import_path.resolve)(rootPath, "src", "pages", caseTransform(name), `index.tsx`); | ||
| const definitionName = firstLetter(name).upper; | ||
| if (!checkExists(_path)) { | ||
| const componentName = `${firstLetter(name).upper}Page`; | ||
| const moduleName = `${caseTransform(name)}`; | ||
| const styleName = `${firstLetter(name).upper}Style`; | ||
| const _pageTemplate = createPageTemplate({ | ||
| name: componentName, | ||
| moduleName | ||
| }); | ||
| const _componentTemplate = createComponentTemplate({ | ||
| hasStyle, | ||
| name: componentName, | ||
| definitionName, | ||
| isComponent: false, | ||
| styleName, | ||
| tag: "div" | ||
| }); | ||
| const _defFiles = createDefinitionTemplate({ name: definitionName }); | ||
| const _modulePath = (0, import_path.resolve)(rootPath, "src", "modules", moduleName); | ||
| writeFileRecursive(_pageTemplate, _path); | ||
| writeFileRecursive( | ||
| _defFiles, | ||
| (0, import_path.resolve)(_modulePath, "entities", `I${definitionName}Page.d.ts`) | ||
| ); | ||
| writeFileRecursive( | ||
| _componentTemplate, | ||
| (0, import_path.resolve)(_modulePath, "pages", `${firstLetter(name).upper}Page.tsx`) | ||
| ); | ||
| if (hasStyle) { | ||
| const _styleTemplate = createStyleTemplate({ name: styleName, tag: "div" }); | ||
| writeFileRecursive(_styleTemplate, (0, import_path.resolve)(_modulePath, "pages/styles", `${name}.ts`)); | ||
| indexAppend((0, import_path.resolve)(_modulePath, "pages/styles"), name); | ||
| } | ||
| indexAppend((0, import_path.resolve)(_modulePath, "pages"), componentName); | ||
| indexAppend(_modulePath, "pages"); | ||
| indexAppend((0, import_path.resolve)(_modulePath, "entities"), `I${definitionName}Page`); | ||
| } else { | ||
| throw new Error(`${name} page module already exists!`); | ||
| } | ||
| } | ||
| }; | ||
| // src/index.ts | ||
| import_inquirer.default.registerPrompt("fuzzypath", import_inquirer_fuzzy_path.default); | ||
| console.clear(); | ||
| console.log((0, import_chalk.default)(import_figlet.default.textSync("Onramplab CLI Boilerplate"))); | ||
| import_inquirer.default.prompt; | ||
| import_commander.default.command("addFile").alias("a").description("Add a file").action(() => __async(exports, null, function* () { | ||
| const answers = yield import_inquirer.default.prompt(Common.commonQuestion); | ||
| if (answers.isPage) { | ||
| TemplateCreator.pageWriter(answers.name, process.cwd(), answers.hasStyle); | ||
| if (answers.hasCustomRoute) { | ||
| const routeName = answers.customRouteName.replace(/^\//, ""); | ||
| createCustomRoute(routeName, `${caseTransform(answers.name)}`); | ||
| } | ||
| } else if (answers.name !== "") { | ||
| TemplateCreator.component(answers.name, answers.componentBasedOnModuleName, answers.hasStyle); | ||
| } | ||
| })); | ||
| import_commander.default.parse(process.argv); | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"sources":["../src/index.ts","../src/commonQuestion.ts","../src/helper.ts"],"sourcesContent":["#!/usr/bin/env node\nimport chalk from 'chalk';\nimport program from 'commander';\nimport figlet from 'figlet';\nimport inquirer from 'inquirer';\nimport inquirerFuzzyPath from 'inquirer-fuzzy-path';\nimport { Common } from './commonQuestion';\nimport { caseTransform, createCustomRoute, TemplateCreator } from './helper';\n\ninquirer.registerPrompt('fuzzypath', inquirerFuzzyPath);\nconsole.clear();\n\nconsole.log(chalk(figlet.textSync('Onramplab CLI Boilerplate')));\n\ninquirer.prompt;\n\nprogram\n .command('addFile')\n .alias('a')\n .description('Add a file')\n .action(async () => {\n const answers = await inquirer.prompt(Common.commonQuestion);\n if (answers.isPage) {\n TemplateCreator.pageWriter(answers.name, process.cwd(), answers.hasStyle);\n if (answers.hasCustomRoute) {\n const routeName = answers.customRouteName.replace(/^\\//, '');\n createCustomRoute(routeName, `${caseTransform(answers.name)}`);\n }\n } else if (answers.name !== '') {\n TemplateCreator.component(answers.name, answers.componentBasedOnModuleName, answers.hasStyle);\n }\n });\n\nprogram.parse(process.argv);\n","import * as inquirer from 'inquirer';\nimport { CliQuestion } from './interfaces/question';\n\nconst defaultValue = {\n hasStyle: false,\n isPage: false,\n name: '',\n componentBasedOnModuleName: '',\n hasCustomRoute: false,\n};\n\nexport namespace Common {\n export const commonQuestion: inquirer.QuestionCollection<CliQuestion.Common> = [\n {\n default: defaultValue.hasStyle,\n message: 'Do you want to add style file?',\n name: 'hasStyle',\n type: 'confirm',\n },\n {\n default: defaultValue.isPage,\n message: 'Is a page module?',\n name: 'isPage',\n type: 'confirm',\n },\n {\n when(val) {\n return !val.isPage;\n },\n message: 'Where should the component be placed?',\n type: 'fuzzypath',\n name: 'componentBasedOnModuleName',\n excludePath: (nodePath: string) => nodePath.startsWith('node_modules'),\n excludeFilter: (nodePath: string) => nodePath === '.',\n itemType: 'directory',\n depth: 7,\n suggestOnly: true,\n rootPath: './src/modules',\n },\n {\n default: defaultValue.name,\n message: val => `What is ${val.isPage ? 'page' : 'component'} name?`,\n type: 'input',\n name: 'name',\n },\n {\n default: defaultValue.hasCustomRoute,\n message: 'Enable the custom route?',\n type: 'confirm',\n name: 'hasCustomRoute',\n when(val) {\n return val.isPage;\n },\n },\n {\n default: '',\n message: 'What is the custom route path?',\n type: 'input',\n name: 'customRouteName',\n when(val) {\n return val.hasCustomRoute;\n },\n },\n ];\n}\n","import { readFileSync, existsSync, writeFileSync, mkdirSync, appendFileSync } from 'fs';\nimport { resolve, dirname } from 'path';\nimport * as mustache from 'mustache';\n\nfunction createComponentTemplate(props: {\n name: string;\n hasStyle: boolean;\n styleName: string;\n tag: string;\n isComponent: boolean;\n definitionName: string;\n}) {\n const template = readFileSync(\n resolve(__dirname, './templates/functional/fc.component.mustache'),\n 'utf8',\n );\n const result = mustache.render(template, props);\n return result;\n}\n\nfunction createPageTemplate(props: { name: string; moduleName: string }) {\n const template = readFileSync(\n resolve(__dirname, './templates/functional/pages.mustache'),\n 'utf8',\n );\n const result = mustache.render(template, props);\n return result;\n}\n\nfunction createDefinitionTemplate(props: { name: string }) {\n const template = readFileSync(\n resolve(__dirname, './templates/functional/fc.d.ts.mustache'),\n 'utf8',\n );\n const result = mustache.render(template, props);\n return result;\n}\n\nfunction createStyleTemplate(props: { name: string; tag: string }) {\n const template = readFileSync(\n resolve(__dirname, './templates/functional/style.component.mustache'),\n 'utf8',\n );\n const result = mustache.render(template, props);\n return result;\n}\n\nfunction checkExists(absPath: string) {\n return existsSync(absPath);\n}\n\nfunction writeFileRecursive(data: string, absPath: string) {\n mkdirSync(dirname(absPath), { recursive: true });\n writeFileSync(absPath, data);\n return true;\n}\n\nfunction indexAppend(folderPath: string, nameOfFile: string) {\n appendFileSync(resolve(folderPath, 'index.ts'), `export * from './${nameOfFile}';\\n`);\n}\n\nfunction caseTransform(str: string) {\n return str.replace(/([A-Z0-9])/g, $1 => `-${$1.toLowerCase()}`).replace(/^\\-/, '');\n}\n\nfunction firstLetter(str: string) {\n return {\n upper: `${str[0].toUpperCase()}${str.slice(1)}`,\n lower: `${str[0].toLowerCase()}${str.slice(1)}`,\n };\n}\n\nfunction createCustomRoute(routePath: string, targetPath: string) {\n const regex = /^(?:[\\t ]*(?:\\r?\\n|\\r))+module.exports = routes;/gm;\n const content = readFileSync('./src/server/routes.js', 'utf8');\n const replaceTemplate = mustache.render(\n readFileSync(resolve(__dirname, './templates/functional/routes.mustache'), 'utf8'),\n { routePath, targetPath },\n );\n const replaceContent = content.replace(regex, replaceTemplate);\n writeFileSync('./src/server/routes.js', replaceContent, { encoding: 'utf8' });\n}\n\nclass TemplateCreator {\n static component(name: string, rootPath: string, hasStyle: boolean) {\n const styleName = `${firstLetter(name).upper}Style`;\n const _template = createComponentTemplate({\n name,\n hasStyle,\n styleName,\n definitionName: firstLetter(name).upper,\n isComponent: true,\n tag: 'div',\n });\n const _componentPath = rootPath;\n\n if (hasStyle) {\n const _styleTemplate = createStyleTemplate({\n name: `${firstLetter(name).upper}Style`,\n tag: 'div',\n });\n writeFileRecursive(_styleTemplate, resolve(_componentPath, `styles/${name}.ts`));\n indexAppend(resolve(_componentPath, `styles`), name);\n }\n writeFileRecursive(_template, resolve(_componentPath, `${name}.tsx`));\n indexAppend(_componentPath, `${name}`);\n }\n\n static pageWriter(name: string, rootPath: string, hasStyle = false) {\n const _path = resolve(rootPath, 'src', 'pages', caseTransform(name), `index.tsx`);\n const definitionName = firstLetter(name).upper;\n if (!checkExists(_path)) {\n const componentName = `${firstLetter(name).upper}Page`;\n const moduleName = `${caseTransform(name)}`;\n const styleName = `${firstLetter(name).upper}Style`;\n const _pageTemplate = createPageTemplate({\n name: componentName,\n moduleName,\n });\n const _componentTemplate = createComponentTemplate({\n hasStyle,\n name: componentName,\n definitionName,\n isComponent: false,\n styleName,\n tag: 'div',\n });\n const _defFiles = createDefinitionTemplate({ name: definitionName });\n\n const _modulePath = resolve(rootPath, 'src', 'modules', moduleName);\n // Write page\n writeFileRecursive(_pageTemplate, _path);\n // Write definition\n writeFileRecursive(\n _defFiles,\n resolve(_modulePath, 'entities', `I${definitionName}Page.d.ts`),\n );\n // Write Component\n writeFileRecursive(\n _componentTemplate,\n resolve(_modulePath, 'pages', `${firstLetter(name).upper}Page.tsx`),\n );\n\n if (hasStyle) {\n const _styleTemplate = createStyleTemplate({ name: styleName, tag: 'div' });\n writeFileRecursive(_styleTemplate, resolve(_modulePath, 'pages/styles', `${name}.ts`));\n indexAppend(resolve(_modulePath, 'pages/styles'), name);\n }\n\n // pages index append\n indexAppend(resolve(_modulePath, 'pages'), componentName);\n // module index append\n indexAppend(_modulePath, 'pages');\n // entities index append\n indexAppend(resolve(_modulePath, 'entities'), `I${definitionName}Page`);\n } else {\n throw new Error(`${name} page module already exists!`);\n }\n }\n}\n\nexport { TemplateCreator, createCustomRoute, caseTransform };\n"],"mappings":"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","names":["Common","inquirer","inquirerFuzzyPath","chalk","figlet","program"]} |
-269
| #!/usr/bin/env node | ||
| var __getOwnPropNames = Object.getOwnPropertyNames; | ||
| var __esm = (fn, res) => function __init() { | ||
| return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; | ||
| }; | ||
| var __commonJS = (cb, mod) => function __require() { | ||
| return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; | ||
| }; | ||
| var __async = (__this, __arguments, generator) => { | ||
| return new Promise((resolve2, reject) => { | ||
| var fulfilled = (value) => { | ||
| try { | ||
| step(generator.next(value)); | ||
| } catch (e) { | ||
| reject(e); | ||
| } | ||
| }; | ||
| var rejected = (value) => { | ||
| try { | ||
| step(generator.throw(value)); | ||
| } catch (e) { | ||
| reject(e); | ||
| } | ||
| }; | ||
| var step = (x) => x.done ? resolve2(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); | ||
| step((generator = generator.apply(__this, __arguments)).next()); | ||
| }); | ||
| }; | ||
| // src/commonQuestion.ts | ||
| var defaultValue, Common; | ||
| var init_commonQuestion = __esm({ | ||
| "src/commonQuestion.ts"() { | ||
| "use strict"; | ||
| defaultValue = { | ||
| hasStyle: false, | ||
| isPage: false, | ||
| name: "", | ||
| componentBasedOnModuleName: "", | ||
| hasCustomRoute: false | ||
| }; | ||
| ((Common2) => { | ||
| Common2.commonQuestion = [ | ||
| { | ||
| default: defaultValue.hasStyle, | ||
| message: "Do you want to add style file?", | ||
| name: "hasStyle", | ||
| type: "confirm" | ||
| }, | ||
| { | ||
| default: defaultValue.isPage, | ||
| message: "Is a page module?", | ||
| name: "isPage", | ||
| type: "confirm" | ||
| }, | ||
| { | ||
| when(val) { | ||
| return !val.isPage; | ||
| }, | ||
| message: "Where should the component be placed?", | ||
| type: "fuzzypath", | ||
| name: "componentBasedOnModuleName", | ||
| excludePath: (nodePath) => nodePath.startsWith("node_modules"), | ||
| excludeFilter: (nodePath) => nodePath === ".", | ||
| itemType: "directory", | ||
| depth: 7, | ||
| suggestOnly: true, | ||
| rootPath: "./src/modules" | ||
| }, | ||
| { | ||
| default: defaultValue.name, | ||
| message: (val) => `What is ${val.isPage ? "page" : "component"} name?`, | ||
| type: "input", | ||
| name: "name" | ||
| }, | ||
| { | ||
| default: defaultValue.hasCustomRoute, | ||
| message: "Enable the custom route?", | ||
| type: "confirm", | ||
| name: "hasCustomRoute", | ||
| when(val) { | ||
| return val.isPage; | ||
| } | ||
| }, | ||
| { | ||
| default: "", | ||
| message: "What is the custom route path?", | ||
| type: "input", | ||
| name: "customRouteName", | ||
| when(val) { | ||
| return val.hasCustomRoute; | ||
| } | ||
| } | ||
| ]; | ||
| })(Common || (Common = {})); | ||
| } | ||
| }); | ||
| // src/helper.ts | ||
| import { readFileSync, existsSync, writeFileSync, mkdirSync, appendFileSync } from "fs"; | ||
| import { resolve, dirname } from "path"; | ||
| import * as mustache from "mustache"; | ||
| function createComponentTemplate(props) { | ||
| const template = readFileSync( | ||
| resolve(__dirname, "./templates/functional/fc.component.mustache"), | ||
| "utf8" | ||
| ); | ||
| const result = mustache.render(template, props); | ||
| return result; | ||
| } | ||
| function createPageTemplate(props) { | ||
| const template = readFileSync( | ||
| resolve(__dirname, "./templates/functional/pages.mustache"), | ||
| "utf8" | ||
| ); | ||
| const result = mustache.render(template, props); | ||
| return result; | ||
| } | ||
| function createDefinitionTemplate(props) { | ||
| const template = readFileSync( | ||
| resolve(__dirname, "./templates/functional/fc.d.ts.mustache"), | ||
| "utf8" | ||
| ); | ||
| const result = mustache.render(template, props); | ||
| return result; | ||
| } | ||
| function createStyleTemplate(props) { | ||
| const template = readFileSync( | ||
| resolve(__dirname, "./templates/functional/style.component.mustache"), | ||
| "utf8" | ||
| ); | ||
| const result = mustache.render(template, props); | ||
| return result; | ||
| } | ||
| function checkExists(absPath) { | ||
| return existsSync(absPath); | ||
| } | ||
| function writeFileRecursive(data, absPath) { | ||
| mkdirSync(dirname(absPath), { recursive: true }); | ||
| writeFileSync(absPath, data); | ||
| return true; | ||
| } | ||
| function indexAppend(folderPath, nameOfFile) { | ||
| appendFileSync(resolve(folderPath, "index.ts"), `export * from './${nameOfFile}'; | ||
| `); | ||
| } | ||
| function caseTransform(str) { | ||
| return str.replace(/([A-Z0-9])/g, ($1) => `-${$1.toLowerCase()}`).replace(/^\-/, ""); | ||
| } | ||
| function firstLetter(str) { | ||
| return { | ||
| upper: `${str[0].toUpperCase()}${str.slice(1)}`, | ||
| lower: `${str[0].toLowerCase()}${str.slice(1)}` | ||
| }; | ||
| } | ||
| function createCustomRoute(routePath, targetPath) { | ||
| const regex = /^(?:[\t ]*(?:\r?\n|\r))+module.exports = routes;/gm; | ||
| const content = readFileSync("./src/server/routes.js", "utf8"); | ||
| const replaceTemplate = mustache.render( | ||
| readFileSync(resolve(__dirname, "./templates/functional/routes.mustache"), "utf8"), | ||
| { routePath, targetPath } | ||
| ); | ||
| const replaceContent = content.replace(regex, replaceTemplate); | ||
| writeFileSync("./src/server/routes.js", replaceContent, { encoding: "utf8" }); | ||
| } | ||
| var TemplateCreator; | ||
| var init_helper = __esm({ | ||
| "src/helper.ts"() { | ||
| "use strict"; | ||
| TemplateCreator = class { | ||
| static component(name, rootPath, hasStyle) { | ||
| const styleName = `${firstLetter(name).upper}Style`; | ||
| const _template = createComponentTemplate({ | ||
| name, | ||
| hasStyle, | ||
| styleName, | ||
| definitionName: firstLetter(name).upper, | ||
| isComponent: true, | ||
| tag: "div" | ||
| }); | ||
| const _componentPath = rootPath; | ||
| if (hasStyle) { | ||
| const _styleTemplate = createStyleTemplate({ | ||
| name: `${firstLetter(name).upper}Style`, | ||
| tag: "div" | ||
| }); | ||
| writeFileRecursive(_styleTemplate, resolve(_componentPath, `styles/${name}.ts`)); | ||
| indexAppend(resolve(_componentPath, `styles`), name); | ||
| } | ||
| writeFileRecursive(_template, resolve(_componentPath, `${name}.tsx`)); | ||
| indexAppend(_componentPath, `${name}`); | ||
| } | ||
| static pageWriter(name, rootPath, hasStyle = false) { | ||
| const _path = resolve(rootPath, "src", "pages", caseTransform(name), `index.tsx`); | ||
| const definitionName = firstLetter(name).upper; | ||
| if (!checkExists(_path)) { | ||
| const componentName = `${firstLetter(name).upper}Page`; | ||
| const moduleName = `${caseTransform(name)}`; | ||
| const styleName = `${firstLetter(name).upper}Style`; | ||
| const _pageTemplate = createPageTemplate({ | ||
| name: componentName, | ||
| moduleName | ||
| }); | ||
| const _componentTemplate = createComponentTemplate({ | ||
| hasStyle, | ||
| name: componentName, | ||
| definitionName, | ||
| isComponent: false, | ||
| styleName, | ||
| tag: "div" | ||
| }); | ||
| const _defFiles = createDefinitionTemplate({ name: definitionName }); | ||
| const _modulePath = resolve(rootPath, "src", "modules", moduleName); | ||
| writeFileRecursive(_pageTemplate, _path); | ||
| writeFileRecursive( | ||
| _defFiles, | ||
| resolve(_modulePath, "entities", `I${definitionName}Page.d.ts`) | ||
| ); | ||
| writeFileRecursive( | ||
| _componentTemplate, | ||
| resolve(_modulePath, "pages", `${firstLetter(name).upper}Page.tsx`) | ||
| ); | ||
| if (hasStyle) { | ||
| const _styleTemplate = createStyleTemplate({ name: styleName, tag: "div" }); | ||
| writeFileRecursive(_styleTemplate, resolve(_modulePath, "pages/styles", `${name}.ts`)); | ||
| indexAppend(resolve(_modulePath, "pages/styles"), name); | ||
| } | ||
| indexAppend(resolve(_modulePath, "pages"), componentName); | ||
| indexAppend(_modulePath, "pages"); | ||
| indexAppend(resolve(_modulePath, "entities"), `I${definitionName}Page`); | ||
| } else { | ||
| throw new Error(`${name} page module already exists!`); | ||
| } | ||
| } | ||
| }; | ||
| } | ||
| }); | ||
| // src/index.ts | ||
| import chalk from "chalk"; | ||
| import program from "commander"; | ||
| import figlet from "figlet"; | ||
| import inquirer from "inquirer"; | ||
| import inquirerFuzzyPath from "inquirer-fuzzy-path"; | ||
| var require_src = __commonJS({ | ||
| "src/index.ts"(exports) { | ||
| init_commonQuestion(); | ||
| init_helper(); | ||
| inquirer.registerPrompt("fuzzypath", inquirerFuzzyPath); | ||
| console.clear(); | ||
| console.log(chalk(figlet.textSync("Onramplab CLI Boilerplate"))); | ||
| inquirer.prompt; | ||
| program.command("addFile").alias("a").description("Add a file").action(() => __async(exports, null, function* () { | ||
| const answers = yield inquirer.prompt(Common.commonQuestion); | ||
| if (answers.isPage) { | ||
| TemplateCreator.pageWriter(answers.name, process.cwd(), answers.hasStyle); | ||
| if (answers.hasCustomRoute) { | ||
| const routeName = answers.customRouteName.replace(/^\//, ""); | ||
| createCustomRoute(routeName, `${caseTransform(answers.name)}`); | ||
| } | ||
| } else if (answers.name !== "") { | ||
| TemplateCreator.component(answers.name, answers.componentBasedOnModuleName, answers.hasStyle); | ||
| } | ||
| })); | ||
| program.parse(process.argv); | ||
| } | ||
| }); | ||
| export default require_src(); | ||
| //# sourceMappingURL=index.mjs.map |
| {"version":3,"sources":["../src/commonQuestion.ts","../src/helper.ts","../src/index.ts"],"sourcesContent":["import * as inquirer from 'inquirer';\nimport { CliQuestion } from './interfaces/question';\n\nconst defaultValue = {\n hasStyle: false,\n isPage: false,\n name: '',\n componentBasedOnModuleName: '',\n hasCustomRoute: false,\n};\n\nexport namespace Common {\n export const commonQuestion: inquirer.QuestionCollection<CliQuestion.Common> = [\n {\n default: defaultValue.hasStyle,\n message: 'Do you want to add style file?',\n name: 'hasStyle',\n type: 'confirm',\n },\n {\n default: defaultValue.isPage,\n message: 'Is a page module?',\n name: 'isPage',\n type: 'confirm',\n },\n {\n when(val) {\n return !val.isPage;\n },\n message: 'Where should the component be placed?',\n type: 'fuzzypath',\n name: 'componentBasedOnModuleName',\n excludePath: (nodePath: string) => nodePath.startsWith('node_modules'),\n excludeFilter: (nodePath: string) => nodePath === '.',\n itemType: 'directory',\n depth: 7,\n suggestOnly: true,\n rootPath: './src/modules',\n },\n {\n default: defaultValue.name,\n message: val => `What is ${val.isPage ? 'page' : 'component'} name?`,\n type: 'input',\n name: 'name',\n },\n {\n default: defaultValue.hasCustomRoute,\n message: 'Enable the custom route?',\n type: 'confirm',\n name: 'hasCustomRoute',\n when(val) {\n return val.isPage;\n },\n },\n {\n default: '',\n message: 'What is the custom route path?',\n type: 'input',\n name: 'customRouteName',\n when(val) {\n return val.hasCustomRoute;\n },\n },\n ];\n}\n","import { readFileSync, existsSync, writeFileSync, mkdirSync, appendFileSync } from 'fs';\nimport { resolve, dirname } from 'path';\nimport * as mustache from 'mustache';\n\nfunction createComponentTemplate(props: {\n name: string;\n hasStyle: boolean;\n styleName: string;\n tag: string;\n isComponent: boolean;\n definitionName: string;\n}) {\n const template = readFileSync(\n resolve(__dirname, './templates/functional/fc.component.mustache'),\n 'utf8',\n );\n const result = mustache.render(template, props);\n return result;\n}\n\nfunction createPageTemplate(props: { name: string; moduleName: string }) {\n const template = readFileSync(\n resolve(__dirname, './templates/functional/pages.mustache'),\n 'utf8',\n );\n const result = mustache.render(template, props);\n return result;\n}\n\nfunction createDefinitionTemplate(props: { name: string }) {\n const template = readFileSync(\n resolve(__dirname, './templates/functional/fc.d.ts.mustache'),\n 'utf8',\n );\n const result = mustache.render(template, props);\n return result;\n}\n\nfunction createStyleTemplate(props: { name: string; tag: string }) {\n const template = readFileSync(\n resolve(__dirname, './templates/functional/style.component.mustache'),\n 'utf8',\n );\n const result = mustache.render(template, props);\n return result;\n}\n\nfunction checkExists(absPath: string) {\n return existsSync(absPath);\n}\n\nfunction writeFileRecursive(data: string, absPath: string) {\n mkdirSync(dirname(absPath), { recursive: true });\n writeFileSync(absPath, data);\n return true;\n}\n\nfunction indexAppend(folderPath: string, nameOfFile: string) {\n appendFileSync(resolve(folderPath, 'index.ts'), `export * from './${nameOfFile}';\\n`);\n}\n\nfunction caseTransform(str: string) {\n return str.replace(/([A-Z0-9])/g, $1 => `-${$1.toLowerCase()}`).replace(/^\\-/, '');\n}\n\nfunction firstLetter(str: string) {\n return {\n upper: `${str[0].toUpperCase()}${str.slice(1)}`,\n lower: `${str[0].toLowerCase()}${str.slice(1)}`,\n };\n}\n\nfunction createCustomRoute(routePath: string, targetPath: string) {\n const regex = /^(?:[\\t ]*(?:\\r?\\n|\\r))+module.exports = routes;/gm;\n const content = readFileSync('./src/server/routes.js', 'utf8');\n const replaceTemplate = mustache.render(\n readFileSync(resolve(__dirname, './templates/functional/routes.mustache'), 'utf8'),\n { routePath, targetPath },\n );\n const replaceContent = content.replace(regex, replaceTemplate);\n writeFileSync('./src/server/routes.js', replaceContent, { encoding: 'utf8' });\n}\n\nclass TemplateCreator {\n static component(name: string, rootPath: string, hasStyle: boolean) {\n const styleName = `${firstLetter(name).upper}Style`;\n const _template = createComponentTemplate({\n name,\n hasStyle,\n styleName,\n definitionName: firstLetter(name).upper,\n isComponent: true,\n tag: 'div',\n });\n const _componentPath = rootPath;\n\n if (hasStyle) {\n const _styleTemplate = createStyleTemplate({\n name: `${firstLetter(name).upper}Style`,\n tag: 'div',\n });\n writeFileRecursive(_styleTemplate, resolve(_componentPath, `styles/${name}.ts`));\n indexAppend(resolve(_componentPath, `styles`), name);\n }\n writeFileRecursive(_template, resolve(_componentPath, `${name}.tsx`));\n indexAppend(_componentPath, `${name}`);\n }\n\n static pageWriter(name: string, rootPath: string, hasStyle = false) {\n const _path = resolve(rootPath, 'src', 'pages', caseTransform(name), `index.tsx`);\n const definitionName = firstLetter(name).upper;\n if (!checkExists(_path)) {\n const componentName = `${firstLetter(name).upper}Page`;\n const moduleName = `${caseTransform(name)}`;\n const styleName = `${firstLetter(name).upper}Style`;\n const _pageTemplate = createPageTemplate({\n name: componentName,\n moduleName,\n });\n const _componentTemplate = createComponentTemplate({\n hasStyle,\n name: componentName,\n definitionName,\n isComponent: false,\n styleName,\n tag: 'div',\n });\n const _defFiles = createDefinitionTemplate({ name: definitionName });\n\n const _modulePath = resolve(rootPath, 'src', 'modules', moduleName);\n // Write page\n writeFileRecursive(_pageTemplate, _path);\n // Write definition\n writeFileRecursive(\n _defFiles,\n resolve(_modulePath, 'entities', `I${definitionName}Page.d.ts`),\n );\n // Write Component\n writeFileRecursive(\n _componentTemplate,\n resolve(_modulePath, 'pages', `${firstLetter(name).upper}Page.tsx`),\n );\n\n if (hasStyle) {\n const _styleTemplate = createStyleTemplate({ name: styleName, tag: 'div' });\n writeFileRecursive(_styleTemplate, resolve(_modulePath, 'pages/styles', `${name}.ts`));\n indexAppend(resolve(_modulePath, 'pages/styles'), name);\n }\n\n // pages index append\n indexAppend(resolve(_modulePath, 'pages'), componentName);\n // module index append\n indexAppend(_modulePath, 'pages');\n // entities index append\n indexAppend(resolve(_modulePath, 'entities'), `I${definitionName}Page`);\n } else {\n throw new Error(`${name} page module already exists!`);\n }\n }\n}\n\nexport { TemplateCreator, createCustomRoute, caseTransform };\n","#!/usr/bin/env node\nimport chalk from 'chalk';\nimport program from 'commander';\nimport figlet from 'figlet';\nimport inquirer from 'inquirer';\nimport inquirerFuzzyPath from 'inquirer-fuzzy-path';\nimport { Common } from './commonQuestion';\nimport { caseTransform, createCustomRoute, TemplateCreator } from './helper';\n\ninquirer.registerPrompt('fuzzypath', inquirerFuzzyPath);\nconsole.clear();\n\nconsole.log(chalk(figlet.textSync('Onramplab CLI Boilerplate')));\n\ninquirer.prompt;\n\nprogram\n .command('addFile')\n .alias('a')\n .description('Add a file')\n .action(async () => {\n const answers = await inquirer.prompt(Common.commonQuestion);\n if (answers.isPage) {\n TemplateCreator.pageWriter(answers.name, process.cwd(), answers.hasStyle);\n if (answers.hasCustomRoute) {\n const routeName = answers.customRouteName.replace(/^\\//, '');\n createCustomRoute(routeName, `${caseTransform(answers.name)}`);\n }\n } else if (answers.name !== '') {\n TemplateCreator.component(answers.name, answers.componentBasedOnModuleName, answers.hasStyle);\n }\n });\n\nprogram.parse(process.argv);\n"],"mappings":"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","names":["Common"]} |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
5
-28.57%180645
-19.99%50
-10.71%1346
-28.25%