Compare commits

..

3 commits

Author SHA1 Message Date
e335601ab8 updated login 2025-04-06 15:42:57 -05:00
dfc0f719e6 added typescript 2025-04-06 15:42:36 -05:00
b764411d1a idea update 2025-04-06 15:41:44 -05:00
9 changed files with 319 additions and 83 deletions

8
.idea/modules.xml generated Normal file
View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/web.iml" filepath="$PROJECT_DIR$/.idea/web.iml" />
</modules>
</component>
</project>

6
.idea/prettier.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="PrettierConfiguration">
<option name="myConfigurationMode" value="AUTOMATIC" />
</component>
</project>

8
.idea/web.iml generated Normal file
View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

69
.idea/workspace.xml generated
View file

@ -6,7 +6,11 @@
<component name="ChangeListManager">
<list default="true" id="5e320804-68c9-4504-97d5-d421de3438b2" name="Changes" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/pages/lists/[id].vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/lists/[id].vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/nuxt.config.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/nuxt.config.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/package-lock.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/package.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/package.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/pages/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/pages/index.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/tsconfig.json" beforeDir="false" afterPath="$PROJECT_DIR$/src/tsconfig.json" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -27,6 +31,9 @@
<component name="FormatOnSaveOptions">
<option name="myRunOnSave" value="true" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="MacroExpansionManager">
<option name="directoryName" value="cvh2jllu" />
</component>
@ -36,6 +43,13 @@
<component name="OptimizeOnSaveOptions">
<option name="myRunOnSave" value="true" />
</component>
<component name="PhpWorkspaceProjectConfiguration" interpreter_name="/usr/bin/php" />
<component name="ProblemsViewState">
<option name="selectedTabId" value="CurrentFile" />
</component>
<component name="ProjectColorInfo"><![CDATA[{
"associatedIndex": 8
}]]></component>
<component name="ProjectId" id="2K1xoABBc3o8XBi4orGtOrB9Dxn" />
<component name="ProjectLevelVcsManager">
<ConfirmationsSetting value="1" id="Add" />
@ -44,28 +58,30 @@
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
&quot;code.cleanup.on.save&quot;: &quot;true&quot;,
&quot;last_opened_file_path&quot;: &quot;/home/tiradoe/Projects/movie-night/movie-night-web/src/package.json&quot;,
&quot;list.type.of.created.stylesheet&quot;: &quot;CSS&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.standard&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.standard&quot;: &quot;&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;prettierjs.PrettierConfiguration.Package&quot;: &quot;/home/tiradoe/Projects/movie-night/movie-night-web/node_modules/prettier&quot;,
&quot;rearrange.code.on.save&quot;: &quot;true&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;settings.javascript.prettier&quot;,
&quot;ts.external.directory.path&quot;: &quot;/home/tiradoe/.local/share/JetBrains/Toolbox/apps/PhpStorm/ch-0/223.8214.64/plugins/javascript-impl/jsLanguageServicesImpl/external&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"RunOnceActivity.OpenProjectViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.git.unshallow": "true",
"WebServerToolWindowFactoryState": "false",
"code.cleanup.on.save": "true",
"git-widget-placeholder": "main",
"last_opened_file_path": "/home/tiradoe/Projects/movie-night/web",
"list.type.of.created.stylesheet": "CSS",
"node.js.detected.package.eslint": "true",
"node.js.detected.package.standard": "true",
"node.js.detected.package.tslint": "true",
"node.js.selected.package.eslint": "(autodetect)",
"node.js.selected.package.standard": "",
"node.js.selected.package.tslint": "(autodetect)",
"nodejs_package_manager_path": "npm",
"prettierjs.PrettierConfiguration.Package": "/home/tiradoe/Projects/movie-night/web/src/node_modules/prettier",
"rearrange.code.on.save": "true",
"settings.editor.selected.configurable": "settings.javascript.prettier",
"ts.external.directory.path": "/home/tiradoe/Projects/movie-night/web/src/node_modules/typescript/lib",
"vue.rearranger.settings.migration": "true"
}
}</component>
}]]></component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/components" />
@ -89,6 +105,14 @@
<method v="2" />
</configuration>
</component>
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-js-predefined-d6986cc7102b-1632447f56bf-JavaScript-PS-243.26053.13" />
<option value="bundled-php-predefined-a98d8de5180a-1ec7b7818973-com.jetbrains.php.sharedIndexes-PS-243.26053.13" />
</set>
</attachedChunks>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
@ -106,6 +130,7 @@
<workItem from="1673397538637" duration="47416000" />
<workItem from="1673508732689" duration="1316000" />
<workItem from="1673547794038" duration="2346000" />
<workItem from="1743904898331" duration="4240000" />
</task>
<servers />
</component>

