Recreated apps to fix paths

This commit is contained in:
Viswamedha Nalabotu 2025-11-10 15:07:53 +00:00
parent 1f85bbcf7d
commit 5799882c62
46 changed files with 1120 additions and 2126 deletions

1
.gitignore vendored
View file

@ -45,4 +45,3 @@ Thumbs.db
vite.config.*.timestamp* vite.config.*.timestamp*
vitest.config.*.timestamp* vitest.config.*.timestamp*
test-output

View file

@ -19,7 +19,7 @@ CI:
# Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud # Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud
# - npx nx-cloud record -- echo Hello World # - npx nx-cloud record -- echo Hello World
- npx nx run-many -t lint test build typecheck - npx nx run-many -t lint test build
# Nx Cloud recommends fixes for failures to help you get CI green faster. Learn more: https://nx.dev/ci/features/self-healing-ci # Nx Cloud recommends fixes for failures to help you get CI green faster. Learn more: https://nx.dev/ci/features/self-healing-ci
after_script: after_script:

View file

@ -2,7 +2,6 @@
"recommendations": [ "recommendations": [
"nrwl.angular-console", "nrwl.angular-console",
"esbenp.prettier-vscode", "esbenp.prettier-vscode",
"dbaeumer.vscode-eslint", "dbaeumer.vscode-eslint"
"firsttris.vscode-jest-runner"
] ]
} }

6
.vscode/launch.json vendored
View file

@ -4,9 +4,9 @@
{ {
"type": "node", "type": "node",
"request": "launch", "request": "launch",
"name": "Debug @web/api with Nx", "name": "Debug api with Nx",
"runtimeExecutable": "npx", "runtimeExecutable": "npx",
"runtimeArgs": ["nx", "serve", "@web/api"], "runtimeArgs": ["nx", "serve", "api"],
"env": { "env": {
"NODE_OPTIONS": "--inspect=9229" "NODE_OPTIONS": "--inspect=9229"
}, },
@ -15,7 +15,7 @@
"skipFiles": ["<node_internals>/**"], "skipFiles": ["<node_internals>/**"],
"sourceMaps": true, "sourceMaps": true,
"outFiles": [ "outFiles": [
"${workspaceFolder}/api/dist/**/*.(m|c|)js", "${workspaceFolder}/apps/api/dist/**/*.(m|c|)js",
"!**/node_modules/**" "!**/node_modules/**"
] ]
} }

View file

@ -1,22 +0,0 @@
{
"jsc": {
"target": "es2017",
"parser": {
"syntax": "typescript",
"decorators": true,
"dynamicImport": true
},
"transform": {
"decoratorMetadata": true,
"legacyDecorator": true
},
"keepClassNames": true,
"externalHelpers": true,
"loose": true
},
"module": {
"type": "es6"
},
"sourceMaps": true,
"exclude": []
}

View file

@ -1,3 +0,0 @@
import baseConfig from '../eslint.config.mjs';
export default [...baseConfig];

View file

@ -1,24 +0,0 @@
/* eslint-disable */
import { readFileSync } from 'fs';
// Reading the SWC compilation config for the spec files
const swcJestConfig = JSON.parse(
readFileSync(`${__dirname}/.spec.swcrc`, 'utf-8')
);
// Disable .swcrc look-up by SWC core because we're passing in swcJestConfig ourselves
swcJestConfig.swcrc = false;
export default {
displayName: '@web/api-e2e',
preset: '../jest.preset.js',
globalSetup: '<rootDir>/src/support/global-setup.ts',
globalTeardown: '<rootDir>/src/support/global-teardown.ts',
setupFiles: ['<rootDir>/src/support/test-setup.ts'],
testEnvironment: 'node',
transform: {
'^.+\\.[tj]s$': ['@swc/jest', swcJestConfig],
},
moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: 'test-output/jest/coverage',
};

View file

@ -1,26 +0,0 @@
{
"name": "@web/api-e2e",
"version": "0.0.1",
"private": true,
"nx": {
"implicitDependencies": [
"@web/api"
],
"targets": {
"e2e": {
"executor": "@nx/jest:jest",
"outputs": [
"{projectRoot}/test-output/jest/coverage"
],
"options": {
"jestConfig": "api-e2e/jest.config.ts",
"passWithNoTests": true
},
"dependsOn": [
"@web/api:build",
"@web/api:serve"
]
}
}
}
}

