diff --git a/.github/workflows/deploy-go-pando-pr.yml b/.github/workflows/deploy-go-pando-pr.yml index c6c82e965a..d051b5d8e8 100644 --- a/.github/workflows/deploy-go-pando-pr.yml +++ b/.github/workflows/deploy-go-pando-pr.yml @@ -18,6 +18,8 @@ on: - 'apps/sr-frontend-e2e/**' - 'libs/sr-assets/**' - 'libs/sr-consts/**' + - 'libs/sr-data/**' + - 'libs/sr-db/**' - 'libs/sr-dm/**' - 'libs/sr-formula/**' - 'libs/sr-stats/**' diff --git a/.github/workflows/deploy-go-wr-pr.yml b/.github/workflows/deploy-go-wr-pr.yml index 002c107df0..4729460bb4 100644 --- a/.github/workflows/deploy-go-wr-pr.yml +++ b/.github/workflows/deploy-go-wr-pr.yml @@ -18,6 +18,8 @@ on: - 'apps/sr-frontend-e2e/**' - 'libs/sr-assets/**' - 'libs/sr-consts/**' + - 'libs/sr-data/**' + - 'libs/sr-db/**' - 'libs/sr-dm/**' - 'libs/sr-formula/**' - 'libs/sr-stats/**' diff --git a/.github/workflows/deploy-sro-pr.yml b/.github/workflows/deploy-sro-pr.yml index b1f7e8dafd..8eb18dc743 100644 --- a/.github/workflows/deploy-sro-pr.yml +++ b/.github/workflows/deploy-sro-pr.yml @@ -16,16 +16,21 @@ on: - 'apps/gi-frontend-e2e/**' - 'apps/frontend/**' - 'apps/frontend-e2e/**' + - 'libs/consts/**' + - 'libs/dm/**' + - 'libs/gi-art-scanner/**' - 'libs/gi-assets/**' - - 'libs/gi-consts/**' - 'libs/gi-dm-localization/**' - 'libs/gi-formula/**' + - 'libs/gi-formula-ui/**' - 'libs/gi-good/**' - 'libs/gi-localization/**' - 'libs/gi-stats/**' - 'libs/gi-svgicons/**' - - 'libs/gi-util/**' - 'libs/gi-ui/**' + - 'libs/gi-util/**' + - 'libs/silly-wisher/**' + - 'libs/silly-wisher-names/**' types: [opened, reopened, synchronize, labeled] jobs: diff --git a/libs/sr-consts/src/index.ts b/libs/sr-consts/src/index.ts index df0c0e02ab..8d834b8894 100644 --- a/libs/sr-consts/src/index.ts +++ b/libs/sr-consts/src/index.ts @@ -2,3 +2,4 @@ export * from './character' export * from './common' export * from './lightCone' export * from './relic' +export * from './sro' diff --git a/libs/sr-consts/src/sro.ts b/libs/sr-consts/src/sro.ts new file mode 100644 index 0000000000..2df6bb5a3f --- /dev/null +++ b/libs/sr-consts/src/sro.ts @@ -0,0 +1,2 @@ +export const allHitModeKeys = ['hit', 'avgHit', 'critHit'] as const +export type HitModeKey = (typeof allHitModeKeys)[number] diff --git a/libs/sr-data/.eslintrc.json b/libs/sr-data/.eslintrc.json new file mode 100644 index 0000000000..9d9c0db55b --- /dev/null +++ b/libs/sr-data/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/libs/sr-data/README.md b/libs/sr-data/README.md new file mode 100644 index 0000000000..850a84a377 --- /dev/null +++ b/libs/sr-data/README.md @@ -0,0 +1,3 @@ +# sr-data + +This library was generated with [Nx](https://nx.dev). diff --git a/libs/sr-data/project.json b/libs/sr-data/project.json new file mode 100644 index 0000000000..e22756a50a --- /dev/null +++ b/libs/sr-data/project.json @@ -0,0 +1,16 @@ +{ + "name": "sr-data", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/sr-data/src", + "projectType": "library", + "targets": { + "lint": { + "executor": "@nx/linter:eslint", + "outputs": ["{options.outputFile}"], + "options": { + "lintFilePatterns": ["libs/sr-data/**/*.ts"] + } + } + }, + "tags": [] +} diff --git a/libs/sr-db/src/ICharacter.ts b/libs/sr-data/src/ICharacter.ts similarity index 100% rename from libs/sr-db/src/ICharacter.ts rename to libs/sr-data/src/ICharacter.ts diff --git a/libs/sr-db/src/ILightCone.ts b/libs/sr-data/src/ILightCone.ts similarity index 100% rename from libs/sr-db/src/ILightCone.ts rename to libs/sr-data/src/ILightCone.ts diff --git a/libs/sr-db/src/IRelic.ts b/libs/sr-data/src/IRelic.ts similarity index 100% rename from libs/sr-db/src/IRelic.ts rename to libs/sr-data/src/IRelic.ts diff --git a/libs/sr-db/src/ISRODatabase.ts b/libs/sr-data/src/ISrDatabase.ts similarity index 84% rename from libs/sr-db/src/ISRODatabase.ts rename to libs/sr-data/src/ISrDatabase.ts index 9e4e95cd76..9d50b811f4 100644 --- a/libs/sr-db/src/ISRODatabase.ts +++ b/libs/sr-data/src/ISrDatabase.ts @@ -2,8 +2,8 @@ import type { ICharacter } from './ICharacter' import type { ILightCone } from './ILightCone' import type { IRelic } from './IRelic' -export type ISRODatabase = { - format: 'SRO' +export type ISrDatabase = { + format: string source: string version: 1 characters?: ICharacter[] diff --git a/libs/sr-data/src/index.ts b/libs/sr-data/src/index.ts new file mode 100644 index 0000000000..98647c9c19 --- /dev/null +++ b/libs/sr-data/src/index.ts @@ -0,0 +1,4 @@ +export * from './ICharacter' +export * from './ILightCone' +export * from './IRelic' +export * from './ISrDatabase' diff --git a/libs/sr-data/tsconfig.json b/libs/sr-data/tsconfig.json new file mode 100644 index 0000000000..db7b566661 --- /dev/null +++ b/libs/sr-data/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "module": "commonjs", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + } + ] +} diff --git a/libs/sr-data/tsconfig.lib.json b/libs/sr-data/tsconfig.lib.json new file mode 100644 index 0000000000..33eca2c2cd --- /dev/null +++ b/libs/sr-data/tsconfig.lib.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "types": ["node"] + }, + "include": ["src/**/*.ts"], + "exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"] +} diff --git a/libs/sr-db/README.md b/libs/sr-db/README.md index e505eeb82e..4c1591a537 100644 --- a/libs/sr-db/README.md +++ b/libs/sr-db/README.md @@ -1,7 +1,3 @@ # sr-db This library was generated with [Nx](https://nx.dev). - -## Running unit tests - -Run `nx test sr-db` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/sr-db/project.json b/libs/sr-db/project.json index 94f129db50..74ac1693f9 100644 --- a/libs/sr-db/project.json +++ b/libs/sr-db/project.json @@ -10,14 +10,6 @@ "options": { "lintFilePatterns": ["libs/sr-db/**/*.ts"] } - }, - "test": { - "executor": "@nx/vite:test", - "outputs": ["{options.reportsDirectory}"], - "options": { - "passWithNoTests": true, - "reportsDirectory": "../../coverage/libs/sr-db" - } } }, "tags": [] diff --git a/libs/sr-db/src/ISroCharacter.ts b/libs/sr-db/src/ISroCharacter.ts new file mode 100644 index 0000000000..9e0da535aa --- /dev/null +++ b/libs/sr-db/src/ISroCharacter.ts @@ -0,0 +1,30 @@ +import type { + RelicSlotKey, + CharacterKey, + HitModeKey, +} from '@genshin-optimizer/sr-consts' +import type { ICharacter } from '@genshin-optimizer/sr-data' + +export interface ISroCharacter extends ICharacter { + hitMode: HitModeKey + // conditional: IConditionalValues + // bonusStats: Partial> + // enemyOverride: Partial< + // Record< + // EleEnemyResKey | 'enemyLevel' | 'enemyDefRed_' | 'enemyDefIgn_', + // number + // > + // > + compareData: boolean + // customMultiTarget: CustomMultiTarget[] + team: [ + teammate1: CharacterKey | '', + teammate2: CharacterKey | '', + teammate3: CharacterKey | '' + ] +} + +export interface ICachedSroCharacter extends ISroCharacter { + equippedRelics: Record + equippedLightCone: string +} diff --git a/libs/sr-db/src/ISroDatabase.ts b/libs/sr-db/src/ISroDatabase.ts new file mode 100644 index 0000000000..689541bfca --- /dev/null +++ b/libs/sr-db/src/ISroDatabase.ts @@ -0,0 +1,12 @@ +import { type ISrDatabase } from '@genshin-optimizer/sr-data' + +export const SroSource = 'Star Rail Optimizer' as const + +export interface ISroDatabase extends ISrDatabase { + format: 'Sro' + version: 1 + dbVersion: number + source: typeof SroSource + // buildSettings?: Array + [sroSettingsKey: string]: unknown +} diff --git a/libs/sr-db/src/index.ts b/libs/sr-db/src/index.ts index f971da55eb..f51df54c23 100644 --- a/libs/sr-db/src/index.ts +++ b/libs/sr-db/src/index.ts @@ -1 +1,2 @@ -export * from './lib/sr-db' +export * from './ISroCharacter' +export * from './ISroDatabase' diff --git a/libs/sr-db/tsconfig.json b/libs/sr-db/tsconfig.json index f5b85657a8..db7b566661 100644 --- a/libs/sr-db/tsconfig.json +++ b/libs/sr-db/tsconfig.json @@ -14,9 +14,6 @@ "references": [ { "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.spec.json" } ] } diff --git a/libs/sr-db/tsconfig.spec.json b/libs/sr-db/tsconfig.spec.json deleted file mode 100644 index d23138351e..0000000000 --- a/libs/sr-db/tsconfig.spec.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "../../dist/out-tsc", - "types": [ - "vitest/globals", - "vitest/importMeta", - "vite/client", - "node", - "vitest" - ] - }, - "include": [ - "vite.config.ts", - "src/**/*.test.ts", - "src/**/*.spec.ts", - "src/**/*.test.tsx", - "src/**/*.spec.tsx", - "src/**/*.test.js", - "src/**/*.spec.js", - "src/**/*.test.jsx", - "src/**/*.spec.jsx", - "src/**/*.d.ts" - ] -} diff --git a/libs/sr-db/vite.config.ts b/libs/sr-db/vite.config.ts deleted file mode 100644 index b419534c6c..0000000000 --- a/libs/sr-db/vite.config.ts +++ /dev/null @@ -1,24 +0,0 @@ -/// -import { defineConfig } from 'vite' - -import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin' - -export default defineConfig({ - cacheDir: '../../node_modules/.vite/sr-db', - - plugins: [nxViteTsPaths()], - - // Uncomment this if you are using workers. - // worker: { - // plugins: [ nxViteTsPaths() ], - // }, - - test: { - globals: true, - cache: { - dir: '../../node_modules/.vitest', - }, - environment: 'node', - include: ['src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], - }, -}) diff --git a/tsconfig.base.json b/tsconfig.base.json index 722209c4c6..57ff282ff7 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -56,6 +56,7 @@ ], "@genshin-optimizer/sr-assets": ["libs/sr-assets/src/index.ts"], "@genshin-optimizer/sr-consts": ["libs/sr-consts/src/index.ts"], + "@genshin-optimizer/sr-data": ["libs/sr-data/src/index.ts"], "@genshin-optimizer/sr-db": ["libs/sr-db/src/index.ts"], "@genshin-optimizer/sr-dm": ["libs/sr-dm/src/index.ts"], "@genshin-optimizer/sr-formula": ["libs/sr-formula/src/index.ts"],