trucoshi 13.2.2 → 14.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -18,13 +18,34 @@ Proba la demo actual en [Trucoshi](https://trucoshi.com)
18
18
 
19
19
  [Lightning Accounts](https://github.com/jfrader/lightning-accounts)
20
20
 
21
- ### Installation
21
+ ## Development
22
22
 
23
- `yarn`
23
+ Use Node.js 24 (see `.nvmrc`) and Yarn 1.22.22. With `nvm` installed, a clean setup is:
24
24
 
25
- ### Build
25
+ ```bash
26
+ nvm install
27
+ npm install --global yarn@1.22.22 # only when Yarn is missing
28
+ cp .env.example .env
29
+ yarn install --frozen-lockfile
30
+ yarn prisma:generate
31
+ ```
32
+
33
+ Run the local server watcher with `yarn dev`. It performs one clean initial build, then uses an
34
+ incremental TypeScript cache for fast restarts. PostgreSQL and Redis must match `.env`.
35
+
36
+ Use these checks before pushing:
37
+
38
+ ```bash
39
+ yarn validate # script syntax, formatting, types, and unit tests
40
+ yarn format # apply the repository's formatting rules
41
+ yarn build # clean CommonJS server build
42
+ yarn build:dist:clean # clean publishable package build
43
+ ```
26
44
 
27
- `yarn build`
45
+ `yarn test:e2e` is intentionally guarded: it loads `.env.test` before doing anything and refuses to
46
+ reset a database unless `NODE_ENV=test` and the database host or name has a distinct `test` segment.
47
+ Local launchers only stop local development/test containers; use `yarn docker:stop:all` when you
48
+ explicitly intend to stop the production and staging Compose projects too.
28
49
 
29
50
  ### Full local dev stack
30
51
 
@@ -34,11 +55,19 @@ Run the three-repo local stack from this repo with:
34
55
 
35
56
  If your user cannot run Docker directly, use `yarn dev:all:sudo-docker`. Do not prefix either command with `sudo`; that mode only elevates Docker commands, so Yarn, Vite, generated Prisma files, and local links remain owned by your user.
36
57
 
37
- The launcher keeps the local stack in development mode: Lightning Accounts, Trucoshi, and the Vite client. Its home screen continuously refreshes the stack status and service URLs. Use the numbered shortcuts or ↑/↓ to move, Enter or to select, and or Esc to go back. It can also build and host a client snapshot at `http://10.10.1.106:2993`. The snapshot is off by default, so it never slows Vite's hot-reload loop. Set `DEV_ALL_PUBLIC_HOST`, `DEV_ALL_CLIENT_HOST_PORT`, or `DEV_ALL_LOG_DIR` if you need different defaults.
58
+ For only the Trucoshi backend stack, use `yarn docker` with direct Docker access or `yarn docker:sudo` when Docker requires sudo. The matching stop commands are `yarn docker:stop` and `yarn docker:stop:sudo`.
59
+
60
+ The launcher expects `lightning-accounts`, `trucoshi`, and `trucoshi-client` to be sibling folders
61
+ with dependencies installed in each. It keeps all three in development mode and continuously
62
+ refreshes their status and service URLs. Use the numbered shortcuts or ↑/↓ to move, Enter or → to
63
+ select, and ← or Esc to go back. It can also build and host a client snapshot at
64
+ `http://localhost:2993`. The snapshot is off by default, so it never slows Vite's hot-reload loop.
65
+ Set `DEV_ALL_PUBLIC_HOST`, `DEV_ALL_CLIENT_HOST_PORT`, or `DEV_ALL_LOG_DIR` to override the defaults.
38
66
 
39
67
  # Test
40
68
 
41
- `yarn test`
69
+ `yarn test` runs the full unit/socket suite on an automatically allocated local port, so it can run
70
+ without colliding with the development or e2e servers.
42
71
 
43
72
  ### Card skins
44
73
 
@@ -52,13 +81,11 @@ Trucoshi e2e tests depend on a running Lightning Accounts e2e server. Start that
52
81
  terminal, then run the Trucoshi e2e suite in another:
53
82
 
54
83
  ```bash
55
- cd /home/fran/Workspace/trucoshi/lightning-accounts
56
- NODE_ENV=test ./init-e2e.sh
84
+ (cd ../lightning-accounts && NODE_ENV=test ./init-e2e.sh)
57
85
  ```
58
86
 
59
87
  ```bash
60
- cd /home/fran/Workspace/trucoshi/trucoshi
61
- NODE_ENV=test ./init-e2e.sh
88
+ yarn docker:e2e
62
89
  ```
63
90
 
64
91
  Use `../lightning-accounts/init-test.sh` when you want to run the Lightning Accounts Jest/e2e
@@ -88,6 +115,31 @@ yarn docker:prod:migrate
88
115
  docker compose -f docker-compose.prod.yml --env-file .env up -d --build server
89
116
  ```
90
117
 
118
+ ### Operations console
119
+
120
+ Use the interactive console to check Accounts/game readiness, verify wallet and bets are disabled,
121
+ inspect match/queue counts, drain before a deployment, wait for zero, or resume a cancelled release:
122
+
123
+ ```bash
124
+ cp .env.ops.example .env.ops
125
+ yarn ops
126
+ ```
127
+
128
+ The menu supports development, staging, and production. Edit `.env.ops` with the public or local
129
+ base URLs for each environment. Tokens may be supplied through the shell or the ignored file, but
130
+ leaving them empty is safer: the console prompts without echo and retains each token in memory only.
131
+ Production drain/resume actions require typing an environment-specific confirmation phrase.
132
+ See the complete [operations console guide](docs/operations/ops-console.md) for configuration,
133
+ output interpretation, and the staging/production release sequence.
134
+
135
+ Direct environment shortcuts are also available:
136
+
137
+ ```bash
138
+ yarn ops:dev
139
+ yarn ops:staging
140
+ yarn ops:prod
141
+ ```
142
+
91
143
  ### Admin users
92
144
 
93
145
  User roles live in Lightning Accounts. To promote an existing user by email:
package/dist/events.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { SocketError } from "./server";
2
- import { EMatchState, IAdminCreateChestRewardCodeInput, IAdminCreateChestRewardCodeResult, IAdminDashboard, IAdminSetNoticeBannerInput, IAdminSetNoticeBannerResult, IAccountDetails, CardSkinId, ICard, IChatMessage, IEquippedDeck, ILobbyOptions, IInventoryCardGroup, IMatchDetails, IPlayerRanking, IPublicChatRoom, IPublicMatch, IPublicMatchInfo, IPublicMatchStats, IJoinQueueOptions, IQueueMatchFound, IQueueMatchCancelled, IQueueMatchStarting, IQueueReadyUpdate, IQueueStatus, IRewardCodeRedeemResult, IPublicNoticeBanner, ITreasureOpenResult, ITreasureStatus, ISkinRollResult, ITrucoshiStats, IUserData, IWaitingPlayData, IWaitingSayData } from "./types";
2
+ import { EMatchState, IAdminCreateChestRewardCodeInput, IAdminCreateChestRewardCodeResult, IAdminDashboard, IAdminSetNoticeBannerInput, IAdminSetNoticeBannerResult, IAccountDetails, CardSkinId, ICard, IChatMessage, IEquippedDeck, ILobbyOptions, IInventoryCardGroup, IMatchDetails, IPlayerRanking, IPublicChatRoom, IPublicMatch, IPublicMatchInfo, IPublicMatchStats, IJoinQueueOptions, IQueueMatchFound, IQueueMatchCancelled, IQueueMatchStarting, IQueueReadyUpdate, IQueueStatus, IRewardCodeRedeemResult, IPublicNoticeBanner, ITreasureOpenResult, ITreasureStatus, ISkinRollResult, ITrucoshiStats, IUserData, IWaitingPlayData, IWaitingSayData, IFeedbackInput } from "./types";
3
3
  export type IEventCallback<T = {}> = (args: {
4
4
  success: boolean;
5
5
  error?: SocketError;
@@ -80,6 +80,7 @@ export declare enum EClientEvent {
80
80
  OPEN_TREASURE_CHEST = "OPEN_TREASURE_CHEST",
81
81
  DEV_GRANT_TREASURE_CHEST = "DEV_GRANT_TREASURE_CHEST",
82
82
  FETCH_NOTICE_BANNER = "FETCH_NOTICE_BANNER",
83
+ SUBMIT_FEEDBACK = "SUBMIT_FEEDBACK",
83
84
  ADMIN_FETCH_DASHBOARD = "ADMIN_FETCH_DASHBOARD",
84
85
  ADMIN_CREATE_CHEST_REWARD_CODE = "ADMIN_CREATE_CHEST_REWARD_CODE",
85
86
  ADMIN_SET_NOTICE_BANNER = "ADMIN_SET_NOTICE_BANNER",
@@ -177,6 +178,7 @@ export interface ClientToServerEvents {
177
178
  [EClientEvent.FETCH_NOTICE_BANNER]: (callback: IEventCallback<{
178
179
  noticeBanner: IPublicNoticeBanner | null;
179
180
  }>) => void;
181
+ [EClientEvent.SUBMIT_FEEDBACK]: (input: IFeedbackInput, callback: IEventCallback<{}>) => void;
180
182
  [EClientEvent.ADMIN_FETCH_DASHBOARD]: (callback: IEventCallback<{
181
183
  dashboard: IAdminDashboard;
182
184
  }>) => void;
package/dist/events.js CHANGED
@@ -52,6 +52,7 @@ export var EClientEvent;
52
52
  EClientEvent["OPEN_TREASURE_CHEST"] = "OPEN_TREASURE_CHEST";
53
53
  EClientEvent["DEV_GRANT_TREASURE_CHEST"] = "DEV_GRANT_TREASURE_CHEST";
54
54
  EClientEvent["FETCH_NOTICE_BANNER"] = "FETCH_NOTICE_BANNER";
55
+ EClientEvent["SUBMIT_FEEDBACK"] = "SUBMIT_FEEDBACK";
55
56
  EClientEvent["ADMIN_FETCH_DASHBOARD"] = "ADMIN_FETCH_DASHBOARD";
56
57
  EClientEvent["ADMIN_CREATE_CHEST_REWARD_CODE"] = "ADMIN_CREATE_CHEST_REWARD_CODE";
57
58
  EClientEvent["ADMIN_SET_NOTICE_BANNER"] = "ADMIN_SET_NOTICE_BANNER";
@@ -76,9 +76,10 @@ export function dealCards(table, deck, fixedHandsByPlayerIdx) {
76
76
  for (const player of table.players) {
77
77
  const fixedHand = fixedHands.get(player.idx);
78
78
  playerHands[player.idx] = fixedHand
79
- ? fixedHand.map((card) => deck.pick(card) || (() => {
80
- throw new Error(`Fixed hand card is not available in deck: ${card}`);
81
- })())
79
+ ? fixedHand.map((card) => deck.pick(card) ||
80
+ (() => {
81
+ throw new Error(`Fixed hand card is not available in deck: ${card}`);
82
+ })())
82
83
  : deck.takeThree();
83
84
  }
84
85
  for (const player of table.players) {
@@ -100,9 +100,7 @@ export const renderTutorialMessageText = (text, roundCards, previousRounds) => {
100
100
  if (!previousRoundScore) {
101
101
  return null;
102
102
  }
103
- renderedText = renderedText
104
- .split(TUTORIAL_PREVIOUS_ROUND_SCORE_TOKEN)
105
- .join(previousRoundScore);
103
+ renderedText = renderedText.split(TUTORIAL_PREVIOUS_ROUND_SCORE_TOKEN).join(previousRoundScore);
106
104
  }
107
105
  return renderedText;
108
106
  };
@@ -183,7 +181,9 @@ const validateBotAction = (botAction, context) => {
183
181
  if (botAction.action.type === "card" && !isCard(botAction.action.value)) {
184
182
  throw new Error(`${context} card action must use a valid card id`);
185
183
  }
186
- if (botAction.action.type === "command" && !isCommand(botAction.action.value) && typeof botAction.action.value !== "number") {
184
+ if (botAction.action.type === "command" &&
185
+ !isCommand(botAction.action.value) &&
186
+ typeof botAction.action.value !== "number") {
187
187
  throw new Error(`${context} command action must use a valid command`);
188
188
  }
189
189
  };
package/dist/types.d.ts CHANGED
@@ -36,6 +36,13 @@ export interface IUserData {
36
36
  session: string;
37
37
  account: User | null;
38
38
  }
39
+ export declare const FEEDBACK_MESSAGE_MAX_LENGTH = 1000;
40
+ export type FeedbackContext = "lobby" | "match";
41
+ export interface IFeedbackInput {
42
+ message: string;
43
+ context: FeedbackContext;
44
+ matchSessionId?: string;
45
+ }
39
46
  export interface ILobbyOptions {
40
47
  maxPlayers: 2 | 4 | 6;
41
48
  faltaEnvido: 1 | 2;
package/dist/types.js CHANGED
@@ -10,6 +10,7 @@ export var EMatchState;
10
10
  EMatchState["FINISHED"] = "FINISHED";
11
11
  EMatchState["PAUSED"] = "PAUSED";
12
12
  })(EMatchState || (EMatchState = {}));
13
+ export const FEEDBACK_MESSAGE_MAX_LENGTH = 1000;
13
14
  export var EChatSystem;
14
15
  (function (EChatSystem) {
15
16
  EChatSystem[EChatSystem["TEAM_0"] = 0] = "TEAM_0";
package/package.json CHANGED
@@ -1,6 +1,11 @@
1
1
  {
2
2
  "name": "trucoshi",
3
- "version": "13.2.2",
3
+ "version": "14.0.0-rc.2",
4
+ "packageManager": "yarn@1.22.22",
5
+ "engines": {
6
+ "node": ">=24",
7
+ "yarn": ">=1.22.22 <2"
8
+ },
4
9
  "description": "Truco Game Server",
5
10
  "main": "dist/types.js",
6
11
  "license": "GPL-3.0",
@@ -18,25 +23,50 @@
18
23
  ]
19
24
  },
20
25
  "scripts": {
21
- "build": "yarn prisma generate && yarn run rimraf ./build && yarn run tsc --project .",
22
- "build:dist": "yarn run rimraf ./dist && yarn prisma generate && yarn run tsc --project ./tsconfig.dist.json",
26
+ "clean": "rimraf ./build ./dist",
27
+ "clean:build": "rimraf ./build",
28
+ "clean:dist": "rimraf ./dist",
29
+ "prisma:generate": "prisma generate",
30
+ "prisma:generate:dev": "test -f ./node_modules/.prisma/client/index.js && test -f ./prisma/client/index.js && test ./node_modules/.prisma/client/index.js -nt ./prisma/schema.prisma && test ./prisma/client/index.js -nt ./prisma/schema.prisma || prisma generate",
31
+ "typecheck": "tsc --noEmit --incremental --tsBuildInfoFile ./build/.typecheck.tsbuildinfo --project .",
32
+ "check:scripts": "node --check ./bin/trucoshi-server && find ./scripts -type f -name '*.js' -exec node --check {} \\; && bash -n ./init-*.sh",
33
+ "format": "prettier --write package.json nodemon.json 'tsconfig*.json' .prettierrc.json '.vscode/*.json' '.github/**/*.{yml,yaml,json,md}' '*.md' '*.{yml,yaml}' 'docs/**/*.md' 'scripts/**/*.js' 'src/**/*.{ts,json}' 'test/**/*.{ts,js,json}'",
34
+ "format:check": "prettier --check package.json nodemon.json 'tsconfig*.json' .prettierrc.json '.vscode/*.json' '.github/**/*.{yml,yaml,json,md}' '*.md' '*.{yml,yaml}' 'docs/**/*.md' 'scripts/**/*.js' 'src/**/*.{ts,json}' 'test/**/*.{ts,js,json}'",
35
+ "validate": "yarn check:scripts && yarn format:check && yarn typecheck && yarn test",
36
+ "build": "yarn prisma:generate && yarn clean:build && yarn build:server",
37
+ "build:server": "tsc --project .",
38
+ "build:dist": "yarn prisma:generate:dev && yarn build:dist:incremental",
39
+ "build:dist:incremental": "tsc --project ./tsconfig.dist.json",
40
+ "build:dist:clean": "yarn prisma:generate && yarn clean:dist && yarn build:dist:incremental",
41
+ "prestart": "yarn prisma:generate:dev && yarn clean:build",
23
42
  "start": "nodemon",
43
+ "dev": "yarn start",
24
44
  "start:migrate": "prisma db push && yarn start",
25
45
  "start:prod": "node bin/trucoshi-server",
26
46
  "start:prod:migrate": "prisma migrate deploy && yarn start:prod",
27
47
  "docker": "NODE_ENV=development ./init-dev.sh",
48
+ "docker:sudo": "DEV_DOCKER_SUDO=1 NODE_ENV=development ./init-dev.sh",
49
+ "docker:stop": "./init-stop-all.sh --local",
50
+ "docker:stop:sudo": "DEV_DOCKER_SUDO=1 ./init-stop-all.sh --local",
51
+ "docker:stop:all": "./init-stop-all.sh --all",
28
52
  "dev:all": "NODE_ENV=development ./init-dev-all.sh",
29
53
  "dev:all:sudo-docker": "DEV_ALL_DOCKER_SUDO=1 NODE_ENV=development ./init-dev-all.sh",
30
54
  "docker:exec": "docker compose exec -i server yarn",
31
- "docker:prod": "NODE_ENV=production && docker compose -f docker-compose.prod.yml down && docker compose -f docker-compose.prod.yml --env-file .env up --build",
55
+ "docker:prod": "NODE_ENV=production docker compose -f docker-compose.prod.yml --env-file .env up -d --build --wait",
32
56
  "docker:prod:migrate": "docker compose -f docker-compose.prod.yml --env-file .env run --rm --no-deps server yarn prisma migrate deploy",
33
- "docker:staging": "docker compose -f docker-compose.staging.yml down && docker compose -f docker-compose.staging.yml --env-file .env up --build",
57
+ "ops": "node ./scripts/ops-console.js",
58
+ "ops:dev": "node ./scripts/ops-console.js --env development",
59
+ "ops:staging": "node ./scripts/ops-console.js --env staging",
60
+ "ops:prod": "node ./scripts/ops-console.js --env production",
61
+ "docker:staging": "NODE_ENV=staging docker compose -f docker-compose.staging.yml --env-file .env up -d --build --wait",
34
62
  "docker:staging:migrate": "docker compose -f docker-compose.staging.yml --env-file .env run --rm --no-deps server yarn prisma migrate deploy",
35
63
  "docker:e2e": "NODE_ENV=test ./init-e2e.sh",
36
- "test": "dotenv -e .env.test -- ts-mocha --exit ./test/lib/**/*.ts -t 50000",
37
- "test:e2e": "prisma db push --force-reset && dotenv -e .env.test -- ts-mocha --reporter spec --verbose --exit ./test/**/*.ts -t 60000",
64
+ "test": "yarn test:scripts && yarn test:unit",
65
+ "test:scripts": "node --test ./test/scripts/*.test.js",
66
+ "test:unit": "node ./scripts/run-unit-tests.js",
67
+ "test:e2e": "node ./scripts/run-e2e.js",
38
68
  "profiler": "node --prof ./bin/trucoshi-server",
39
- "prepublishOnly": "yarn test && yarn build:dist",
69
+ "prepublishOnly": "yarn validate && yarn build:dist:clean",
40
70
  "cli:autoplay": "APP_DEBUG_LEVEL=warn yarn run ts-node src/utils/scripts/autoplay",
41
71
  "cli:play": "APP_DEBUG_LEVEL=warn yarn run ts-node src/utils/scripts/play",
42
72
  "sync:skins": "node scripts/sync-skins.js",
@@ -57,10 +87,13 @@
57
87
  "chai": "^5.3.3",
58
88
  "mocha": "^11.7.5",
59
89
  "nodemon": "^3.1.14",
60
- "prisma": "^6.19.2",
90
+ "prettier": "3.6.2",
91
+ "rimraf": "^6.1.3",
61
92
  "sinon": "^21.0.2",
62
93
  "socket.io-client": "4.8.3",
63
- "ts-mocha": "^11.1.0"
94
+ "ts-mocha": "^11.1.0",
95
+ "ts-node": "^10.9.1",
96
+ "typescript": "^5.9.3"
64
97
  },
65
98
  "files": [
66
99
  "dist/lib/*",
@@ -79,14 +112,12 @@
79
112
  "@socket.io/redis-adapter": "8.3.0",
80
113
  "@types/jsonwebtoken": "^9.0.5",
81
114
  "@types/node-forge": "^1.3.14",
82
- "@types/redis": "^4.0.11",
83
- "axios": "^1.13.6",
115
+ "axios": "^1.18.1",
84
116
  "axios-cookiejar-support": "^6.0.5",
85
117
  "dotenv": "^16.0.3",
86
- "dotenv-cli": "^7.3.0",
87
- "form-data": "^4.0.5",
118
+ "form-data": "^4.0.6",
88
119
  "jsonwebtoken": "^9.0.3",
89
- "lightning-accounts": "6.3.0",
120
+ "lightning-accounts": "7.0.0-rc.0",
90
121
  "lodash.debounce": "^4.0.8",
91
122
  "lodash.memoize": "^4.1.2",
92
123
  "lodash.partialright": "^4.2.1",
@@ -95,11 +126,13 @@
95
126
  "path-scurry": "^2.0.2",
96
127
  "pino": "^9.14.0",
97
128
  "pino-pretty": "^13.1.3",
98
- "rimraf": "^6.1.3",
129
+ "prisma": "6.19.2",
130
+ "redis": "5.7.0",
99
131
  "safe-rng": "^1.0.4",
100
132
  "sanitize-html": "^2.17.1",
101
- "socket.io": "4.8.3",
102
- "ts-node": "^10.9.1",
103
- "typescript": "^5.9.3"
133
+ "socket.io": "4.8.3"
134
+ },
135
+ "resolutions": {
136
+ "axios/form-data": "4.0.6"
104
137
  }
105
138
  }
@@ -36,11 +36,11 @@ exports.Prisma = Prisma
36
36
  exports.$Enums = {}
37
37
 
38
38
  /**
39
- * Prisma Client JS version: 6.19.3
39
+ * Prisma Client JS version: 6.19.2
40
40
  * Query Engine version: c2990dca591cba766e3b7ef5d9e8a84796e47ab7
41
41
  */
42
42
  Prisma.prismaVersion = {
43
- client: "6.19.3",
43
+ client: "6.19.2",
44
44
  engine: "c2990dca591cba766e3b7ef5d9e8a84796e47ab7"
45
45
  }
46
46
 
@@ -342,7 +342,7 @@ const config = {
342
342
  "schemaEnvPath": "../../.env"
343
343
  },
344
344
  "relativePath": "..",
345
- "clientVersion": "6.19.3",
345
+ "clientVersion": "6.19.2",
346
346
  "engineVersion": "c2990dca591cba766e3b7ef5d9e8a84796e47ab7",
347
347
  "datasourceNames": [
348
348
  "db"
@@ -21,11 +21,11 @@ exports.Prisma = Prisma
21
21
  exports.$Enums = {}
22
22
 
23
23
  /**
24
- * Prisma Client JS version: 6.19.3
24
+ * Prisma Client JS version: 6.19.2
25
25
  * Query Engine version: c2990dca591cba766e3b7ef5d9e8a84796e47ab7
26
26
  */
27
27
  Prisma.prismaVersion = {
28
- client: "6.19.3",
28
+ client: "6.19.2",
29
29
  engine: "c2990dca591cba766e3b7ef5d9e8a84796e47ab7"
30
30
  }
31
31
 
@@ -433,7 +433,7 @@ export namespace Prisma {
433
433
  export import Exact = $Public.Exact
434
434
 
435
435
  /**
436
- * Prisma Client JS version: 6.19.3
436
+ * Prisma Client JS version: 6.19.2
437
437
  * Query Engine version: c2990dca591cba766e3b7ef5d9e8a84796e47ab7
438
438
  */
439
439
  export type PrismaVersion = {
@@ -36,11 +36,11 @@ exports.Prisma = Prisma
36
36
  exports.$Enums = {}
37
37
 
38
38
  /**
39
- * Prisma Client JS version: 6.19.3
39
+ * Prisma Client JS version: 6.19.2
40
40
  * Query Engine version: c2990dca591cba766e3b7ef5d9e8a84796e47ab7
41
41
  */
42
42
  Prisma.prismaVersion = {
43
- client: "6.19.3",
43
+ client: "6.19.2",
44
44
  engine: "c2990dca591cba766e3b7ef5d9e8a84796e47ab7"
45
45
  }
46
46
 
@@ -343,7 +343,7 @@ const config = {
343
343
  "schemaEnvPath": "../../.env"
344
344
  },
345
345
  "relativePath": "..",
346
- "clientVersion": "6.19.3",
346
+ "clientVersion": "6.19.2",
347
347
  "engineVersion": "c2990dca591cba766e3b7ef5d9e8a84796e47ab7",
348
348
  "datasourceNames": [
349
349
  "db"
@@ -151,7 +151,7 @@
151
151
  },
152
152
  "./*": "./*"
153
153
  },
154
- "version": "6.19.3",
154
+ "version": "6.19.2",
155
155
  "sideEffects": false,
156
156
  "imports": {
157
157
  "#wasm-engine-loader": {