0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-13 09:50:43 -05:00
server/project/src/utils/HashUtil.ts
TheSparta 723f8db572 Updated dependencies + A few other things (!150)
Initially this was going to be an update to dependencies but it seems i got a little carried away!

Anyways this PR removes 2 unused dependencies (`jshint` and `utf-8-validate`), and 2 other, `del` and `fs-extra` that were replaced by the built-in `fs/promises`.

It also renames all `tsconfig` and `Dockerfile` files, in a way that when viewed in a file tree sorted alphabetically they will be next to each other.

It also updates the typescript target to `ES2022`, and changes moduleResolution from `Node` to `Node10` (this isn't an update, they are the same thing but `Node` is now deprecated).

It also adds the `node:` discriminator to every import from built-in modules.

It also has major changes to the build script, `del` and `fs-extra` were only being used in the build script, it's now using `fs/promises` instead, cleaned up the code from some functions, adds better documentation to a few functions, and renames some gulp tasks and npm scripts to better represent what they actually do.

And finally it updates dependencies, except for `atomically` which can't be updated unless the project switches to ESM.

Reviewed-on: SPT-AKI/Server#150
Co-authored-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
Co-committed-by: TheSparta <thesparta@noreply.dev.sp-tarkov.com>
2023-10-14 09:01:41 +00:00

56 lines
1.4 KiB
TypeScript

import crypto from "node:crypto";
import { inject, injectable } from "tsyringe";
import { TimeUtil } from "./TimeUtil";
@injectable()
export class HashUtil
{
constructor(
@inject("TimeUtil") protected timeUtil: TimeUtil
)
{ }
/**
* Create a 24 character id using the sha256 algorithm + current timestamp
* @returns 24 character hash
*/
public generate(): string
{
const shasum = crypto.createHash("sha256");
const time = Math.random() * this.timeUtil.getTimestamp();
shasum.update(time.toString());
return shasum.digest("hex").substring(0, 24);
}
public generateMd5ForData(data: string): string
{
return this.generateHashForData("md5", data);
}
public generateSha1ForData(data: string): string
{
return this.generateHashForData("sha1", data);
}
/**
* Create a hash for the data parameter
* @param algorithm algorithm to use to hash
* @param data data to be hashed
* @returns hash value
*/
public generateHashForData(algorithm: string, data: crypto.BinaryLike): string
{
const hashSum = crypto.createHash(algorithm);
hashSum.update(data);
return hashSum.digest("hex");
}
public generateAccountId(): number
{
const min = 1;
const max = 1000;
return (max > min) ? Math.floor(Math.random() * (max - min + 1) + min) : min;
}
}