4ac12ef70a
These are the formatting & linting configuration changes from the `3.8.0` branch and the changes that they make to the overall project. The majority of these changes are from running two commands: `npm run lint:fix` `npm run style:fix` This has already been run on the `3.8.0` branch and this PR should make `master` play nicer when it comes to merges going forward. There are now four VSCode plugins recommended for server development. They've been added to the workspace file and a user should get a UI notification when the workspace is opened if they're not installed. The four plugins are: https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig https://marketplace.visualstudio.com/items?itemName=dprint.dprint https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint https://marketplace.visualstudio.com/items?itemName=biomejs.biome Once installed they should just work within the workspace. Also, be sure to `npm i` to get the new dprint application. Co-authored-by: Refringe <brownelltyler@gmail.com> Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/168
33 lines
924 B
TypeScript
33 lines
924 B
TypeScript
import { IAsyncQueue } from "@spt-aki/models/spt/utils/IAsyncQueue";
|
|
import { ICommand } from "@spt-aki/models/spt/utils/ICommand";
|
|
|
|
export class AsyncQueue implements IAsyncQueue
|
|
{
|
|
protected commandsQueue: ICommand[];
|
|
|
|
constructor()
|
|
{
|
|
this.commandsQueue = [];
|
|
}
|
|
|
|
// Wait for the right command to execute
|
|
// This ensures that the commands execute in the right order, thus no data corruption
|
|
public async waitFor(command: ICommand): Promise<any>
|
|
{
|
|
// Add to the queue
|
|
this.commandsQueue.push(command);
|
|
|
|
// eslint-disable-next-line no-constant-condition
|
|
while (this.commandsQueue[0].uuid !== command.uuid)
|
|
{
|
|
await new Promise<void>((resolve) =>
|
|
{
|
|
setTimeout(resolve, 100);
|
|
});
|
|
}
|
|
|
|
// When the command is ready, execute it
|
|
return this.commandsQueue.shift().cmd();
|
|
}
|
|
}
|