mirror of
https://github.com/an-anime-team/an-anime-game-launcher.git
synced 2024-12-19 16:33:04 +03:00
Merge branch 'neutralino' of https://gitlab.com/KRypt0n_/an-anime-game-launcher into neutralino
This commit is contained in:
commit
f85acba926
12 changed files with 133 additions and 30 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,6 +1,6 @@
|
|||
.lite_workspace.lua
|
||||
yarn.lock
|
||||
package_lock.json
|
||||
package-lock.json
|
||||
Audio_English(US)_2.3.0.zip
|
||||
|
||||
/bin
|
||||
|
|
|
@ -44,8 +44,8 @@ export default class Configs
|
|||
public static set(name: string, value: scalar|scalar[]|Promise<scalar|scalar[]>): Promise<void>
|
||||
{
|
||||
const getUpdatedArray = (path: string[], array: scalar|scalar[], value: scalar|scalar[]): scalar|scalar[] => {
|
||||
array[path[0]] = path.length > 1 ?
|
||||
getUpdatedArray(path.slice(1), array[path[0]] ?? {}, value) : value;
|
||||
array![path[0]] = path.length > 1 ?
|
||||
getUpdatedArray(path.slice(1), array![path[0]] ?? {}, value) : value;
|
||||
|
||||
return array;
|
||||
};
|
||||
|
@ -79,14 +79,14 @@ export default class Configs
|
|||
return new Promise(async (resolve) => {
|
||||
const setDefaults = async (current: scalar) => {
|
||||
const updateDefaults = (current: scalar, defaults: scalar) => {
|
||||
Object.keys(defaults).forEach((key) => {
|
||||
Object.keys(defaults!).forEach((key) => {
|
||||
// If the field exists in defaults and doesn't exist in current
|
||||
if (current[key] === undefined)
|
||||
current[key] = defaults[key];
|
||||
if (current![key] === undefined)
|
||||
current![key] = defaults![key];
|
||||
|
||||
// If both of default and current are objects
|
||||
else if (typeof current[key] == 'object' && typeof defaults[key] == 'object')
|
||||
current[key] = updateDefaults(current[key], defaults[key]);
|
||||
else if (typeof current![key] == 'object' && typeof defaults![key] == 'object')
|
||||
current![key] = updateDefaults(current![key], defaults![key]);
|
||||
});
|
||||
|
||||
return current;
|
||||
|
|
|
@ -6,6 +6,7 @@ import type {
|
|||
} from './types/GameData';
|
||||
|
||||
import constants from './Constants';
|
||||
import fetch from './core/Fetch';
|
||||
|
||||
import Downloader, { Stream } from './core/Downloader';
|
||||
|
||||
|
@ -50,7 +51,7 @@ export default class Game
|
|||
|
||||
if (response.ok)
|
||||
{
|
||||
const json: ServerResponse = await response.json();
|
||||
const json: ServerResponse = await (response as any).json();
|
||||
|
||||
if (json.message == 'OK')
|
||||
resolve(json.data);
|
||||
|
|
|
@ -67,7 +67,6 @@ export default class Patch
|
|||
return new Promise(async (resolve, reject) => {
|
||||
const patchUri = constants.uri.patch[source];
|
||||
|
||||
// @ts-expect-error
|
||||
fetch(`${patchUri}/raw/master/${version.replaceAll('.', '')}/patch.sh`, this.fetchTimeout)
|
||||
.then((patcherResponse) => {
|
||||
// Return an error if patch's server is unavailable
|
||||
|
@ -82,7 +81,7 @@ export default class Patch
|
|||
// Otherwise it should be [preparation], [testing] or [stable]
|
||||
else
|
||||
{
|
||||
// @ts-expect-error
|
||||
|
||||
fetch(`${patchUri}/raw/master/${version.replaceAll('.', '')}/patch_files/unityplayer_patch.vcdiff`, this.fetchTimeout)
|
||||
.then((response) => {
|
||||
// Return an error if patch's server is unavailable
|
||||
|
|
|
@ -74,7 +74,7 @@ export default class Voice
|
|||
{
|
||||
return new Promise((resolve, reject) => {
|
||||
Game.getDiff(version)
|
||||
.then((data) => resolve(data.voice_packs ?? null))
|
||||
.then((data) => resolve(data!.voice_packs ?? null))
|
||||
.catch((error) => reject(error));
|
||||
});
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ class Stream
|
|||
protected unpackDir: string|null;
|
||||
protected unpacked: number = 0;
|
||||
|
||||
protected archive: ArchiveInfo;
|
||||
protected archive?: ArchiveInfo;
|
||||
|
||||
protected onStart?: () => void;
|
||||
protected onProgress?: (current: number, total: number, difference: number) => void;
|
||||
|
@ -59,7 +59,7 @@ class Stream
|
|||
const command = {
|
||||
tar: `tar -xvf "${path}"${unpackDir ? ` -C "${unpackDir}"` : ''}`,
|
||||
zip: `unzip -o "${path}"${unpackDir ? ` -d "${unpackDir}"` : ''}`
|
||||
}[this.archive.type];
|
||||
}[this.archive.type!];
|
||||
|
||||
let remainedFiles = this.archive.files;
|
||||
|
||||
|
@ -77,8 +77,8 @@ class Stream
|
|||
{
|
||||
Neutralino.filesystem.getStats(`${baseDir}/${file.path}`)
|
||||
.then(() => {
|
||||
this.unpacked += file.size.uncompressed;
|
||||
difference += file.size.uncompressed;
|
||||
this.unpacked += file.size.uncompressed!;
|
||||
difference += file.size.uncompressed!;
|
||||
|
||||
file.path = '#unpacked#';
|
||||
})
|
||||
|
@ -89,9 +89,9 @@ class Stream
|
|||
remainedFiles = remainedFiles.filter((file) => file.path != '#unpacked#');
|
||||
|
||||
if (this.onProgress)
|
||||
this.onProgress(this.unpacked, this.archive.size.uncompressed, difference);
|
||||
this.onProgress(this.unpacked, this.archive!.size.uncompressed!, difference);
|
||||
|
||||
if (this.unpacked >= this.archive.size.uncompressed)
|
||||
if (this.unpacked >= this.archive!.size.uncompressed!)
|
||||
{
|
||||
this.finished = true;
|
||||
|
||||
|
@ -204,7 +204,7 @@ export default class Archive
|
|||
{
|
||||
let fileSize = parseInt(match[1]);
|
||||
|
||||
archive.size.uncompressed += fileSize;
|
||||
archive.size.uncompressed! += fileSize;
|
||||
|
||||
archive.files.push({
|
||||
path: match[2],
|
||||
|
@ -227,8 +227,8 @@ export default class Archive
|
|||
let uncompressedSize = parseInt(match[1]),
|
||||
compressedSize = parseInt(match[2]);
|
||||
|
||||
archive.size.compressed += compressedSize;
|
||||
archive.size.uncompressed += uncompressedSize;
|
||||
archive.size.compressed! += compressedSize;
|
||||
archive.size.uncompressed! += uncompressedSize;
|
||||
|
||||
archive.files.push({
|
||||
path: match[3],
|
||||
|
|
|
@ -59,7 +59,7 @@ export default class DXVK
|
|||
// then we should find this DXVK version and call this method for it
|
||||
if (typeof dxvk == 'string')
|
||||
{
|
||||
let foundDXVK = null;
|
||||
let foundDXVK;
|
||||
|
||||
(await this.get()).forEach((currDxvk) => {
|
||||
if (currDxvk.version == dxvk)
|
||||
|
|
|
@ -110,14 +110,14 @@ export default class Downloader
|
|||
{
|
||||
return new Promise(async (resolve) => {
|
||||
fetch(uri).then((response) => {
|
||||
resolve(new Stream(uri, output ?? this.fileFromUri(uri), response.length));
|
||||
resolve(new Stream(uri, output ?? this.fileFromUri(uri), response.length!));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
public static fileFromUri(uri: string): string
|
||||
{
|
||||
const file = uri.split('/').pop().split('#')[0].split('?')[0];
|
||||
const file = uri.split('/').pop()!.split('#')[0].split('?')[0];
|
||||
|
||||
if (file === '')
|
||||
return 'index.html';
|
||||
|
@ -125,7 +125,7 @@ export default class Downloader
|
|||
else if (`https://${file}` != uri && `http://${file}` != uri)
|
||||
return file;
|
||||
|
||||
else 'index.html';
|
||||
else return 'index.html';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ class Response
|
|||
this.length = length;
|
||||
|
||||
// https://developer.mozilla.org/en-US/docs/Web/API/Response/ok
|
||||
this.ok = status >= 200 && status <= 299;
|
||||
this.ok = status! >= 200 && status! <= 299;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -71,7 +71,7 @@ class Runners
|
|||
// then we should find this runner and call this method for it
|
||||
if (typeof runner == 'string')
|
||||
{
|
||||
let foundRunner = null;
|
||||
let foundRunner;
|
||||
|
||||
(await this.get()).forEach((family) => {
|
||||
family.runners.forEach((familyRunner) => {
|
||||
|
|
7
src/ts/types/Archive.d.ts
vendored
7
src/ts/types/Archive.d.ts
vendored
|
@ -1,10 +1,11 @@
|
|||
type ArchiveType =
|
||||
| 'tar'
|
||||
| 'zip';
|
||||
| 'zip'
|
||||
| null;
|
||||
|
||||
type Size = {
|
||||
compressed?: number;
|
||||
uncompressed?: number;
|
||||
compressed?: number | null;
|
||||
uncompressed?: number | null;
|
||||
};
|
||||
|
||||
type File = {
|
||||
|
|
102
tsconfig.json
Normal file
102
tsconfig.json
Normal file
|
@ -0,0 +1,102 @@
|
|||
{
|
||||
"compilerOptions": {
|
||||
/* Visit https://aka.ms/tsconfig.json to read more about this file */
|
||||
|
||||
/* Projects */
|
||||
// "incremental": true, /* Enable incremental compilation */
|
||||
// "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
|
||||
// "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */
|
||||
// "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */
|
||||
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
|
||||
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
|
||||
|
||||
/* Language and Environment */
|
||||
"target": "es5", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
|
||||
"lib": [ /* Specify a set of bundled library declaration files that describe the target runtime environment. */
|
||||
"ES2021.String"
|
||||
],
|
||||
// "jsx": "preserve", /* Specify what JSX code is generated. */
|
||||
// "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
|
||||
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
|
||||
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */
|
||||
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
|
||||
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */
|
||||
// "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */
|
||||
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
|
||||
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
|
||||
|
||||
/* Modules */
|
||||
"module": "commonjs", /* Specify what module code is generated. */
|
||||
// "rootDir": "./", /* Specify the root folder within your source files. */
|
||||
// "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */
|
||||
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
|
||||
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
|
||||
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
|
||||
// "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */
|
||||
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
|
||||
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
||||
// "resolveJsonModule": true, /* Enable importing .json files */
|
||||
// "noResolve": true, /* Disallow `import`s, `require`s or `<reference>`s from expanding the number of files TypeScript should add to a project. */
|
||||
|
||||
/* JavaScript Support */
|
||||
// "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
|
||||
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
|
||||
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
|
||||
|
||||
/* Emit */
|
||||
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
|
||||
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
|
||||
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
|
||||
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
|
||||
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
|
||||
// "outDir": "./", /* Specify an output folder for all emitted files. */
|
||||
// "removeComments": true, /* Disable emitting comments. */
|
||||
// "noEmit": true, /* Disable emitting files from a compilation. */
|
||||
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
|
||||
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */
|
||||
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
|
||||
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
|
||||
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
|
||||
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
|
||||
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
|
||||
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
|
||||
// "newLine": "crlf", /* Set the newline character for emitting files. */
|
||||
// "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */
|
||||
// "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */
|
||||
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
|
||||
// "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */
|
||||
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
|
||||
|
||||
/* Interop Constraints */
|
||||
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
|
||||
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
|
||||
"esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */
|
||||
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
|
||||
"forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */
|
||||
|
||||
/* Type Checking */
|
||||
"strict": true, /* Enable all strict type-checking options. */
|
||||
"noImplicitAny": false, /* Enable error reporting for expressions and declarations with an implied `any` type.. */
|
||||
// "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
|
||||
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
|
||||
// "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
|
||||
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
|
||||
// "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */
|
||||
// "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */
|
||||
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
|
||||
// "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */
|
||||
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */
|
||||
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
|
||||
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
|
||||
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
|
||||
// "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */
|
||||
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
|
||||
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */
|
||||
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
|
||||
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
|
||||
|
||||
/* Completeness */
|
||||
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
|
||||
"skipLibCheck": true /* Skip type checking all .d.ts files. */
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue