Skip to content

Commit 22c99ec

Browse files
authored
Merge pull request #1644 from ebkr/develop
Release 3.1.56 (Develop)
2 parents 197d845 + 004effc commit 22c99ec

File tree

84 files changed

+2886
-1686
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+2886
-1686
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
uses: actions/setup-node@v3
2828
with:
2929
# The talk on the street says this might be a good version for building.
30-
node-version: 19.2.0
30+
node-version: 20.11.0
3131
cache: yarn
3232

3333
- name: Install Yarn dependencies

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
uses: actions/setup-node@v3
2828
with:
2929
# The talk on the street says this might be a good version for building.
30-
node-version: 19.2.0
30+
node-version: 20.11.0
3131
cache: yarn
3232

3333
- name: Install Yarn dependencies

BUILDING.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Setting Up
22
### Prerequisites
3-
- Node.js (>=18.0.0)
3+
- Node.js (>=20.0.0)
44
- Yarn
55
- Quasar CLI (Install using `yarn global add @quasar/cli`)
6-
- Python2 (EOL for 4 years. Goodluck!)
6+
- Python 2
77

88
#### Linux Build
99
- rpm builder

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
### 3.1.56
2+
#### Games added
3+
- Subterror
4+
- MiSide
5+
- Dale & Dawson
6+
- I Am Your Beast
7+
- Bomb Rush Cyberfunk
8+
- Added "Other" option
9+
- Aloft
10+
- Correct AppID is used to launch on Steam
11+
12+
#### Notable changes
13+
- Faster access to the profile selection screen
14+
115
### 3.1.55
216
#### Games added
317
- ATLYSS

DevEnvSetup.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
2. Install NVM (Node Version Manager)
77
3. Open Git Bash as admin
88
4. Go into repo root folder
9-
5. Run `nvm install 14`
10-
6. Run `nvm use 14.X.X` with "X" replaced with the version NVM installed. e.g. `nvm use 14.21.1`
9+
5. Run `nvm install 20`
10+
6. Run `nvm use 20.X.X` with "X" replaced with the version NVM installed. e.g. `nvm use 20.21.1`
1111
7. Run `npm install --global yarn`
1212
8. Exit Git Bash
1313
9. Open PowerShell as Admin

docs/Adding a game.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@
3737
- Required for Unreal games relying on unreal-shimloader.
3838
- **TsUrl**
3939
- The Thunderstore API endpoint for the listing.
40-
- **ExclusionsUrl**
41-
- The URL used to load package exclusions. Generally just kept the same. No real reason to change until it becomes a large file as extra overhead to maintain.
4240
- **Platforms**
4341
- Array of `StorePlatformMetadata` for the different supported storefronts. Identifier is not required, however is expected for Steam and EGS (more potentially in future).
4442
- **GameImage**

jest.config.js

Lines changed: 75 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -2,76 +2,81 @@ const esModules = ['quasar/lang', 'lodash-es'].join('|');
22

