update workspace
This commit is contained in:
2
.vscode/extensions.json
vendored
2
.vscode/extensions.json
vendored
@@ -64,7 +64,7 @@
|
|||||||
"pkief.material-icon-theme",
|
"pkief.material-icon-theme",
|
||||||
|
|
||||||
// AI Assistance (Optional - เลือก 1 อัน)
|
// AI Assistance (Optional - เลือก 1 อัน)
|
||||||
"github.copilot",
|
// "github.copilot",
|
||||||
// "tabnine.tabnine-vscode"
|
// "tabnine.tabnine-vscode"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
41
.vscode/nap-dms.lcbp3.code-workspace
vendored
41
.vscode/nap-dms.lcbp3.code-workspace
vendored
@@ -1,41 +0,0 @@
|
|||||||
{
|
|
||||||
"folders": [
|
|
||||||
{
|
|
||||||
"path": ".."
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"settings": {
|
|
||||||
"sqltools.connections": [
|
|
||||||
{
|
|
||||||
"mysqlOptions": {
|
|
||||||
"authProtocol": "default",
|
|
||||||
"enableSsl": "Disabled"
|
|
||||||
},
|
|
||||||
"ssh": "Disabled",
|
|
||||||
"previewLimit": 50,
|
|
||||||
"server": "localhost",
|
|
||||||
"port": 3306,
|
|
||||||
"driver": "MySQL",
|
|
||||||
"name": "lcbp3_dev",
|
|
||||||
"database": "lcbp3_dev",
|
|
||||||
"username": "root"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"editor.fontSize": 16,
|
|
||||||
"editor.codeActionsOnSave": {
|
|
||||||
"terminal": "explicit"
|
|
||||||
},
|
|
||||||
"editor.codeActions.triggerOnFocusChange": true,
|
|
||||||
"editor.tabSize": 2,
|
|
||||||
"editor.minimap.sectionHeaderFontSize": 12,
|
|
||||||
"terminal.integrated.fontSize": 15,
|
|
||||||
"workbench.colorTheme": "Default Dark Modern",
|
|
||||||
"workbench.colorCustomizations": {
|
|
||||||
"terminal.background": "#07003c",
|
|
||||||
"terminal.foreground": "#ffffff",
|
|
||||||
"terminalCursor.background": "#ffffff",
|
|
||||||
"terminalCursor.foreground": "#eeff00"
|
|
||||||
},
|
|
||||||
"geminicodeassist.agentYoloMode": false,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
563
.vscode/settings.json
vendored
563
.vscode/settings.json
vendored
@@ -1,34 +1,559 @@
|
|||||||
{
|
{
|
||||||
|
// ========================================
|
||||||
|
// EDITOR SETTINGS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// ขนาดตัวอักษรในโค้ด
|
||||||
|
"editor.fontSize": 14,
|
||||||
|
|
||||||
|
// ความสูงของแต่ละบรรทัด
|
||||||
|
"editor.lineHeight": 1.6,
|
||||||
|
|
||||||
|
// แสดงเส้นแนวตั้งที่ตำแหน่งตัวอักษรที่ 80 และ 120
|
||||||
|
"editor.rulers": [80, 120],
|
||||||
|
|
||||||
|
// เปิดใช้ minimap ขวามือ
|
||||||
|
"editor.minimap.enabled": true,
|
||||||
|
|
||||||
|
// แสดงช่องว่างและ tab เป็นจุดและเส้น
|
||||||
|
"editor.renderWhitespace": "boundary",
|
||||||
|
|
||||||
|
// เปิดใช้ bracket pair colorization
|
||||||
|
"editor.bracketPairColorization.enabled": true,
|
||||||
|
|
||||||
|
// แสดงเส้นเชื่อม brackets
|
||||||
|
"editor.guides.bracketPairs": "active",
|
||||||
|
|
||||||
|
// smooth scrolling
|
||||||
|
"editor.smoothScrolling": true,
|
||||||
|
|
||||||
|
// cursor animation
|
||||||
|
"editor.cursorBlinking": "smooth",
|
||||||
|
"editor.cursorSmoothCaretAnimation": "on",
|
||||||
|
|
||||||
|
// แสดง breadcrumb ด้านบน
|
||||||
|
"breadcrumbs.enabled": true,
|
||||||
|
|
||||||
|
// word wrap ที่ขอบหน้าต่าง
|
||||||
|
"editor.wordWrap": "on",
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// FORMAT ON SAVE
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// format โค้ดอัตโนมัติเมื่อ save
|
||||||
"editor.formatOnSave": true,
|
"editor.formatOnSave": true,
|
||||||
|
|
||||||
|
// format โค้ดเมื่อ paste
|
||||||
|
"editor.formatOnPaste": true,
|
||||||
|
|
||||||
|
// ใช้ Prettier เป็น default formatter
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
|
|
||||||
|
// กำหนด formatter เฉพาะแต่ละภาษา
|
||||||
|
"[javascript]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[typescript]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[json]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[jsonc]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[html]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[css]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[scss]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[markdown]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// CODE ACTION ON SAVE
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// รัน ESLint fix และจัดเรียง imports เมื่อ save
|
||||||
"editor.codeActionsOnSave": {
|
"editor.codeActionsOnSave": {
|
||||||
"source.fixAll.eslint": "explicit",
|
"source.fixAll.eslint": "explicit",
|
||||||
"source.fixAll.sqltools": "explicit"
|
"source.organizeImports": "explicit",
|
||||||
|
"source.addMissingImports": "explicit"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// PRETTIER SETTINGS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// ใช้ single quotes แทน double quotes
|
||||||
|
"prettier.singleQuote": true,
|
||||||
|
|
||||||
|
// ใช้ semicolons ท้ายบรรทัด
|
||||||
|
"prettier.semi": true,
|
||||||
|
|
||||||
|
// ความกว้างของ tab เป็น 2 spaces
|
||||||
|
"prettier.tabWidth": 2,
|
||||||
|
|
||||||
|
// ใช้ spaces แทน tabs
|
||||||
|
"prettier.useTabs": false,
|
||||||
|
|
||||||
|
// ใส่ trailing comma ใน ES5 (objects, arrays, etc.)
|
||||||
|
"prettier.trailingComma": "es5",
|
||||||
|
|
||||||
|
// ความกว้างสูงสุดก่อนขึ้นบรรทัดใหม่
|
||||||
|
"prettier.printWidth": 80,
|
||||||
|
|
||||||
|
// ใส่ comma ท้ายสุดใน multiline
|
||||||
|
"prettier.arrowParens": "always",
|
||||||
|
|
||||||
|
// ใช้ LF (Line Feed) แทน CRLF
|
||||||
|
"prettier.endOfLine": "lf",
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// ESLINT SETTINGS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// เปิดใช้ ESLint
|
||||||
|
"eslint.enable": true,
|
||||||
|
|
||||||
|
// รัน ESLint บนไฟล์เหล่านี้
|
||||||
"eslint.validate": [
|
"eslint.validate": [
|
||||||
"javascript",
|
"javascript",
|
||||||
"javascriptreact",
|
"javascriptreact",
|
||||||
"typescript",
|
"typescript",
|
||||||
"typescriptreact"
|
"typescriptreact"
|
||||||
],
|
],
|
||||||
"sqltools.connections": [
|
|
||||||
{
|
// แสดง ESLint status ใน status bar
|
||||||
"mysqlOptions": {
|
"eslint.alwaysShowStatus": true,
|
||||||
"authProtocol": "default",
|
|
||||||
"enableSsl": "Disabled"
|
// ========================================
|
||||||
|
// ERROR LENS SETTINGS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// เปิดใช้ Error Lens
|
||||||
|
"errorLens.enabled": true,
|
||||||
|
|
||||||
|
// แสดง errors, warnings, และ info
|
||||||
|
"errorLens.enabledDiagnosticLevels": [
|
||||||
|
"error",
|
||||||
|
"warning",
|
||||||
|
"info"
|
||||||
|
],
|
||||||
|
|
||||||
|
// ระยะห่างของข้อความจากโค้ด
|
||||||
|
"errorLens.padding": "0 1ch",
|
||||||
|
|
||||||
|
// ตำแหน่งข้อความ error
|
||||||
|
"errorLens.messageTemplate": "$message",
|
||||||
|
|
||||||
|
// แสดง error ท้ายบรรทัด
|
||||||
|
"errorLens.messageEnabled": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// TAILWIND CSS SETTINGS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// เปิดใช้ IntelliSense สำหรับ Tailwind
|
||||||
|
"tailwindCSS.emmetCompletions": true,
|
||||||
|
|
||||||
|
// แสดง color preview
|
||||||
|
"tailwindCSS.colorDecorators": true,
|
||||||
|
|
||||||
|
// เปิดใช้ suggestions
|
||||||
|
"tailwindCSS.suggestions": true,
|
||||||
|
|
||||||
|
// ไฟล์ที่จะใช้ Tailwind IntelliSense
|
||||||
|
"tailwindCSS.includeLanguages": {
|
||||||
|
"typescript": "javascript",
|
||||||
|
"typescriptreact": "javascript"
|
||||||
},
|
},
|
||||||
"ssh": "Disabled",
|
|
||||||
"previewLimit": 50,
|
// ========================================
|
||||||
"server": "localhost",
|
// HEADWIND (Tailwind Class Sorter)
|
||||||
"port": 3306,
|
// ========================================
|
||||||
"driver": "MySQL",
|
|
||||||
"name": "lcbp3_dev",
|
// รัน Headwind เมื่อ save
|
||||||
"database": "lcbp3_dev",
|
"headwind.runOnSave": true,
|
||||||
"username": "root"
|
|
||||||
|
// ========================================
|
||||||
|
// AUTO CLOSE/RENAME TAG
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// เปิดใช้ auto close tag
|
||||||
|
"auto-close-tag.activationOnLanguage": [
|
||||||
|
"html",
|
||||||
|
"xml",
|
||||||
|
"php",
|
||||||
|
"javascript",
|
||||||
|
"javascriptreact",
|
||||||
|
"typescript",
|
||||||
|
"typescriptreact"
|
||||||
|
],
|
||||||
|
|
||||||
|
// เปิดใช้ auto rename tag
|
||||||
|
"auto-rename-tag.activationOnLanguage": [
|
||||||
|
"html",
|
||||||
|
"xml",
|
||||||
|
"php",
|
||||||
|
"javascript",
|
||||||
|
"javascriptreact",
|
||||||
|
"typescript",
|
||||||
|
"typescriptreact"
|
||||||
|
],
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// BETTER COMMENTS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// กำหนดสีและรูปแบบของ comments
|
||||||
|
"better-comments.tags": [
|
||||||
|
{
|
||||||
|
"tag": "!",
|
||||||
|
"color": "#FF2D00",
|
||||||
|
"strikethrough": false,
|
||||||
|
"underline": false,
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"bold": false,
|
||||||
|
"italic": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "?",
|
||||||
|
"color": "#3498DB",
|
||||||
|
"strikethrough": false,
|
||||||
|
"underline": false,
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"bold": false,
|
||||||
|
"italic": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "//",
|
||||||
|
"color": "#474747",
|
||||||
|
"strikethrough": true,
|
||||||
|
"underline": false,
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"bold": false,
|
||||||
|
"italic": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "todo",
|
||||||
|
"color": "#FF8C00",
|
||||||
|
"strikethrough": false,
|
||||||
|
"underline": false,
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"bold": false,
|
||||||
|
"italic": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "*",
|
||||||
|
"color": "#98C379",
|
||||||
|
"strikethrough": false,
|
||||||
|
"underline": false,
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"bold": false,
|
||||||
|
"italic": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"editor.fontSize": 16,
|
|
||||||
"editor.fontLigatures": false,
|
// ========================================
|
||||||
"editor.tabSize": 2,
|
// TODO TREE
|
||||||
"editor.minimap.sectionHeaderFontSize": 12,
|
// ========================================
|
||||||
"markdown.extension.print.theme": "dark"
|
|
||||||
|
// keywords ที่จะ highlight
|
||||||
|
"todo-tree.general.tags": [
|
||||||
|
"TODO",
|
||||||
|
"FIXME",
|
||||||
|
"BUG",
|
||||||
|
"HACK",
|
||||||
|
"NOTE",
|
||||||
|
"XXX"
|
||||||
|
],
|
||||||
|
|
||||||
|
// highlight TODO ในโค้ด
|
||||||
|
"todo-tree.highlights.enabled": true,
|
||||||
|
|
||||||
|
// แสดง TODO tree ใน activity bar
|
||||||
|
"todo-tree.tree.showInExplorer": false,
|
||||||
|
|
||||||
|
// กำหนดสีของแต่ละ tag
|
||||||
|
"todo-tree.highlights.defaultHighlight": {
|
||||||
|
"foreground": "black",
|
||||||
|
"type": "text",
|
||||||
|
"opacity": 50
|
||||||
|
},
|
||||||
|
|
||||||
|
"todo-tree.highlights.customHighlight": {
|
||||||
|
"TODO": {
|
||||||
|
"icon": "check",
|
||||||
|
"iconColour": "#FF8C00",
|
||||||
|
"foreground": "#FF8C00"
|
||||||
|
},
|
||||||
|
"FIXME": {
|
||||||
|
"icon": "alert",
|
||||||
|
"iconColour": "#FF2D00",
|
||||||
|
"foreground": "#FF2D00"
|
||||||
|
},
|
||||||
|
"BUG": {
|
||||||
|
"icon": "bug",
|
||||||
|
"iconColour": "#FF2D00",
|
||||||
|
"foreground": "#FF2D00"
|
||||||
|
},
|
||||||
|
"NOTE": {
|
||||||
|
"icon": "note",
|
||||||
|
"iconColour": "#3498DB",
|
||||||
|
"foreground": "#3498DB"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// GITLENS SETTINGS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// แสดง Git blame ใน status bar
|
||||||
|
"gitlens.statusBar.enabled": true,
|
||||||
|
|
||||||
|
// แสดง current line blame
|
||||||
|
"gitlens.currentLine.enabled": true,
|
||||||
|
|
||||||
|
// format ของ current line blame
|
||||||
|
"gitlens.currentLine.format": "${author}, ${agoOrDate}",
|
||||||
|
|
||||||
|
// แสดง codelens (ข้อมูล Git เหนือฟังก์ชัน)
|
||||||
|
"gitlens.codeLens.enabled": true,
|
||||||
|
|
||||||
|
// แสดง blame annotations
|
||||||
|
"gitlens.hovers.enabled": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// GIT SETTINGS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// เปิดใช้ Git
|
||||||
|
"git.enabled": true,
|
||||||
|
|
||||||
|
// auto fetch ทุก 180 วินาที
|
||||||
|
"git.autofetch": true,
|
||||||
|
"git.autofetchPeriod": 180,
|
||||||
|
|
||||||
|
// ยืนยันก่อน sync
|
||||||
|
"git.confirmSync": false,
|
||||||
|
|
||||||
|
// enable smart commit
|
||||||
|
"git.enableSmartCommit": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// PATH INTELLISENSE
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// mappings สำหรับ path aliases
|
||||||
|
"path-intellisense.mappings": {
|
||||||
|
"@": "${workspaceFolder}/src"
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// IMPORT COST
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// แสดงขนาดของ imports
|
||||||
|
"importCost.showCalculatingDecoration": true,
|
||||||
|
|
||||||
|
// เตือนเมื่อ import ใหญ่เกิน
|
||||||
|
"importCost.largePackageSize": 100,
|
||||||
|
"importCost.mediumPackageSize": 50,
|
||||||
|
"importCost.smallPackageSize": 20,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// JAVASCRIPT/TYPESCRIPT
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// auto imports
|
||||||
|
"javascript.suggest.autoImports": true,
|
||||||
|
"typescript.suggest.autoImports": true,
|
||||||
|
|
||||||
|
// update imports on file move
|
||||||
|
"javascript.updateImportsOnFileMove.enabled": "always",
|
||||||
|
"typescript.updateImportsOnFileMove.enabled": "always",
|
||||||
|
|
||||||
|
// inlay hints
|
||||||
|
"javascript.inlayHints.parameterNames.enabled": "all",
|
||||||
|
"typescript.inlayHints.parameterNames.enabled": "all",
|
||||||
|
"javascript.inlayHints.functionLikeReturnTypes.enabled": true,
|
||||||
|
"typescript.inlayHints.functionLikeReturnTypes.enabled": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// EMMET
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// เปิดใช้ Emmet
|
||||||
|
"emmet.includeLanguages": {
|
||||||
|
"javascript": "javascriptreact",
|
||||||
|
"typescript": "typescriptreact"
|
||||||
|
},
|
||||||
|
|
||||||
|
// trigger Emmet ด้วย Tab
|
||||||
|
"emmet.triggerExpansionOnTab": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// FILES
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// auto save
|
||||||
|
"files.autoSave": "onFocusChange",
|
||||||
|
|
||||||
|
// ลบ whitespace ท้ายบรรทัดเมื่อ save
|
||||||
|
"files.trimTrailingWhitespace": true,
|
||||||
|
|
||||||
|
// เพิ่มบรรทัดว่างท้ายไฟล์
|
||||||
|
"files.insertFinalNewline": true,
|
||||||
|
|
||||||
|
// encoding
|
||||||
|
"files.encoding": "utf8",
|
||||||
|
|
||||||
|
// line ending
|
||||||
|
"files.eol": "\n",
|
||||||
|
|
||||||
|
// exclude files/folders จาก explorer
|
||||||
|
"files.exclude": {
|
||||||
|
"**/.git": true,
|
||||||
|
"**/.DS_Store": true,
|
||||||
|
"**/node_modules": true,
|
||||||
|
"**/.next": true,
|
||||||
|
"**/dist": true,
|
||||||
|
"**/build": true,
|
||||||
|
"**/.turbo": true
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// SEARCH
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// exclude files/folders จากการค้นหา
|
||||||
|
"search.exclude": {
|
||||||
|
"**/node_modules": true,
|
||||||
|
"**/dist": true,
|
||||||
|
"**/build": true,
|
||||||
|
"**/.next": true,
|
||||||
|
"**/.turbo": true,
|
||||||
|
"**/coverage": true,
|
||||||
|
"**/.git": true,
|
||||||
|
"**/yarn.lock": true,
|
||||||
|
"**/package-lock.json": true,
|
||||||
|
"**/pnpm-lock.yaml": true
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// TERMINAL
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// font size ใน terminal
|
||||||
|
"terminal.integrated.fontSize": 13,
|
||||||
|
|
||||||
|
// line height ใน terminal
|
||||||
|
"terminal.integrated.lineHeight": 1.2,
|
||||||
|
|
||||||
|
// smooth scrolling
|
||||||
|
"terminal.integrated.smoothScrolling": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// WORKBENCH
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// icon theme
|
||||||
|
"workbench.iconTheme": "material-icon-theme",
|
||||||
|
|
||||||
|
// color theme (เลือกตามชอบ)
|
||||||
|
// "workbench.colorTheme": "One Dark Pro",
|
||||||
|
|
||||||
|
// แสดง activity bar
|
||||||
|
"workbench.activityBar.location": "default",
|
||||||
|
|
||||||
|
// tree indent
|
||||||
|
"workbench.tree.indent": 15,
|
||||||
|
|
||||||
|
// smooth scrolling
|
||||||
|
"workbench.list.smoothScrolling": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// EXPLORER
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// compact folders
|
||||||
|
"explorer.compactFolders": false,
|
||||||
|
|
||||||
|
// confirm before delete
|
||||||
|
"explorer.confirmDelete": true,
|
||||||
|
|
||||||
|
// confirm drag and drop
|
||||||
|
"explorer.confirmDragAndDrop": false,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// JEST
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// auto run tests
|
||||||
|
"jest.autoRun": "off",
|
||||||
|
|
||||||
|
// แสดง coverage overlay
|
||||||
|
"jest.showCoverageOnLoad": false,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// DOCKER
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// format docker files
|
||||||
|
"docker.languageserver.formatter.ignoreMultilineInstructions": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// YAML
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// schemas สำหรับ YAML validation
|
||||||
|
"yaml.schemas": {
|
||||||
|
"https://json.schemastore.org/github-workflow.json": ".github/workflows/*.{yml,yaml}",
|
||||||
|
"https://json.schemastore.org/github-action.json": "action.{yml,yaml}",
|
||||||
|
"https://json.schemastore.org/prettierrc.json": ".prettierrc.{yml,yaml}"
|
||||||
|
},
|
||||||
|
|
||||||
|
// format YAML files
|
||||||
|
"yaml.format.enable": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// CONSOLE NINJA
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// เปิดใช้ Console Ninja
|
||||||
|
"console-ninja.featureSet": "Community",
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// REST CLIENT
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// timeout สำหรับ HTTP requests (milliseconds)
|
||||||
|
"rest-client.timeoutinmilliseconds": 30000,
|
||||||
|
|
||||||
|
// แสดงเวลาที่ใช้ในการ request
|
||||||
|
"rest-client.showResponseInDifferentTab": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// SECURITY
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// trust workspace
|
||||||
|
"security.workspace.trust.untrustedFiles": "open",
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// PERFORMANCE
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
// จำกัดจำนวนไฟล์ที่เปิดพร้อมกัน
|
||||||
|
"files.maxMemoryForLargeFilesMB": 4096,
|
||||||
|
|
||||||
|
// ปิด crash reporter
|
||||||
|
"telemetry.telemetryLevel": "off"
|
||||||
}
|
}
|
||||||
718
nap-dms.lcbp3.code-workspace
Normal file
718
nap-dms.lcbp3.code-workspace
Normal file
@@ -0,0 +1,718 @@
|
|||||||
|
{
|
||||||
|
"folders": [+
|
||||||
|
{
|
||||||
|
"name": "🗓️ Documents",
|
||||||
|
"path": "./Documnets"
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "🔧 Backend",
|
||||||
|
"path": "./backend"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🎨 Frontend",
|
||||||
|
"path": "./frontend"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🎯 Root",
|
||||||
|
"path": "./"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"settings": {
|
||||||
|
// ========================================
|
||||||
|
// EDITOR SETTINGS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"editor.fontSize": 14,
|
||||||
|
"editor.lineHeight": 1.6,
|
||||||
|
"editor.rulers": [80, 120],
|
||||||
|
"editor.minimap.enabled": true,
|
||||||
|
"editor.renderWhitespace": "boundary",
|
||||||
|
"editor.bracketPairColorization.enabled": true,
|
||||||
|
"editor.guides.bracketPairs": "active",
|
||||||
|
"editor.smoothScrolling": true,
|
||||||
|
"editor.cursorBlinking": "smooth",
|
||||||
|
"editor.cursorSmoothCaretAnimation": "on",
|
||||||
|
"editor.wordWrap": "on",
|
||||||
|
"editor.linkedEditing": true,
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.formatOnPaste": true,
|
||||||
|
"editor.suggestSelection": "first",
|
||||||
|
"editor.tabSize": 2,
|
||||||
|
"editor.detectIndentation": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// DEFAULT FORMATTER
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
|
|
||||||
|
"[javascript]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[javascriptreact]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[typescript]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[typescriptreact]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[json]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[jsonc]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[html]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[css]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[scss]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"[markdown]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||||
|
"editor.wordWrap": "on"
|
||||||
|
},
|
||||||
|
"[yaml]": {
|
||||||
|
"editor.defaultFormatter": "redhat.vscode-yaml"
|
||||||
|
},
|
||||||
|
"[dockerfile]": {
|
||||||
|
"editor.defaultFormatter": "ms-azuretools.vscode-docker"
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// CODE ACTION ON SAVE
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll.eslint": "explicit",
|
||||||
|
"source.organizeImports": "explicit",
|
||||||
|
"source.addMissingImports": "explicit"
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// PRETTIER SETTINGS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"prettier.singleQuote": true,
|
||||||
|
"prettier.semi": true,
|
||||||
|
"prettier.tabWidth": 2,
|
||||||
|
"prettier.useTabs": false,
|
||||||
|
"prettier.trailingComma": "es5",
|
||||||
|
"prettier.printWidth": 80,
|
||||||
|
"prettier.arrowParens": "always",
|
||||||
|
"prettier.endOfLine": "lf",
|
||||||
|
"prettier.bracketSpacing": true,
|
||||||
|
"prettier.jsxSingleQuote": false,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// ESLINT SETTINGS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"eslint.enable": true,
|
||||||
|
"eslint.validate": [
|
||||||
|
"javascript",
|
||||||
|
"javascriptreact",
|
||||||
|
"typescript",
|
||||||
|
"typescriptreact"
|
||||||
|
],
|
||||||
|
"eslint.alwaysShowStatus": true,
|
||||||
|
"eslint.format.enable": false,
|
||||||
|
"eslint.workingDirectories": ["./backend", "./frontend"],
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// PATH INTELLISENSE - ไม่มี src folder
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"path-intellisense.mappings": {
|
||||||
|
// Backend paths (ไม่มี src)
|
||||||
|
"@backend": "${workspaceFolder:🔧 Backend}",
|
||||||
|
"@backend/*": "${workspaceFolder:🔧 Backend}/*",
|
||||||
|
"@modules": "${workspaceFolder:🔧 Backend}/modules",
|
||||||
|
"@common": "${workspaceFolder:🔧 Backend}/common",
|
||||||
|
"@config": "${workspaceFolder:🔧 Backend}/config",
|
||||||
|
"@utils": "${workspaceFolder:🔧 Backend}/utils",
|
||||||
|
"@entities": "${workspaceFolder:🔧 Backend}/entities",
|
||||||
|
"@dto": "${workspaceFolder:🔧 Backend}/dto",
|
||||||
|
|
||||||
|
// Frontend paths (ไม่มี src)
|
||||||
|
"@": "${workspaceFolder:🎨 Frontend}",
|
||||||
|
"@/*": "${workspaceFolder:🎨 Frontend}/*",
|
||||||
|
"@components": "${workspaceFolder:🎨 Frontend}/components",
|
||||||
|
"@hooks": "${workspaceFolder:🎨 Frontend}/hooks",
|
||||||
|
"@utils": "${workspaceFolder:🎨 Frontend}/utils",
|
||||||
|
"@lib": "${workspaceFolder:🎨 Frontend}/lib",
|
||||||
|
"@types": "${workspaceFolder:🎨 Frontend}/types",
|
||||||
|
"@api": "${workspaceFolder:🎨 Frontend}/api",
|
||||||
|
"@styles": "${workspaceFolder:🎨 Frontend}/styles",
|
||||||
|
"@assets": "${workspaceFolder:🎨 Frontend}/assets",
|
||||||
|
"@store": "${workspaceFolder:🎨 Frontend}/store",
|
||||||
|
"@contexts": "${workspaceFolder:🎨 Frontend}/contexts"
|
||||||
|
},
|
||||||
|
"path-intellisense.autoSlashAfterDirectory": true,
|
||||||
|
"path-intellisense.extensionOnImport": false,
|
||||||
|
"path-intellisense.showHiddenFiles": false,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// ERROR LENS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"errorLens.enabled": true,
|
||||||
|
"errorLens.enabledDiagnosticLevels": ["error", "warning"],
|
||||||
|
"errorLens.padding": "0 1ch",
|
||||||
|
"errorLens.messageTemplate": "$message",
|
||||||
|
"errorLens.messageEnabled": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// TAILWIND CSS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"tailwindCSS.emmetCompletions": true,
|
||||||
|
"tailwindCSS.colorDecorators": true,
|
||||||
|
"tailwindCSS.suggestions": true,
|
||||||
|
"tailwindCSS.includeLanguages": {
|
||||||
|
"typescript": "javascript",
|
||||||
|
"typescriptreact": "javascript"
|
||||||
|
},
|
||||||
|
"tailwindCSS.experimental.classRegex": [
|
||||||
|
["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"],
|
||||||
|
["cn\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"],
|
||||||
|
"class[Nn]ame\\s*=\\s*['\"`]([^'\"`]*)['\"`]"
|
||||||
|
],
|
||||||
|
|
||||||
|
// ระบุที่ตั้งของ tailwind.config (ถ้ามี)
|
||||||
|
"tailwindCSS.experimental.configFile": {
|
||||||
|
"frontend/tailwind.config.js": "frontend/**",
|
||||||
|
"frontend/tailwind.config.ts": "frontend/**"
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// HEADWIND
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"headwind.runOnSave": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// AUTO CLOSE/RENAME TAG
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"auto-close-tag.activationOnLanguage": [
|
||||||
|
"html",
|
||||||
|
"xml",
|
||||||
|
"javascript",
|
||||||
|
"javascriptreact",
|
||||||
|
"typescript",
|
||||||
|
"typescriptreact"
|
||||||
|
],
|
||||||
|
|
||||||
|
"auto-rename-tag.activationOnLanguage": [
|
||||||
|
"html",
|
||||||
|
"xml",
|
||||||
|
"javascript",
|
||||||
|
"javascriptreact",
|
||||||
|
"typescript",
|
||||||
|
"typescriptreact"
|
||||||
|
],
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// BETTER COMMENTS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"better-comments.tags": [
|
||||||
|
{
|
||||||
|
"tag": "!",
|
||||||
|
"color": "#FF2D00",
|
||||||
|
"strikethrough": false,
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"bold": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "?",
|
||||||
|
"color": "#3498DB",
|
||||||
|
"strikethrough": false,
|
||||||
|
"backgroundColor": "transparent"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "//",
|
||||||
|
"color": "#474747",
|
||||||
|
"strikethrough": true,
|
||||||
|
"backgroundColor": "transparent"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "todo",
|
||||||
|
"color": "#FF8C00",
|
||||||
|
"strikethrough": false,
|
||||||
|
"backgroundColor": "transparent"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "*",
|
||||||
|
"color": "#98C379",
|
||||||
|
"strikethrough": false,
|
||||||
|
"backgroundColor": "transparent"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// TODO TREE
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"todo-tree.general.tags": ["TODO", "FIXME", "BUG", "HACK", "NOTE", "XXX"],
|
||||||
|
"todo-tree.highlights.enabled": true,
|
||||||
|
"todo-tree.tree.showInExplorer": true,
|
||||||
|
"todo-tree.filtering.excludeGlobs": [
|
||||||
|
"**/node_modules",
|
||||||
|
"**/dist",
|
||||||
|
"**/build",
|
||||||
|
"**/.next"
|
||||||
|
],
|
||||||
|
"todo-tree.highlights.customHighlight": {
|
||||||
|
"TODO": {
|
||||||
|
"icon": "check",
|
||||||
|
"iconColour": "#FF8C00",
|
||||||
|
"foreground": "#FF8C00"
|
||||||
|
},
|
||||||
|
"FIXME": {
|
||||||
|
"icon": "alert",
|
||||||
|
"iconColour": "#FF2D00",
|
||||||
|
"foreground": "#FF2D00"
|
||||||
|
},
|
||||||
|
"BUG": {
|
||||||
|
"icon": "bug",
|
||||||
|
"iconColour": "#FF2D00",
|
||||||
|
"foreground": "#FF2D00"
|
||||||
|
},
|
||||||
|
"NOTE": {
|
||||||
|
"icon": "note",
|
||||||
|
"iconColour": "#3498DB",
|
||||||
|
"foreground": "#3498DB"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// GITLENS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"gitlens.statusBar.enabled": true,
|
||||||
|
"gitlens.currentLine.enabled": true,
|
||||||
|
"gitlens.currentLine.format": "${author}, ${agoOrDate}",
|
||||||
|
"gitlens.codeLens.enabled": true,
|
||||||
|
"gitlens.codeLens.authors.enabled": false,
|
||||||
|
"gitlens.hovers.enabled": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// GIT
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"git.enabled": true,
|
||||||
|
"git.autofetch": true,
|
||||||
|
"git.autofetchPeriod": 180,
|
||||||
|
"git.confirmSync": false,
|
||||||
|
"git.enableSmartCommit": true,
|
||||||
|
"git.openRepositoryInParentFolders": "always",
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// IMPORT COST
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"importCost.showCalculatingDecoration": true,
|
||||||
|
"importCost.largePackageSize": 100,
|
||||||
|
"importCost.mediumPackageSize": 50,
|
||||||
|
"importCost.smallPackageSize": 20,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// JAVASCRIPT/TYPESCRIPT
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"javascript.suggest.autoImports": true,
|
||||||
|
"javascript.updateImportsOnFileMove.enabled": "always",
|
||||||
|
"javascript.inlayHints.parameterNames.enabled": "all",
|
||||||
|
"javascript.inlayHints.functionLikeReturnTypes.enabled": true,
|
||||||
|
"javascript.preferences.importModuleSpecifier": "relative",
|
||||||
|
|
||||||
|
"typescript.suggest.autoImports": true,
|
||||||
|
"typescript.updateImportsOnFileMove.enabled": "always",
|
||||||
|
"typescript.inlayHints.parameterNames.enabled": "all",
|
||||||
|
"typescript.inlayHints.functionLikeReturnTypes.enabled": true,
|
||||||
|
"typescript.preferences.importModuleSpecifier": "relative",
|
||||||
|
"typescript.tsdk": "node_modules/typescript/lib",
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// EMMET
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"emmet.includeLanguages": {
|
||||||
|
"javascript": "javascriptreact",
|
||||||
|
"typescript": "typescriptreact"
|
||||||
|
},
|
||||||
|
"emmet.triggerExpansionOnTab": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// FILES
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"files.autoSave": "onFocusChange",
|
||||||
|
"files.trimTrailingWhitespace": true,
|
||||||
|
"files.insertFinalNewline": true,
|
||||||
|
"files.encoding": "utf8",
|
||||||
|
"files.eol": "\n",
|
||||||
|
"files.associations": {
|
||||||
|
"*.css": "tailwindcss",
|
||||||
|
".env*": "dotenv"
|
||||||
|
},
|
||||||
|
|
||||||
|
"files.exclude": {
|
||||||
|
"**/.git": true,
|
||||||
|
"**/.DS_Store": true,
|
||||||
|
"**/node_modules": true,
|
||||||
|
"**/.next": true,
|
||||||
|
"**/dist": true,
|
||||||
|
"**/build": true,
|
||||||
|
"**/.turbo": true,
|
||||||
|
"**/coverage": true
|
||||||
|
},
|
||||||
|
|
||||||
|
"files.watcherExclude": {
|
||||||
|
"**/.git/objects/**": true,
|
||||||
|
"**/node_modules/**": true,
|
||||||
|
"**/.next/**": true,
|
||||||
|
"**/dist/**": true,
|
||||||
|
"**/build/**": true
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// SEARCH
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"search.exclude": {
|
||||||
|
"**/node_modules": true,
|
||||||
|
"**/dist": true,
|
||||||
|
"**/build": true,
|
||||||
|
"**/.next": true,
|
||||||
|
"**/coverage": true,
|
||||||
|
"**/yarn.lock": true,
|
||||||
|
"**/package-lock.json": true,
|
||||||
|
"**/pnpm-lock.yaml": true
|
||||||
|
},
|
||||||
|
"search.useIgnoreFiles": true,
|
||||||
|
"search.smartCase": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// TERMINAL
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"terminal.integrated.fontSize": 13,
|
||||||
|
"terminal.integrated.lineHeight": 1.2,
|
||||||
|
"terminal.integrated.smoothScrolling": true,
|
||||||
|
"terminal.integrated.defaultProfile.windows": "Git Bash",
|
||||||
|
"terminal.integrated.cwd": "${workspaceFolder}",
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// WORKBENCH
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"workbench.iconTheme": "material-icon-theme",
|
||||||
|
"workbench.activityBar.location": "default",
|
||||||
|
"workbench.tree.indent": 15,
|
||||||
|
"workbench.list.smoothScrolling": true,
|
||||||
|
"workbench.editor.enablePreview": false,
|
||||||
|
"workbench.startupEditor": "welcomePage",
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// EXPLORER
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"explorer.compactFolders": false,
|
||||||
|
"explorer.confirmDelete": true,
|
||||||
|
"explorer.confirmDragAndDrop": false,
|
||||||
|
"explorer.sortOrder": "type",
|
||||||
|
"explorer.fileNesting.enabled": true,
|
||||||
|
"explorer.fileNesting.expand": false,
|
||||||
|
"explorer.fileNesting.patterns": {
|
||||||
|
"package.json": "package-lock.json, yarn.lock, pnpm-lock.yaml, .npmrc",
|
||||||
|
"tsconfig.json": "tsconfig.*.json",
|
||||||
|
".env": ".env.*",
|
||||||
|
"docker-compose.yml": "docker-compose.*.yml, Dockerfile*",
|
||||||
|
"*.ts": "${capture}.test.ts, ${capture}.spec.ts",
|
||||||
|
"*.tsx": "${capture}.test.tsx, ${capture}.spec.tsx, ${capture}.module.css",
|
||||||
|
"*.js": "${capture}.test.js, ${capture}.spec.js",
|
||||||
|
"*.jsx": "${capture}.test.jsx, ${capture}.spec.jsx"
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// JEST
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"jest.autoRun": "off",
|
||||||
|
"jest.showCoverageOnLoad": false,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// DOCKER
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"docker.languageserver.formatter.ignoreMultilineInstructions": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// YAML
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"yaml.schemas": {
|
||||||
|
"https://json.schemastore.org/github-workflow.json": ".github/workflows/*.{yml,yaml}",
|
||||||
|
"https://json.schemastore.org/docker-compose.json": "docker-compose*.{yml,yaml}"
|
||||||
|
},
|
||||||
|
"yaml.format.enable": true,
|
||||||
|
"yaml.validate": true,
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// REST CLIENT
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"rest-client.timeoutinmilliseconds": 30000,
|
||||||
|
"rest-client.showResponseInDifferentTab": true,
|
||||||
|
"rest-client.environmentVariables": {
|
||||||
|
"$shared": {
|
||||||
|
"apiUrl": "http://localhost:3000"
|
||||||
|
},
|
||||||
|
"development": {
|
||||||
|
"apiUrl": "http://localhost:3000"
|
||||||
|
},
|
||||||
|
"production": {
|
||||||
|
"apiUrl": "https://api.yourdomain.com"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// MATERIAL ICON THEME
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"material-icon-theme.folders.theme": "specific",
|
||||||
|
"material-icon-theme.folders.associations": {
|
||||||
|
"hooks": "Custom",
|
||||||
|
"utils": "Helper",
|
||||||
|
"lib": "Library",
|
||||||
|
"components": "Components",
|
||||||
|
"api": "Api",
|
||||||
|
"dto": "Class",
|
||||||
|
"entities": "Database",
|
||||||
|
"modules": "Folder-Controllers",
|
||||||
|
"common": "Shared",
|
||||||
|
"config": "Config"
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// PERFORMANCE
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"files.maxMemoryForLargeFilesMB": 4096,
|
||||||
|
"telemetry.telemetryLevel": "off",
|
||||||
|
"security.workspace.trust.untrustedFiles": "open"
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// LAUNCH CONFIGURATIONS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"launch": {
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "🔧 Debug Backend",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"runtimeExecutable": "npm",
|
||||||
|
"runtimeArgs": ["run", "start:debug"],
|
||||||
|
"cwd": "${workspaceFolder:🔧 Backend}",
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"internalConsoleOptions": "neverOpen",
|
||||||
|
"skipFiles": ["<node_internals>/**"],
|
||||||
|
"sourceMaps": true,
|
||||||
|
"restart": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🎨 Debug Frontend",
|
||||||
|
"type": "chrome",
|
||||||
|
"request": "launch",
|
||||||
|
"url": "http://localhost:3000",
|
||||||
|
"webRoot": "${workspaceFolder:🎨 Frontend}",
|
||||||
|
"sourceMapPathOverrides": {
|
||||||
|
"webpack:///./*": "${webRoot}/*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🧪 Debug Jest Tests (Backend)",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"runtimeExecutable": "npm",
|
||||||
|
"runtimeArgs": ["run", "test:debug"],
|
||||||
|
"cwd": "${workspaceFolder:🔧 Backend}",
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"internalConsoleOptions": "neverOpen"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "🧪 Debug Jest Tests (Frontend)",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"runtimeExecutable": "npm",
|
||||||
|
"runtimeArgs": ["run", "test:debug"],
|
||||||
|
"cwd": "${workspaceFolder:🎨 Frontend}",
|
||||||
|
"console": "integratedTerminal",
|
||||||
|
"internalConsoleOptions": "neverOpen"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"compounds": [
|
||||||
|
{
|
||||||
|
"name": "🚀 Debug Full Stack",
|
||||||
|
"configurations": ["🔧 Debug Backend", "🎨 Debug Frontend"],
|
||||||
|
"stopAll": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// TASKS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"tasks": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"label": "🔧 Start Backend Dev",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "start:dev",
|
||||||
|
"path": "backend/",
|
||||||
|
"problemMatcher": [],
|
||||||
|
"presentation": {
|
||||||
|
"reveal": "always",
|
||||||
|
"panel": "dedicated",
|
||||||
|
"group": "dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "🎨 Start Frontend Dev",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "dev",
|
||||||
|
"path": "frontend/",
|
||||||
|
"problemMatcher": [],
|
||||||
|
"presentation": {
|
||||||
|
"reveal": "always",
|
||||||
|
"panel": "dedicated",
|
||||||
|
"group": "dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "🚀 Start Full Stack",
|
||||||
|
"dependsOn": ["🔧 Start Backend Dev", "🎨 Start Frontend Dev"],
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "🧪 Run Backend Tests",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "test",
|
||||||
|
"path": "backend/",
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "🧪 Run Frontend Tests",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "test",
|
||||||
|
"path": "frontend/",
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "🏗️ Build Backend",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "build",
|
||||||
|
"path": "backend/",
|
||||||
|
"problemMatcher": ["$tsc"],
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "🏗️ Build Frontend",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "build",
|
||||||
|
"path": "frontend/",
|
||||||
|
"problemMatcher": ["$tsc"],
|
||||||
|
"group": {
|
||||||
|
"kind": "build",
|
||||||
|
"isDefault": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "🔍 Lint Backend",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "lint",
|
||||||
|
"path": "backend/",
|
||||||
|
"problemMatcher": ["$eslint-stylish"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "🔍 Lint Frontend",
|
||||||
|
"type": "npm",
|
||||||
|
"script": "lint",
|
||||||
|
"path": "frontend/",
|
||||||
|
"problemMatcher": ["$eslint-stylish"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "🐳 Docker Compose Up",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "docker-compose up -d",
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "🐳 Docker Compose Down",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "docker-compose down",
|
||||||
|
"problemMatcher": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
// ========================================
|
||||||
|
// EXTENSIONS
|
||||||
|
// ========================================
|
||||||
|
|
||||||
|
"extensions": {
|
||||||
|
"recommendations": [
|
||||||
|
"dbaeumer.vscode-eslint",
|
||||||
|
"esbenp.prettier-vscode",
|
||||||
|
"usernamehw.errorlens",
|
||||||
|
"yoavbls.pretty-typescript-errors",
|
||||||
|
"wix.vscode-import-cost",
|
||||||
|
"aaron-bond.better-comments",
|
||||||
|
"gruntfuggly.todo-tree",
|
||||||
|
"ashinzekene.nestjs",
|
||||||
|
"dsznajder.es7-react-js-snippets",
|
||||||
|
"orta.vscode-jest",
|
||||||
|
"bradlc.vscode-tailwindcss",
|
||||||
|
"heybourn.headwind",
|
||||||
|
"prisma.prisma",
|
||||||
|
"rangav.vscode-thunder-client",
|
||||||
|
"humao.rest-client",
|
||||||
|
"formulahendry.auto-close-tag",
|
||||||
|
"formulahendry.auto-rename-tag",
|
||||||
|
"ms-azuretools.vscode-docker",
|
||||||
|
"mtxr.sqltools",
|
||||||
|
"mongodb.mongodb-vscode",
|
||||||
|
"redhat.vscode-yaml",
|
||||||
|
"mikestead.dotenv",
|
||||||
|
"editorconfig.editorconfig",
|
||||||
|
"eamodio.gitlens",
|
||||||
|
"mhutchie.git-graph",
|
||||||
|
"vivaxy.vscode-conventional-commits",
|
||||||
|
"christian-kohler.path-intellisense",
|
||||||
|
"christian-kohler.npm-intellisense",
|
||||||
|
"pranaygp.vscode-css-peek",
|
||||||
|
"alefragnani.bookmarks",
|
||||||
|
"chakrounanas.turbo-console-log",
|
||||||
|
"wallabyjs.console-ninja",
|
||||||
|
"pkief.material-icon-theme",
|
||||||
|
"github.copilot"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user