From fa22562bb11a5ee326ef879d9e4f6ab1db741bc9 Mon Sep 17 00:00:00 2001 From: Hide_D Date: Sun, 28 Dec 2025 12:27:47 +0000 Subject: [PATCH] refactor: migrate RNG and utility functions to common package - Removed RNG interface and related utility classes from logic package. - Added RNG interface and utility classes in common package. - Implemented various RNG classes (ConstantRNG, MidpointRNG, SineRNG, SequenceRNG) in common package. - Updated conversion utilities for BytesLike to ArrayBuffer and Uint8Array in common package. - Adjusted tests to import RNG utilities from the new common package. - Updated vitest configuration to resolve common package imports. --- docs/architecture/rewrite-plan.md | 2 +- packages/common/package.json | 4 +++- packages/common/src/index.ts | 9 ++++++++- packages/{logic/src/ports => common/src}/rng.ts | 0 packages/{logic => common}/src/util/BytesLike.ts | 0 packages/{logic => common}/src/util/LiteHashDRBG.ts | 0 packages/{logic => common}/src/util/RNG.ts | 0 packages/{logic => common}/src/util/RandUtil.ts | 0 packages/{logic => common}/src/util/TestRNG.ts | 0 .../src/util/convertBytesLikeToArrayBuffer.ts | 0 .../src/util/convertBytesLikeToUint8Array.ts | 0 packages/logic/package.json | 2 +- packages/logic/src/index.ts | 9 +-------- packages/logic/src/triggers/general.ts | 2 +- packages/logic/test/rng.test.ts | 11 +++++++---- packages/logic/test/test-rngs.test.ts | 2 +- packages/logic/vitest.config.ts | 7 +++++++ 17 files changed, 30 insertions(+), 18 deletions(-) rename packages/{logic/src/ports => common/src}/rng.ts (100%) rename packages/{logic => common}/src/util/BytesLike.ts (100%) rename packages/{logic => common}/src/util/LiteHashDRBG.ts (100%) rename packages/{logic => common}/src/util/RNG.ts (100%) rename packages/{logic => common}/src/util/RandUtil.ts (100%) rename packages/{logic => common}/src/util/TestRNG.ts (100%) rename packages/{logic => common}/src/util/convertBytesLikeToArrayBuffer.ts (100%) rename packages/{logic => common}/src/util/convertBytesLikeToUint8Array.ts (100%) diff --git a/docs/architecture/rewrite-plan.md b/docs/architecture/rewrite-plan.md index 1570891..279f161 100644 --- a/docs/architecture/rewrite-plan.md +++ b/docs/architecture/rewrite-plan.md @@ -5,7 +5,7 @@ Vue 3 frontends. ## Planned Layout -- `/packages/common`: shared utilities and type definitions (no infra) +- `/packages/common`: shared utilities and type definitions (RNG/bytes/테스트 RNG 포함, no infra) - `/packages/infra`: Prisma/Redis connectors and other runtime infra - `/packages/logic`: pure game logic with DI and interfaces - `/app/gateway-frontend`: gateway UI diff --git a/packages/common/package.json b/packages/common/package.json index 9c17ebd..c3f65ec 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -11,6 +11,8 @@ "lint": "node -e \"console.log('lint not configured')\"", "test": "node -e \"console.log('test not configured')\"" }, - "dependencies": {}, + "dependencies": { + "js-sha512": "^0.9.0" + }, "devDependencies": {} } diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index cb0ff5c..4b4a672 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -1 +1,8 @@ -export {}; +export * from './rng.js'; +export * from './util/BytesLike.js'; +export * from './util/convertBytesLikeToArrayBuffer.js'; +export * from './util/convertBytesLikeToUint8Array.js'; +export * from './util/LiteHashDRBG.js'; +export * from './util/RNG.js'; +export * from './util/RandUtil.js'; +export * from './util/TestRNG.js'; diff --git a/packages/logic/src/ports/rng.ts b/packages/common/src/rng.ts similarity index 100% rename from packages/logic/src/ports/rng.ts rename to packages/common/src/rng.ts diff --git a/packages/logic/src/util/BytesLike.ts b/packages/common/src/util/BytesLike.ts similarity index 100% rename from packages/logic/src/util/BytesLike.ts rename to packages/common/src/util/BytesLike.ts diff --git a/packages/logic/src/util/LiteHashDRBG.ts b/packages/common/src/util/LiteHashDRBG.ts similarity index 100% rename from packages/logic/src/util/LiteHashDRBG.ts rename to packages/common/src/util/LiteHashDRBG.ts diff --git a/packages/logic/src/util/RNG.ts b/packages/common/src/util/RNG.ts similarity index 100% rename from packages/logic/src/util/RNG.ts rename to packages/common/src/util/RNG.ts diff --git a/packages/logic/src/util/RandUtil.ts b/packages/common/src/util/RandUtil.ts similarity index 100% rename from packages/logic/src/util/RandUtil.ts rename to packages/common/src/util/RandUtil.ts diff --git a/packages/logic/src/util/TestRNG.ts b/packages/common/src/util/TestRNG.ts similarity index 100% rename from packages/logic/src/util/TestRNG.ts rename to packages/common/src/util/TestRNG.ts diff --git a/packages/logic/src/util/convertBytesLikeToArrayBuffer.ts b/packages/common/src/util/convertBytesLikeToArrayBuffer.ts similarity index 100% rename from packages/logic/src/util/convertBytesLikeToArrayBuffer.ts rename to packages/common/src/util/convertBytesLikeToArrayBuffer.ts diff --git a/packages/logic/src/util/convertBytesLikeToUint8Array.ts b/packages/common/src/util/convertBytesLikeToUint8Array.ts similarity index 100% rename from packages/logic/src/util/convertBytesLikeToUint8Array.ts rename to packages/common/src/util/convertBytesLikeToUint8Array.ts diff --git a/packages/logic/package.json b/packages/logic/package.json index c338457..af8cc4f 100644 --- a/packages/logic/package.json +++ b/packages/logic/package.json @@ -18,7 +18,7 @@ "test": "vitest run --config vitest.config.ts" }, "dependencies": { - "js-sha512": "^0.9.0" + "@sammo-ts/common": "workspace:*" }, "devDependencies": { "vitest": "^4.0.16" diff --git a/packages/logic/src/index.ts b/packages/logic/src/index.ts index f665292..bcb5d0e 100644 --- a/packages/logic/src/index.ts +++ b/packages/logic/src/index.ts @@ -1,11 +1,4 @@ export * from './domain/entities.js'; -export * from './ports/rng.js'; +export type { RandomGenerator } from '@sammo-ts/common'; export * from './ports/world.js'; export * from './triggers/index.js'; -export * from './util/BytesLike.js'; -export * from './util/convertBytesLikeToArrayBuffer.js'; -export * from './util/convertBytesLikeToUint8Array.js'; -export * from './util/LiteHashDRBG.js'; -export * from './util/RNG.js'; -export * from './util/RandUtil.js'; -export * from './util/TestRNG.js'; diff --git a/packages/logic/src/triggers/general.ts b/packages/logic/src/triggers/general.ts index 32704b9..16848e3 100644 --- a/packages/logic/src/triggers/general.ts +++ b/packages/logic/src/triggers/general.ts @@ -1,5 +1,5 @@ import type { General, GeneralTriggerState } from '../domain/entities.js'; -import type { RandomGenerator } from '../ports/rng.js'; +import type { RandomGenerator } from '@sammo-ts/common'; import type { WorldStateRepository } from '../ports/world.js'; import { TriggerCaller, type Trigger } from './core.js'; diff --git a/packages/logic/test/rng.test.ts b/packages/logic/test/rng.test.ts index 45e8238..a83df09 100644 --- a/packages/logic/test/rng.test.ts +++ b/packages/logic/test/rng.test.ts @@ -1,8 +1,11 @@ import { describe, expect, it } from 'vitest'; -import { bufferByteSize, LiteHashDRBG } from '../src/util/LiteHashDRBG.js'; -import { RandUtil } from '../src/util/RandUtil.js'; -import { convertBytesLikeToArrayBuffer } from '../src/util/convertBytesLikeToArrayBuffer.js'; -import { convertBytesLikeToUint8Array as toBytes } from '../src/util/convertBytesLikeToUint8Array.js'; +import { + bufferByteSize, + convertBytesLikeToArrayBuffer, + convertBytesLikeToUint8Array as toBytes, + LiteHashDRBG, + RandUtil, +} from '@sammo-ts/common'; type Bytes = ArrayBuffer | DataView | Uint8Array; type MaybeBytes = Bytes | string; diff --git a/packages/logic/test/test-rngs.test.ts b/packages/logic/test/test-rngs.test.ts index b4143de..b0c8801 100644 --- a/packages/logic/test/test-rngs.test.ts +++ b/packages/logic/test/test-rngs.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest'; -import { ConstantRNG, MidpointRNG, SequenceRNG, SineRNG } from '../src/util/TestRNG.js'; +import { ConstantRNG, MidpointRNG, SequenceRNG, SineRNG } from '@sammo-ts/common'; const toArray = (bytes: Uint8Array): number[] => Array.from(bytes); diff --git a/packages/logic/vitest.config.ts b/packages/logic/vitest.config.ts index 97cb2e9..69a4a8a 100644 --- a/packages/logic/vitest.config.ts +++ b/packages/logic/vitest.config.ts @@ -1,6 +1,13 @@ +import path from 'node:path'; + import { defineConfig } from 'vitest/config'; export default defineConfig({ + resolve: { + alias: { + '@sammo-ts/common': path.resolve(__dirname, '../common/src/index.ts'), + }, + }, test: { environment: 'node', globals: true,