@gaonjs/config 0.17.2 → 0.17.3

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.
Files changed (2) hide show
  1. package/dist/testkit.js +15 -2
  2. package/package.json +3 -3
package/dist/testkit.js CHANGED
@@ -13,8 +13,8 @@ import { loadGaonConfig } from './load.js';
13
13
  import { configureNonDbBatteries } from './wire.js';
14
14
  import { resetStorage } from '@gaonjs/storage';
15
15
  import { resetI18n } from '@gaonjs/i18n';
16
- import { connectNats, configureJobs, configureEvents, configureBroadcast, resetJobs, resetEvents, resetBroadcast, outboxServiceTxWrapper, ensureOutboxTable, relayOutboxBatch, setOutboxDrainer, } from '@gaonjs/async';
17
- import { createDb, registerConnection, deriveTestDatabaseConfig, destroyAllConnections, setServiceTxWrapper, getConnection, hasConnection, } from '@gaonjs/data';
16
+ import { connectNats, configureJobs, configureEvents, configureBroadcast, resetJobs, resetEvents, resetBroadcast, outboxServiceTxWrapper, ensureOutboxTable, relayOutboxBatch, setOutboxDrainer, setLockBackend, memoryLockBackend, } from '@gaonjs/async';
17
+ import { createDb, registerConnection, deriveTestDatabaseConfig, destroyAllConnections, setServiceTxWrapper, setCacheBackend, memoryCacheBackend, getConnection, hasConnection, } from '@gaonjs/data';
18
18
  /**
19
19
  * 테스트용 DB 커넥션 + DB 외 배터리(mail·storage·i18n)를 배선한다(결정 111·136).
20
20
  * 각 커넥션을 `<db>_test` 로 파생해 poolMax:1 로 붙이고, 스토리지·메일을 테스트
@@ -29,6 +29,16 @@ export async function connectTestDatabase(cwd = process.cwd()) {
29
29
  registerConnection(key, createDb(testCfg), base.adapter);
30
30
  }
31
31
  }
32
+ // 결정 249(샘플 C): 락·캐시 백엔드를 serve·work 의 wireDomain(결정 202)과 **대칭**으로
33
+ // 배선한다. 이게 없으면 lock()·cache() 를 쓰는 도메인 서비스가 serve/work 에선 정상인데
34
+ // `gaon test` 에서만 LockBackendUnconfiguredError 로 깨졌다(결정 143·144 의 잡·이벤트 짝에
35
+ // 이어 락·캐시 짝의 사각). 테스트는 단일 프로세스라 분산 락이 무의미하고, 락 키에는 NATS
36
+ // 의 GAON_STREAM_PREFIX 같은 테스트 격리 prefix 가 없어 Redis 를 쓰면 병렬 워커 간 오염
37
+ // 위험이 있다 — 그래서 Redis 유무와 무관하게 in-memory 백엔드로 격리한다(The One Way).
38
+ // 캐시는 기본이 memory 라 이미 동작하지만, 매 테스트 스위트에 fresh 백엔드를 심어 파일 간
39
+ // 캐시 잔상을 끊는다(격리 대칭).
40
+ setLockBackend(memoryLockBackend());
41
+ setCacheBackend(memoryCacheBackend());
32
42
  // 결정 136: 스토리지·메일·i18n 을 serve·work 와 같은 경로로 배선(테스트 격리 값).
33
43
  await configureNonDbBatteries(config, cwd, {
34
44
  bucketFor: (b) => `${b}-test`,
@@ -62,6 +72,9 @@ export async function connectTestDatabase(cwd = process.cwd()) {
62
72
  await destroyAllConnections();
63
73
  resetStorage();
64
74
  resetI18n();
75
+ // 결정 249: 락·캐시 백엔드 해제(다음 테스트 파일로 상태 누출 방지 · wireDomain.closeDomain 대칭).
76
+ setLockBackend(undefined);
77
+ setCacheBackend(undefined);
65
78
  // 잡·이벤트·broadcast 배선 해제 후 NATS 종료(다음 테스트 파일로 상태 누출 방지).
66
79
  resetJobs();
67
80
  resetEvents();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gaonjs/config",
3
- "version": "0.17.2",
3
+ "version": "0.17.3",
4
4
  "description": "Gaon 루트 설정 로더·자동 배선 (gaon.config.ts)",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -25,12 +25,12 @@
25
25
  ],
26
26
  "dependencies": {
27
27
  "ioredis": "^5.4.1",
28
- "@gaonjs/async": "0.15.0",
29
28
  "@gaonjs/core": "0.2.3",
30
- "@gaonjs/data": "0.17.0",
31
29
  "@gaonjs/mail": "0.3.0",
32
30
  "@gaonjs/storage": "0.1.4",
33
31
  "@gaonjs/i18n": "0.2.2",
32
+ "@gaonjs/async": "0.15.0",
33
+ "@gaonjs/data": "0.17.0",
34
34
  "@gaonjs/web": "0.19.4"
35
35
  },
36
36
  "devDependencies": {