@leo-h/create-nodejs-app 1.0.20 → 1.0.22

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 (53) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/package.json.js +1 -1
  3. package/dist/src/compose-app/replace-content-in-file.compose.js +1 -1
  4. package/dist/src/core/validation.js +1 -1
  5. package/dist/src/validations/back-end-framework.validation.js +1 -0
  6. package/dist/src/validations/front-end-framework.validation.js +1 -0
  7. package/dist/src/validations/project-name-validation.js +1 -1
  8. package/dist/src/validations/template.validation.js +1 -1
  9. package/package.json +2 -2
  10. package/templates/clean/package.json +1 -1
  11. package/templates/clean/pnpm-lock.yaml +24 -24
  12. package/templates/fastify/package.json +1 -1
  13. package/templates/fastify/pnpm-lock.yaml +28 -28
  14. package/templates/nest/package.json +1 -1
  15. package/templates/nest/pnpm-lock.yaml +26 -26
  16. package/templates/react-vite/.env.example +8 -0
  17. package/templates/react-vite/.husky/pre-commit +1 -0
  18. package/templates/react-vite/.lintstagedrc.json +4 -0
  19. package/templates/react-vite/.prettierignore +7 -0
  20. package/templates/react-vite/.prettierrc.json +6 -0
  21. package/templates/react-vite/eslint.config.js +36 -0
  22. package/templates/react-vite/gitignore +24 -0
  23. package/templates/react-vite/index.html +12 -0
  24. package/templates/react-vite/npmrc +1 -0
  25. package/templates/react-vite/orval.config.ts +51 -0
  26. package/templates/react-vite/package.json +50 -0
  27. package/templates/react-vite/pnpm-lock.yaml +5412 -0
  28. package/templates/react-vite/public/vite.svg +1 -0
  29. package/templates/react-vite/scripts/orval-generate-api-definition.ts +90 -0
  30. package/templates/react-vite/src/@types/routes.ts +24 -0
  31. package/templates/react-vite/src/api/errors/api-error.ts +7 -0
  32. package/templates/react-vite/src/api/errors/api-unexpected-response-error.ts +8 -0
  33. package/templates/react-vite/src/api/swr-fetcher.ts +41 -0
  34. package/templates/react-vite/src/app.tsx +14 -0
  35. package/templates/react-vite/src/env.ts +19 -0
  36. package/templates/react-vite/src/hooks/use-current-route-handle-params.ts +16 -0
  37. package/templates/react-vite/src/index.css +29 -0
  38. package/templates/react-vite/src/lib/zod-i18n-translation-for-end-users.json +103 -0
  39. package/templates/react-vite/src/lib/zod-i18n.ts +20 -0
  40. package/templates/react-vite/src/main.tsx +13 -0
  41. package/templates/react-vite/src/pages/_layouts/app.tsx +17 -0
  42. package/templates/react-vite/src/pages/_layouts/auth.tsx +17 -0
  43. package/templates/react-vite/src/pages/app/dashboard/dashboard.tsx +12 -0
  44. package/templates/react-vite/src/pages/app/dashboard/styles.css +40 -0
  45. package/templates/react-vite/src/pages/auth/sign-in/index.tsx +83 -0
  46. package/templates/react-vite/src/pages/auth/sign-in/styles.css +92 -0
  47. package/templates/react-vite/src/routes.tsx +65 -0
  48. package/templates/react-vite/src/vite-env.d.ts +1 -0
  49. package/templates/react-vite/tsconfig.app.json +32 -0
  50. package/templates/react-vite/tsconfig.json +13 -0
  51. package/templates/react-vite/tsconfig.node.json +24 -0
  52. package/templates/react-vite/vite.config.ts +9 -0
  53. package/dist/src/validations/framework.validation.js +0 -1
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const index=require("./src/config/index.js"),commander=require("commander"),promises=require("fs/promises"),path=require("path"),picocolors=require("picocolors"),V=require("prompts"),_package=require("./package.json.js"),copyTemplate_compose=require("./src/compose-app/copy-template.compose.js"),replaceContentInFile_compose=require("./src/compose-app/replace-content-in-file.compose.js"),logs=require("./src/utils/logs.js"),onCancel=require("./src/utils/on-cancel.js"),framework_validation=require("./src/validations/framework.validation.js"),packageManager_validation=require("./src/validations/package-manager.validation.js"),projectNameValidation=require("./src/validations/project-name-validation.js"),template_validation=require("./src/validations/template.validation.js"),w=new commander.Command().name(_package.default.name).description(_package.default.description);w.argument("[project-directory]","Name of the project or relative path of the project considering where the script was called.").option("-pm, --package-manager <package-manager>","Package manager that will be used in the project.").option("-t, --template <template-name>","Template that will be used in the project.").option("-f, --framework <framework-name>","Framework that will be used in the project.").action(async(i,o)=>{const r={projectDirectory:{value:i,validation:projectNameValidation.ProjectNameValidation.create({path:i})},packageManager:{value:o.packageManager,validation:packageManager_validation.PackageManagerValidation.create({packageManager:o.packageManager})},template:{value:o.template,validation:template_validation.TemplateValidation.create({template:o.template})},framework:{value:o.framework,validation:framework_validation.FrameworkValidation.create({framework:o.framework})}},s=Object.keys(r);for(const a of s){const t=r[a];t.value&&await t.validation.fromCli()}const{projectDirectory:e,packageManager:l,template:p,framework:n}=r,v=await V([{type:e.value?null:"text",name:"projectDirectory",message:"What is your project name?",validate:async a=>await e.validation.fromPrompt({path:a})},{type:l.value?null:"select",name:"packageManager",message:"What is your favorite package manager?",choices:packageManager_validation.packageManagers,initial:2},{type:!p.value&&!n.value?"select":null,name:"template",message:"Select your template:",choices:template_validation.templates},{type:(a,t)=>!n.value&&(p.value==="api"||t.template==="api")?"select":null,name:"framework",message:"What is your favorite framework?",choices:framework_validation.frameworks}],{onCancel:onCancel.onCancelPrompt});for(const a of s){const t=v[a];t&&(r[a].value=t)}n.value&&(r.template.value="api");const c=path.basename(e.value);e.value=path.resolve(index.GENERATED_APP_TARGET_ROOT_PATH,e.value),await copyTemplate_compose.copyTemplateCompose(e.value,n.value??"clean");const g=path.resolve(e.value,"package.json"),d=path.resolve(e.value,".env.example"),k=path.resolve(e.value,".husky/pre-commit"),m=path.resolve(e.value,"gitignore"),u=path.resolve(e.value,"npmrc");await Promise.all([replaceContentInFile_compose.replaceContentInFileCompose(g,[["app-name",c]]),replaceContentInFile_compose.replaceContentInFileCompose(d,[["app-name",c]]),replaceContentInFile_compose.replaceContentInFileCompose(k,[["pnpm",l.value]]),promises.rename(m,path.resolve(path.dirname(m),".gitignore")),promises.rename(u,path.resolve(path.dirname(u),".npmrc"))]),logs.successLog(`Success in creating new app ${picocolors.cyan(c)}!`,`> ${e.value}`)});(async()=>await w.parseAsync(process.argv))();
2
+ const index=require("./src/config/index.js"),commander=require("commander"),promises=require("fs/promises"),path=require("path"),picocolors=require("picocolors"),M=require("prompts"),_package=require("./package.json.js"),copyTemplate_compose=require("./src/compose-app/copy-template.compose.js"),replaceContentInFile_compose=require("./src/compose-app/replace-content-in-file.compose.js"),logs=require("./src/utils/logs.js"),onCancel=require("./src/utils/on-cancel.js"),backEndFramework_validation=require("./src/validations/back-end-framework.validation.js"),frontEndFramework_validation=require("./src/validations/front-end-framework.validation.js"),packageManager_validation=require("./src/validations/package-manager.validation.js"),projectNameValidation=require("./src/validations/project-name-validation.js"),template_validation=require("./src/validations/template.validation.js"),C=new commander.Command().name(_package.default.name).description(_package.default.description);C.argument("[project-directory]","Name of the project or relative path of the project considering where the script was called.").option("-pm, --package-manager <package-manager>","Package manager that will be used in the project.").option("-t, --template <template-name>","Template that will be used in the project.").option("-f, --framework <framework-name>","Framework that will be used in the project.").action(async(c,r)=>{const t={projectDirectory:{value:c,validation:projectNameValidation.ProjectNameValidation.create({path:c})},packageManager:{value:r.packageManager,validation:packageManager_validation.PackageManagerValidation.create({packageManager:r.packageManager})},template:{value:r.template,validation:template_validation.TemplateValidation.create({template:r.template})},framework:{value:r.framework,validation:r.template==="api"?backEndFramework_validation.BackEndFrameworkValidation.create({framework:r.framework}):r.template==="front-end"?frontEndFramework_validation.FrontEndFrameworkValidation.create({framework:r.framework}):null}},l=Object.keys(t);for(const o of l){const a=t[o];!a.value||!a.validation||await a.validation.fromCli()}const{projectDirectory:e,packageManager:s,template:p,framework:n}=t,v=await M([{type:e.value?null:"text",name:"projectDirectory",message:"What is your project name?",validate:async o=>await e.validation?.fromPrompt({path:o})??!0},{type:s.value?null:"select",name:"packageManager",message:"What is your favorite package manager?",choices:packageManager_validation.packageManagers,initial:2},{type:!p.value&&!n.value?"select":null,name:"template",message:"Select your template:",choices:template_validation.templates},{type:(o,a)=>{const d=["api","front-end"];return!n.value&&(d.includes(p.value)||d.includes(a.template))?"select":null},name:"framework",message:"What is your favorite framework?",choices:(o,a)=>a.template==="api"?backEndFramework_validation.backEndFrameworks:a.template==="front-end"?frontEndFramework_validation.frontEndFrameworks:[...backEndFramework_validation.backEndFrameworks,...frontEndFramework_validation.frontEndFrameworks]}],{onCancel:onCancel.onCancelPrompt});for(const o of l){const a=v[o];a&&(t[o].value=a)}n.value&&(t.template.value="api");const i=path.basename(e.value);e.value=path.resolve(index.GENERATED_APP_TARGET_ROOT_PATH,e.value),await copyTemplate_compose.copyTemplateCompose(e.value,n.value??"clean");const g=path.resolve(e.value,"package.json"),k=path.resolve(e.value,".env.example"),f=path.resolve(e.value,".husky/pre-commit"),m=path.resolve(e.value,"gitignore"),u=path.resolve(e.value,"npmrc");await Promise.all([replaceContentInFile_compose.replaceContentInFileCompose(g,[["app-name",i]]),replaceContentInFile_compose.replaceContentInFileCompose(k,[["app-name",i]]),replaceContentInFile_compose.replaceContentInFileCompose(f,[["pnpm",s.value]]),promises.rename(m,path.resolve(path.dirname(m),".gitignore")),promises.rename(u,path.resolve(path.dirname(u),".npmrc"))]),logs.successLog(`Success in creating new app ${picocolors.cyan(i)}!`,`> ${e.value}`)});(async()=>await C.parseAsync(process.argv))();
@@ -1 +1 @@
1
- Object.defineProperty(exports,"__esModule",{value:!0});const name="@leo-h/create-nodejs-app",version="1.0.20",packageManager="pnpm@9.15.0",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={start:"node ./dist/index.js","start:dev":"tsx --env-file=.env.development ./src/index.ts","start:dev:watch":"tsx --env-file=.env.development watch ./src/index.ts",typecheck:"tsc --noEmit",lint:"eslint . --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",template:"tsx --env-file=.env.development ./scripts/template-cli.ts",prebuild:"rimraf ./dist",build:"unbuild",prepublishOnly:"pnpm build"},dependencies={commander:"12.1.0",picocolors:"1.1.1",prompts:"2.4.2","validate-npm-package-name":"5.0.1",zod:"3.24.1"},devDependencies={"@eslint/js":"9.17.0","@faker-js/faker":"9.3.0","@types/node":"20.17.10","@types/prompts":"2.4.9","@types/validate-npm-package-name":"4.0.2","@vitest/eslint-plugin":"1.1.18","conventional-changelog-conventionalcommits":"8.0.0",eslint:"9.17.0","eslint-config-prettier":"9.1.0",globals:"15.14.0",husky:"9.1.7","lint-staged":"15.2.11",prettier:"3.4.2",rimraf:"6.0.1",tsx:"4.19.2",typescript:"5.7.2","typescript-eslint":"8.18.1",unbuild:"2.0.0","vite-tsconfig-paths":"4.3.2",vitest:"1.6.0"},d={name,version,packageManager,author,description,license,keywords,bin,files,repository,scripts,dependencies,devDependencies};exports.author=author;exports.bin=bin;exports.default=d;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.22",packageManager="pnpm@9.15.0",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={start:"node ./dist/index.js","start:dev":"tsx --env-file=.env.development ./src/index.ts","start:dev:watch":"tsx --env-file=.env.development watch ./src/index.ts",typecheck:"tsc --noEmit",lint:"eslint . --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",template:"tsx --env-file=.env.development ./scripts/template-cli.ts",prebuild:"rimraf ./dist",build:"unbuild",prepublishOnly:"pnpm build"},dependencies={commander:"12.1.0",picocolors:"1.1.1",prompts:"2.4.2","validate-npm-package-name":"5.0.1",zod:"3.24.1"},devDependencies={"@eslint/js":"9.17.0","@faker-js/faker":"9.3.0","@types/node":"22.10.2","@types/prompts":"2.4.9","@types/validate-npm-package-name":"4.0.2","@vitest/eslint-plugin":"1.1.18","conventional-changelog-conventionalcommits":"8.0.0",eslint:"9.17.0","eslint-config-prettier":"9.1.0",globals:"15.14.0",husky:"9.1.7","lint-staged":"15.2.11",prettier:"3.4.2",rimraf:"6.0.1",tsx:"4.19.2",typescript:"5.7.2","typescript-eslint":"8.18.1",unbuild:"2.0.0","vite-tsconfig-paths":"4.3.2",vitest:"1.6.0"},w={name,version,packageManager,author,description,license,keywords,bin,files,repository,scripts,dependencies,devDependencies};exports.author=author;exports.bin=bin;exports.default=w;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 promises=require("fs/promises");async function replaceContentInFileCompose(o,i){let e=await promises.readFile(o,"utf-8");for(const[t,n]of i)e=e.replaceAll(t,n);await promises.writeFile(o,e)}exports.replaceContentInFileCompose=replaceContentInFileCompose;
1
+ const fs=require("fs"),promises=require("fs/promises");async function replaceContentInFileCompose(e,o){if(!fs.existsSync(e))return;let t=await promises.readFile(e,"utf-8");for(const[s,i]of o)t=t.replaceAll(s,i);await promises.writeFile(e,t)}exports.replaceContentInFileCompose=replaceContentInFileCompose;
@@ -1 +1 @@
1
- const left=require("../utils/left.js");var r=Object.defineProperty,e=(a,t,i)=>t in a?r(a,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):a[t]=i,s=(a,t,i)=>(e(a,typeof t!="symbol"?t+"":t,i),i);class Validation{constructor(){s(this,"params")}createValidation(t){return t&&(this.params=t),this}async fromCli(t){t&&(this.params=t);const i=await this.validate();if(!i.isValid)return left.left(i.issue)}async fromPrompt(t){t&&(this.params=t);const i=await this.validate();return i.isValid?!0:i.issue}}exports.Validation=Validation;
1
+ const left=require("../utils/left.js");var e=Object.defineProperty,r=(a,t,i)=>t in a?e(a,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):a[t]=i,s=(a,t,i)=>(r(a,typeof t!="symbol"?t+"":t,i),i);class Validation{constructor(){s(this,"params")}createValidation(t){return t&&(this.params=t),this}async fromCli(t){t&&(this.params=t);const i=await this.validate();if(!i.isValid)return left.left(i.issue)}async fromPrompt(t){t&&(this.params=t);const i=await this.validate();return i.isValid?!0:i.issue}}exports.Validation=Validation;
@@ -0,0 +1 @@
1
+ const validation=require("../core/validation.js"),getValidOptionsFromPrompt=require("../utils/get-valid-options-from-prompt.js"),backEndFrameworks=[{title:"Fastify",value:"fastify"},{title:"Nest + SWC",value:"nest"},{title:"tRPC",value:"trpc",disabled:!0}],backEndValidFrameworks=getValidOptionsFromPrompt.getValidOptionsFromSelect(backEndFrameworks);class BackEndFrameworkValidation extends validation.Validation{static create(a){return new this().createValidation(a)}async validate(){let{framework:a}=this.params;return a=a.toLowerCase(),backEndValidFrameworks.includes(a)?{isValid:!0}:{isValid:!1,issue:`Invalid back-end framework, consider the options: ${backEndValidFrameworks.map(e=>`"${e}"`).join(", ")}.`}}}exports.BackEndFrameworkValidation=BackEndFrameworkValidation;exports.backEndFrameworks=backEndFrameworks;exports.backEndValidFrameworks=backEndValidFrameworks;
@@ -0,0 +1 @@
1
+ const validation=require("../core/validation.js"),getValidOptionsFromPrompt=require("../utils/get-valid-options-from-prompt.js"),frontEndFrameworks=[{title:"React + Vite (includes: React Router v7, SWR + Orval, React Hook Form + Zod)",value:"react-vite"},{title:"Next.js",value:"next",disabled:!0}],frontEndValidFrameworks=getValidOptionsFromPrompt.getValidOptionsFromSelect(frontEndFrameworks);class FrontEndFrameworkValidation extends validation.Validation{static create(t){return new this().createValidation(t)}async validate(){let{framework:t}=this.params;return t=t.toLowerCase(),frontEndValidFrameworks.includes(t)?{isValid:!0}:{isValid:!1,issue:`Invalid front-end framework, consider the options: ${frontEndValidFrameworks.map(e=>`"${e}"`).join(", ")}.`}}}exports.FrontEndFrameworkValidation=FrontEndFrameworkValidation;exports.frontEndFrameworks=frontEndFrameworks;exports.frontEndValidFrameworks=frontEndValidFrameworks;
@@ -1 +1 @@
1
- const index=require("../config/index.js"),validation=require("../core/validation.js"),capitalizeFirstWord=require("../utils/capitalize-first-word.js"),fs=require("fs"),promises=require("fs/promises"),path=require("path"),c=require("validate-npm-package-name");class ProjectNameValidation extends validation.Validation{static create(e){return new this().createValidation(e)}async validate(){const{path:e}=this.params,i=path.basename(e),a=path.resolve(index.GENERATED_APP_TARGET_ROOT_PATH,e);if(fs.existsSync(a)&&(await promises.readdir(a)).includes(i))return{isValid:!1,issue:`Folder with name "${i}" already exists in project directory.`};const s=c(i);return s.validForNewPackages?{isValid:!0}:{isValid:!1,issue:capitalizeFirstWord.capitalizeFirstWord(s.errors[0])}}}exports.ProjectNameValidation=ProjectNameValidation;
1
+ const index=require("../config/index.js"),validation=require("../core/validation.js"),capitalizeFirstWord=require("../utils/capitalize-first-word.js"),fs=require("fs"),promises=require("fs/promises"),path=require("path"),p=require("validate-npm-package-name");class ProjectNameValidation extends validation.Validation{static create(e){return new this().createValidation(e)}async validate(){const{path:e}=this.params,i=path.basename(e),a=path.resolve(index.GENERATED_APP_TARGET_ROOT_PATH,e);if(fs.existsSync(a)&&(await promises.readdir(a)).includes(i))return{isValid:!1,issue:`Folder with name "${i}" already exists in project directory.`};const r=p(i);if(!r.validForNewPackages){const s=r.errors?.[0];return{isValid:!1,issue:s?capitalizeFirstWord.capitalizeFirstWord(s):"Invalid name for unknown reason. Try another name."}}return{isValid:!0}}}exports.ProjectNameValidation=ProjectNameValidation;
@@ -1 +1 @@
1
- const validation=require("../core/validation.js"),getValidOptionsFromPrompt=require("../utils/get-valid-options-from-prompt.js"),templates=[{title:"Clean",value:"clean"},{title:"API",value:"api"}],validTemplates=getValidOptionsFromPrompt.getValidOptionsFromSelect(templates);class TemplateValidation extends validation.Validation{static create(e){return new this().createValidation(e)}async validate(){let{template:e}=this.params;return e=e.toLowerCase(),validTemplates.includes(e)?{isValid:!0}:{isValid:!1,issue:`Invalid template, consider the options: ${validTemplates.map(t=>`"${t}"`).join(", ")}.`}}}exports.TemplateValidation=TemplateValidation;exports.templates=templates;exports.validTemplates=validTemplates;
1
+ const validation=require("../core/validation.js"),getValidOptionsFromPrompt=require("../utils/get-valid-options-from-prompt.js"),templates=[{title:"Clean",value:"clean"},{title:"API",value:"api"},{title:"Front-end",value:"front-end"}],validTemplates=getValidOptionsFromPrompt.getValidOptionsFromSelect(templates);class TemplateValidation extends validation.Validation{static create(e){return new this().createValidation(e)}async validate(){let{template:e}=this.params;return e=e.toLowerCase(),validTemplates.includes(e)?{isValid:!0}:{isValid:!1,issue:`Invalid template, consider the options: ${validTemplates.map(t=>`"${t}"`).join(", ")}.`}}}exports.TemplateValidation=TemplateValidation;exports.templates=templates;exports.validTemplates=validTemplates;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leo-h/create-nodejs-app",
3
- "version": "1.0.20",
3
+ "version": "1.0.22",
4
4
  "packageManager": "pnpm@9.15.0",
