Compare commits

..

No commits in common. "master" and "v3.0.5" have entirely different histories.

23 changed files with 261 additions and 266 deletions

View File

@ -3,16 +3,27 @@
"es2021": true, "es2021": true,
"node": true "node": true
}, },
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], "extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser", "parser": "@typescript-eslint/parser",
"parserOptions": { "parserOptions": {
"ecmaVersion": 6, "ecmaVersion": 6,
"sourceType": "module" "sourceType": "module"
}, },
"plugins": ["@typescript-eslint"], "plugins": [
"@typescript-eslint"
],
"rules": { "rules": {
"indent": ["error", "tab"], "indent": [
"linebreak-style": ["error", "unix"], "error",
"tab"
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [ "quotes": [
"error", "error",
"single", "single",
@ -20,6 +31,9 @@
"allowTemplateLiterals": true "allowTemplateLiterals": true
} }
], ],
"semi": ["error", "never"] "semi": [
"error",
"never"
]
} }
} }

View File

@ -1,15 +0,0 @@
{
"tabWidth": 4,
"useTabs": true,
"singleQuote": true,
"semi": false,
"trailingComma": "none",
"jsxSingleQuote": true,
"jsxBracketSameLine": true,
"printWidth": 200,
"bracketSpacing": true,
"vueIndentScriptAndStyle": true,
"arrowParens": "always",
"bracketSameLine": false,
"endOfLine": "lf"
}

View File

