@open-core/framework 0.2.4 → 0.2.6
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.
- package/dist/runtime/server/bus/internal-event.bus.d.ts +6 -0
- package/dist/runtime/server/controllers/session.controller.js +4 -4
- package/dist/runtime/server/decorators/onFrameworkEvent.d.ts +15 -6
- package/dist/runtime/server/decorators/onFrameworkEvent.js +9 -6
- package/dist/runtime/server/entities/player.d.ts +6 -0
- package/dist/runtime/server/entities/player.js +12 -0
- package/dist/runtime/server/index.d.ts +2 -1
- package/dist/runtime/server/index.js +3 -1
- package/dist/runtime/server/services/core/player.service.d.ts +0 -11
- package/dist/runtime/server/services/core/player.service.js +0 -15
- package/dist/runtime/server/services/ports/player-session-lifecycle.port.d.ts +0 -12
- package/dist/runtime/server/system/metadata-server.keys.d.ts +1 -1
- package/dist/runtime/server/system/metadata-server.keys.js +10 -10
- package/dist/runtime/server/system/processors/{coreEvent.processor.d.ts → internalEvent.processor.d.ts} +1 -1
- package/dist/runtime/server/system/processors/{coreEvent.processor.js → internalEvent.processor.js} +10 -10
- package/dist/runtime/server/system/processors.register.js +2 -2
- package/dist/runtime/server/types/index.d.ts +1 -1
- package/dist/runtime/server/types/index.js +1 -1
- package/dist/runtime/server/types/internal-events.d.ts +22 -0
- package/package.json +1 -1
- package/dist/runtime/server/bus/core-event-bus.d.ts +0 -6
- package/dist/runtime/server/types/core-events.d.ts +0 -22
- /package/dist/runtime/server/bus/{core-event-bus.js → internal-event.bus.js} +0 -0
- /package/dist/runtime/server/types/{core-events.js → internal-events.js} +0 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { InternalEventMap } from '../types/internal-events';
|
|
2
|
+
type InternalEventName = keyof InternalEventMap;
|
|
3
|
+
type InternalEventHandler<E extends InternalEventName> = (payload: InternalEventMap[E]) => void;
|
|
4
|
+
export declare function onFrameworkEvent<E extends InternalEventName>(event: E, handler: InternalEventHandler<E>): () => void;
|
|
5
|
+
export declare function emitFrameworkEvent<E extends InternalEventName>(event: E, payload: InternalEventMap[E]): void;
|
|
6
|
+
export {};
|
|
@@ -11,7 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.SessionController = void 0;
|
|
13
13
|
const shared_1 = require("../../../kernel/shared");
|
|
14
|
-
const
|
|
14
|
+
const internal_event_bus_1 = require("../bus/internal-event.bus");
|
|
15
15
|
const decorators_1 = require("../decorators");
|
|
16
16
|
const onFiveMEvent_1 = require("../decorators/onFiveMEvent");
|
|
17
17
|
const services_1 = require("../services");
|
|
@@ -33,12 +33,12 @@ let SessionController = class SessionController {
|
|
|
33
33
|
license: license !== null && license !== void 0 ? license : 'none',
|
|
34
34
|
});
|
|
35
35
|
await this.persistance.handleSessionLoad(player);
|
|
36
|
-
(0,
|
|
36
|
+
(0, internal_event_bus_1.emitFrameworkEvent)('internal:playerSessionCreated', { clientId, license });
|
|
37
37
|
setImmediate(() => {
|
|
38
38
|
const currentPlayer = this.playerDirectory.getByClient(clientId);
|
|
39
39
|
if (!currentPlayer)
|
|
40
40
|
return;
|
|
41
|
-
(0,
|
|
41
|
+
(0, internal_event_bus_1.emitFrameworkEvent)('internal:playerFullyConnected', { player: currentPlayer });
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
async onPlayerDropped() {
|
|
@@ -48,7 +48,7 @@ let SessionController = class SessionController {
|
|
|
48
48
|
await this.persistance.handleSessionSave(player);
|
|
49
49
|
}
|
|
50
50
|
this.playerSessionLifecycle.unbind(clientId);
|
|
51
|
-
(0,
|
|
51
|
+
(0, internal_event_bus_1.emitFrameworkEvent)('internal:playerSessionDestroyed', { clientId });
|
|
52
52
|
shared_1.loggers.session.info(`Player session destroyed`, { clientId });
|
|
53
53
|
}
|
|
54
54
|
};
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { InternalEventMap } from '../types/internal-events';
|
|
2
|
+
/**
|
|
3
|
+
* Handler function type for framework events.
|
|
4
|
+
* Accepts the event payload and returns void or Promise<void>.
|
|
5
|
+
*/
|
|
6
|
+
type FrameworkEventHandler<K extends keyof InternalEventMap> = (payload: InternalEventMap[K]) => void | Promise<void>;
|
|
2
7
|
/**
|
|
3
8
|
* Registers a method as a listener for an internal OpenCore framework event.
|
|
4
9
|
*
|
|
@@ -6,17 +11,21 @@ import { CoreEventMap } from '../types/core-events';
|
|
|
6
11
|
* This decorator only stores metadata. The framework binds listeners during bootstrap by scanning
|
|
7
12
|
* controller methods.
|
|
8
13
|
*
|
|
9
|
-
*
|
|
14
|
+
* The method signature is type-checked against the event payload. TypeScript will error if
|
|
15
|
+
* the handler parameter type doesn't match the expected payload for the specified event.
|
|
16
|
+
*
|
|
17
|
+
* @param event - Core event name, strongly typed to {@link InternalEventMap}.
|
|
10
18
|
*
|
|
11
19
|
* @example
|
|
12
20
|
* ```ts
|
|
13
21
|
* @Server.Controller()
|
|
14
22
|
* export class SystemController {
|
|
15
|
-
* @Server.OnFrameworkEvent('
|
|
16
|
-
*
|
|
17
|
-
* console.log(
|
|
23
|
+
* @Server.OnFrameworkEvent('core:playerSessionCreated')
|
|
24
|
+
* onPlayerSession(payload: PlayerSessionCreatedPayload) {
|
|
25
|
+
* console.log(`Player ${payload.clientId} connected`)
|
|
18
26
|
* }
|
|
19
27
|
* }
|
|
20
28
|
* ```
|
|
21
29
|
*/
|
|
22
|
-
export declare function OnFrameworkEvent<K extends keyof
|
|
30
|
+
export declare function OnFrameworkEvent<K extends keyof InternalEventMap>(event: K): (target: object, propertyKey: string | symbol, _descriptor: TypedPropertyDescriptor<FrameworkEventHandler<K>>) => void;
|
|
31
|
+
export {};
|
|
@@ -9,21 +9,24 @@ const metadata_server_keys_1 = require("../system/metadata-server.keys");
|
|
|
9
9
|
* This decorator only stores metadata. The framework binds listeners during bootstrap by scanning
|
|
10
10
|
* controller methods.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* The method signature is type-checked against the event payload. TypeScript will error if
|
|
13
|
+
* the handler parameter type doesn't match the expected payload for the specified event.
|
|
14
|
+
*
|
|
15
|
+
* @param event - Core event name, strongly typed to {@link InternalEventMap}.
|
|
13
16
|
*
|
|
14
17
|
* @example
|
|
15
18
|
* ```ts
|
|
16
19
|
* @Server.Controller()
|
|
17
20
|
* export class SystemController {
|
|
18
|
-
* @Server.OnFrameworkEvent('
|
|
19
|
-
*
|
|
20
|
-
* console.log(
|
|
21
|
+
* @Server.OnFrameworkEvent('core:playerSessionCreated')
|
|
22
|
+
* onPlayerSession(payload: PlayerSessionCreatedPayload) {
|
|
23
|
+
* console.log(`Player ${payload.clientId} connected`)
|
|
21
24
|
* }
|
|
22
25
|
* }
|
|
23
26
|
* ```
|
|
24
27
|
*/
|
|
25
28
|
function OnFrameworkEvent(event) {
|
|
26
|
-
return (target, propertyKey) => {
|
|
27
|
-
Reflect.defineMetadata(metadata_server_keys_1.METADATA_KEYS.
|
|
29
|
+
return (target, propertyKey, _descriptor) => {
|
|
30
|
+
Reflect.defineMetadata(metadata_server_keys_1.METADATA_KEYS.INTERNAL_EVENT, { event }, target, propertyKey);
|
|
28
31
|
};
|
|
29
32
|
}
|
|
@@ -65,6 +65,11 @@ export declare class Player {
|
|
|
65
65
|
* @returns An array of identifier strings (e.g., `['steam:11000...', 'license:2332...']`).
|
|
66
66
|
*/
|
|
67
67
|
getIdentifiers(): string[];
|
|
68
|
+
/**
|
|
69
|
+
* FiveM license
|
|
70
|
+
*/
|
|
71
|
+
getLicense(): string | undefined;
|
|
72
|
+
getIdentifier(identifier: string): string | undefined;
|
|
68
73
|
/**
|
|
69
74
|
* Sends a network event exclusively to this specific player (Client-side).
|
|
70
75
|
* Wrapper for `emitNet` ensuring the correct target Source ID is used.
|
|
@@ -130,6 +135,7 @@ export declare class Player {
|
|
|
130
135
|
* @param accountID - The unique ID from the database.
|
|
131
136
|
*/
|
|
132
137
|
linkAccount(accountID: LinkedID): void;
|
|
138
|
+
unlinkAccount(): void;
|
|
133
139
|
/**
|
|
134
140
|
* Checks if the player currently possesses a specific state flag.
|
|
135
141
|
*
|
|
@@ -67,6 +67,15 @@ class Player {
|
|
|
67
67
|
getIdentifiers() {
|
|
68
68
|
return this.adapters.playerServer.getIdentifiers(this.clientIDStr);
|
|
69
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* FiveM license
|
|
72
|
+
*/
|
|
73
|
+
getLicense() {
|
|
74
|
+
return this.adapters.playerServer.getIdentifier(this.clientIDStr, 'license');
|
|
75
|
+
}
|
|
76
|
+
getIdentifier(identifier) {
|
|
77
|
+
return this.adapters.playerServer.getIdentifier(this.clientIDStr, identifier);
|
|
78
|
+
}
|
|
70
79
|
/**
|
|
71
80
|
* Sends a network event exclusively to this specific player (Client-side).
|
|
72
81
|
* Wrapper for `emitNet` ensuring the correct target Source ID is used.
|
|
@@ -153,6 +162,9 @@ class Player {
|
|
|
153
162
|
linkAccount(accountID) {
|
|
154
163
|
this.session.accountID = accountID;
|
|
155
164
|
}
|
|
165
|
+
unlinkAccount() {
|
|
166
|
+
this.session.accountID = undefined;
|
|
167
|
+
}
|
|
156
168
|
/**
|
|
157
169
|
* Checks if the player currently possesses a specific state flag.
|
|
158
170
|
*
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './bootstrap.validation';
|
|
2
|
+
export { onFrameworkEvent } from './bus/internal-event.bus';
|
|
2
3
|
export * from './configs';
|
|
3
4
|
export * from './contracts/index';
|
|
4
5
|
export { init } from './core';
|
|
@@ -9,4 +10,4 @@ export * from './runtime';
|
|
|
9
10
|
export * from './services';
|
|
10
11
|
export * from './setup';
|
|
11
12
|
export * from './templates';
|
|
12
|
-
export type * from './types/
|
|
13
|
+
export type * from './types/internal-events';
|
|
@@ -15,8 +15,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
16
16
|
};
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.init = void 0;
|
|
18
|
+
exports.init = exports.onFrameworkEvent = void 0;
|
|
19
19
|
__exportStar(require("./bootstrap.validation"), exports);
|
|
20
|
+
var internal_event_bus_1 = require("./bus/internal-event.bus");
|
|
21
|
+
Object.defineProperty(exports, "onFrameworkEvent", { enumerable: true, get: function () { return internal_event_bus_1.onFrameworkEvent; } });
|
|
20
22
|
// Configs
|
|
21
23
|
__exportStar(require("./configs"), exports);
|
|
22
24
|
__exportStar(require("./contracts/index"), exports);
|
|
@@ -5,7 +5,6 @@ import { IPlayerServer } from '../../../../adapters/contracts/IPlayerServer';
|
|
|
5
5
|
import { Player } from '../../entities';
|
|
6
6
|
import { PlayerDirectoryPort } from '../ports/player-directory.port';
|
|
7
7
|
import { PlayerSessionLifecyclePort } from '../ports/player-session-lifecycle.port';
|
|
8
|
-
import { LinkedID } from '../types/linked-id';
|
|
9
8
|
import { PlayerSession } from '../types/player-session.object';
|
|
10
9
|
/**
|
|
11
10
|
* Service responsible for managing the lifecycle of player sessions.
|
|
@@ -41,16 +40,6 @@ export declare class PlayerService implements PlayerDirectoryPort, PlayerSession
|
|
|
41
40
|
* @returns The newly created `Player` instance.
|
|
42
41
|
*/
|
|
43
42
|
bind(clientID: number, identifiers?: PlayerSession['identifiers']): Player;
|
|
44
|
-
/**
|
|
45
|
-
* Associates an authenticated Account ID (database ID) with an active player session.
|
|
46
|
-
*
|
|
47
|
-
* Call this method once the player has successfully authenticated (e.g., after character selection
|
|
48
|
-
* or login) to link their session to their persistent data.
|
|
49
|
-
*
|
|
50
|
-
* @param clientID - The FiveM server ID of the player.
|
|
51
|
-
* @param accountID - The unique identifier from your database/persistence layer.
|
|
52
|
-
*/
|
|
53
|
-
linkAccount(clientID: number, accountID: LinkedID): void;
|
|
54
43
|
/**
|
|
55
44
|
* Terminates a player session and removes them from the registry.
|
|
56
45
|
*
|
|
@@ -70,21 +70,6 @@ let PlayerService = class PlayerService {
|
|
|
70
70
|
});
|
|
71
71
|
return player;
|
|
72
72
|
}
|
|
73
|
-
/**
|
|
74
|
-
* Associates an authenticated Account ID (database ID) with an active player session.
|
|
75
|
-
*
|
|
76
|
-
* Call this method once the player has successfully authenticated (e.g., after character selection
|
|
77
|
-
* or login) to link their session to their persistent data.
|
|
78
|
-
*
|
|
79
|
-
* @param clientID - The FiveM server ID of the player.
|
|
80
|
-
* @param accountID - The unique identifier from your database/persistence layer.
|
|
81
|
-
*/
|
|
82
|
-
linkAccount(clientID, accountID) {
|
|
83
|
-
const player = this.playersByClient.get(clientID);
|
|
84
|
-
if (!player)
|
|
85
|
-
return;
|
|
86
|
-
player.linkAccount(accountID);
|
|
87
|
-
}
|
|
88
73
|
/**
|
|
89
74
|
* Terminates a player session and removes them from the registry.
|
|
90
75
|
*
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Player } from '../../entities';
|
|
2
|
-
import { LinkedID } from '../types/linked-id';
|
|
3
2
|
import { PlayerSession } from '../types/player-session.object';
|
|
4
3
|
/**
|
|
5
4
|
* Core port responsible for managing the lifecycle of player sessions.
|
|
@@ -35,15 +34,4 @@ export declare abstract class PlayerSessionLifecyclePort {
|
|
|
35
34
|
* @param clientID - The FiveM server client ID (`source`).
|
|
36
35
|
*/
|
|
37
36
|
abstract unbind(clientID: number): void;
|
|
38
|
-
/**
|
|
39
|
-
* Links an authenticated account to an existing player session.
|
|
40
|
-
*
|
|
41
|
-
* @remarks
|
|
42
|
-
* This method is typically invoked after successful authentication or
|
|
43
|
-
* character selection to associate persistent data with the active session.
|
|
44
|
-
*
|
|
45
|
-
* @param clientID - The FiveM server client ID (`source`).
|
|
46
|
-
* @param accountID - The persistent account identifier.
|
|
47
|
-
*/
|
|
48
|
-
abstract linkAccount(clientID: number, accountID: LinkedID): void;
|
|
49
37
|
}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.METADATA_KEYS = void 0;
|
|
4
4
|
exports.METADATA_KEYS = {
|
|
5
|
-
CONTROLLER: '
|
|
6
|
-
COMMAND: '
|
|
7
|
-
NET_EVENT: '
|
|
8
|
-
TICK: '
|
|
9
|
-
|
|
10
|
-
FIVEM_EVENT: '
|
|
11
|
-
EXPORT: '
|
|
12
|
-
PUBLIC: '
|
|
13
|
-
THROTTLE: '
|
|
14
|
-
REQUIRES_STATE: '
|
|
5
|
+
CONTROLLER: 'decorator:meta:controller',
|
|
6
|
+
COMMAND: 'decorator:meta:command',
|
|
7
|
+
NET_EVENT: 'decorator:meta:net_event',
|
|
8
|
+
TICK: 'decorator:meta:tick',
|
|
9
|
+
INTERNAL_EVENT: 'decorator:meta:internal_event',
|
|
10
|
+
FIVEM_EVENT: 'decorator:meta:fivem_event',
|
|
11
|
+
EXPORT: 'decorator:meta:export',
|
|
12
|
+
PUBLIC: 'decorator:meta:public',
|
|
13
|
+
THROTTLE: 'decorator:throttle',
|
|
14
|
+
REQUIRES_STATE: 'decorator:requires_state',
|
|
15
15
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DecoratorProcessor } from '../../../../kernel/di/decorator-processor';
|
|
2
|
-
export declare class
|
|
2
|
+
export declare class InternalEventProcessor implements DecoratorProcessor {
|
|
3
3
|
readonly metadataKey: string;
|
|
4
4
|
process(instance: any, methodName: string, metadata: {
|
|
5
5
|
event: string;
|
package/dist/runtime/server/system/processors/{coreEvent.processor.js → internalEvent.processor.js}
RENAMED
|
@@ -6,27 +6,27 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.
|
|
9
|
+
exports.InternalEventProcessor = void 0;
|
|
10
10
|
const tsyringe_1 = require("tsyringe");
|
|
11
11
|
const logger_1 = require("../../../../kernel/shared/logger");
|
|
12
|
-
const
|
|
12
|
+
const internal_event_bus_1 = require("../../bus/internal-event.bus");
|
|
13
13
|
const resolve_method_1 = require("../../helpers/resolve-method");
|
|
14
14
|
const metadata_server_keys_1 = require("../metadata-server.keys");
|
|
15
|
-
let
|
|
15
|
+
let InternalEventProcessor = class InternalEventProcessor {
|
|
16
16
|
constructor() {
|
|
17
|
-
this.metadataKey = metadata_server_keys_1.METADATA_KEYS.
|
|
17
|
+
this.metadataKey = metadata_server_keys_1.METADATA_KEYS.INTERNAL_EVENT;
|
|
18
18
|
}
|
|
19
19
|
process(instance, methodName, metadata) {
|
|
20
|
-
const result = (0, resolve_method_1.resolveMethod)(instance, methodName, `[
|
|
20
|
+
const result = (0, resolve_method_1.resolveMethod)(instance, methodName, `[InternalEventProcessor] Method "${methodName}" not found`);
|
|
21
21
|
if (!result)
|
|
22
22
|
return;
|
|
23
23
|
const { handler, handlerName } = result;
|
|
24
|
-
(0,
|
|
24
|
+
(0, internal_event_bus_1.onFrameworkEvent)(metadata.event, (payload) => {
|
|
25
25
|
try {
|
|
26
26
|
handler(payload);
|
|
27
27
|
}
|
|
28
28
|
catch (error) {
|
|
29
|
-
logger_1.loggers.eventBus.error(`Handler error in
|
|
29
|
+
logger_1.loggers.eventBus.error(`Handler error in InternalEvent`, {
|
|
30
30
|
event: metadata.event,
|
|
31
31
|
handler: handlerName,
|
|
32
32
|
}, error);
|
|
@@ -35,7 +35,7 @@ let CoreEventProcessor = class CoreEventProcessor {
|
|
|
35
35
|
logger_1.loggers.eventBus.debug(`Registered: ${metadata.event} -> ${handlerName}`);
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
-
exports.
|
|
39
|
-
exports.
|
|
38
|
+
exports.InternalEventProcessor = InternalEventProcessor;
|
|
39
|
+
exports.InternalEventProcessor = InternalEventProcessor = __decorate([
|
|
40
40
|
(0, tsyringe_1.injectable)()
|
|
41
|
-
],
|
|
41
|
+
], InternalEventProcessor);
|
|
@@ -7,9 +7,9 @@ const security_handler_contract_1 = require("../contracts/security/security-hand
|
|
|
7
7
|
const default_net_event_security_observer_1 = require("../services/default/default-net-event-security-observer");
|
|
8
8
|
const default_security_handler_1 = require("../services/default/default-security.handler");
|
|
9
9
|
const command_processor_1 = require("./processors/command.processor");
|
|
10
|
-
const coreEvent_processor_1 = require("./processors/coreEvent.processor");
|
|
11
10
|
const export_processor_1 = require("./processors/export.processor");
|
|
12
11
|
const fivemEvent_processor_1 = require("./processors/fivemEvent.processor");
|
|
12
|
+
const internalEvent_processor_1 = require("./processors/internalEvent.processor");
|
|
13
13
|
const netEvent_processor_1 = require("./processors/netEvent.processor");
|
|
14
14
|
const tick_processor_1 = require("./processors/tick.processor");
|
|
15
15
|
function registerSystemServer(ctx) {
|
|
@@ -27,7 +27,7 @@ function registerSystemServer(ctx) {
|
|
|
27
27
|
if (features.exports.enabled) {
|
|
28
28
|
index_1.di.register('DecoratorProcessor', { useClass: export_processor_1.ExportProcessor });
|
|
29
29
|
}
|
|
30
|
-
index_1.di.register('DecoratorProcessor', { useClass:
|
|
30
|
+
index_1.di.register('DecoratorProcessor', { useClass: internalEvent_processor_1.InternalEventProcessor });
|
|
31
31
|
if (features.commands.enabled) {
|
|
32
32
|
index_1.di.register('DecoratorProcessor', { useClass: command_processor_1.CommandProcessor });
|
|
33
33
|
}
|
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./core-events"), exports);
|
|
18
17
|
__exportStar(require("./core-exports"), exports);
|
|
18
|
+
__exportStar(require("./internal-events"), exports);
|
|
19
19
|
__exportStar(require("./security.types"), exports);
|
|
20
20
|
__exportStar(require("./vehicle.types"), exports);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Player } from '../entities';
|
|
2
|
+
export interface PlayerSessionCreatedPayload {
|
|
3
|
+
clientId: number;
|
|
4
|
+
license: string;
|
|
5
|
+
}
|
|
6
|
+
export interface PlayerSessionDestroyedPayload {
|
|
7
|
+
clientId: number;
|
|
8
|
+
}
|
|
9
|
+
export interface TransferCompletedPayload {
|
|
10
|
+
playerId: number;
|
|
11
|
+
amount: number;
|
|
12
|
+
targetId: number;
|
|
13
|
+
}
|
|
14
|
+
export interface PlayerFullyConnectedPayload {
|
|
15
|
+
player: Player;
|
|
16
|
+
}
|
|
17
|
+
export type InternalEventMap = {
|
|
18
|
+
'internal:playerSessionCreated': PlayerSessionCreatedPayload;
|
|
19
|
+
'internal:playerSessionDestroyed': PlayerSessionDestroyedPayload;
|
|
20
|
+
'internal:transfer:completed': TransferCompletedPayload;
|
|
21
|
+
'internal:playerFullyConnected': PlayerFullyConnectedPayload;
|
|
22
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { CoreEventMap } from '../types/core-events';
|
|
2
|
-
type CoreEventName = keyof CoreEventMap;
|
|
3
|
-
type CoreEventHandler<E extends CoreEventName> = (payload: CoreEventMap[E]) => void;
|
|
4
|
-
export declare function onFrameworkEvent<E extends CoreEventName>(event: E, handler: CoreEventHandler<E>): () => void;
|
|
5
|
-
export declare function emitFrameworkEvent<E extends CoreEventName>(event: E, payload: CoreEventMap[E]): void;
|
|
6
|
-
export {};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export interface PlayerSessionCreatedPayload {
|
|
2
|
-
clientId: number;
|
|
3
|
-
license: string;
|
|
4
|
-
}
|
|
5
|
-
export interface PlayerSessionDestroyedPayload {
|
|
6
|
-
clientId: number;
|
|
7
|
-
}
|
|
8
|
-
export interface TransferCompletedPayload {
|
|
9
|
-
playerId: number;
|
|
10
|
-
amount: number;
|
|
11
|
-
targetId: number;
|
|
12
|
-
}
|
|
13
|
-
export interface PlayerFullyConnectedPayload {
|
|
14
|
-
clientId: number;
|
|
15
|
-
license: string;
|
|
16
|
-
}
|
|
17
|
-
export type CoreEventMap = {
|
|
18
|
-
'core:playerSessionCreated': PlayerSessionCreatedPayload;
|
|
19
|
-
'core:playerSessionDestroyed': PlayerSessionDestroyedPayload;
|
|
20
|
-
'core:transfer:completed': TransferCompletedPayload;
|
|
21
|
-
'core:playerFullyConnected': PlayerFullyConnectedPayload;
|
|
22
|
-
};
|
|
File without changes
|
|
File without changes
|