5
5
  "author": "Leonardo Henrique <leonardo0507.business@gmail.com>",
6
6
  "description": "Create a modern Node.js app with TypeScript using one command.",
@@ -49,7 +49,7 @@
49
49
  "devDependencies": {
50
50
  "@eslint/js": "9.17.0",
51
51
  "@faker-js/faker": "9.3.0",
52
- "@types/node": "20.17.10",
52
+ "@types/node": "22.10.2",
53
53
  "@types/prompts": "2.4.9",
54
54
  "@types/validate-npm-package-name": "4.0.2",
55
55
  "@vitest/eslint-plugin": "1.1.18",
@@ -23,7 +23,7 @@
23
23
  "devDependencies": {
24
24
  "@eslint/js": "9.17.0",
25
25
  "@faker-js/faker": "9.3.0",
26
- "@types/node": "20.17.10",
26
+ "@types/node": "22.10.2",
27
27
  "@vitest/eslint-plugin": "1.1.18",
28
28
  "eslint": "9.17.0",
29
29
  "eslint-config-prettier": "9.1.0",
@@ -22,11 +22,11 @@ importers:
22
22
  specifier: 9.3.0
23
23
  version: 9.3.0
24
24
  '@types/node':
25
- specifier: 20.17.10
26
- version: 20.17.10
25
+ specifier: 22.10.2
26
+ version: 22.10.2
27
27
  '@vitest/eslint-plugin':
28
28
  specifier: 1.1.18
29
- version: 1.1.18(@typescript-eslint/utils@8.18.1(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2))(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2)(vitest@1.6.0(@types/node@20.17.10))
29
+ version: 1.1.18(@typescript-eslint/utils@8.18.1(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2))(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2)(vitest@1.6.0(@types/node@22.10.2))
30
30
  eslint:
31
31
  specifier: 9.17.0
32
32
  version: 9.17.0(jiti@1.21.6)
@@ -62,10 +62,10 @@ importers:
62
62
  version: 2.0.0(typescript@5.7.2)
63
63
  vite-tsconfig-paths:
64
64
  specifier: 4.3.2
65
- version: 4.3.2(typescript@5.7.2)(vite@5.2.13(@types/node@20.17.10))
65
+ version: 4.3.2(typescript@5.7.2)(vite@5.2.13(@types/node@22.10.2))
66
66
  vitest:
67
67
  specifier: 1.6.0
68
- version: 1.6.0(@types/node@20.17.10)
68
+ version: 1.6.0(@types/node@22.10.2)
69
69
 
70
70
  packages:
71
71
 
@@ -838,8 +838,8 @@ packages:
838
838
  '@types/json-schema@7.0.15':
839
839
  resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
840
840
 
841
- '@types/node@20.17.10':
842
- resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==}
841
+ '@types/node@22.10.2':
842
+ resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==}
843
843
 
