diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..cabf43b --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +24 \ No newline at end of file diff --git a/app/game-api/package.json b/app/game-api/package.json new file mode 100644 index 0000000..121ea7c --- /dev/null +++ b/app/game-api/package.json @@ -0,0 +1,11 @@ +{ + "name": "@sammo-ts/game-api", + "private": true, + "version": "0.0.0", + "scripts": { + "build": "tsc -p tsconfig.json", + "dev": "node -e \"console.log('dev not configured')\"", + "lint": "node -e \"console.log('lint not configured')\"", + "test": "node -e \"console.log('test not configured')\"" + } +} diff --git a/app/game-api/src/index.ts b/app/game-api/src/index.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/app/game-api/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/app/game-api/tsconfig.json b/app/game-api/tsconfig.json new file mode 100644 index 0000000..2c11d91 --- /dev/null +++ b/app/game-api/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true + }, + "include": ["src"] +} diff --git a/app/game-engine/package.json b/app/game-engine/package.json new file mode 100644 index 0000000..337a914 --- /dev/null +++ b/app/game-engine/package.json @@ -0,0 +1,11 @@ +{ + "name": "@sammo-ts/game-engine", + "private": true, + "version": "0.0.0", + "scripts": { + "build": "tsc -p tsconfig.json", + "dev": "node -e \"console.log('dev not configured')\"", + "lint": "node -e \"console.log('lint not configured')\"", + "test": "node -e \"console.log('test not configured')\"" + } +} diff --git a/app/game-engine/src/index.ts b/app/game-engine/src/index.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/app/game-engine/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/app/game-engine/tsconfig.json b/app/game-engine/tsconfig.json new file mode 100644 index 0000000..2c11d91 --- /dev/null +++ b/app/game-engine/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true + }, + "include": ["src"] +} diff --git a/app/game-frontend/package.json b/app/game-frontend/package.json new file mode 100644 index 0000000..fcddaac --- /dev/null +++ b/app/game-frontend/package.json @@ -0,0 +1,11 @@ +{ + "name": "@sammo-ts/game-frontend", + "private": true, + "version": "0.0.0", + "scripts": { + "build": "tsc -p tsconfig.json", + "dev": "node -e \"console.log('dev not configured')\"", + "lint": "node -e \"console.log('lint not configured')\"", + "test": "node -e \"console.log('test not configured')\"" + } +} diff --git a/app/game-frontend/src/main.ts b/app/game-frontend/src/main.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/app/game-frontend/src/main.ts @@ -0,0 +1 @@ +export {}; diff --git a/app/game-frontend/tsconfig.json b/app/game-frontend/tsconfig.json new file mode 100644 index 0000000..a18b41c --- /dev/null +++ b/app/game-frontend/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"] + }, + "include": ["src"] +} diff --git a/app/gateway-api/package.json b/app/gateway-api/package.json new file mode 100644 index 0000000..bced06d --- /dev/null +++ b/app/gateway-api/package.json @@ -0,0 +1,11 @@ +{ + "name": "@sammo-ts/gateway-api", + "private": true, + "version": "0.0.0", + "scripts": { + "build": "tsc -p tsconfig.json", + "dev": "node -e \"console.log('dev not configured')\"", + "lint": "node -e \"console.log('lint not configured')\"", + "test": "node -e \"console.log('test not configured')\"" + } +} diff --git a/app/gateway-api/src/index.ts b/app/gateway-api/src/index.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/app/gateway-api/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/app/gateway-api/tsconfig.json b/app/gateway-api/tsconfig.json new file mode 100644 index 0000000..2c11d91 --- /dev/null +++ b/app/gateway-api/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true + }, + "include": ["src"] +} diff --git a/app/gateway-frontend/package.json b/app/gateway-frontend/package.json new file mode 100644 index 0000000..a6d0ca9 --- /dev/null +++ b/app/gateway-frontend/package.json @@ -0,0 +1,11 @@ +{ + "name": "@sammo-ts/gateway-frontend", + "private": true, + "version": "0.0.0", + "scripts": { + "build": "tsc -p tsconfig.json", + "dev": "node -e \"console.log('dev not configured')\"", + "lint": "node -e \"console.log('lint not configured')\"", + "test": "node -e \"console.log('test not configured')\"" + } +} diff --git a/app/gateway-frontend/src/main.ts b/app/gateway-frontend/src/main.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/app/gateway-frontend/src/main.ts @@ -0,0 +1 @@ +export {}; diff --git a/app/gateway-frontend/tsconfig.json b/app/gateway-frontend/tsconfig.json new file mode 100644 index 0000000..a18b41c --- /dev/null +++ b/app/gateway-frontend/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"] + }, + "include": ["src"] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..025c4e9 --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "sammo-ts", + "private": true, + "version": "0.0.0", + "scripts": { + "lint": "pnpm -r lint", + "test": "pnpm -r test", + "build": "pnpm -r build", + "dev": "pnpm -r dev", + "build:server": "pnpm --filter ./tools/build-scripts build:server --" + }, + "devDependencies": { + "@types/node": "^20.14.9", + "typescript": "^5.5.4" + } +} diff --git a/packages/common/package.json b/packages/common/package.json new file mode 100644 index 0000000..5924ef6 --- /dev/null +++ b/packages/common/package.json @@ -0,0 +1,13 @@ +{ + "name": "@sammo-ts/common", + "private": true, + "version": "0.0.0", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc -p tsconfig.json", + "dev": "node -e \"console.log('dev not configured')\"", + "lint": "node -e \"console.log('lint not configured')\"", + "test": "node -e \"console.log('test not configured')\"" + } +} diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/packages/common/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/common/tsconfig.json b/packages/common/tsconfig.json new file mode 100644 index 0000000..2c11d91 --- /dev/null +++ b/packages/common/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true + }, + "include": ["src"] +} diff --git a/packages/logic/package.json b/packages/logic/package.json new file mode 100644 index 0000000..7a59412 --- /dev/null +++ b/packages/logic/package.json @@ -0,0 +1,13 @@ +{ + "name": "@sammo-ts/logic", + "private": true, + "version": "0.0.0", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc -p tsconfig.json", + "dev": "node -e \"console.log('dev not configured')\"", + "lint": "node -e \"console.log('lint not configured')\"", + "test": "node -e \"console.log('test not configured')\"" + } +} diff --git a/packages/logic/src/index.ts b/packages/logic/src/index.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/packages/logic/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/packages/logic/tsconfig.json b/packages/logic/tsconfig.json new file mode 100644 index 0000000..2c11d91 --- /dev/null +++ b/packages/logic/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true + }, + "include": ["src"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..0cb263c --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,55 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@types/node': + specifier: ^20.14.9 + version: 20.19.27 + typescript: + specifier: ^5.5.4 + version: 5.9.3 + + app/game-api: {} + + app/game-engine: {} + + app/game-frontend: {} + + app/gateway-api: {} + + app/gateway-frontend: {} + + packages/common: {} + + packages/logic: {} + + tools/build-scripts: {} + +packages: + + '@types/node@20.19.27': + resolution: {integrity: sha512-N2clP5pJhB2YnZJ3PIHFk5RkygRX5WO/5f0WC08tp0wd+sv0rsJk3MqWn3CbNmT2J505a5336jaQj4ph1AdMug==} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + +snapshots: + + '@types/node@20.19.27': + dependencies: + undici-types: 6.21.0 + + typescript@5.9.3: {} + + undici-types@6.21.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..58c366a --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +packages: + - "packages/*" + - "app/*" + - "tools/*" diff --git a/tools/build-scripts/build-server.mjs b/tools/build-scripts/build-server.mjs new file mode 100644 index 0000000..2de0410 --- /dev/null +++ b/tools/build-scripts/build-server.mjs @@ -0,0 +1,18 @@ +import path from 'node:path'; +import { fileURLToPath } from 'node:url'; + +const args = process.argv.slice(2); +const profileFlagIndex = args.indexOf('--profile'); +const profile = profileFlagIndex >= 0 ? args[profileFlagIndex + 1] : process.env.PROFILE; + +if (!profile) { + console.error('Missing profile. Use --profile or set PROFILE.'); + process.exit(1); +} + +const scriptDir = path.dirname(fileURLToPath(import.meta.url)); +const repoRoot = path.resolve(scriptDir, '../..'); +const outputDir = path.join(repoRoot, 'dist', profile); + +console.log(`[build-scripts] build:server placeholder for profile: ${profile}`); +console.log(`[build-scripts] Expected output: ${outputDir}`); diff --git a/tools/build-scripts/package.json b/tools/build-scripts/package.json new file mode 100644 index 0000000..eff4db4 --- /dev/null +++ b/tools/build-scripts/package.json @@ -0,0 +1,12 @@ +{ + "name": "@sammo-ts/build-scripts", + "private": true, + "version": "0.0.0", + "scripts": { + "build": "tsc -p tsconfig.json", + "dev": "node -e \"console.log('dev not configured')\"", + "lint": "node -e \"console.log('lint not configured')\"", + "test": "node -e \"console.log('test not configured')\"", + "build:server": "node ./build-server.mjs" + } +} diff --git a/tools/build-scripts/src/index.ts b/tools/build-scripts/src/index.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/tools/build-scripts/src/index.ts @@ -0,0 +1 @@ +export {}; diff --git a/tools/build-scripts/tsconfig.json b/tools/build-scripts/tsconfig.json new file mode 100644 index 0000000..2c11d91 --- /dev/null +++ b/tools/build-scripts/tsconfig.json @@ -0,0 +1,9 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "dist", + "rootDir": "src", + "composite": true + }, + "include": ["src"] +} diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 0000000..2e9c961 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "CommonJS", + "moduleResolution": "Node", + "lib": ["ES2022"], + "strict": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true + } +}