View file

@ -1,10 +0,0 @@
import axios from 'axios';
describe('GET /api', () => {
it('should return a message', async () => {
const res = await axios.get(`/api`);
expect(res.status).toBe(200);
expect(res.data).toEqual({ message: 'Hello API' });
});
});

View file

@ -1,16 +0,0 @@
import { waitForPortOpen } from '@nx/node/utils';
/* eslint-disable */
var __TEARDOWN_MESSAGE__: string;
module.exports = async function () {
// Start services that that the app needs to run (e.g. database, docker-compose, etc.).
console.log('\nSetting up...\n');
const host = process.env.HOST ?? 'localhost';
const port = process.env.PORT ? Number(process.env.PORT) : 3000;
await waitForPortOpen(port, { host });
// Hint: Use `globalThis` to pass variables to global teardown.
globalThis.__TEARDOWN_MESSAGE__ = '\nTearing down...\n';
};

View file

@ -1,10 +0,0 @@
import { killPort } from '@nx/node/utils';
/* eslint-disable */
module.exports = async function () {
// Put clean up logic here (e.g. stopping services, docker-compose, etc.).
// Hint: `globalThis` is shared between setup and teardown.
const port = process.env.PORT ? Number(process.env.PORT) : 3000;
await killPort(port);
console.log(globalThis.__TEARDOWN_MESSAGE__);
};

View file

@ -1,9 +0,0 @@
/* eslint-disable */
import axios from 'axios';
module.exports = async function () {
// Configure axios for tests to use.
const host = process.env.HOST ?? 'localhost';
const port = process.env.PORT ?? '3000';
axios.defaults.baseURL = `http://${host}:${port}`;
};

View file

@ -1,11 +0,0 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "out-tsc/@web/api-e2e",
"esModuleInterop": true,
"noUnusedLocals": false,
"noImplicitAny": false
},
"include": ["jest.config.ts", "src/**/*.ts"],
"references": []
}

View file

@ -1,22 +0,0 @@
{
"jsc": {
"target": "es2017",
"parser": {
"syntax": "typescript",
"decorators": true,
"dynamicImport": true
},
"transform": {
"decoratorMetadata": true,
"legacyDecorator": true
},
"keepClassNames": true,
"externalHelpers": true,
"loose": true
},
"module": {
"type": "es6"
},
"sourceMaps": true,
"exclude": []
}

View file

@ -1,3 +1,3 @@
import baseConfig from '../eslint.config.mjs'; import baseConfig from '../../eslint.config.mjs';
export default [...baseConfig]; export default [...baseConfig];

View file

@ -1,21 +0,0 @@
/* eslint-disable */
import { readFileSync } from 'fs';
// Reading the SWC compilation config for the spec files
const swcJestConfig = JSON.parse(
readFileSync(`${__dirname}/.spec.swcrc`, 'utf-8')
);
// Disable .swcrc look-up by SWC core because we're passing in swcJestConfig ourselves
swcJestConfig.swcrc = false;
export default {
displayName: '@web/api',
preset: '../jest.preset.js',
testEnvironment: 'node',
transform: {
'^.+\\.[tj]s$': ['@swc/jest', swcJestConfig],
},
moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: 'test-output/jest/coverage',
};

View file

@ -1,96 +0,0 @@
{
"name": "@web/api",
"version": "0.0.1",
"private": true,
"nx": {
"targets": {
"build": {
"executor": "nx:run-commands",
"options": {
"command": "webpack-cli build",
"args": [
"--node-env=production"
],
"cwd": "api"
},
"configurations": {
"development": {
"args": [
"--node-env=development"
]
}
}
},
"prune-lockfile": {
"dependsOn": [
"build"
],
"cache": true,
"executor": "@nx/js:prune-lockfile",
"outputs": [
"{workspaceRoot}/api/dist/package.json",
"{workspaceRoot}/api/dist/package-lock.json"
],
"options": {
"buildTarget": "build"
}
},
"copy-workspace-modules": {
"dependsOn": [
"build"
],
"cache": true,
"outputs": [
"{workspaceRoot}/api/dist/workspace_modules"
],
"executor": "@nx/js:copy-workspace-modules",
"options": {
"buildTarget": "build"
}
},
"prune": {
"dependsOn": [
"prune-lockfile",
"copy-workspace-modules"
],
"executor": "nx:noop"
},
"serve": {
"continuous": true,
"executor": "@nx/js:node",
"defaultConfiguration": "development",
"dependsOn": [
"build"
],
"options": {
"buildTarget": "@web/api:build",
"runBuildTargetDependencies": false
},
"configurations": {
"development": {
"buildTarget": "@web/api:build:development"
},
"production": {
"buildTarget": "@web/api:build:production"
}
}
},
"test": {
"options": {
"passWithNoTests": true
}
}
}
},
"dependencies": {
"@nestjs/common": "^11.0.0",
"@nestjs/core": "^11.0.0",
"@nestjs/platform-express": "^11.0.0",
"reflect-metadata": "^0.1.13",
"rxjs": "^7.8.0",
"tslib": "^2.3.0"
},
"devDependencies": {
"@nestjs/testing": "^11.0.0"
}
}