844
844
  '@types/resolve@1.20.2':
845
845
  resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
@@ -2241,8 +2241,8 @@ packages:
2241
2241
  typescript:
2242
2242
  optional: true
2243
2243
 
2244
- undici-types@6.19.8:
2245
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
2244
+ undici-types@6.20.0:
2245
+ resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
2246
2246
 
2247
2247
  unicorn-magic@0.1.0:
2248
2248
  resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
@@ -2943,9 +2943,9 @@ snapshots:
2943
2943
 
2944
2944
  '@types/json-schema@7.0.15': {}
2945
2945
 
2946
- '@types/node@20.17.10':
2946
+ '@types/node@22.10.2':
2947
2947
  dependencies:
2948
- undici-types: 6.19.8
2948
+ undici-types: 6.20.0
2949
2949
 
2950
2950
  '@types/resolve@1.20.2': {}
2951
2951
 
@@ -3026,13 +3026,13 @@ snapshots:
3026
3026
  '@typescript-eslint/types': 8.18.1
3027
3027
  eslint-visitor-keys: 4.2.0
3028
3028
 
3029
- '@vitest/eslint-plugin@1.1.18(@typescript-eslint/utils@8.18.1(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2))(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2)(vitest@1.6.0(@types/node@20.17.10))':
3029
+ '@vitest/eslint-plugin@1.1.18(@typescript-eslint/utils@8.18.1(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2))(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2)(vitest@1.6.0(@types/node@22.10.2))':
3030
3030
  dependencies:
3031
3031
  '@typescript-eslint/utils': 8.18.1(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2)
3032
3032
  eslint: 9.17.0(jiti@1.21.6)
3033
3033
  optionalDependencies:
3034
3034
  typescript: 5.7.2
3035
- vitest: 1.6.0(@types/node@20.17.10)
3035
+ vitest: 1.6.0(@types/node@22.10.2)
3036
3036
 
3037
3037
  '@vitest/expect@1.6.0':
3038
3038
  dependencies:
@@ -4420,7 +4420,7 @@ snapshots:
4420
4420
  - supports-color
4421
4421
  - vue-tsc
4422
4422
 
4423
- undici-types@6.19.8: {}
4423
+ undici-types@6.20.0: {}
4424
4424
 
4425
4425
  unicorn-magic@0.1.0: {}
4426
4426
 
@@ -4450,13 +4450,13 @@ snapshots:
4450
4450
 
4451
4451
  util-deprecate@1.0.2: {}
4452
4452
 
4453
- vite-node@1.6.0(@types/node@20.17.10):
4453
+ vite-node@1.6.0(@types/node@22.10.2):
4454
4454
  dependencies:
4455
4455
  cac: 6.7.14
4456
4456
  debug: 4.4.0
4457
4457
  pathe: 1.1.2