View file

@ -1,28 +1,34 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
app: {
head: {
charset: 'utf-8',
viewport: "width=device-width,initial-scale=1.0",
title: "Cinema Corona",
link: [
{rel: "icon", type: "image/png", href: "/favicon.png"}
],
},
app: {
head: {
charset: "utf-8",
viewport: "width=device-width,initial-scale=1.0",
title: "Cinema Corona",
link: [{ rel: "icon", type: "image/png", href: "/favicon.png" }],
},
modules: ["@nuxtjs/tailwindcss"],
css: ["@/assets/css/main.css"],
components: {
dirs: [
'~/components',
'~/components/modal-content',
'~/components/forms',
'~/components/admin',
]
},
modules: ["@nuxtjs/tailwindcss"],
css: ["@/assets/css/main.css"],
compatibilityDate: "2025-04-05",
components: {
dirs: [
"~/components",
"~/components/modal-content",
"~/components/forms",
"~/components/admin",
],
},
runtimeConfig: {
public: {
apiURL: process.env.API_URL || "http://localhost:8000/api",
},
runtimeConfig: {
public: {
apiURL: process.env.API_URL || "http://localhost:8000/api"
}
}
})
},
typescript: {
typeCheck: true,
},
});

157
src/package-lock.json generated
View file

@ -4,15 +4,17 @@
"requires": true,
"packages": {
"": {
"name": "src",
"hasInstallScript": true,
"dependencies": {
"lazysizes": "^5.3.2"
},
"devDependencies": {
"@nuxtjs/tailwindcss": "^6.2.0",
"@types/node": "^22.14.0",
"nuxt": "3.x",
"prettier": "3.x"
"prettier": "3.x",
"typescript": "^5.8.3",
"vue-tsc": "^2.2.8"
}
},
"node_modules/@alloc/quick-lru": {
@ -2743,6 +2745,16 @@
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
"dev": true
},
"node_modules/@types/node": {
"version": "22.14.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz",
"integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==",
"dev": true,
"license": "MIT",
"dependencies": {
"undici-types": "~6.21.0"
}
},
"node_modules/@types/parse-path": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/@types/parse-path/-/parse-path-7.0.3.tgz",
@ -2846,6 +2858,35 @@
"vue": "^3.0.0"
}
},
"node_modules/@volar/language-core": {
"version": "2.4.12",
"resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.12.tgz",
"integrity": "sha512-RLrFdXEaQBWfSnYGVxvR2WrO6Bub0unkdHYIdC31HzIEqATIuuhRRzYu76iGPZ6OtA4Au1SnW0ZwIqPP217YhA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@volar/source-map": "2.4.12"
}
},
"node_modules/@volar/source-map": {
"version": "2.4.12",
"resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.12.tgz",
"integrity": "sha512-bUFIKvn2U0AWojOaqf63ER0N/iHIBYZPpNGogfLPQ68F5Eet6FnLlyho7BS0y2HJ1jFhSif7AcuTx1TqsCzRzw==",
"dev": true,
"license": "MIT"
},
"node_modules/@volar/typescript": {
"version": "2.4.12",
"resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.12.tgz",
"integrity": "sha512-HJB73OTJDgPc80K30wxi3if4fSsZZAOScbj2fcicMuOPoOkcf9NNAINb33o+DzhBdF9xTKC1gnPmIRDous5S0g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@volar/language-core": "2.4.12",
"path-browserify": "^1.0.1",
"vscode-uri": "^3.0.8"
}
},
"node_modules/@vue-macros/common": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-1.16.1.tgz",
@ -3001,6 +3042,17 @@
"@vue/shared": "3.5.13"
}
},
"node_modules/@vue/compiler-vue2": {
"version": "2.7.16",
"resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz",
"integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==",
"dev": true,
"license": "MIT",
"dependencies": {
"de-indent": "^1.0.2",
"he": "^1.2.0"
}
},
"node_modules/@vue/devtools-api": {
"version": "6.6.4",
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
@ -3063,6 +3115,31 @@
"rfdc": "^1.4.1"
}
},
"node_modules/@vue/language-core": {
"version": "2.2.8",
"resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.8.tgz",
"integrity": "sha512-rrzB0wPGBvcwaSNRriVWdNAbHQWSf0NlGqgKHK5mEkXpefjUlVRP62u03KvwZpvKVjRnBIQ/Lwre+Mx9N6juUQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@volar/language-core": "~2.4.11",
"@vue/compiler-dom": "^3.5.0",
"@vue/compiler-vue2": "^2.7.16",
"@vue/shared": "^3.5.0",
"alien-signals": "^1.0.3",
"minimatch": "^9.0.3",
"muggle-string": "^0.4.1",
"path-browserify": "^1.0.1"
},
"peerDependencies": {
"typescript": "*"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/@vue/reactivity": {
"version": "3.5.13",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz",
@ -3177,6 +3254,13 @@
"node": ">= 14"
}
},
"node_modules/alien-signals": {
"version": "1.0.13",
"resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-1.0.13.tgz",
"integrity": "sha512-OGj9yyTnJEttvzhTUWuscOvtqxq5vrhF7vL9oS0xJ2mK0ItPYP1/y+vCFebfxoEyAz0++1AIwJ5CMr+Fk3nDmg==",
"dev": true,
"license": "MIT"
},
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@ -4271,6 +4355,13 @@
}
}
},
"node_modules/de-indent": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
"integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
"dev": true,
"license": "MIT"
},
"node_modules/debug": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
@ -5101,6 +5192,16 @@
"node": ">= 0.4"
}
},
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true,
"license": "MIT",
"bin": {
"he": "bin/he"
}
},
"node_modules/hookable": {
"version": "5.5.3",
"resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
@ -6232,6 +6333,13 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
},
"node_modules/muggle-string": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz",
"integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==",
"dev": true,
"license": "MIT"
},
"node_modules/mz": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
@ -6949,6 +7057,13 @@
"node": ">= 0.8"
}
},
"node_modules/path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
"dev": true,
"license": "MIT"
},
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
@ -9211,6 +9326,20 @@
"node": ">= 0.6"
}
},
"node_modules/typescript": {
"version": "5.8.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz",
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
"dev": true,
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=14.17"
}
},
"node_modules/ufo": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
@ -9241,6 +9370,13 @@
"unplugin": "^2.1.0"
}
},
"node_modules/undici-types": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
"dev": true,
"license": "MIT"
},
"node_modules/unenv": {
"version": "2.0.0-rc.15",
"resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.15.tgz",
@ -10153,6 +10289,23 @@
"vue": "^3.2.0"
}
},
"node_modules/vue-tsc": {
"version": "2.2.8",
"resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.2.8.tgz",
"integrity": "sha512-jBYKBNFADTN+L+MdesNX/TB3XuDSyaWynKMDgR+yCSln0GQ9Tfb7JS2lr46s2LiFUT1WsmfWsSvIElyxzOPqcQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@volar/typescript": "~2.4.11",
"@vue/language-core": "2.2.8"
},
"bin": {
"vue-tsc": "bin/vue-tsc.js"
},
"peerDependencies": {
"typescript": ">=5.0.0"
}
},
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",