@ -1,29 +1,22 @@
# Nork # Nork
Simple node.js tool that extends express projects. Simple node.js tool that extends express projects.
- [About](#about) - [About](#about)
- [Installation](#installation) - [Installation](#installation)
- [How to use](#how-to-use) - [How to use](#how-to-use)
## About ## About
The point of this tool is to add to express some feeling of php framework Laravel. Primarily get simply express app into MVC architecture. The point of this tool is to add to express some feeling of php framework Laravel. Primarily get simply express app into MVC architecture.
## Installation ## Installation
``` ```
npm install -g nork npm install -g nork
``` ```
This will install nork globally. If you would like to install nork for only one project, you can also install it locally. For local installation: This will install nork globally. If you would like to install nork for only one project, you can also install it locally. For local installation:
```
npm install nork
``` ```
npm install nork
```
## How to use ## How to use
``` ```
Usage: nork <command> [options] Usage: nork <command> [options]

View File

@ -1 +1 @@
{ "lang": "ts" } {"lang":"ts"}

View File

@ -14,8 +14,7 @@
"copy-assets": "ts-node src/utils/copyAssets", "copy-assets": "ts-node src/utils/copyAssets",
"build": "npm-run-all clean tsc copy-assets", "build": "npm-run-all clean tsc copy-assets",
"test": "mocha --config .mocharc.json --watch src/**/*.test.ts", "test": "mocha --config .mocharc.json --watch src/**/*.test.ts",
"prepublish": "npm-run-all build", "prepublish": "npm-run-all build"
"format": "npx prettier --write ."
}, },
"keywords": [ "keywords": [
"node", "node",
@ -26,7 +25,7 @@
"author": "Filip Rojek", "author": "Filip Rojek",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"colors": "1.4.0", "colors":"1.4.0",
"fs-extra": "^10.0.0", "fs-extra": "^10.0.0",
"inquirer": "^8.1.2", "inquirer": "^8.1.2",
"pad": "^3.2.0" "pad": "^3.2.0"
@ -43,7 +42,6 @@
"eslint": "^8.3.0", "eslint": "^8.3.0",
"mocha": "^9.1.3", "mocha": "^9.1.3",
"npm-run-all": "^4.1.5", "npm-run-all": "^4.1.5",
"prettier": "^2.7.1",
"rimraf": "^3.0.2", "rimraf": "^3.0.2",
"shelljs": "^0.8.5", "shelljs": "^0.8.5",
"ts-node": "^10.4.0", "ts-node": "^10.4.0",

View File

@ -1,7 +1,6 @@
/_ spell-checker: disable _/ /* spell-checker: disable */
# Todo: # Todo:
- [ ] auth jwt refresh token based system - [ ] auth jwt refresh token based system
- https://auth0.com/blog/refresh-tokens-what-are-they-and-when-to-use-them/ - https://auth0.com/blog/refresh-tokens-what-are-they-and-when-to-use-them/
- [ ] version of nork control - [ ] version of nork control
@ -10,8 +9,8 @@
- [ ] vyzadovat aktualni verzi 3.#.# pro make commandy (pouzivaly se jiny predtim soubory) - [ ] vyzadovat aktualni verzi 3.#.# pro make commandy (pouzivaly se jiny predtim soubory)
- [ ] moznost vytvorit projekt bez db - [ ] moznost vytvorit projekt bez db
### 11-24-2021
### 11-24-2021
- zacal jsem predelavat nork do OOP - zacal jsem predelavat nork do OOP
- co jsem udelal: - co jsem udelal:
- [x] --help - [x] --help
@ -24,16 +23,14 @@
- zatim netestovana funkcnost - zatim netestovana funkcnost
### 1-10-2022 ### 1-10-2022
- dodelal jsem create a otestoval ho - dodelal jsem create a otestoval ho
- [x] create - [x] create
### 7-30-2022 ### 7-30-2022
- norkconfig se generuje lepe a actually ho pouzivam
- pri vytvareni projektu je mozne vybrat si orm (mongoose & sequlize)
- default modely pro db se kopiruji na zaklade parametru db z norkconfigu
- updatnutej ts skeleton
- dropnul jsem support pro js
- norkconfig se generuje lepe a actually ho pouzivam - version update: 3.0.5
- pri vytvareni projektu je mozne vybrat si orm (mongoose & sequlize)
- default modely pro db se kopiruji na zaklade parametru db z norkconfigu
- updatnutej ts skeleton
- dropnul jsem support pro js
- version update: 3.0.5

View File

@ -14,7 +14,7 @@ export default class Create {
{ {
type: 'input', type: 'input',
name: 'project_name', name: 'project_name',
message: 'Enter project name:' message: 'Enter project name:',
}, },
{ {
type: 'list', type: 'list',
@ -22,8 +22,8 @@ export default class Create {
name: 'lang', name: 'lang',
choices: [ choices: [
{ name: 'Typescript', value: 'ts' }, { name: 'Typescript', value: 'ts' },
{ name: 'Javascript - DEPRECATED', value: 'js' } { name: 'Javascript - DEPRECATED', value: 'js' },
] ],
}, },
{ {
type: 'list', type: 'list',
@ -32,24 +32,24 @@ export default class Create {
choices: [ choices: [
{ name: 'MongoDB - Mongoose', value: { db: 'mongodb', orm: 'mongoose' } }, { name: 'MongoDB - Mongoose', value: { db: 'mongodb', orm: 'mongoose' } },
{ name: 'MySQL - Sequelize', value: { db: 'mysql', orm: 'sequelize' } }, { name: 'MySQL - Sequelize', value: { db: 'mysql', orm: 'sequelize' } },
{ name: 'PostgreSQL - Sequelize', value: { db: 'postgresql', orm: 'sequelize' } } { name: 'PostgreSQL - Sequelize', value: { db: 'postgresql', orm: 'sequelize' } },
] ],
}, },
{ {
type: 'input', type: 'input',
name: 'author', name: 'author',
message: 'Enter your name:' message: 'Enter your name:',
}, },
{ {
type: 'input', type: 'input',
name: 'email', name: 'email',
message: 'Enter your email:' message: 'Enter your email:',
}, },
{ {
type: 'input', type: 'input',
name: 'website', name: 'website',
message: 'Enter your website:' message: 'Enter your website:',
} },
] ]
// remove first question if project name is already known // remove first question if project name is already known
if (projectName) questions.shift() if (projectName) questions.shift()
@ -61,7 +61,7 @@ export default class Create {
author: answers.author, author: answers.author,
database: answers.db, database: answers.db,
website: answers.website, website: answers.website,
email: answers.email email: answers.email,
} }
// copy skeleton to new project // copy skeleton to new project
@ -76,7 +76,7 @@ export default class Create {
const pkgJson = fs.readJsonSync(path.join(projectPath, 'package.json')) const pkgJson = fs.readJsonSync(path.join(projectPath, 'package.json'))
pkgJson.name = data.project_name pkgJson.name = data.project_name
pkgJson.author = `${data.author} <${data.email}> (${data.website})` pkgJson.author = `${data.author} <${data.email}> (${data.website})`
fs.writeFile(path.join(projectPath, 'package.json'), JSON.stringify(pkgJson, null, 2), (err) => { fs.writeFile(path.join(projectPath, 'package.json'), JSON.stringify(pkgJson, null, 2), err => {
if (err) return global.logError(err.message) if (err) return global.logError(err.message)
}) })

View File

@ -10,6 +10,6 @@ export interface Questions {
{ {
name: string name: string
value: string value: string
} },
] ]
} }

View File

@ -4,5 +4,5 @@ const root_get = (req, res) => {
} }
module.exports = { module.exports = {
root_get root_get,
} }