4458
4458
  picocolors: 1.0.1
4459
- vite: 5.2.13(@types/node@20.17.10)
4459
+ vite: 5.2.13(@types/node@22.10.2)
4460
4460
  transitivePeerDependencies:
4461
4461
  - '@types/node'
4462
4462
  - less
@@ -4467,27 +4467,27 @@ snapshots:
4467
4467
  - supports-color
4468
4468
  - terser
4469
4469
 
4470
- vite-tsconfig-paths@4.3.2(typescript@5.7.2)(vite@5.2.13(@types/node@20.17.10)):
4470
+ vite-tsconfig-paths@4.3.2(typescript@5.7.2)(vite@5.2.13(@types/node@22.10.2)):
4471
4471
  dependencies:
4472
4472
  debug: 4.3.5
4473
4473
  globrex: 0.1.2
4474
4474
  tsconfck: 3.1.0(typescript@5.7.2)
4475
4475
  optionalDependencies:
4476
- vite: 5.2.13(@types/node@20.17.10)
4476
+ vite: 5.2.13(@types/node@22.10.2)
4477
4477
  transitivePeerDependencies:
4478
4478
  - supports-color
4479
4479
  - typescript
4480
4480
 
4481
- vite@5.2.13(@types/node@20.17.10):
4481
+ vite@5.2.13(@types/node@22.10.2):
4482
4482
  dependencies:
4483
4483
  esbuild: 0.20.2
4484
4484
  postcss: 8.4.38
4485
4485
  rollup: 4.18.0
4486
4486
  optionalDependencies:
4487
- '@types/node': 20.17.10
4487
+ '@types/node': 22.10.2
4488
4488
  fsevents: 2.3.3
4489
4489
 
4490
- vitest@1.6.0(@types/node@20.17.10):
4490
+ vitest@1.6.0(@types/node@22.10.2):
4491
4491
  dependencies:
4492
4492
  '@vitest/expect': 1.6.0
4493
4493
  '@vitest/runner': 1.6.0
@@ -4506,11 +4506,11 @@ snapshots:
4506
4506
  strip-literal: 2.1.0
4507
4507
  tinybench: 2.8.0
4508
4508
  tinypool: 0.8.4
4509
- vite: 5.2.13(@types/node@20.17.10)
4510
- vite-node: 1.6.0(@types/node@20.17.10)
4509
+ vite: 5.2.13(@types/node@22.10.2)
4510
+ vite-node: 1.6.0(@types/node@22.10.2)
4511
4511
  why-is-node-running: 2.2.2
4512
4512
  optionalDependencies:
4513
- '@types/node': 20.17.10
4513
+ '@types/node': 22.10.2
4514
4514
  transitivePeerDependencies:
4515
4515
  - less
4516
4516
  - lightningcss
@@ -37,7 +37,7 @@
37
37
  "@eslint/js": "9.17.0",
38
38
  "@faker-js/faker": "9.3.0",
39
39
  "@types/mime-types": "2.1.4",
40
- "@types/node": "20.17.10",
40
+ "@types/node": "22.10.2",
41
41
  "@types/supertest": "6.0.2",
42
42
  "@vitest/coverage-v8": "1.6.0",
43
43
  "@vitest/eslint-plugin": "1.1.18",
@@ -55,17 +55,17 @@ importers:
55
55
  specifier: 2.1.4
56
56
  version: 2.1.4
57
57
  '@types/node':