View file

@ -9,8 +9,11 @@
},
"devDependencies": {
"@nuxtjs/tailwindcss": "^6.2.0",
"@types/node": "^22.14.0",
"nuxt": "3.x",
"prettier": "3.x"
"prettier": "3.x",
"typescript": "^5.8.3",
"vue-tsc": "^2.2.8"
},
"dependencies": {
"lazysizes": "^5.3.2"

View file

@ -2,31 +2,53 @@
<div>
<div class="p-5 movie-card neon-border">
<h3 class="bloodseeker mb-5">Login</h3>
<form class="grid p-1 p-sm-5" method="post" name="login-form" v-on:keyup.enter="login">
<form
class="grid p-1 p-sm-5"
method="post"
name="login-form"
v-on:keyup.enter="login"
>
<div class="mx-auto">
<!-- USERNAME -->
<div class="row pb-5">
<label class="fw-bold pb-1 mx-0 px-0" for="username">Username</label><br/>
<input id="username" class="p-2 rounded" placeholder="username" type="text"/>
<label class="fw-bold pb-1 mx-0 px-0" for="username">Username</label
><br />
<input
id="username"
class="p-2 rounded"
placeholder="username"
type="text"
/>
</div>
<!-- PASSWORD -->
<div class="row">
<label class="fw-bold pb-1 px-0" for="password">Password</label><br/>
<input id="password" class="p-2 rounded" placeholder="password" type="password"/>
<label class="fw-bold pb-1 px-0" for="password">Password</label
><br />
<input
id="password"
class="p-2 rounded"
placeholder="password"
type="password"
/>
</div>
</div>
<!-- SUBMIT BUTTON -->
<div class="mx-auto">
<button class="btn my-5 p-3 rounded" type="button" @click="login">Submit</button>
<button class="btn my-5 p-3 rounded" type="button" @click="login">
Submit
</button>
</div>
<div class="mx-auto pt-5">
<img id="password-incorrect" alt="password-incorrect" class="hidden"
src="https://i.imgur.com/6pXxxyZ.gif"/>
<img
id="password-incorrect"
alt="password-incorrect"
class="hidden"
src="https://i.imgur.com/6pXxxyZ.gif"
/>
</div>
</form>
</div>
</div>
</template>
@ -36,29 +58,31 @@ export default {
methods: {
login: async function (e) {
const config = useRuntimeConfig();
e.preventDefault()
document.getElementById("password-incorrect").classList.add("hidden")
e.preventDefault();
document.getElementById("password-incorrect").classList.add("hidden");
let username = document.getElementById("username").value;
let password = document.getElementById("password").value;
let response = await fetch(`${config.public.apiURL}/auth/login`, {
let response = await fetch(`${config.public.apiURL}/auth/login/`, {
method: "POST",
body: JSON.stringify({username: username, password: password}),
headers: {"Content-type": "application/json"}
body: JSON.stringify({ username: username, password: password }),
headers: { "Content-type": "application/json" },
})
.then(response => {
if (!response.ok) {
document.getElementById("password-incorrect").classList.remove("hidden")
return false;
}
.then((response) => {
if (!response.ok) {
document
.getElementById("password-incorrect")
.classList.remove("hidden");
return false;
}
return response.json();
return response.json();
//window.location = "/admin"
})
.catch(err => {
return false
})
//window.location = "/admin"
})
.catch((err) => {
return false;
});
if (response) {
let token = useCookie("token", {
@ -66,19 +90,17 @@ export default {
});
token.value = response.token;
return navigateTo("/admin")
return navigateTo("/admin");
}
}
},
},
mounted() {
let token = useCookie("token");
if (token.value) {
navigateTo("/admin")
navigateTo("/admin");
}
}
}
},
};
</script>
<style scoped>
</style>
<style scoped></style>

View file

@ -1,4 +1,9 @@
{
// https://nuxt.com/docs/guide/concepts/typescript
"extends": "./.nuxt/tsconfig.json"
"extends": "./.nuxt/tsconfig.json",
"compilerOptions": {
"types": [
"node"
]
}
}