View File

@ -5,12 +5,12 @@ const modelSchema = new Schema(
{ {
title: { title: {
type: String, type: String,
required: true required: true,
} },
}, },
{ {
timestamps: true timestamps: true,
} },
) )
const ModelName = mongoose.model('ModelName', modelSchema) const ModelName = mongoose.model('ModelName', modelSchema)

View File

@ -4,12 +4,12 @@ const modelSchema = new Schema<any>(
{ {
title: { title: {
type: String, type: String,
required: true required: true,
} },
}, },
{ {
timestamps: true timestamps: true,
} },
) )
export default model('ModelName', modelSchema) export default model('ModelName', modelSchema)

View File

@ -13,8 +13,8 @@ export default class Setup {
name: 'lang', name: 'lang',
choices: [ choices: [
{ name: 'Typescript', value: 'ts' }, { name: 'Typescript', value: 'ts' },
{ name: 'Javascript', value: 'js' } { name: 'Javascript', value: 'js' },
] ],
} }
const answers = await inquirer.prompt(Object(questions)) const answers = await inquirer.prompt(Object(questions))
fs.writeJsonSync(path.join(process.cwd(), './norkconfig.json'), answers) fs.writeJsonSync(path.join(process.cwd(), './norkconfig.json'), answers)

View File

@ -15,13 +15,13 @@ const app = express()
const dbURI = process.env.DB_URI const dbURI = process.env.DB_URI
mongoose mongoose
.connect(dbURI, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true }) .connect(dbURI, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true })
.then((result) => { .then(result => {
console.log('connected to db') console.log('connected to db')
app.listen(port, () => { app.listen(port, () => {
console.log(`server is running on http://localhost:${port}`) console.log(`server is running on http://localhost:${port}`)
}) })
}) })
.catch((err) => { .catch(err => {
console.log(err) console.log(err)
}) })

View File

@ -4,5 +4,5 @@ const root_get = (req, res) => {
} }
module.exports = { module.exports = {
root_get root_get,
} }

View File

@ -10,26 +10,26 @@ Instance.init(
type: DataTypes.UUID, type: DataTypes.UUID,
primaryKey: true, primaryKey: true,
allowNull: false, allowNull: false,
unique: true unique: true,
}, },
username: { username: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false allowNull: false,
}, },
password: { password: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false allowNull: false,
}, },
email: { email: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false,
unique: true unique: true,
} },
}, },
{ {
sequelize: db, sequelize: db,
tableName: path.basename(__filename).split('.')[0].toLowerCase() tableName: path.basename(__filename).split('.')[0].toLowerCase(),
} },
) )
export default Instance export default Instance

View File

@ -1,15 +1,23 @@
{ {
"compilerOptions": { "compilerOptions": {
"target": "es6" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */, "target": "es6", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
"module": "commonjs" /* Specify what module code is generated. */, "module": "commonjs", /* Specify what module code is generated. */
"outDir": "./dist" /* Specify an output folder for all emitted files. */, "outDir": "./dist", /* Specify an output folder for all emitted files. */
"rootDir": "./src" /* Specify the root folder within your source files. */, "rootDir": "./src", /* Specify the root folder within your source files. */
"strict": true /* Enable all strict type-checking options. */, "strict": true, /* Enable all strict type-checking options. */
"baseUrl": "./" /* Base directory to resolve non-absolute module names. */, "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
"esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */
"skipLibCheck": true /* Skip type checking all .d.ts files. */, "skipLibCheck": true, /* Skip type checking all .d.ts files. */
"forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
"declaration": true "declaration": true,
}, },
"exclude": ["_old", "node_modules", "src/make-files", "src/skeletons", "src/tests", "src/interfaces", "src/utils"] "exclude": [
"_old",
"node_modules",
"src/make-files",
"src/skeletons",
"src/tests",
"src/interfaces",
"src/utils"
]
} }