65
apps/api/project.json Normal file
View file

@ -0,0 +1,65 @@
{
"name": "api",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "apps/api/src",
"projectType": "application",
"tags": [],
"targets": {
"build": {
"executor": "nx:run-commands",
"options": {
"command": "webpack-cli build",
"args": ["--node-env=production"],
"cwd": "apps/api"
},
"configurations": {
"development": {
"args": ["--node-env=development"]
}
}
},
"prune-lockfile": {
"dependsOn": ["build"],
"cache": true,
"executor": "@nx/js:prune-lockfile",
"outputs": [
"{workspaceRoot}/dist/apps/api/package.json",
"{workspaceRoot}/dist/apps/api/package-lock.json"
],
"options": {
"buildTarget": "build"
}
},
"copy-workspace-modules": {
"dependsOn": ["build"],
"cache": true,
"outputs": ["{workspaceRoot}/dist/apps/api/workspace_modules"],
"executor": "@nx/js:copy-workspace-modules",
"options": {
"buildTarget": "build"
}
},
"prune": {
"dependsOn": ["prune-lockfile", "copy-workspace-modules"],
"executor": "nx:noop"
},
"serve": {
"continuous": true,
"executor": "@nx/js:node",
"defaultConfiguration": "development",
"dependsOn": ["build"],
"options": {
"buildTarget": "api:build",
"runBuildTargetDependencies": false
},
"configurations": {
"development": {
"buildTarget": "api:build:development"
},
"production": {
"buildTarget": "api:build:production"
}
}
}
}
}

View file

@ -1,21 +0,0 @@
import { Test, TestingModule } from '@nestjs/testing';
import { AppController } from './app.controller';
import { AppService } from './app.service';
describe('AppController', () => {
let app: TestingModule;
beforeAll(async () => {
app = await Test.createTestingModule({
controllers: [AppController],
providers: [AppService],
}).compile();
});
describe('getData', () => {
it('should return "Hello API"', () => {
const appController = app.get<AppController>(AppController);
expect(appController.getData()).toEqual({ message: 'Hello API' });
});
});
});

View file

@ -1,20 +0,0 @@
import { Test } from '@nestjs/testing';
import { AppService } from './app.service';
describe('AppService', () => {
let service: AppService;
beforeAll(async () => {
const app = await Test.createTestingModule({
providers: [AppService],
}).compile();
service = app.get<AppService>(AppService);
});
describe('getData', () => {
it('should return "Hello API"', () => {
expect(service.getData()).toEqual({ message: 'Hello API' });
});
});
});

View file

@ -1,25 +1,12 @@
{ {
"extends": "../tsconfig.base.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "dist", "outDir": "../../dist/out-tsc",
"module": "nodenext", "module": "commonjs",
"types": ["node"], "types": ["node"],
"rootDir": "src",
"moduleResolution": "nodenext",
"tsBuildInfoFile": "dist/tsconfig.app.tsbuildinfo",
"experimentalDecorators": true, "experimentalDecorators": true,
"emitDecoratorMetadata": true, "emitDecoratorMetadata": true,
"target": "es2021" "target": "es2021"
}, },
"include": ["src/**/*.ts"], "include": ["src/**/*.ts"]
"exclude": [
"out-tsc",
"dist",
"jest.config.ts",
"src/**/*.spec.ts",
"src/**/*.test.ts",
"eslint.config.js",
"eslint.config.cjs",
"eslint.config.mjs"
]
} }

View file

@ -5,9 +5,9 @@
"references": [ "references": [
{ {
"path": "./tsconfig.app.json" "path": "./tsconfig.app.json"
},
{
"path": "./tsconfig.spec.json"
} }
] ],
"compilerOptions": {
"esModuleInterop": true
}
} }

View file

@ -1,22 +0,0 @@
{
"extends": "../tsconfig.base.json",
"compilerOptions": {
"outDir": "./out-tsc/jest",
"types": ["jest", "node"],
"module": "nodenext",
"moduleResolution": "nodenext",
"experimentalDecorators": true,
"emitDecoratorMetadata": true
},
"include": [
"jest.config.ts",
"src/**/*.test.ts",
"src/**/*.spec.ts",
"src/**/*.d.ts"
],
"references": [
{
"path": "./tsconfig.app.json"
}
]
}

View file

@ -3,7 +3,7 @@ const { join } = require('path');
module.exports = { module.exports = {
output: { output: {
path: join(__dirname, 'dist'), path: join(__dirname, '../../dist/apps/api'),
clean: true, clean: true,
...(process.env.NODE_ENV !== 'production' && { ...(process.env.NODE_ENV !== 'production' && {
devtoolModuleFilenameTemplate: '[absolute-resource-path]', devtoolModuleFilenameTemplate: '[absolute-resource-path]',

View file

@ -4,7 +4,7 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@web/web</title> <title>web</title>
</head> </head>
<body> <body>
<div id="root"></div> <div id="root"></div>

View file

@ -1,5 +0,0 @@
{
"name": "@web/web",
"version": "0.0.1",
"private": true
}

8
apps/web/project.json Normal file
View file

@ -0,0 +1,8 @@
{
"name": "web",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"projectType": "application",
"sourceRoot": "apps/web/src",
"// targets": "to see all targets run: nx show project web --web",
"targets": {}
}

View file

@ -1,10 +1,11 @@
import { describe, it, expect } from 'vitest'; import router from '../router';
import { mount } from '@vue/test-utils'; import { mount } from '@vue/test-utils';
import App from './App.vue'; import App from './App.vue';
describe('App', () => { describe('App', () => {
it('renders properly', async () => { it('renders properly', async () => {
const wrapper = mount(App, {}); const wrapper = mount(App, { global: { plugins: [router] } });
expect(wrapper.text()).toContain('Welcome @web/web 👋'); await router.isReady();
expect(wrapper.text()).toContain('Welcome web 👋');
}); });
}); });

View file

@ -1,7 +1,44 @@
<script setup lang="ts"> <script setup lang="ts">
import NxWelcome from './NxWelcome.vue'; import { RouterLink, RouterView } from 'vue-router';
</script> </script>
<template> <template>
<NxWelcome title="@web/web" /> <header>
<nav>
<RouterLink to="/">Home</RouterLink>
<RouterLink to="/about">About</RouterLink>
</nav>
</header>
<RouterView />
</template> </template>
<style scoped lang="css">
header {
line-height: 1.5;
max-width: 100vw;
}
nav > a {
padding-left: 1rem;
padding-right: 1rem;
}
@media (min-width: 768px) {
header {
display: flex;
place-items: center;
padding-right: calc(var(--section-gap) / 2);
margin-left: auto;
margin-right: auto;
max-width: 768px;
}
nav {
text-align: left;
font-size: 1rem;
padding: 1rem 0;
margin-top: 1rem;
}
}
</style>

View file

@ -319,11 +319,7 @@ defineProps<{
</h2> </h2>
</div> </div>
<p>Your Nx Cloud remote cache setup is almost complete.</p> <p>Your Nx Cloud remote cache setup is almost complete.</p>
<a <a href="" target="_blank" rel="noreferrer">
href="https://cloud.nx.app/connect/fzBSRksVC9"
target="_blank"
rel="noreferrer"
>
Click here to finish Click here to finish
</a> </a>
</div> </div>

View file

@ -1,6 +1,8 @@
import './styles.css'; import './styles.css';
import router from './router';
import { createApp } from 'vue'; import { createApp } from 'vue';
import App from './app/App.vue'; import App from './app/App.vue';
const app = createApp(App); const app = createApp(App);
app.use(router);
app.mount('#root'); app.mount('#root');

View file

@ -0,0 +1,23 @@
import { createRouter, createWebHistory } from 'vue-router';
import HomeView from '../views/HomeView.vue';
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: '/',
name: 'home',
component: HomeView,
},
{
path: '/about',
name: 'about',
// route level code-splitting
// this generates a separate chunk (About.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import('../views/AboutView.vue'),
},
],
});
export default router;

View file

@ -0,0 +1,16 @@
<template>
<div class="about">
<h1>This is an about page</h1>
</div>
</template>
<style>
@media (min-width: 768px) {
.about {
max-width: 768px;
margin-left: auto;
margin-right: auto;
padding: 0 1rem;
}
}
</style>

View file

@ -0,0 +1,9 @@
<script setup lang="ts">
import NxWelcome from '../app/NxWelcome.vue';
</script>
<template>
<main>
<NxWelcome title="web" />
</main>
</template>

View file

@ -1,34 +1,14 @@
{ {
"extends": "../../tsconfig.base.json", "extends": "./tsconfig.json",
"compilerOptions": { "compilerOptions": {
"outDir": "dist", "outDir": "../../dist/out-tsc",
"types": ["vite/client"], "types": ["vite/client"]
"rootDir": "src",
"jsx": "preserve",
"jsxImportSource": "vue",
"resolveJsonModule": true,
"tsBuildInfoFile": "dist/tsconfig.app.tsbuildinfo"
}, },
"exclude": [ "exclude": [
"out-tsc",
"dist",
"src/**/*.spec.ts", "src/**/*.spec.ts",
"src/**/*.test.ts", "src/**/*.test.ts",
"src/**/*.spec.vue", "src/**/*.spec.vue",
"src/**/*.test.vue", "src/**/*.test.vue"
"vite.config.ts",
"vite.config.mts",
"vitest.config.ts",
"vitest.config.mts",
"src/**/*.test.tsx",
"src/**/*.spec.tsx",
"src/**/*.test.js",
"src/**/*.spec.js",
"src/**/*.test.jsx",
"src/**/*.spec.jsx",
"eslint.config.js",
"eslint.config.cjs",
"eslint.config.mjs"
], ],
"include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.vue"] "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.vue"]
} }

View file

@ -1,13 +1,20 @@
{ {
"extends": "../../tsconfig.base.json", "compilerOptions": {
"allowJs": true,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
"strict": true,
"jsx": "preserve",
"jsxImportSource": "vue",
"moduleResolution": "node",
"resolveJsonModule": true
},
"files": [], "files": [],
"include": [], "include": [],
"references": [ "references": [
{ {
"path": "./tsconfig.app.json" "path": "./tsconfig.app.json"
},
{
"path": "./tsconfig.spec.json"
} }
] ],
"extends": "../../tsconfig.base.json"
} }

View file

@ -1,36 +0,0 @@
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"outDir": "./out-tsc/vitest",
"types": [
"vitest/globals",
"vitest/importMeta",
"vite/client",
"node",
"vitest"
],
"jsx": "preserve",
"jsxImportSource": "vue",
"resolveJsonModule": true
},
"include": [
"vite.config.ts",
"vite.config.mts",
"vitest.config.ts",
"vitest.config.mts",
"src/**/*.test.ts",
"src/**/*.spec.ts",
"src/**/*.test.tsx",
"src/**/*.spec.tsx",
"src/**/*.test.js",
"src/**/*.spec.js",
"src/**/*.test.jsx",
"src/**/*.spec.jsx",
"src/**/*.d.ts"
],
"references": [
{
"path": "./tsconfig.app.json"
}
]
}

View file

@ -1,10 +1,12 @@
/// <reference types='vitest' /> /// <reference types='vitest' />
import { defineConfig } from 'vite'; import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue'; import vue from '@vitejs/plugin-vue';
import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
import { nxCopyAssetsPlugin } from '@nx/vite/plugins/nx-copy-assets.plugin';
export default defineConfig(() => ({ export default defineConfig(() => ({
root: __dirname, root: __dirname,
cacheDir: '../../node_modules/.vite/apps/web', cacheDir: '../../../node_modules/.vite/apps/web',
server: { server: {
port: 4200, port: 4200,
host: 'localhost', host: 'localhost',
@ -13,29 +15,17 @@ export default defineConfig(() => ({
port: 4300, port: 4300,
host: 'localhost', host: 'localhost',
}, },
plugins: [vue()], plugins: [vue(), nxViteTsPaths(), nxCopyAssetsPlugin(['*.md'])],
// Uncomment this if you are using workers. // Uncomment this if you are using workers.
// worker: { // worker: {
// plugins: [], // plugins: [ nxViteTsPaths() ],
// }, // },
build: { build: {
outDir: './dist', outDir: '../../dist/apps/web',
emptyOutDir: true, emptyOutDir: true,
reportCompressedSize: true, reportCompressedSize: true,
commonjsOptions: { commonjsOptions: {
transformMixedEsModules: true, transformMixedEsModules: true,
}, },
}, },
test: {
name: '@web/web',
watch: false,
globals: true,
environment: 'jsdom',
include: ['{src,tests}/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'],
reporters: ['default'],
coverage: {
reportsDirectory: './test-output/vitest/coverage',
provider: 'v8' as const,
},
},
})); }));

View file

@ -1,6 +0,0 @@
import type { Config } from 'jest';
import { getJestProjectsAsync } from '@nx/jest';
export default async (): Promise<Config> => ({
projects: await getJestProjectsAsync(),
});

View file

@ -1,3 +0,0 @@
const nxPreset = require('@nx/jest/preset').default;
module.exports = { ...nxPreset };

48
nx.json
View file

@ -9,26 +9,21 @@
"!{projectRoot}/eslint.config.mjs", "!{projectRoot}/eslint.config.mjs",
"!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)", "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)",
"!{projectRoot}/tsconfig.spec.json", "!{projectRoot}/tsconfig.spec.json",
"!{projectRoot}/src/test-setup.[jt]s", "!{projectRoot}/src/test-setup.[jt]s"
"!{projectRoot}/jest.config.[jt]s",
"!{projectRoot}/test-setup.[jt]s"
], ],
"sharedGlobals": ["{workspaceRoot}/.gitlab-ci.yml"] "sharedGlobals": ["{workspaceRoot}/.gitlab-ci.yml"]
}, },
"nxCloudId": "690fceb3d1401c12d249669a", "nxCloudId": "6911edcf6b32f954e0e9455d",
"plugins": [ "plugins": [
{ {
"plugin": "@nx/js/typescript", "plugin": "@nx/webpack/plugin",
"options": { "options": {
"typecheck": { "buildTargetName": "build",
"targetName": "typecheck" "serveTargetName": "serve",
}, "previewTargetName": "preview",
"build": { "buildDepsTargetName": "build-deps",
"targetName": "build", "watchDepsTargetName": "watch-deps",
"configName": "tsconfig.lib.json", "serveStaticTargetName": "serve-static"
"buildDepsName": "build-deps",
"watchDepsName": "watch-deps"
}
} }
}, },
{ {
@ -50,29 +45,6 @@
"buildDepsTargetName": "build-deps", "buildDepsTargetName": "build-deps",
"watchDepsTargetName": "watch-deps" "watchDepsTargetName": "watch-deps"
} }
},
{
"plugin": "@nx/webpack/plugin",
"options": {
"buildTargetName": "build",
"serveTargetName": "serve",
"previewTargetName": "preview",
"buildDepsTargetName": "build-deps",
"watchDepsTargetName": "watch-deps",
"serveStaticTargetName": "serve-static"
}
},
{
"plugin": "@nx/jest/plugin",
"options": {
"targetName": "test"
},
"exclude": ["api-e2e/**/*"]
} }
], ]
"targetDefaults": {
"test": {
"dependsOn": ["^build"]
}
}
} }

2443
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,13 @@
{ {
"name": "@web/source", "name": "@api/source",
"version": "0.0.0", "version": "0.0.0",
"license": "MIT", "license": "MIT",
"scripts": {}, "scripts": {
"start:api": "nx serve apps/api",
"start:web": "nx serve apps/web",
"build:api": "nx build apps/api",
"build:web": "nx build apps/web"
},
"private": true, "private": true,
"dependencies": { "dependencies": {
"@nestjs/common": "^11.0.0", "@nestjs/common": "^11.0.0",
@ -11,7 +16,8 @@
"axios": "^1.6.0", "axios": "^1.6.0",
"reflect-metadata": "^0.1.13", "reflect-metadata": "^0.1.13",
"rxjs": "^7.8.0", "rxjs": "^7.8.0",
"vue": "^3.5.13" "vue": "^3.5.13",
"vue-router": "^4.5.0"
}, },
"devDependencies": { "devDependencies": {
"@eslint/js": "^9.8.0", "@eslint/js": "^9.8.0",
@ -19,9 +25,8 @@
"@nestjs/testing": "^11.0.0", "@nestjs/testing": "^11.0.0",
"@nx/eslint": "22.0.2", "@nx/eslint": "22.0.2",
"@nx/eslint-plugin": "22.0.2", "@nx/eslint-plugin": "22.0.2",
"@nx/jest": "22.0.2",
"@nx/js": "22.0.2", "@nx/js": "22.0.2",
"@nx/nest": "^22.0.2", "@nx/nest": "22.0.2",
"@nx/node": "22.0.2", "@nx/node": "22.0.2",
"@nx/vite": "22.0.2", "@nx/vite": "22.0.2",
"@nx/vue": "22.0.2", "@nx/vue": "22.0.2",
@ -31,12 +36,9 @@
"@swc-node/register": "~1.9.1", "@swc-node/register": "~1.9.1",
"@swc/core": "~1.5.7", "@swc/core": "~1.5.7",
"@swc/helpers": "~0.5.11", "@swc/helpers": "~0.5.11",
"@swc/jest": "~0.2.38",
"@types/jest": "^30.0.0",
"@types/node": "20.19.9", "@types/node": "20.19.9",
"@typescript-eslint/parser": "^8.40.0", "@typescript-eslint/parser": "^8.40.0",
"@vitejs/plugin-vue": "^6.0.1", "@vitejs/plugin-vue": "^6.0.1",
"@vitest/coverage-v8": "^3.0.5",
"@vitest/ui": "^3.0.0", "@vitest/ui": "^3.0.0",
"@vue/eslint-config-prettier": "7.1.0", "@vue/eslint-config-prettier": "7.1.0",
"@vue/eslint-config-typescript": "^14.6.0", "@vue/eslint-config-typescript": "^14.6.0",
@ -44,15 +46,10 @@
"eslint": "^9.8.0", "eslint": "^9.8.0",
"eslint-config-prettier": "^10.0.0", "eslint-config-prettier": "^10.0.0",
"eslint-plugin-vue": "^9.16.1", "eslint-plugin-vue": "^9.16.1",
"jest": "^30.0.2",
"jest-environment-node": "^30.0.2",
"jest-util": "^30.0.2",
"jiti": "2.4.2", "jiti": "2.4.2",
"jsdom": "~22.1.0", "jsdom": "~22.1.0",
"nx": "22.0.2", "nx": "22.0.2",
"prettier": "^2.6.2", "prettier": "^2.6.2",
"ts-jest": "^29.4.0",
"ts-node": "10.9.1",
"tslib": "^2.3.0", "tslib": "^2.3.0",
"typescript": "~5.9.2", "typescript": "~5.9.2",
"typescript-eslint": "^8.40.0", "typescript-eslint": "^8.40.0",
@ -60,10 +57,5 @@
"vitest": "^3.0.0", "vitest": "^3.0.0",
"vue-tsc": "^2.2.8", "vue-tsc": "^2.2.8",
"webpack-cli": "^5.1.4" "webpack-cli": "^5.1.4"
}, }
"workspaces": [
"apps/*",
"api",
"api-e2e"
]
} }

View file

@ -1,21 +1,20 @@
{ {
"compileOnSave": false,
"compilerOptions": { "compilerOptions": {
"composite": true, "rootDir": ".",
"declarationMap": true, "sourceMap": true,
"emitDeclarationOnly": true, "declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true, "importHelpers": true,
"isolatedModules": true, "target": "es2015",
"lib": ["es2022"],
"module": "esnext", "module": "esnext",
"moduleResolution": "bundler", "lib": ["es2020", "dom"],
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"noImplicitOverride": true,
"noImplicitReturns": true,
"noUnusedLocals": true,
"skipLibCheck": true, "skipLibCheck": true,
"strict": true, "skipDefaultLibCheck": true,
"target": "es2022", "baseUrl": ".",
"customConditions": ["@web/source"] "paths": {}
} },
"exclude": ["node_modules", "tmp"]
} }

View file

@ -1,16 +0,0 @@
{
"extends": "./tsconfig.base.json",
"compileOnSave": false,
"files": [],
"references": [
{
"path": "./apps/web"
},
{
"path": "./apps/api-e2e"
},
{
"path": "./apps/api"
}
]
}

View file

@ -1,4 +0,0 @@
export default [
'**/vite.config.{mjs,js,ts,mts}',
'**/vitest.config.{mjs,js,ts,mts}',
];