33
/* eslint-env node */
44
module.exports = {
5-
globals: {
6-
__DEV__: true,
7-
// TODO: Remove if resolved natively https://github.com/vuejs/vue-jest/issues/175
8-
'vue-jest': {
9-
pug: { doctype: 'html' },
5+
globals: {
6+
__DEV__: true,
7+
// TODO: Remove if resolved natively https://github.com/vuejs/vue-jest/issues/175
8+
'vue-jest': {
9+
pug: { doctype: 'html' }
10+
}
1011
},
11-
},
12-
setupFilesAfterEnv: ['<rootDir>/test/jest/jest.setup.ts'],
13-
// noStackTrace: true,
14-
// bail: true,
15-
// cache: false,
16-
// verbose: true,
17-
// watch: true,
18-
collectCoverage: false,
19-
coverageDirectory: '<rootDir>/test/jest/coverage',
20-
collectCoverageFrom: [
21-
'<rootDir>/src/**/*.vue',
22-
'<rootDir>/src/**/*.js',
23-
'<rootDir>/src/**/*.ts',
24-
'<rootDir>/src/**/*.jsx',
25-
'<rootDir>/src/**/*.tsx',
26-
],
27-
coveragePathIgnorePatterns: ['/node_modules/', '.d.ts$'],
28-
coverageThreshold: {
29-
global: {
30-
// branches: 50,
31-
// functions: 50,
32-
// lines: 50,
33-
// statements: 50
12+
testEnvironmentOptions: {
13+
url: 'http://localhost/',
3414
},
35-
},
36-
testMatch: [
37-
// Matches tests in any subfolder of 'src' or into 'test/jest/__tests__'
38-
// Matches all files with extension 'js', 'jsx', 'ts' and 'tsx'
39-
'<rootDir>/test/jest/__tests__/**/*.(spec|test).+(ts|js)?(x)',
40-
'<rootDir>/src/**/*.jest.(spec|test).+(ts|js)?(x)',
41-
],
42-
// Extension-less imports of components are resolved to .ts files by TS,
43-
// grating correct type-checking in test files.
44-
// Being 'vue' the first moduleFileExtension option, the very same imports
45-
// will be resolved to .vue files by Jest, if both .vue and .ts files are
46-
// in the same folder.
47-
// This guarantee a great dev experience both for testing and type-checking.
48-
// See https://github.com/vuejs/vue-jest/issues/188#issuecomment-620750728
49-
moduleFileExtensions: ['vue', 'js', 'jsx', 'json', 'ts', 'tsx'],
50-
moduleNameMapper: {
51-
'^quasar$': 'quasar/dist/quasar.common.js',
52-
'^~/(.*)$': '<rootDir>/$1',
53-
'^src/(.*)$': '<rootDir>/src/$1',
54-
'^app/(.*)$': '<rootDir>/$1',
55-
'^components/(.*)$': '<rootDir>/src/components/$1',
56-
'^layouts/(.*)$': '<rootDir>/src/layouts/$1',
57-
'^pages/(.*)$': '<rootDir>/src/pages/$1',
58-
'^assets/(.*)$': '<rootDir>/src/assets/$1',
59-
'^boot/(.*)$': '<rootDir>/src/boot/$1',
60-
'.*css$': '<rootDir>/test/jest/__tests__/__stub_module_files__/style.js',
61-
},
62-
transform: {
63-
// See https://jestjs.io/docs/en/configuration.html#transformignorepatterns-array-string
64-
[`^(${esModules}).+\\.js$`]: 'babel-jest',
65-
'^.+\\.(ts|js|html)$': 'ts-jest',
66-
'^.+\\.(ts|js)$': 'babel-jest',
67-
// vue-jest uses find-babel-file, which searches by this order:
68-
// (async) .babelrc, .babelrc.js, package.json, babel.config.js
69-
// (sync) .babelrc, .babelrc.js, babel.config.js, package.json
70-
// https://github.com/tleunen/find-babel-config/issues/33
71-
'.*\\.vue$': 'vue-jest',
72-
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$':
73-
'jest-transform-stub',
74-
},
75-
transformIgnorePatterns: [`node_modules/(?!(${esModules}))`],
76-
snapshotSerializers: ['<rootDir>/node_modules/jest-serializer-vue'],
15+
testEnvironment: 'jsdom',
16+
testURL: 'http://localhost/',
17+
setupFilesAfterEnv: ['<rootDir>/test/jest/jest.setup.ts'],
18+
// noStackTrace: true,
19+
// bail: true,
20+
// cache: false,
21+
// verbose: true,
22+
// watch: true,
23+
collectCoverage: false,
24+
coverageDirectory: '<rootDir>/test/jest/coverage',
25+
collectCoverageFrom: [
26+
'<rootDir>/src/**/*.vue',
27+
'<rootDir>/src/**/*.js',
28+
'<rootDir>/src/**/*.ts',
29+
'<rootDir>/src/**/*.jsx',
30+
'<rootDir>/src/**/*.tsx'
31+
],
32+
coveragePathIgnorePatterns: ['/node_modules/', '.d.ts$'],
33+
coverageThreshold: {
34+
global: {
35+
// branches: 50,
36+
// functions: 50,
37+
// lines: 50,
38+
// statements: 50
39+
}
40+
},
41+
testMatch: [
42+
// Matches tests in any subfolder of 'src' or into 'test/jest/__tests__'
43+
// Matches all files with extension 'js', 'jsx', 'ts' and 'tsx'
44+
'<rootDir>/test/jest/__tests__/**/*.(spec|test).+(ts|js)?(x)',
45+
'<rootDir>/src/**/*.jest.(spec|test).+(ts|js)?(x)'
46+
],
47+
// Extension-less imports of components are resolved to .ts files by TS,
48+
// grating correct type-checking in test files.
49+
// Being 'vue' the first moduleFileExtension option, the very same imports
50+
// will be resolved to .vue files by Jest, if both .vue and .ts files are
51+
// in the same folder.
52+
// This guarantee a great dev experience both for testing and type-checking.
53+
// See https://github.com/vuejs/vue-jest/issues/188#issuecomment-620750728
54+
moduleFileExtensions: ['vue', 'js', 'jsx', 'json', 'ts', 'tsx'],
55+
moduleNameMapper: {
56+
'^quasar$': 'quasar/dist/quasar.common.js',
57+
'^~/(.*)$': '<rootDir>/$1',
58+
'^src/(.*)$': '<rootDir>/src/$1',
59+
'^app/(.*)$': '<rootDir>/$1',
60+
'^components/(.*)$': '<rootDir>/src/components/$1',
61+
'^layouts/(.*)$': '<rootDir>/src/layouts/$1',
62+
'^pages/(.*)$': '<rootDir>/src/pages/$1',
63+
'^assets/(.*)$': '<rootDir>/src/assets/$1',
64+
'^boot/(.*)$': '<rootDir>/src/boot/$1',
65+
'.*css$': '<rootDir>/test/jest/__tests__/__stub_module_files__/style.js'
66+
},
67+
transform: {
68+
// See https://jestjs.io/docs/en/configuration.html#transformignorepatterns-array-string
69+
[`^(${esModules}).+\\.js$`]: 'babel-jest',
70+
'^.+\\.(ts|js|html)$': 'ts-jest',
71+
'^.+\\.(ts|js)$': 'babel-jest',
72+
// vue-jest uses find-babel-file, which searches by this order:
73+
// (async) .babelrc, .babelrc.js, package.json, babel.config.js
74+
// (sync) .babelrc, .babelrc.js, babel.config.js, package.json
75+
// https://github.com/tleunen/find-babel-config/issues/33
76+
'.*\\.vue$': 'vue-jest',
77+
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$':
78+
'jest-transform-stub'
79+
},
80+
transformIgnorePatterns: [`node_modules/(?!(${esModules}))`],
81+
snapshotSerializers: ['<rootDir>/node_modules/jest-serializer-vue']
7782
};

package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "r2modman",
3-
"version": "3.1.55",
3+
"version": "3.1.56",
44
"description": "A simple and easy to use mod manager for many games using Thunderstore.",
55
"productName": "r2modman",
66
"author": "ebkr",
@@ -74,6 +74,7 @@
7474
"@types/async-lock": "^1.1.2",
7575
"@types/chai": "^4.2.11",
7676
"@types/fs-extra": "^8.0.1",
77+
"@types/jsdom": "^21.1.7",
7778
"@types/lodash.debounce": "^4.0.7",
7879
"@types/node": "^12.12.12",
7980
"@types/quill": "^2.0.3",
@@ -83,7 +84,7 @@
8384
"@typescript-eslint/eslint-plugin": "^1.12.0",
8485
"@typescript-eslint/parser": "^1.12.0",
8586
"@vue/eslint-config-airbnb": "^4.0.0",
86-
"@vue/test-utils": "^1.2.1",
87+
"@vue/test-utils": "^1.3.6",
8788
"babel-core": "^7.0.0-beta.3",
8889
"babel-eslint": "^10.0.1",
8990
"babel-jest": "^27.0.2",
@@ -100,13 +101,15 @@
100101
"eslint-plugin-jest": "^24.1.0",
101102
"eslint-plugin-vue": "^5.0.0",
102103
"identity-obj-proxy": "^3.0.0",
104+
"jest": "^27.5.1",
105+
"jsdom": "^25.0.1",
103106
"majestic": "^1.2.24",
104107
"minimist": "^1.2.2",
105-
"mocha": "^8.0.1",
106108
"mock-require": "^3.0.3",
107109
"sass": "^1.70.0",
108110
"sass-loader": "^10.2.1",
109111
"sinon": "^11.1.1",
112+
"ts-jest": "^29.2.5",
110113
"ts-node": "^8.10.2",
111114
"typescript": "^4.5.5",
112115
"vue": "2.7.16",

src/App.vue

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,6 @@ import ProfileInstallerProvider from './providers/ror2/installing/ProfileInstall
4444
import InstallationRules from './r2mm/installing/InstallationRules';
4545
import InstallationRuleApplicator from './r2mm/installing/default_installation_rules/InstallationRuleApplicator';
4646
import GenericProfileInstaller from './r2mm/installing/profile_installers/GenericProfileInstaller';
47-
import ConnectionProviderImpl from './r2mm/connection/ConnectionProviderImpl';
48-
import ConnectionProvider from './providers/generic/connection/ConnectionProvider';
4947
import UtilityMixin from './components/mixins/UtilityMixin.vue';
5048
import ErrorModal from './components/modals/ErrorModal.vue';
5149
@@ -61,7 +59,7 @@ export default class App extends mixins(UtilityMixin) {
6159
// Load settings using the default game before the actual game is selected.
6260
const settings: ManagerSettings = await this.$store.dispatch('resetActiveGame');
6361
64-
this.hookThunderstoreModListRefresh();
62+
this.hookBackgroundUpdateThunderstoreModList();
6563
await this.checkCdnConnection();
6664
6765
InstallationRuleApplicator.apply();
@@ -102,11 +100,10 @@ export default class App extends mixins(UtilityMixin) {
102100
});
103101
104102
this.$store.commit('updateModLoaderPackageNames');
103+
this.$store.dispatch('tsMods/updateExclusions');
105104
}
106105
107106
beforeCreate() {
108-
109-
ConnectionProvider.provide(() => new ConnectionProviderImpl());
110107
FsProvider.provide(() => new NodeFs());
111108
112109
ProfileProvider.provide(() => new ProfileImpl());
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import VersionNumber from '../model/VersionNumber';
22

33
export default class ManagerInformation {
4-
public static VERSION: VersionNumber = new VersionNumber('3.1.55');
4+
public static VERSION: VersionNumber = new VersionNumber('3.1.56');
55
public static IS_PORTABLE: boolean = false;
66
public static APP_NAME: string = "r2modman";
77
}

0 commit comments

Comments
 (0)