@armoury/fivem-framework-server 0.0.0-stage → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/dist/cjs/decorators/command.decorator.js +37 -0
  2. package/dist/cjs/decorators/controller.decorator.js +9 -0
  3. package/dist/cjs/decorators/decorator.utils.js +43 -0
  4. package/dist/cjs/decorators/event-listener.decorator.js +64 -0
  5. package/dist/cjs/decorators/export.decorator.js +18 -0
  6. package/dist/cjs/decorators/index.js +16 -0
  7. package/dist/cjs/decorators/key-binding.decorator.js +29 -0
  8. package/dist/cjs/decorators/ui-listener.decorator.js +24 -0
  9. package/dist/cjs/server/entity-controllers/server-entity-entrance.controller.js +28 -0
  10. package/dist/cjs/server/index.js +82 -0
  11. package/dist/cjs/server/models/create-vehicle.enums.js +8 -0
  12. package/dist/cjs/server/models/index.js +17 -0
  13. package/dist/cjs/server/models/session/base-items/array.session-item.js +60 -0
  14. package/dist/cjs/server/models/session/base-items/index.js +17 -0
  15. package/dist/cjs/server/models/session/index.js +19 -0
  16. package/dist/cjs/server/models/session/session-item.model.js +19 -0
  17. package/dist/cjs/server/models/session/session.model.js +2 -0
  18. package/dist/cjs/server/server-db-dependent.controller.js +227 -0
  19. package/dist/cjs/server/server.base.js +32 -0
  20. package/dist/cjs/server/server.controller.js +83 -0
  21. package/dist/cjs/server/server.entities.js +57 -0
  22. package/dist/cjs/server/services/index.js +21 -0
  23. package/dist/cjs/server/services/server-enterable-database.service.js +37 -0
  24. package/dist/cjs/server/services/server-resource-database.service.js +242 -0
  25. package/dist/cjs/server/services/server-translate.service.js +54 -0
  26. package/dist/cjs/server/services/server-virtual-worlds.service.js +62 -0
  27. package/dist/cjs/server/services/session/default-entities/character.entity.js +31 -0
  28. package/dist/cjs/server/services/session/default-entities/index.js +24 -0
  29. package/dist/cjs/server/services/session/default-entities/session-account-id.js +10 -0
  30. package/dist/cjs/server/services/session/default-entities/session-cash.js +10 -0
  31. package/dist/cjs/server/services/session/default-entities/session-hours-played.js +16 -0
  32. package/dist/cjs/server/services/session/default-entities/session-id.js +10 -0
  33. package/dist/cjs/server/services/session/default-entities/session-language.js +10 -0
  34. package/dist/cjs/server/services/session/default-entities/session-last-location.js +19 -0
  35. package/dist/cjs/server/services/session/default-entities/session-name.js +10 -0
  36. package/dist/cjs/server/services/session/index.js +17 -0
  37. package/dist/cjs/server/services/session/server-session.service.js +271 -0
  38. package/dist/cjs/shared/index.js +17 -0
  39. package/dist/cjs/shared/models/account.js +2 -0
  40. package/dist/cjs/shared/models/character.js +2 -0
  41. package/dist/cjs/shared/models/index.js +18 -0
  42. package/dist/cjs/utils/utils.js +109 -0
  43. package/dist/esm/decorators/command.decorator.js +33 -0
  44. package/dist/esm/decorators/controller.decorator.js +6 -0
  45. package/dist/esm/decorators/decorator.utils.js +38 -0
  46. package/dist/esm/decorators/event-listener.decorator.js +59 -0
  47. package/dist/esm/decorators/export.decorator.js +14 -0
  48. package/dist/esm/decorators/index.js +6 -0
  49. package/dist/esm/decorators/key-binding.decorator.js +25 -0
  50. package/dist/esm/decorators/ui-listener.decorator.js +20 -0
  51. package/dist/esm/server/entity-controllers/server-entity-entrance.controller.js +24 -0
  52. package/dist/esm/server/index.js +64 -0
  53. package/dist/esm/server/models/create-vehicle.enums.js +5 -0
  54. package/dist/esm/server/models/index.js +1 -0
  55. package/dist/esm/server/models/session/base-items/array.session-item.js +56 -0
  56. package/dist/esm/server/models/session/base-items/index.js +1 -0
  57. package/dist/esm/server/models/session/index.js +3 -0
  58. package/dist/esm/server/models/session/session-item.model.js +15 -0
  59. package/dist/esm/server/models/session/session.model.js +1 -0
  60. package/dist/esm/server/server-db-dependent.controller.js +224 -0
  61. package/dist/esm/server/server.base.js +28 -0
  62. package/dist/esm/server/server.controller.js +80 -0
  63. package/dist/esm/server/server.entities.js +54 -0
  64. package/dist/esm/server/services/index.js +5 -0
  65. package/dist/esm/server/services/server-enterable-database.service.js +34 -0
  66. package/dist/esm/server/services/server-resource-database.service.js +239 -0
  67. package/dist/esm/server/services/server-translate.service.js +51 -0
  68. package/dist/esm/server/services/server-virtual-worlds.service.js +59 -0
  69. package/dist/esm/server/services/session/default-entities/character.entity.js +28 -0
  70. package/dist/esm/server/services/session/default-entities/index.js +8 -0
  71. package/dist/esm/server/services/session/default-entities/session-account-id.js +6 -0
  72. package/dist/esm/server/services/session/default-entities/session-cash.js +6 -0
  73. package/dist/esm/server/services/session/default-entities/session-hours-played.js +12 -0
  74. package/dist/esm/server/services/session/default-entities/session-id.js +6 -0
  75. package/dist/esm/server/services/session/default-entities/session-language.js +6 -0
  76. package/dist/esm/server/services/session/default-entities/session-last-location.js +15 -0
  77. package/dist/esm/server/services/session/default-entities/session-name.js +6 -0
  78. package/dist/esm/server/services/session/index.js +1 -0
  79. package/dist/esm/server/services/session/server-session.service.js +268 -0
  80. package/dist/esm/shared/index.js +1 -0
  81. package/dist/esm/shared/models/account.js +1 -0
  82. package/dist/esm/shared/models/character.js +1 -0
  83. package/dist/esm/shared/models/index.js +2 -0
  84. package/dist/esm/utils/utils.js +93 -0
  85. package/dist/types/ambient.declarations.d.ts +62840 -0
  86. package/dist/types/decorators/command.decorator.d.ts +5 -0
  87. package/dist/types/decorators/controller.decorator.d.ts +1 -0
  88. package/dist/types/decorators/decorator.utils.d.ts +15 -0
  89. package/dist/types/decorators/event-listener.decorator.d.ts +15 -0
  90. package/dist/types/decorators/export.decorator.d.ts +2 -0
  91. package/dist/types/decorators/index.d.ts +6 -0
  92. package/dist/types/decorators/key-binding.decorator.d.ts +8 -0
  93. package/dist/types/decorators/ui-listener.decorator.d.ts +4 -0
  94. package/dist/types/server/entity-controllers/server-entity-entrance.controller.d.ts +14 -0
  95. package/dist/types/server/index.d.ts +23 -0
  96. package/dist/types/server/models/create-vehicle.enums.d.ts +3 -0
  97. package/dist/types/server/models/index.d.ts +1 -0
  98. package/dist/types/server/models/session/base-items/array.session-item.d.ts +13 -0
  99. package/dist/types/server/models/session/base-items/index.d.ts +1 -0
  100. package/dist/types/server/models/session/index.d.ts +3 -0
  101. package/dist/types/server/models/session/session-item.model.d.ts +22 -0
  102. package/dist/types/server/models/session/session.model.d.ts +4 -0
  103. package/dist/types/server/server-db-dependent.controller.d.ts +29 -0
  104. package/dist/types/server/server.base.d.ts +7 -0
  105. package/dist/types/server/server.controller.d.ts +20 -0
  106. package/dist/types/server/server.entities.d.ts +13 -0
  107. package/dist/types/server/services/index.d.ts +5 -0
  108. package/dist/types/server/services/server-enterable-database.service.d.ts +14 -0
  109. package/dist/types/server/services/server-resource-database.service.d.ts +37 -0
  110. package/dist/types/server/services/server-translate.service.d.ts +12 -0
  111. package/dist/types/server/services/server-virtual-worlds.service.d.ts +15 -0
  112. package/dist/types/server/services/session/default-entities/character.entity.d.ts +5 -0
  113. package/dist/types/server/services/session/default-entities/index.d.ts +8 -0
  114. package/dist/types/server/services/session/default-entities/session-account-id.d.ts +4 -0
  115. package/dist/types/server/services/session/default-entities/session-cash.d.ts +4 -0
  116. package/dist/types/server/services/session/default-entities/session-hours-played.d.ts +5 -0
  117. package/dist/types/server/services/session/default-entities/session-id.d.ts +4 -0
  118. package/dist/types/server/services/session/default-entities/session-language.d.ts +4 -0
  119. package/dist/types/server/services/session/default-entities/session-last-location.d.ts +6 -0
  120. package/dist/types/server/services/session/default-entities/session-name.d.ts +4 -0
  121. package/dist/types/server/services/session/index.d.ts +1 -0
  122. package/dist/types/server/services/session/server-session.service.d.ts +70 -0
  123. package/dist/types/shared/index.d.ts +1 -0
  124. package/dist/types/shared/models/account.d.ts +5 -0
  125. package/dist/types/shared/models/character.d.ts +4 -0
  126. package/dist/types/shared/models/index.d.ts +2 -0
  127. package/dist/types/utils/utils.d.ts +15 -0
  128. package/package.json +32 -5
  129. package/README.md +0 -3
