@leo-h/create-nodejs-app 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/package.json.js +1 -1
  2. package/dist/src/validations/framework.validation.js +1 -1
  3. package/package.json +1 -1
  4. package/templates/nest/.env.example +11 -0
  5. package/templates/nest/.eslintignore +2 -0
  6. package/templates/nest/.eslintrc.json +22 -0
  7. package/templates/nest/.husky/pre-commit +1 -0
  8. package/templates/nest/.lintstagedrc.json +4 -0
  9. package/templates/nest/.prettierignore +7 -0
  10. package/templates/nest/.prettierrc.json +6 -0
  11. package/templates/nest/.swcrc +20 -0
  12. package/templates/nest/.vscode/settings.json +8 -0
  13. package/templates/nest/nest-cli.json +10 -0
  14. package/templates/nest/package.json +59 -0
  15. package/templates/nest/pnpm-lock.yaml +6372 -0
  16. package/templates/nest/src/core/errors/domain-error.ts +8 -0
  17. package/templates/nest/src/core/errors/errors.ts +9 -0
  18. package/templates/nest/src/infra/app.module.ts +7 -0
  19. package/templates/nest/src/infra/env.ts +22 -0
  20. package/templates/nest/src/infra/http/controllers/hello/hello-multipart.controller.e2e-spec.ts +58 -0
  21. package/templates/nest/src/infra/http/controllers/hello/hello-multipart.controller.ts +75 -0
  22. package/templates/nest/src/infra/http/controllers/hello/hello.controller.e2e-spec.ts +38 -0
  23. package/templates/nest/src/infra/http/controllers/hello/hello.controller.ts +51 -0
  24. package/templates/nest/src/infra/http/errors/upload-validation.error.ts +17 -0
  25. package/templates/nest/src/infra/http/events/fastify-multer.event.module.ts +15 -0
  26. package/templates/nest/src/infra/http/filters/domain-exception.filter.ts +53 -0
  27. package/templates/nest/src/infra/http/filters/http-exception.filter.ts +26 -0
  28. package/templates/nest/src/infra/http/http.module.ts +23 -0
  29. package/templates/nest/src/infra/http/middlewares/upload-interceptor.ts +365 -0
  30. package/templates/nest/src/infra/http/middlewares/zod-schema-pipe.ts +78 -0
  31. package/templates/nest/src/infra/http/middlewares/zod-validation-pipe.ts +33 -0
  32. package/templates/nest/src/infra/presenters/error.presenter.ts +14 -0
  33. package/templates/nest/src/infra/server.ts +45 -0
  34. package/templates/nest/test/e2e/sample-upload.jpg +0 -0
  35. package/templates/nest/tsconfig.json +17 -0
  36. package/templates/nest/vitest.config.e2e.mts +8 -0
  37. package/templates/nest/vitest.config.mts +6 -0
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0});const name="@leo-h/create-nodejs-app",version="1.0.5",packageManager="pnpm@9.1.1",author="Leonardo Henrique <leonardo0507.business@gmail.com>",description="Create a modern Node.js app with TypeScript using one command.",license="MIT",keywords=["node","node.js","typescript"],bin={"create-nodejs-app":"./dist/index.js"},files=["./dist","./templates"],repository={type:"git",url:"https://github.com/Leo-Henrique/create-nodejs-app"},scripts={prepare:"husky",start:"node ./dist/index.js","start:dev":"tsx ./src/index.ts","start:dev:watch":"tsx watch ./src/index.ts",typecheck:"tsc --noEmit",lint:"eslint . --ext .ts --max-warnings 0 --cache","lint:fix":"pnpm lint --fix",format:"prettier . --write --cache","test:unit":"vitest run","test:unit:watch":"vitest","test:e2e":"vitest run --config ./vitest.config.e2e.mts","test:e2e:watch":"vitest --config ./vitest.config.e2e.mts","test:coverage":"vitest run --coverage.enabled=true --coverage.all=false",template:"tsx ./scripts/template-cli.ts",prebuild:"rimraf ./dist",build:"unbuild",prepublishOnly:"pnpm build"},dependencies={commander:"12.1.0",picocolors:"1.0.1",prompts:"2.4.2","validate-npm-package-name":"5.0.1",zod:"3.23.8"},devDependencies={"@faker-js/faker":"8.4.1","@types/node":"20.12.12","@types/prompts":"2.4.9","@types/validate-npm-package-name":"4.0.2","@typescript-eslint/eslint-plugin":"7.10.0","@typescript-eslint/parser":"7.10.0","conventional-changelog-conventionalcommits":"8.0.0",eslint:"8.57.0","eslint-config-prettier":"9.1.0","eslint-plugin-vitest":"0.4.0",husky:"9.0.11","lint-staged":"15.2.2","npm-run-all":"4.1.5",prettier:"3.2.5",rimraf:"5.0.7",tsx:"4.10.5",typescript:"5.4.5",unbuild:"2.0.0","vite-tsconfig-paths":"4.3.2",vitest:"1.6.0"},f={name,version,packageManager,author,description,license,keywords,bin,files,repository,scripts,dependencies,devDependencies};exports.author=author;exports.bin=bin;exports.default=f;exports.dependencies=dependencies;exports.description=description;exports.devDependencies=devDependencies;exports.files=files;exports.keywords=keywords;exports.license=license;exports.name=name;exports.packageManager=packageManager;exports.repository=repository;exports.scripts=scripts;exports.version=version;
1
+ Object.defineProperty(exports,"__esModule",{value:!0});const name="@leo-h/create-nodejs-app",version="1.0.6",packageManager="pnpm@9.1.1",author="Leonardo Henrique <leonardo0507.business@gmail.com>",description="Create a modern Node.js app with TypeScript using one command.",license="MIT",keywords=["node","node.js","typescript"],bin={"create-nodejs-app":"./dist/index.js"},files=["./dist","./templates"],repository={type:"git",url:"https://github.com/Leo-Henrique/create-nodejs-app"},scripts={prepare:"husky",start:"node ./dist/index.js","start:dev":"tsx ./src/index.ts","start:dev:watch":"tsx watch ./src/index.ts",typecheck:"tsc --noEmit",lint:"eslint . --ext .ts --max-warnings 0 --cache","lint:fix":"pnpm lint --fix",format:"prettier . --write --cache","test:unit":"vitest run","test:unit:watch":"vitest","test:e2e":"vitest run --config ./vitest.config.e2e.mts","test:e2e:watch":"vitest --config ./vitest.config.e2e.mts","test:coverage":"vitest run --coverage.enabled=true --coverage.all=false",template:"tsx ./scripts/template-cli.ts",prebuild:"rimraf ./dist",build:"unbuild",prepublishOnly:"pnpm build"},dependencies={commander:"12.1.0",picocolors:"1.0.1",prompts:"2.4.2","validate-npm-package-name":"5.0.1",zod:"3.23.8"},devDependencies={"@faker-js/faker":"8.4.1","@types/node":"20.12.12","@types/prompts":"2.4.9","@types/validate-npm-package-name":"4.0.2","@typescript-eslint/eslint-plugin":"7.10.0","@typescript-eslint/parser":"7.10.0","conventional-changelog-conventionalcommits":"8.0.0",eslint:"8.57.0","eslint-config-prettier":"9.1.0","eslint-plugin-vitest":"0.4.0",husky:"9.0.11","lint-staged":"15.2.2","npm-run-all":"4.1.5",prettier:"3.2.5",rimraf:"5.0.7",tsx:"4.10.5",typescript:"5.4.5",unbuild:"2.0.0","vite-tsconfig-paths":"4.3.2",vitest:"1.6.0"},f={name,version,packageManager,author,description,license,keywords,bin,files,repository,scripts,dependencies,devDependencies};exports.author=author;exports.bin=bin;exports.default=f;exports.dependencies=dependencies;exports.description=description;exports.devDependencies=devDependencies;exports.files=files;exports.keywords=keywords;exports.license=license;exports.name=name;exports.packageManager=packageManager;exports.repository=repository;exports.scripts=scripts;exports.version=version;
@@ -1 +1 @@
1
- const validation=require("../core/validation.js"),getValidOptionsFromPrompt=require("../utils/get-valid-options-from-prompt.js"),frameworks=[{title:"Fastify",value:"fastify"},{title:"Nest",value:"nest",disabled:!0},{title:"tRPC",value:"trpc",disabled:!0}],validFrameworks=getValidOptionsFromPrompt.getValidOptionsFromSelect(frameworks);class FrameworkValidation extends validation.Validation{static create(e){return new this().createValidation(e)}async validate(){let{framework:e}=this.params;return e=e.toLowerCase(),validFrameworks.includes(e)?{isValid:!0}:{isValid:!1,issue:`Invalid framework, consider the options: ${validFrameworks.map(t=>`"${t}"`).join(", ")}.`}}}exports.FrameworkValidation=FrameworkValidation;exports.frameworks=frameworks;exports.validFrameworks=validFrameworks;
1
+ const validation=require("../core/validation.js"),getValidOptionsFromPrompt=require("../utils/get-valid-options-from-prompt.js"),frameworks=[{title:"Fastify",value:"fastify"},{title:"Nest + SWC",value:"nest"},{title:"tRPC",value:"trpc",disabled:!0}],validFrameworks=getValidOptionsFromPrompt.getValidOptionsFromSelect(frameworks);class FrameworkValidation extends validation.Validation{static create(t){return new this().createValidation(t)}async validate(){let{framework:t}=this.params;return t=t.toLowerCase(),validFrameworks.includes(t)?{isValid:!0}:{isValid:!1,issue:`Invalid framework, consider the options: ${validFrameworks.map(e=>`"${e}"`).join(", ")}.`}}}exports.FrameworkValidation=FrameworkValidation;exports.frameworks=frameworks;exports.validFrameworks=validFrameworks;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leo-h/create-nodejs-app",
3
- "version": "1.0.5",
3
+ "version": "1.0.6",
4
4
  "packageManager": "pnpm@9.1.1",