58
- specifier: 20.17.10
59
- version: 20.17.10
58
+ specifier: 22.10.2
59
+ version: 22.10.2
60
60
  '@types/supertest':
61
61
  specifier: 6.0.2
62
62
  version: 6.0.2
63
63
  '@vitest/coverage-v8':
64
64
  specifier: 1.6.0
65
- version: 1.6.0(vitest@1.6.0(@types/node@20.17.10))
65
+ version: 1.6.0(vitest@1.6.0(@types/node@22.10.2))
66
66
  '@vitest/eslint-plugin':
67
67
  specifier: 1.1.18
68
- version: 1.1.18(@typescript-eslint/utils@8.18.1(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2))(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2)(vitest@1.6.0(@types/node@20.17.10))
68
+ version: 1.1.18(@typescript-eslint/utils@8.18.1(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2))(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2)(vitest@1.6.0(@types/node@22.10.2))
69
69
  eslint:
70
70
  specifier: 9.17.0
71
71
  version: 9.17.0(jiti@1.21.6)
@@ -107,10 +107,10 @@ importers:
107
107
  version: 2.0.0(typescript@5.7.2)
108
108
  vite-tsconfig-paths:
109
109
  specifier: 4.3.2
110
- version: 4.3.2(typescript@5.7.2)(vite@5.2.13(@types/node@20.17.10))
110
+ version: 4.3.2(typescript@5.7.2)(vite@5.2.13(@types/node@22.10.2))
111
111
  vitest:
112
112
  specifier: 1.6.0
113
- version: 1.6.0(@types/node@20.17.10)
113
+ version: 1.6.0(@types/node@22.10.2)
114
114
 
115
115
  packages:
116
116
 
@@ -945,8 +945,8 @@ packages:
945
945
  '@types/mime-types@2.1.4':
946
946
  resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==}
947
947
 
948
- '@types/node@20.17.10':
949
- resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==}
948
+ '@types/node@22.10.2':
949
+ resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==}
950
950
 
951
951
  '@types/resolve@1.20.2':
952
952
  resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
@@ -2811,8 +2811,8 @@ packages:
2811
2811
  typescript:
2812
2812
  optional: true
2813
2813
 
2814
- undici-types@6.19.8:
2815
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
2814
+ undici-types@6.20.0:
2815
+ resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
2816
2816
 
2817
2817
  unicorn-magic@0.1.0:
2818
2818
  resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
@@ -3615,9 +3615,9 @@ snapshots:
3615
3615
 
3616
3616
  '@types/mime-types@2.1.4': {}
3617
3617
 
3618
- '@types/node@20.17.10':
3618
+ '@types/node@22.10.2':
3619
3619
  dependencies:
3620
- undici-types: 6.19.8
3620
+ undici-types: 6.20.0
3621
3621
 
3622
3622
  '@types/resolve@1.20.2': {}
3623
3623
 
@@ -3625,7 +3625,7 @@ snapshots:
3625
3625
  dependencies:
3626
3626
  '@types/cookiejar': 2.1.5
3627
3627
  '@types/methods': 1.1.4
3628
- '@types/node': 20.17.10
3628
+ '@types/node': 22.10.2
3629
3629
 
3630
3630
  '@types/supertest@6.0.2':
3631
3631
  dependencies:
@@ -3709,7 +3709,7 @@ snapshots:
3709
3709
  '@typescript-eslint/types': 8.18.1
3710
3710
  eslint-visitor-keys: 4.2.0
3711
3711
 
3712
- '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.17.10))':
3712
+ '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@22.10.2))':
3713
3713
  dependencies:
3714
3714
  '@ampproject/remapping': 2.3.0
3715
3715
  '@bcoe/v8-coverage': 0.2.3
@@ -3724,17 +3724,17 @@ snapshots:
3724
3724
  std-env: 3.7.0
3725
3725
  strip-literal: 2.1.0
3726
3726
  test-exclude: 6.0.0
3727
- vitest: 1.6.0(@types/node@20.17.10)
3727
+ vitest: 1.6.0(@types/node@22.10.2)
3728
3728
  transitivePeerDependencies:
3729
3729
  - supports-color
3730
3730
 
3731
- '@vitest/eslint-plugin@1.1.18(@typescript-eslint/utils@8.18.1(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2))(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2)(vitest@1.6.0(@types/node@20.17.10))':
3731
+ '@vitest/eslint-plugin@1.1.18(@typescript-eslint/utils@8.18.1(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2))(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2)(vitest@1.6.0(@types/node@22.10.2))':
3732
3732
  dependencies:
3733
3733
  '@typescript-eslint/utils': 8.18.1(eslint@9.17.0(jiti@1.21.6))(typescript@5.7.2)
3734
3734
  eslint: 9.17.0(jiti@1.21.6)
3735
3735
  optionalDependencies:
3736
3736
  typescript: 5.7.2
3737
- vitest: 1.6.0(@types/node@20.17.10)
3737
+ vitest: 1.6.0(@types/node@22.10.2)
3738
3738
 
3739
3739
  '@vitest/expect@1.6.0':
3740
3740
  dependencies:
@@ -5608,7 +5608,7 @@ snapshots:
5608
5608
  - supports-color
5609
5609
  - vue-tsc
5610
5610
 
5611
- undici-types@6.19.8: {}
5611
+ undici-types@6.20.0: {}
5612
5612
 
5613
5613
  unicorn-magic@0.1.0: {}
5614
5614
 
@@ -5638,13 +5638,13 @@ snapshots:
5638
5638
 
5639
5639
  util-deprecate@1.0.2: {}
5640
5640
 
5641
- vite-node@1.6.0(@types/node@20.17.10):
5641
+ vite-node@1.6.0(@types/node@22.10.2):
5642
5642
  dependencies:
5643
5643
  cac: 6.7.14
5644
5644
  debug: 4.3.5
5645
5645
  pathe: 1.1.2
5646
5646
  picocolors: 1.0.1
5647
- vite: 5.2.13(@types/node@20.17.10)
5647
+ vite: 5.2.13(@types/node@22.10.2)
5648
5648
  transitivePeerDependencies:
5649
5649
  - '@types/node'
5650
5650
  - less
@@ -5655,27 +5655,27 @@ snapshots:
5655
5655
  - supports-color