@@ -0,0 +1,5 @@
1
+ export declare function Command(data?: {
2
+ adminLevelRequired?: number;
3
+ suffix?: string;
4
+ }): (target: any, propertyKey: string) => void;
5
+ export declare function Commands(target: any, _prototype: any, providers?: Object[]): void;
@@ -0,0 +1 @@
1
+ export declare function Controller(data?: any): (target: any) => void;
@@ -0,0 +1,15 @@
1
+ import { Provider } from "injection-js";
2
+ export declare class DecoratorUtils {
3
+ static map(target: any, _prototype: any, providers: Object[]): {
4
+ key: any;
5
+ target: any;
6
+ value: any;
7
+ }[];
8
+ }
9
+ export declare function Decorate<T extends {
10
+ new (...args: any[]): any;
11
+ } & Provider>(instance: T, _prototype: any, providers: Provider[], decorationType?: DecorationType): void;
12
+ export declare enum DecorationType {
13
+ SERVER = 0,
14
+ CLIENT = 1
15
+ }
@@ -0,0 +1,15 @@
1
+ export declare function EventListener(data?: {
2
+ eventName?: string;
3
+ direction?: EVENT_DIRECTIONS;
4
+ type?: 'ui' | 'default';
5
+ }): (target: any, propertyKey: string) => void;
6
+ export declare function EventListeners(target: any, _prototype: any, providers?: Object[]): void;
7
+ export declare enum EVENT_DIRECTIONS {
8
+ SERVER_TO_SERVER = 0,
9
+ SERVER_TO_CLIENT = 1,
10
+ CLIENT_TO_SERVER = 2,
11
+ CLIENT_TO_CLIENT = 3
12
+ }
13
+ export declare const DEFAULT_EVENTS: {
14
+ [key: string]: string;
15
+ };
@@ -0,0 +1,2 @@
1
+ export declare function Export(): (target: any, propertyKey: string) => void;
2
+ export declare function Exports(target: any, _prototype: any, providers?: Object[]): void;
@@ -0,0 +1,6 @@
1
+ export { Command } from './command.decorator';
2
+ export { Controller } from './controller.decorator';
3
+ export { EventListener, EVENT_DIRECTIONS } from './event-listener.decorator';
4
+ export { Export } from './export.decorator';
5
+ export { KeyBinding } from './key-binding.decorator';
6
+ export { UIListener } from './ui-listener.decorator';
@@ -0,0 +1,8 @@
1
+ export declare function KeyBinding(data: {
2
+ command?: string;
3
+ description: string;
4
+ defaultMapper: KeyBindingType;
5
+ key: string;
6
+ }): (target: any, propertyKey: string) => void;
7
+ export declare function KeyBindings(target: any, _prototype: any, providers?: Object[]): void;
8
+ export type KeyBindingType = 'digitalbutton_axis' | 'game_controlled' | 'joystick_axis' | 'joystick_axis_negative' | 'joystick_axis_positive' | 'joystick_button' | 'joystick_iaxis' | 'joystick_pov' | 'joystick_pov_axis' | 'keyboard' | 'mkb_axis' | 'mouse_absoluteaxis' | 'mouse_button' | 'mouse_buttonany' | 'mouse_centeredaxis' | 'mouse_relativeaxis' | 'mouse_scaledaxis' | 'mouse_normalized' | 'mouse_wheel' | 'pad_analogbutton' | 'pad_axis' | 'pad_debugbutton' | 'pad_digitalbutton' | 'pad_digitalbuttonany' | 'touchpad_absolute_axis' | 'touchpad_centered_axis';
@@ -0,0 +1,4 @@
1
+ export declare function UIListener(data?: {
2
+ eventName?: string;
3
+ }): (target: any, propertyKey: string) => void;
4
+ export declare function UIListeners(target: any, _prototype: any, providers?: Object[]): void;
@@ -0,0 +1,14 @@
1
+ import { ServerDBDependentController } from '../server-db-dependent.controller';
2
+ export declare class ServerEntityWithEntranceController<T extends {
3
+ id: number;
4
+ entranceX: number;
5
+ entranceY: number;
6
+ entranceZ: number;
7
+ exitX: number;
8
+ exitY: number;
9
+ exitZ: number;
10
+ }> extends ServerDBDependentController<T> {
11
+ protected getClosestEntityOfSameTypeToPlayer(player: number): T | null;
12
+ protected getClosestEntityOfSameTypeEntranceToPlayer(source: number): T | null;
13
+ protected getClosestEntityOfSameTypeExitToPlayer(source: number): T | null;
14
+ }
@@ -0,0 +1,23 @@
1
+ /// <reference path="../ambient.declarations.d.ts" />
2
+ import 'reflect-metadata';
3
+ import { Provider } from 'injection-js';
4
+ import { SessionId, SessionLastLocation, SessionName } from './services/session/default-entities';
5
+ export declare const SERVER_PROVIDERS: ({
6
+ provide: string;
7
+ useValue: SessionId;
8
+ multi: boolean;
9
+ } | {
10
+ provide: string;
11
+ useValue: SessionName;
12
+ multi: boolean;
13
+ } | {
14
+ provide: string;
15
+ useValue: SessionLastLocation;
16
+ multi: boolean;
17
+ })[];
18
+ export declare function Server_Init<T extends {
19
+ new (...args: any[]): any;
20
+ } & Provider>(_class: T, ...providers: Provider[]): Promise<T>;
21
+ export * from './services';
22
+ export * from './models';
23
+ export * from '@armoury/fivem-framework-common';
@@ -0,0 +1,3 @@
1
+ export declare enum CREATE_VEHICLE_EVENT_TYPE {
2
+ ATTACH_TRAILER = 0
3
+ }
@@ -0,0 +1 @@
1
+ export * from './session';
@@ -0,0 +1,13 @@
1
+ import { ISessionItem, SessionItem } from "../session-item.model";
2
+ export declare abstract class ArraySessionItem<T> extends SessionItem<Array<T>> implements ISessionItem<Array<T>> {
3
+ readonly tableName: string;
4
+ readonly syncedProperties: ISqlProperty[];
5
+ constructor(name: string, value: Array<T>, critical: boolean | undefined, tableName: string, syncedProperties: ISqlProperty[]);
6
+ load(accountId: number, characterId: number): Promise<Array<T>>;
7
+ save(accountId: number, characterId: number, value: Array<T>): Promise<void>;
8
+ private setup;
9
+ }
10
+ export interface ISqlProperty {
11
+ name: string;
12
+ type: string;
13
+ }
@@ -0,0 +1 @@
1
+ export * from './array.session-item';
@@ -0,0 +1,3 @@
1
+ export * from './base-items';
2
+ export * from './session-item.model';
3
+ export * from './session.model';
@@ -0,0 +1,22 @@
1
+ export declare abstract class SessionItem<T> implements ISessionItem<T> {
2
+ readonly name: string;
3
+ readonly defaultValue: T;
4
+ readonly critical: boolean;
5
+ constructor(name: string, defaultValue: T, critical?: boolean);
6
+ load(_accountId: number, _characterId: number, bruteValue: any): Promise<T>;
7
+ compute(_playerId: number, originalValue: T): T;
8
+ }
9
+ export interface ISessionItem<T> extends ISessionItemBase {
10
+ defaultValue: T;
11
+ compute(playerId: number, originalValue: T): T;
12
+ load(accountId: number, characterId: number, bruteValue: any): Promise<T>;
13
+ save?(accountId: number, characterId: number, value: T): Promise<void>;
14
+ }
15
+ export interface ISessionItemBase {
16
+ name: string;
17
+ defaultValue: any;
18
+ critical?: boolean;
19
+ compute(playerId: number, originalValue: any): any;
20
+ load(accountId: number, characterId: number, bruteValue: any): any;
21
+ save?(accountId: number, characterId: number, value: any): Promise<void>;
22
+ }
@@ -0,0 +1,4 @@
1
+ import { ICharacter } from "../../../shared";
2
+ export interface ISession extends Partial<ICharacter> {
3
+ [key: string]: any;
4
+ }
@@ -0,0 +1,29 @@
1
+ import { ServerController } from "./server.controller";
2
+ export declare class ServerDBDependentController<T extends {
3
+ id: number;
4
+ }> extends ServerController {
5
+ protected dbTableName: string;
6
+ private _entities;
7
+ protected get entities(): T[];
8
+ private _cachedProperties;
9
+ protected get cachedProperties(): string[];
10
+ private _playerToEntityBindings;
11
+ protected get playerToEntityBindings(): Map<number, (number | string)[]>;
12
+ constructor(dbTableName: string, loadAllAtStart?: boolean);
13
+ protected getEntities(): T[];
14
+ protected createEntity(entity: T, forceId?: number): Promise<T | null>;
15
+ protected removeEntity(entity: T): Promise<boolean>;
16
+ protected saveDBEntityAsync(id: number): Promise<boolean>;
17
+ protected getEntityByDBId(id: number): T | undefined;
18
+ protected loadDBEntityFor(value: number | string, key?: string, bindTo?: number): Promise<T | T[] | null>;
19
+ protected loadDBEntities(): Promise<T[]>;
20
+ private getEntityProperties;
21
+ private getEntityPropertiesValues;
22
+ protected syncWithClients(client?: number): void;
23
+ protected bindEntityToPlayer(entity: T, playerId: number): void;
24
+ protected bindEntityToPlayerByEntityId(id: number | string, playerId: number): void;
25
+ protected onBoundEntityDestroyed(_entity: T, _boundPlayer: number): void;
26
+ onPlayerAuthenticate(playerId: number, _player: any): void;
27
+ onPlayerDisconnect(): void;
28
+ private computeTableProperties;
29
+ }
@@ -0,0 +1,7 @@
1
+ export declare class ServerBase {
2
+ constructor();
3
+ protected RegisterAdminCommand(commandName: string, adminLevelRequired: number, handlerFunction: Function, restricted: boolean): void;
4
+ private assignServerBaseListeners;
5
+ protected setRoutingBucket(playerId: number, routingBucket: number): void;
6
+ protected routingBucketCondition: (source: number, routingBucket: number) => boolean;
7
+ }
@@ -0,0 +1,20 @@
1
+ import { ServerEntities } from "./server.entities";
2
+ export declare class ServerController extends ServerEntities {
3
+ protected translationFile?: {
4
+ [key: string]: string;
5
+ };
6
+ private _translationLanguage;
7
+ protected get translationLanguage(): string;
8
+ private _clientsidedResourceMap;
9
+ protected get clientsidedResourceMap(): Map<number, {
10
+ [metadataKey: string]: any;
11
+ }>;
12
+ protected getPlayerClientsidedCacheKey(playerId: number, key: string): any;
13
+ protected updatePlayerClientsidedCacheKey(playerId: number, key: string, value: any): void;
14
+ onPlayerClientsidedCacheLoaded(metadataObject: any): void;
15
+ onPlayerDisconnect(): void;
16
+ protected translate(key: string, params?: {
17
+ [key: string]: string;
18
+ }): string;
19
+ protected setTranslationLanguage(language: string): void;
20
+ }
@@ -0,0 +1,13 @@
1
+ import { ServerBase } from './server.base';
2
+ export declare class ServerEntities extends ServerBase {
3
+ private _virtualWorldsWithPlayers;
4
+ /** This only counts virtual worlds related to the resource! If another resource changes the virtual world of the player, this resource won't know it! */
5
+ protected get virtualWorldsWithPlayers(): Map<number, number[]>;
6
+ onPlayerEnteredScope(data: {
7
+ for: number;
8
+ player: number;
9
+ }): void;
10
+ protected setPlayerVirtualWorld(playerId: number, virtualWorld: number): void;
11
+ protected getPlayerVirtualWorld(playerId: number): number;
12
+ removeClientsideVehicles(): void;
13
+ }
@@ -0,0 +1,5 @@
1
+ export * from './server-resource-database.service';
2
+ export * from './server-enterable-database.service';
3
+ export * from './server-virtual-worlds.service';
4
+ export * from './server-translate.service';
5
+ export * from './session';
@@ -0,0 +1,14 @@
1
+ import { ServerResourceDatabase } from "./server-resource-database.service";
2
+ export declare class ServerEnterableDatabase<T extends {
3
+ id: number;
4
+ entranceX: number;
5
+ entranceY: number;
6
+ entranceZ: number;
7
+ exitX: number;
8
+ exitY: number;
9
+ exitZ: number;
10
+ }> extends ServerResourceDatabase<T> {
11
+ getClosestToPlayer(player: number): T | null;
12
+ getClosestEntranceToPlayer(source: number): T | null;
13
+ getClosestExitToPlayer(source: number): T | null;
14
+ }
@@ -0,0 +1,37 @@
1
+ import { Observable } from "rxjs";
2
+ export declare class ServerResourceDatabase<T extends {
3
+ id: number;
4
+ }> {
5
+ readonly _tableName: string;
6
+ readonly _loadAllAtStart?: boolean | undefined;
7
+ private _onBoundEntityDestroyed$;
8
+ get onBoundEntityDestroyed$(): Observable<{
9
+ entity: T;
10
+ boundPlayer: number;
11
+ }>;
12
+ private _onSync$;
13
+ get onSync$(): Observable<{
14
+ player: number;
15
+ } | void>;
16
+ private _entities;
17
+ get entities(): T[];
18
+ private _cachedProperties;
19
+ get cachedProperties(): string[];
20
+ private _playerToEntityBindings;
21
+ get playerToEntityBindings(): Map<number, (number | string)[]>;
22
+ constructor(_tableName: string, _loadAllAtStart?: boolean | undefined);
23
+ create(entity: T, forceId?: number): Promise<T | null>;
24
+ remove(entity: T): Promise<boolean>;
25
+ saveAsync(id: number): Promise<boolean>;
26
+ protected loadDBEntityFor(value: number | string, key?: string, bindTo?: number): Promise<T | T[] | null>;
27
+ protected loadDBEntities(): Promise<T[]>;
28
+ private getEntityProperties;
29
+ private getEntityPropertiesValues;
30
+ bindEntityToPlayer(entity: T, playerId: number): void;
31
+ bindEntityToPlayerByEntityId(id: number | string, playerId: number): void;
32
+ onPlayerAuthenticate(playerId: number, _player: any): void;
33
+ onPlayerDisconnect(): void;
34
+ private computeTableProperties;
35
+ getEntityByDBId(id: number): T | undefined;
36
+ getEntities(): T[];
37
+ }
@@ -0,0 +1,12 @@
1
+ export declare class ServerTranslateService {
2
+ private readonly _translations;
3
+ private playersMappedToLanguages;
4
+ constructor(_translations: {
5
+ [key: string]: {
6
+ [key: string]: string;
7
+ };
8
+ });
9
+ instant(forPlayer: number, key: string): string;
10
+ onPlayerDisconnect(): void;
11
+ getLanguage(forPlayer: number): string;
12
+ }
@@ -0,0 +1,15 @@
1
+ import { ServerSessionService } from "./session";
2
+ export declare class ServerVirtualWorldsService {
3
+ private readonly _session;
4
+ constructor(_session: ServerSessionService);
5
+ private _virtualWorldsWithPlayers;
6
+ /** This only counts virtual worlds related to the resource! If another resource changes the virtual world of the player, this resource won't know it! */
7
+ get virtualWorldsWithPlayers(): Map<number, number[]>;
8
+ onPlayerEnteredScope(data: {
9
+ for: number;
10
+ player: number;
11
+ }): void;
12
+ setPlayerVirtualWorld(playerId: number, virtualWorld: number): void;
13
+ getPlayerVirtualWorld(playerId: number): number;
14
+ removeClientsideVehicles(): void;
15
+ }
@@ -0,0 +1,5 @@
1
+ export declare class Character {
2
+ id: bigint;
3
+ accountId: bigint;
4
+ name: string;
5
+ }
@@ -0,0 +1,8 @@
1
+ export * from './character.entity';
2
+ export * from './session-account-id';
3
+ export * from './session-cash';
4
+ export * from './session-hours-played';
5
+ export * from './session-language';
6
+ export * from './session-last-location';
7
+ export * from './session-name';
8
+ export * from './session-id';
@@ -0,0 +1,4 @@
1
+ import { SessionItem, ISessionItem } from "../../../models";
2
+ export declare class SessionAccountId extends SessionItem<number> implements ISessionItem<number> {
3
+ constructor();
4
+ }
@@ -0,0 +1,4 @@
1
+ import { SessionItem, ISessionItem } from "../../../models";
2
+ export declare class SessionCash extends SessionItem<number> implements ISessionItem<number> {
3
+ constructor();
4
+ }
@@ -0,0 +1,5 @@
1
+ import { SessionItem, ISessionItem } from "../../../models";
2
+ export declare class SessionHoursPlayed extends SessionItem<number> implements ISessionItem<number> {
3
+ constructor();
4
+ compute(playerId: number, originalValue: number): number;
5
+ }
@@ -0,0 +1,4 @@
1
+ import { SessionItem, ISessionItem } from "../../../models";
2
+ export declare class SessionId extends SessionItem<number> implements ISessionItem<number> {
3
+ constructor();
4
+ }
@@ -0,0 +1,4 @@
1
+ import { SessionItem, ISessionItem } from "../../../models";
2
+ export declare class SessionLanguage extends SessionItem<string> implements ISessionItem<string> {
3
+ constructor();
4
+ }
@@ -0,0 +1,6 @@
1
+ import { SessionItem, ISessionItem } from "../../../models";
2
+ export declare class SessionLastLocation extends SessionItem<Array<number>> implements ISessionItem<Array<number>> {
3
+ constructor();
4
+ compute(playerId: number, originalValue: Array<number>): Array<number>;
5
+ load(_accountId: number, _characterId: number, bruteValue: any): Promise<Array<number>>;
6
+ }
@@ -0,0 +1,4 @@
1
+ import { SessionItem, ISessionItem } from "../../../models";
2
+ export declare class SessionName extends SessionItem<string> implements ISessionItem<string> {
3
+ constructor();
4
+ }
@@ -0,0 +1 @@
1
+ export * from './server-session.service';
@@ -0,0 +1,70 @@
1
+ import { Provider } from "injection-js";
2
+ import { IAccount } from "../../../shared";
3
+ import { ISessionItemBase } from "../../models";
4
+ import { ISession } from "../../models/session/session.model";
5
+ export declare class ServerSessionService {
6
+ private readonly _sessionItems?;
7
+ private _sessions;
8
+ private _untrackedSessionItems;
9
+ get players(): number[];
10
+ get authenticatedPlayers(): number[];
11
+ constructor(_sessionItems?: ISessionItemBase[] | undefined);
12
+ /**
13
+ * Registers an account.
14
+ * @param playerId The playerId (NOT from the database) of this player
15
+ * @param accountName The account name of this player
16
+ * @param hashedPassword The hashed password of this account
17
+ * @param email The email of this account
18
+ * @returns The SQL ID of the newly-created account
19
+ */
20
+ register(playerId: number, accountName: string, hashedPassword: string, email: string): Promise<number>;
21
+ /**
22
+ * Logs into an account
23
+ * @param playerId The playerId (NOT from the database) of this player
24
+ * @param email The email of the account
25
+ * @param hashedPassword The hashed password fo this account
26
+ * @returns Account data for this account
27
+ */
28
+ login(playerId: number, email: string, hashedPassword: string): Promise<IAccount>;
29
+ /**
30
+ * Fetches all the characters related to the provided account
31
+ * @param playerId The playerId (NOT from the database) of this player
32
+ * @param accountId The accountId of the
33
+ * @returns Data for all characters on the given account
34
+ */
35
+ fetch(playerId: number, accountId?: number): Promise<ISession[]>;
36
+ /**
37
+ * Loads the entire character given a character ID
38
+ * @param playerId The playerId (NOT from the database) of this player
39
+ * @param characterId The character's SQL ID
40
+ * @returns Data for the given characterId
41
+ */
42
+ load(playerId: number, characterId: number): Promise<ISession>;
43
+ /**
44
+ * Creates a character
45
+ * @param playerId
46
+ * @param accountName
47
+ * @param hashedPassword
48
+ * @param email
49
+ * @returns
50
+ */
51
+ create(playerId: number, accountId?: number): Promise<number>;
52
+ setPlayerInfo<T>(playerId: number, stat: string, value: T, ...args: any[]): void;
53
+ setPlayerCash(playerId: number, value: number, options?: SessionUpdaterOptions): void;
54
+ givePlayerCash(playerId: number, value: number, options?: SessionUpdaterOptions): void;
55
+ getPlayerCash(playerId: number): number;
56
+ saveCritical(playerId: number): void;
57
+ getPlayerInfo<T>(playerId: number, stat: string): T;
58
+ clearPlayerInfo(playerId: number): void;
59
+ onResourceStart(resource: string): void;
60
+ exchangeSessionItems(items: ISessionItemBase[]): ISessionItemBase[];
61
+ static withDefaults(): Provider;
62
+ static withItems<T extends {
63
+ new (...args: any[]): any;
64
+ }>(...items: T[]): Provider[];
65
+ }
66
+ interface SessionUpdaterOptions {
67
+ executeSqlCommand?: boolean;
68
+ ignoreSqlCommandFor?: string[];
69
+ }
70
+ export {};
@@ -0,0 +1 @@
1
+ export * from './models';
@@ -0,0 +1,5 @@
1
+ export interface IAccount {
2
+ id: number;
3
+ name: string;
4
+ email: string;
5
+ }
@@ -0,0 +1,4 @@
1
+ export interface ICharacter {
2
+ id: number;
3
+ accountId: number;
4
+ }
@@ -0,0 +1,2 @@
1
+ export * from './account';
2
+ export * from './character';
@@ -0,0 +1,15 @@
1
+ declare const Delay: (ms: number) => Promise<unknown>;
2
+ declare const isPlayerInArea: (playerPosX: number, playerPosY: number, playerPosZ: number, areaMinX: number, areaMinY: number, areaMinZ: number, areaMaxX: number, areaMaxY: number, areaMaxZ: number) => boolean;
3
+ declare const isPlayerInRangeOfPoint: (playerPosX: number, playerPosY: number, playerPosZ: number, pointX: number, pointY: number, pointZ: number, range: number) => boolean;
4
+ declare const waitUntilThenDo: (condition: Function, func: Function) => Promise<void>;
5
+ export declare const calculateDistance: (pos: number[]) => number;
6
+ export declare const calculateDistanceInKm: (pos: number[]) => number;
7
+ export declare const getRandomPositionInsideArea: (x1: number, x2: number, y1: number, y2: number) => [number, number];
8
+ export declare const isPositionIn2DArea: (x: number, y: number, x1: number, x2: number, y1: number, y2: number) => boolean;
9
+ declare const numberWithCommas: (x: number) => string;
10
+ declare const isJSON: (str: string) => boolean;
11
+ export declare const phoneFormatted: (phone: number) => string;
12
+ export declare const toThousandsString: (input: number, args?: number) => string | number | null;
13
+ export declare const fromThousandsString: (input: string) => number;
14
+ export declare const toTitleCase: (str: string) => string;
15
+ export { Delay, isPlayerInArea, isPlayerInRangeOfPoint, waitUntilThenDo, numberWithCommas, isJSON };
package/package.json CHANGED
@@ -1,6 +1,33 @@
1
- {
2
- "name": "@armoury/fivem-framework-server",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
1
+ {
2
+ "name": "@armoury/fivem-framework-server",
3
+ "version": "1.0.7",
4
+ "description": "Server APIs for the Armoury FiveM framework",
5
+ "main": "dist/cjs/server/index.js",
6
+ "module": "dist/esm/server/index.js",
7
+ "types": "dist/types/server/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/types/server/index.d.ts",
11
+ "import": "./dist/esm/server/index.js",
12
+ "require": "./dist/cjs/server/index.js"
13
+ }
14
+ },
15
+ "files": ["dist"],
16
+ "scripts": {
17
+ "build": "npm run build:cjs && npm run build:esm && npm run build:types",
18
+ "build:cjs": "tsc -p tsconfig.cjs.json",
19
+ "build:esm": "tsc -p tsconfig.esm.json",
20
+ "build:types": "tsc -p tsconfig.types.json && node ../../tools/move_ambientdeclaration.js server"
21
+ },
22
+ "dependencies": {
23
+ "@armoury/fivem-framework-common": "1.0.7",
24
+ "@mikro-orm/core": "^6.2.9",
25
+ "@mikro-orm/mysql": "^6.2.9",
26
+ "injection-js": "^2.4.0",
27
+ "reflect-metadata": "^0.2.1",
28
+ "rxjs": "^7.8.1"
29
+ },
30
+ "publishConfig": {
31
+ "access": "public"
32
+ }
6
33
  }
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.