diff --git a/package-lock.json b/package-lock.json index 6206aeea..c24930eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,6 +55,7 @@ "@vitest/coverage-v8": "^4.0.13", "autoprefixer": "^10.4.22", "bcrypt": "^6.0.0", + "concurrently": "^9.2.1", "dotenv": "^17.2.3", "eslint": "9.39.1", "eslint-plugin-react": "7.37.5", @@ -6135,6 +6136,47 @@ "typedarray": "^0.0.6" } }, + "node_modules/concurrently": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz", + "integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "4.1.2", + "rxjs": "7.8.2", + "shell-quote": "1.8.3", + "supports-color": "8.1.1", + "tree-kill": "1.2.2", + "yargs": "17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/content-disposition": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", @@ -11600,6 +11642,16 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -11829,6 +11881,19 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", diff --git a/package.json b/package.json index 589c57df..a86110cb 100644 --- a/package.json +++ b/package.json @@ -4,14 +4,15 @@ "version": "0.0.0", "type": "module", "scripts": { - "dev": "vite", + "dev": "concurrently \"npm:start:server:dev\" \"vite\"", "build": "DEBUG=\"tailwindcss:*\" vite build --debug", "preview": "vite preview", "test": "vitest run --coverage", "test:integration": "vitest run -c vitest.config.integration.ts", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", "seed": "ts-node-dev scripts/seed.ts", - "start:server": "tsx --env-file .env.test server.ts" + "start:server": "tsx --env-file .env.test server.ts", + "start:server:dev": "tsx --env-file .env server.ts" }, "dependencies": { "@google/genai": "^1.30.0", @@ -61,6 +62,7 @@ "@vitest/coverage-v8": "^4.0.13", "autoprefixer": "^10.4.22", "bcrypt": "^6.0.0", + "concurrently": "^9.2.1", "dotenv": "^17.2.3", "eslint": "9.39.1", "eslint-plugin-react": "7.37.5", diff --git a/src/services/db.integration.test.ts b/src/services/db.integration.test.ts index eb09262b..aa07c091 100644 --- a/src/services/db.integration.test.ts +++ b/src/services/db.integration.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, afterEach, afterAll } from 'vitest'; +import { describe, it, expect, afterEach } from 'vitest'; import * as db from './db'; import bcrypt from 'bcrypt'; import { getPool } from './db/connection'; diff --git a/src/services/shopping-list.integration.test.ts b/src/services/shopping-list.integration.test.ts index 45dc3161..6fa23aa4 100644 --- a/src/services/shopping-list.integration.test.ts +++ b/src/services/shopping-list.integration.test.ts @@ -1,4 +1,4 @@ -import { describe, it, expect, beforeEach, afterEach, afterAll } from 'vitest'; +import { describe, it, expect, beforeEach, afterEach } from 'vitest'; import * as db from './db'; // This was missing import { getPool } from './db/connection'; import bcrypt from 'bcrypt';