5656
5656
  - terser
5657
5657
 
5658
- vite-tsconfig-paths@4.3.2(typescript@5.7.2)(vite@5.2.13(@types/node@20.17.10)):
5658
+ vite-tsconfig-paths@4.3.2(typescript@5.7.2)(vite@5.2.13(@types/node@22.10.2)):
5659
5659
  dependencies:
5660
5660
  debug: 4.3.5
5661
5661
  globrex: 0.1.2
5662
5662
  tsconfck: 3.1.0(typescript@5.7.2)
5663
5663
  optionalDependencies:
5664
- vite: 5.2.13(@types/node@20.17.10)
5664
+ vite: 5.2.13(@types/node@22.10.2)
5665
5665
  transitivePeerDependencies:
5666
5666
  - supports-color
5667
5667
  - typescript
5668
5668
 
5669
- vite@5.2.13(@types/node@20.17.10):
5669
+ vite@5.2.13(@types/node@22.10.2):
5670
5670
  dependencies:
5671
5671
  esbuild: 0.20.2
5672
5672
  postcss: 8.4.38
5673
5673
  rollup: 4.18.0
5674
5674
  optionalDependencies:
5675
- '@types/node': 20.17.10
5675
+ '@types/node': 22.10.2
5676
5676
  fsevents: 2.3.3
5677
5677
 
5678
- vitest@1.6.0(@types/node@20.17.10):
5678
+ vitest@1.6.0(@types/node@22.10.2):
5679
5679
  dependencies:
5680
5680
  '@vitest/expect': 1.6.0
5681
5681
  '@vitest/runner': 1.6.0
@@ -5694,11 +5694,11 @@ snapshots:
5694
5694
  strip-literal: 2.1.0
5695
5695
  tinybench: 2.8.0
5696
5696
  tinypool: 0.8.4
5697
- vite: 5.2.13(@types/node@20.17.10)
5698
- vite-node: 1.6.0(@types/node@20.17.10)
5697
+ vite: 5.2.13(@types/node@22.10.2)
5698
+ vite-node: 1.6.0(@types/node@22.10.2)
5699
5699
  why-is-node-running: 2.2.2
5700
5700
  optionalDependencies:
5701
- '@types/node': 20.17.10
5701
+ '@types/node': 22.10.2
5702
5702
  transitivePeerDependencies:
5703
5703
  - less
5704
5704
  - lightningcss
@@ -42,7 +42,7 @@
42
42
  "@swc/cli": "0.5.2",
43
43
  "@swc/core": "1.10.1",
44
44
  "@types/mime-types": "2.1.4",
45
- "@types/node": "20.17.10",
45
+ "@types/node": "22.10.2",
46
46
  "@types/supertest": "6.0.2",
47
47
  "@vitest/coverage-v8": "1.6.0",
48
48
  "@vitest/eslint-plugin": "1.1.18",
@@ -73,17 +73,17 @@ importers:
73
73
  specifier: 2.1.4
74
74
  version: 2.1.4
75
75
  '@types/node':
76
- specifier: 20.17.10
77
- version: 20.17.10
76
+ specifier: 22.10.2
77
+ version: 22.10.2
78
78
  '@types/supertest':
79
79
  specifier: 6.0.2
80
80
  version: 6.0.2
81
81
  '@vitest/coverage-v8':
82
82
  specifier: 1.6.0
83
- version: 1.6.0(vitest@1.6.0(@types/node@20.17.10)(terser@5.31.3))
83
+ version: 1.6.0(vitest@1.6.0(@types/node@22.10.2)(terser@5.31.3))
84
84
  '@vitest/eslint-plugin':
85
85
  specifier: 1.1.18
86
- version: 1.1.18(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)(vitest@1.6.0(@types/node@20.17.10)(terser@5.31.3))
86
+ version: 1.1.18(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)(vitest@1.6.0(@types/node@22.10.2)(terser@5.31.3))
87
87
  eslint:
88
88
  specifier: 9.17.0
89
89
  version: 9.17.0
@@ -119,7 +119,7 @@ importers:
119
119
  version: 1.5.1(@swc/core@1.10.1)(rollup@4.19.0)
120
120
  vitest:
121
121
  specifier: 1.6.0
122
- version: 1.6.0(@types/node@20.17.10)(terser@5.31.3)
122
+ version: 1.6.0(@types/node@22.10.2)(terser@5.31.3)
123
123
 
124
124
  packages:
125
125
 
@@ -816,8 +816,8 @@ packages:
816
816
  '@types/mime-types@2.1.4':
817
817
  resolution: {integrity: sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==}
818
818
 
819
- '@types/node@20.17.10':
820
- resolution: {integrity: sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==}
819
+ '@types/node@22.10.2':
820
+ resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==}
821
821
 
822
822
  '@types/superagent@8.1.8':
823
823
  resolution: {integrity: sha512-nTqHJ2OTa7PFEpLahzSEEeFeqbMpmcN7OeayiOc7v+xk+/vyTKljRe+o4MPqSnPeRCMvtxuLG+5QqluUVQJOnA==}
@@ -3057,8 +3057,8 @@ packages:
3057
3057
  unbzip2-stream@1.4.3:
3058
3058
  resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==}
3059
3059
 
3060
- undici-types@6.19.8:
3061
- resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==}
3060
+ undici-types@6.20.0:
3061
+ resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
3062
3062
 
3063
3063
  universalify@2.0.1:
3064
3064
  resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
@@ -3856,15 +3856,15 @@ snapshots:
3856
3856
 
3857
3857
  '@types/mime-types@2.1.4': {}
3858
3858
 
3859
- '@types/node@20.17.10':
3859
+ '@types/node@22.10.2':
3860
3860
  dependencies:
3861
- undici-types: 6.19.8
3861
+ undici-types: 6.20.0
3862
3862
 
3863
3863
  '@types/superagent@8.1.8':
3864
3864
  dependencies:
3865
3865
  '@types/cookiejar': 2.1.5
3866
3866
  '@types/methods': 1.1.4
3867
- '@types/node': 20.17.10
3867
+ '@types/node': 22.10.2
3868
3868
  form-data: 4.0.0
3869
3869
 