5
5
  "author": "Leonardo Henrique <leonardo0507.business@gmail.com>",
6
6
  "description": "Create a modern Node.js app with TypeScript using one command.",
@@ -0,0 +1,11 @@
1
+ # example: "development" ("development" | "test" | "production")
2
+ NODE_ENV=
3
+
4
+ # example: "app-name"
5
+ API_NAME=
6
+
7
+ # example: "3333"
8
+ API_PORT=
9
+
10
+ # example: "https://my-client-app.com" (url - only constraint | regex - specific constraint | "*" - not constraint)
11
+ API_ACCESS_PERMISSION_CLIENT_SIDE=
@@ -0,0 +1,2 @@
1
+ node_modules
2
+ dist
@@ -0,0 +1,22 @@
1
+ {
2
+ "root": true,
3
+ "env": {
4
+ "es2021": true,
5
+ "node": true
6
+ },
7
+ "extends": [
8
+ "eslint:recommended",
9
+ "plugin:@typescript-eslint/recommended",
10
+ "prettier",
11
+ "plugin:vitest/recommended"
12
+ ],
13
+ "parser": "@typescript-eslint/parser",
14
+ "parserOptions": {
15
+ "ecmaVersion": "latest",
16
+ "sourceType": "module"
17
+ },
18
+ "plugins": ["@typescript-eslint"],
19
+ "rules": {
20
+ "@typescript-eslint/no-unused-vars": "warn"
21
+ }
22
+ }
@@ -0,0 +1 @@
1
+ pnpm lint-staged
@@ -0,0 +1,4 @@
1
+ {
2
+ "*.{ts,json,yaml,yml,md}": "prettier --write --cache",
3
+ "*.ts": ["eslint --max-warnings 0 --fix --cache"]
4
+ }
@@ -0,0 +1,7 @@
1
+ node_modules
2
+ package-lock.json
3
+ yarn.lock
4
+ pnpm-lock.yaml
5
+ .husky
6
+ coverage
7
+ dist
@@ -0,0 +1,6 @@
1
+ {
2
+ "arrowParens": "avoid",
3
+ "semi": true,
4
+ "singleQuote": false,
5
+ "tabWidth": 2
6
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/swcrc",
3
+ "module": {
4
+ "type": "commonjs",
5
+ "strictMode": true
6
+ },
7
+ "jsc": {
8
+ "target": "esnext",
9
+ "parser": {
10
+ "syntax": "typescript",
11
+ "decorators": true,
12
+ "dynamicImport": true
13
+ },
14
+ "baseUrl": ".",
15
+ "paths": {
16
+ "@/*": ["./src/*"]
17
+ }
18
+ },
19
+ "minify": false
20
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "editor.formatOnSave": true,
3
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
4
+ "editor.codeActionsOnSave": {
5
+ "source.organizeImports": "explicit",
6
+ "source.fixAll.eslint": "explicit"
7
+ }
8
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/nest-cli",
3
+ "collection": "@nestjs/schematics",
4
+ "sourceRoot": "src",
5
+ "entryFile": "infra/server",
6
+ "compilerOptions": {
7
+ "deleteOutDir": true,
8
+ "builder": "swc"
9
+ }
10
+ }
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "app-name",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "prepare": "husky",
7
+ "start": "node ./dist/infra/server.js",
8
+ "start:dev": "nest start --watch",
9
+ "typecheck": "tsc --noEmit",
10
+ "lint": "eslint . --ext .ts --max-warnings 0 --cache",
11
+ "lint:fix": "pnpm lint --fix",
12
+ "format": "prettier . --write --cache",
13
+ "test:unit": "vitest run",
14
+ "test:unit:watch": "vitest",
15
+ "test:e2e": "vitest run --config ./vitest.config.e2e.mts",
16
+ "test:e2e:watch": "vitest --config ./vitest.config.e2e.mts",
17
+ "test:coverage": "vitest run --coverage.enabled=true",
18
+ "build": "nest build"
19
+ },
20
+ "dependencies": {
21
+ "@anatine/zod-nestjs": "2.0.9",
22
+ "@anatine/zod-openapi": "2.2.6",
23
+ "@fastify/static": "7.0.4",
24
+ "@nestjs/common": "10.3.10",
25
+ "@nestjs/core": "10.3.10",
26
+ "@nestjs/platform-fastify": "10.3.10",
27
+ "@nestjs/swagger": "7.4.0",
28
+ "dotenv": "16.4.5",
29
+ "fastify": "4.28.0",
30
+ "fastify-multer": "2.0.3",
31
+ "mime-types": "2.1.35",
32
+ "pretty-bytes": "5.6.0",
33
+ "zod": "3.23.8"
34
+ },
35
+ "devDependencies": {
36
+ "@faker-js/faker": "8.4.1",
37
+ "@nestjs/cli": "10.4.2",
38
+ "@nestjs/schematics": "10.1.2",
39
+ "@nestjs/testing": "10.3.10",
40
+ "@swc/cli": "0.4.0",
41
+ "@swc/core": "1.7.0",
42
+ "@types/mime-types": "2.1.4",
43
+ "@types/node": "20.12.12",
44
+ "@types/supertest": "6.0.2",
45
+ "@typescript-eslint/eslint-plugin": "7.10.0",
46
+ "@typescript-eslint/parser": "7.10.0",
47
+ "eslint": "8.57.0",
48
+ "eslint-config-prettier": "9.1.0",
49
+ "eslint-plugin-vitest": "0.4.0",
50
+ "husky": "9.0.11",
51
+ "lint-staged": "15.2.5",
52
+ "prettier": "3.2.5",
53
+ "supertest": "7.0.0",
54
+ "type-fest": "4.23.0",
55
+ "typescript": "5.4.5",
56
+ "unplugin-swc": "1.5.1",
57
+ "vitest": "1.6.0"
58
+ }
59
+ }