3870
3870
  '@types/supertest@6.0.2':
@@ -3949,7 +3949,7 @@ snapshots:
3949
3949
  '@typescript-eslint/types': 8.18.1
3950
3950
  eslint-visitor-keys: 4.2.0
3951
3951
 
3952
- '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@20.17.10)(terser@5.31.3))':
3952
+ '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@22.10.2)(terser@5.31.3))':
3953
3953
  dependencies:
3954
3954
  '@ampproject/remapping': 2.3.0
3955
3955
  '@bcoe/v8-coverage': 0.2.3
@@ -3964,17 +3964,17 @@ snapshots:
3964
3964
  std-env: 3.7.0
3965
3965
  strip-literal: 2.1.0
3966
3966
  test-exclude: 6.0.0
3967
- vitest: 1.6.0(@types/node@20.17.10)(terser@5.31.3)
3967
+ vitest: 1.6.0(@types/node@22.10.2)(terser@5.31.3)
3968
3968
  transitivePeerDependencies:
3969
3969
  - supports-color
3970
3970
 
3971
- '@vitest/eslint-plugin@1.1.18(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)(vitest@1.6.0(@types/node@20.17.10)(terser@5.31.3))':
3971
+ '@vitest/eslint-plugin@1.1.18(@typescript-eslint/utils@8.18.1(eslint@9.17.0)(typescript@5.7.2))(eslint@9.17.0)(typescript@5.7.2)(vitest@1.6.0(@types/node@22.10.2)(terser@5.31.3))':
3972
3972
  dependencies:
3973
3973
  '@typescript-eslint/utils': 8.18.1(eslint@9.17.0)(typescript@5.7.2)
3974
3974
  eslint: 9.17.0
3975
3975
  optionalDependencies:
3976
3976
  typescript: 5.7.2
3977
- vitest: 1.6.0(@types/node@20.17.10)(terser@5.31.3)
3977
+ vitest: 1.6.0(@types/node@22.10.2)(terser@5.31.3)
3978
3978
 
3979
3979
  '@vitest/expect@1.6.0':
3980
3980
  dependencies:
@@ -5296,7 +5296,7 @@ snapshots:
5296
5296
 
5297
5297
  jest-worker@27.5.1:
5298
5298
  dependencies:
5299
- '@types/node': 20.17.10
5299
+ '@types/node': 22.10.2
5300
5300
  merge-stream: 2.0.0
5301
5301
  supports-color: 8.1.1
5302
5302
 
@@ -6296,7 +6296,7 @@ snapshots:
6296
6296
  buffer: 5.7.1
6297
6297
  through: 2.3.8
6298
6298
 
6299
- undici-types@6.19.8: {}
6299
+ undici-types@6.20.0: {}
6300
6300
 
6301
6301
  universalify@2.0.1: {}
6302
6302
 
@@ -6337,13 +6337,13 @@ snapshots:
6337
6337
  vary@1.1.2:
6338
6338
  optional: true
6339
6339
 
6340
- vite-node@1.6.0(@types/node@20.17.10)(terser@5.31.3):
6340
+ vite-node@1.6.0(@types/node@22.10.2)(terser@5.31.3):
6341
6341
  dependencies:
6342
6342
  cac: 6.7.14
6343
6343
  debug: 4.3.5
6344
6344
  pathe: 1.1.2
6345
6345
  picocolors: 1.0.1
6346
- vite: 5.3.4(@types/node@20.17.10)(terser@5.31.3)
6346
+ vite: 5.3.4(@types/node@22.10.2)(terser@5.31.3)
6347
6347
  transitivePeerDependencies:
6348
6348
  - '@types/node'
6349
6349
  - less
@@ -6354,17 +6354,17 @@ snapshots:
6354
6354
  - supports-color
6355
6355
  - terser
6356
6356
 
6357
- vite@5.3.4(@types/node@20.17.10)(terser@5.31.3):
6357
+ vite@5.3.4(@types/node@22.10.2)(terser@5.31.3):
6358
6358
  dependencies:
6359
6359
  esbuild: 0.21.5
6360
6360
  postcss: 8.4.39
6361
6361
  rollup: 4.19.0
6362
6362
  optionalDependencies:
6363
- '@types/node': 20.17.10
6363
+ '@types/node': 22.10.2
6364
6364
  fsevents: 2.3.3
6365
6365
  terser: 5.31.3
6366
6366
 
6367
- vitest@1.6.0(@types/node@20.17.10)(terser@5.31.3):
6367
+ vitest@1.6.0(@types/node@22.10.2)(terser@5.31.3):
6368
6368
  dependencies:
6369
6369
  '@vitest/expect': 1.6.0
6370
6370
  '@vitest/runner': 1.6.0
@@ -6383,11 +6383,11 @@ snapshots:
6383
6383
  strip-literal: 2.1.0
6384
6384
  tinybench: 2.8.0
6385
6385
  tinypool: 0.8.4
6386
- vite: 5.3.4(@types/node@20.17.10)(terser@5.31.3)
6387
- vite-node: 1.6.0(@types/node@20.17.10)(terser@5.31.3)
6386
+ vite: 5.3.4(@types/node@22.10.2)(terser@5.31.3)
6387
+ vite-node: 1.6.0(@types/node@22.10.2)(terser@5.31.3)
6388
6388
  why-is-node-running: 2.3.0
6389
6389
  optionalDependencies:
6390
- '@types/node': 20.17.10
6390
+ '@types/node': 22.10.2
6391
6391
  transitivePeerDependencies:
6392
6392
  - less
6393
6393
  - lightningcss
@@ -0,0 +1,8 @@
1
+ # example: "app-name"
2
+ APP_NAME=
3
+
4
+ # example: "http://localhost:3333"
5
+ APP_API_BASE_URL=
6
+
7
+ # example: "http://localhost:3333/docs/json"
8
+ API_JSON_DOCS_URL=
@@ -0,0 +1 @@
1
+ pnpm lint-staged
@@ -0,0 +1,4 @@
1
+ {
2
+ "*.{js,jsx,ts,tsx,css,scss,html,json,yaml,yml,md}": "prettier --write --cache",
3
+ "*.{js,jsx,ts,tsx}": ["eslint --max-warnings 0 --fix --cache"]
4
+ }