mirror of
https://github.com/4ian/GDevelop.git
synced 2025-10-15 10:19:04 +00:00
Compare commits
1 Commits
scene-edit
...
v5.2.166
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2496fc3eef |
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@@ -127,7 +127,5 @@
|
||||
"flow.useNPMPackagedFlow": true,
|
||||
|
||||
// Clang format styling (duplicated in scripts/CMakeClangUtils.txt)
|
||||
"C_Cpp.clang_format_style": "{BasedOnStyle: Google, BinPackParameters: false, BinPackArguments: false}",
|
||||
"prettier.prettierPath": "./GDJS/node_modules/prettier",
|
||||
"prettier.configPath": "./GDJS/.prettierrc"
|
||||
"C_Cpp.clang_format_style": "{BasedOnStyle: Google, BinPackParameters: false, BinPackArguments: false}"
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,63 +0,0 @@
|
||||
namespace gdjs {
|
||||
export namespace steamworks {
|
||||
gdjs.registerFirstRuntimeSceneLoadedCallback(() => {
|
||||
if (gdjs.steamworks.steamAPI) gdjs.steamworks.steamAPI.input.init();
|
||||
});
|
||||
|
||||
export function getControllerCount(): integer {
|
||||
return gdjs.steamworks.steamAPI
|
||||
? gdjs.steamworks.steamAPI.input.getControllers().length
|
||||
: 0;
|
||||
}
|
||||
|
||||
export function activateActionSet(
|
||||
controllerIndex: number,
|
||||
actionSetName: string
|
||||
): void {
|
||||
if (!gdjs.steamworks.steamAPI) return;
|
||||
gdjs.steamworks.steamAPI.input
|
||||
.getControllers()
|
||||
[controllerIndex]?.activateActionSet(
|
||||
gdjs.steamworks.steamAPI.input.getActionSet(actionSetName)
|
||||
);
|
||||
}
|
||||
|
||||
export function isDigitalActionPressed(
|
||||
controllerIndex: number,
|
||||
actionName: string
|
||||
): boolean {
|
||||
if (!gdjs.steamworks.steamAPI) return false;
|
||||
return !!gdjs.steamworks.steamAPI.input
|
||||
.getControllers()
|
||||
[controllerIndex]?.isDigitalActionPressed(
|
||||
gdjs.steamworks.steamAPI.input.getDigitalAction(actionName)
|
||||
);
|
||||
}
|
||||
|
||||
export function getAnalogActionVectorX(
|
||||
controllerIndex: number,
|
||||
actionName: string
|
||||
): float {
|
||||
return gdjs.steamworks.steamAPI
|
||||
? gdjs.steamworks.steamAPI.input
|
||||
.getControllers()
|
||||
[controllerIndex]?.getAnalogActionVector(
|
||||
gdjs.steamworks.steamAPI.input.getAnalogAction(actionName)
|
||||
).x ?? 0
|
||||
: 0;
|
||||
}
|
||||
|
||||
export function getAnalogActionVectorY(
|
||||
controllerIndex: number,
|
||||
actionName: string
|
||||
): float {
|
||||
return gdjs.steamworks.steamAPI
|
||||
? gdjs.steamworks.steamAPI.input
|
||||
.getControllers()
|
||||
[controllerIndex]?.getAnalogActionVector(
|
||||
gdjs.steamworks.steamAPI.input.getAnalogAction(actionName)
|
||||
).y ?? 0
|
||||
: 0;
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,566 +0,0 @@
|
||||
namespace gdjs {
|
||||
export namespace steamworks {
|
||||
const logger = new gdjs.Logger('Steamworks');
|
||||
export let steamAPI: import('steamworks.js').Client | null = null;
|
||||
|
||||
gdjs.registerFirstRuntimeSceneLoadedCallback((runtimeScene) => {
|
||||
const remote = runtimeScene.getGame().getRenderer().getElectronRemote();
|
||||
if (!remote) return; // Steamworks is only supported on electron
|
||||
const steamworks_js = remote.require(
|
||||
'steamworks.js'
|
||||
) as typeof import('steamworks.js');
|
||||
|
||||
// Sets the proper electron flags for the steam overlay to function properly
|
||||
steamworks_js.electronEnableSteamOverlay();
|
||||
|
||||
const unparsedAppID = runtimeScene
|
||||
.getGame()
|
||||
.getExtensionProperty('Steamworks', 'AppID');
|
||||
|
||||
if (!unparsedAppID) {
|
||||
logger.error(
|
||||
'A steam AppID needs to be configured in the game properties for steamworks features to be used!'
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
const appID = parseInt(unparsedAppID, 10);
|
||||
|
||||
// Restart the game through steam if it needs to be launched with steam but has not been
|
||||
if (
|
||||
runtimeScene
|
||||
.getGame()
|
||||
.getExtensionProperty('Steamworks', 'RequireSteam') &&
|
||||
!runtimeScene.getGame().isPreview() &&
|
||||
steamworks_js.restartAppIfNecessary(appID)
|
||||
) {
|
||||
remote.process.exit(1);
|
||||
return;
|
||||
}
|
||||
|
||||
steamAPI = steamworks_js.init(appID);
|
||||
});
|
||||
|
||||
// ---
|
||||
|
||||
export function claimAchievement(achievement: string): void {
|
||||
if (steamAPI) steamAPI.achievement.activate(achievement);
|
||||
else
|
||||
logger.warn(
|
||||
`Could not claim achievement ${achievement}, steamworks was not properly loaded!`
|
||||
);
|
||||
}
|
||||
|
||||
export function unclaimAchievement(achievement: string): void {
|
||||
if (steamAPI) steamAPI.achievement.clear(achievement);
|
||||
else
|
||||
logger.warn(
|
||||
`Could not unclaim achievement ${achievement}, steamworks was not properly loaded!`
|
||||
);
|
||||
}
|
||||
|
||||
export function hasAchievement(achievement: string): boolean {
|
||||
return !!steamAPI && steamAPI.achievement.isActivated(achievement);
|
||||
}
|
||||
|
||||
// ---
|
||||
|
||||
export function getSteamId(): string {
|
||||
return steamAPI
|
||||
? steamAPI.localplayer.getSteamId().steamId64.toString(10)
|
||||
: '';
|
||||
}
|
||||
|
||||
export function getName(): string {
|
||||
return steamAPI ? steamAPI.localplayer.getName() : 'Unknown';
|
||||
}
|
||||
|
||||
export function getCountry(): string {
|
||||
return steamAPI ? steamAPI.localplayer.getIpCountry() : 'Unknown';
|
||||
}
|
||||
|
||||
export function getLevel(): number {
|
||||
return steamAPI ? steamAPI.localplayer.getLevel() : 0;
|
||||
}
|
||||
|
||||
export function setRichPresence(key: string, value: string): void {
|
||||
if (steamAPI) steamAPI.localplayer.setRichPresence(key, value);
|
||||
else
|
||||
logger.warn(
|
||||
`Could not set the rich presence, steamworks was not properly loaded!`
|
||||
);
|
||||
}
|
||||
|
||||
// ---
|
||||
|
||||
export function isSteamworksProperlyLoaded(): boolean {
|
||||
return !!steamAPI;
|
||||
}
|
||||
|
||||
export function getAppID(): number {
|
||||
return steamAPI ? steamAPI.utils.getAppId() : 0;
|
||||
}
|
||||
|
||||
export function getServerRealTime(): number {
|
||||
return steamAPI ? steamAPI.utils.getServerRealTime() : Date.now();
|
||||
}
|
||||
|
||||
export function isOnSteamDeck(): boolean {
|
||||
return steamAPI ? steamAPI.utils.isSteamRunningOnSteamDeck() : false;
|
||||
}
|
||||
|
||||
// ---
|
||||
|
||||
enum LobbyType {
|
||||
Private = 0,
|
||||
FriendsOnly = 1,
|
||||
Public = 2,
|
||||
Invisible = 3,
|
||||
}
|
||||
|
||||
const knownLobbies = new Map<
|
||||
string,
|
||||
import('steamworks.js/client').matchmaking.Lobby
|
||||
>();
|
||||
let currentLobby:
|
||||
| import('steamworks.js/client').matchmaking.Lobby
|
||||
| null = null;
|
||||
|
||||
export function getKnownLobby(lobbyId: string) {
|
||||
if (!steamAPI) {
|
||||
logger.warn(
|
||||
`Could not access lobby '${lobbyId}', steamworks was not properly loaded!`
|
||||
);
|
||||
return null;
|
||||
}
|
||||
|
||||
const lobby = knownLobbies.get(lobbyId);
|
||||
if (!lobby) {
|
||||
logger.error(
|
||||
`Could not access lobby '${lobbyId}'! You might need to join it before trying to access it.`
|
||||
);
|
||||
return null;
|
||||
}
|
||||
|
||||
return lobby;
|
||||
}
|
||||
|
||||
export function createLobby(
|
||||
lobbyType: 'Private' | 'FriendsOnly' | 'Public' | 'Invisible',
|
||||
maxPlayers: number,
|
||||
result: gdjs.Variable
|
||||
): gdjs.AsyncTask {
|
||||
if (steamAPI) {
|
||||
return new gdjs.PromiseTask(
|
||||
steamAPI.matchmaking
|
||||
.createLobby(
|
||||
LobbyType[lobbyType] as any /* Const enums are 😩 */,
|
||||
maxPlayers
|
||||
)
|
||||
.then((lobby) => {
|
||||
const id = lobby.id.toString(10);
|
||||
knownLobbies.set(id, lobby);
|
||||
currentLobby = lobby;
|
||||
result.setString(id);
|
||||
})
|
||||
.catch(() => {
|
||||
result.setString('failure');
|
||||
})
|
||||
);
|
||||
} else {
|
||||
logger.warn(
|
||||
`Could not create a lobby, steamworks was not properly loaded!`
|
||||
);
|
||||
return new gdjs.ResolveTask();
|
||||
}
|
||||
}
|
||||
|
||||
export function getLobbiesList(results: gdjs.Variable): gdjs.AsyncTask {
|
||||
if (steamAPI) {
|
||||
return new gdjs.PromiseTask(
|
||||
steamAPI.matchmaking
|
||||
.getLobbies()
|
||||
.then((lobbies) => {
|
||||
const allLobbiesIds = lobbies.map((lobby) => {
|
||||
const id = lobby.id.toString(10);
|
||||
knownLobbies.set(id, lobby);
|
||||
return id;
|
||||
});
|
||||
results.fromJSObject(allLobbiesIds);
|
||||
})
|
||||
.catch(() => {
|
||||
results.setString('failure');
|
||||
})
|
||||
);
|
||||
} else {
|
||||
logger.warn(
|
||||
`Could not obtain the lobbies list, steamworks was not properly loaded!`
|
||||
);
|
||||
return new gdjs.ResolveTask();
|
||||
}
|
||||
}
|
||||
|
||||
export function joinLobby(
|
||||
lobbyId: string,
|
||||
result: gdjs.Variable
|
||||
): gdjs.AsyncTask {
|
||||
if (steamAPI) {
|
||||
return new gdjs.PromiseTask(
|
||||
steamAPI.matchmaking
|
||||
.joinLobby(BigInt(lobbyId))
|
||||
.then((lobby) => {
|
||||
knownLobbies.set(lobbyId, lobby);
|
||||
currentLobby = lobby;
|
||||
result.setString(lobbyId);
|
||||
})
|
||||
.catch(() => {
|
||||
result.setString('failure');
|
||||
})
|
||||
);
|
||||
} else {
|
||||
logger.warn(
|
||||
`Could not join a lobby, steamworks was not properly loaded!`
|
||||
);
|
||||
return new gdjs.ResolveTask();
|
||||
}
|
||||
}
|
||||
|
||||
export function getCurrentLobbyId(): string {
|
||||
return currentLobby ? currentLobby.id.toString(10) : 'none';
|
||||
}
|
||||
|
||||
export function leaveCurrentLobby(): void {
|
||||
if (currentLobby) currentLobby.leave();
|
||||
}
|
||||
|
||||
export function openDialogForInvitingUsersToTheCurrentLobby(): void {
|
||||
if (currentLobby) currentLobby.openInviteDialog();
|
||||
}
|
||||
|
||||
export function getCurrentLobbyAttribute(attribute: string): string {
|
||||
if (!currentLobby) return '';
|
||||
|
||||
const data = currentLobby.getData(attribute);
|
||||
return data === null ? '' : data;
|
||||
}
|
||||
|
||||
export function getLobbyAttribute(
|
||||
lobbyId: string,
|
||||
attribute: string
|
||||
): string {
|
||||
const lobby = getKnownLobby(lobbyId);
|
||||
if (!lobby) return '';
|
||||
|
||||
const data = lobby.getData(attribute);
|
||||
return data === null ? '' : data;
|
||||
}
|
||||
|
||||
export function setCurrentLobbyAttribute(
|
||||
attribute: string,
|
||||
value: string,
|
||||
success: gdjs.Variable
|
||||
): void {
|
||||
if (currentLobby)
|
||||
success.setBoolean(currentLobby.setData(attribute, value));
|
||||
}
|
||||
|
||||
export function setCurrentLobbyJoinability(
|
||||
shouldBeJoinable: boolean,
|
||||
success: gdjs.Variable
|
||||
): void {
|
||||
if (currentLobby)
|
||||
success.setBoolean(currentLobby.setJoinable(shouldBeJoinable));
|
||||
}
|
||||
|
||||
export function getCurrentLobbyMemberCount(): number {
|
||||
return currentLobby ? Number(currentLobby.getMemberCount()) : 0;
|
||||
}
|
||||
|
||||
export function getLobbyMemberCount(lobbyId: string): number {
|
||||
const lobby = getKnownLobby(lobbyId);
|
||||
return lobby ? Number(lobby.getMemberCount()) : 0;
|
||||
}
|
||||
|
||||
export function getCurrentLobbyMemberLimit(): number {
|
||||
return currentLobby ? Number(currentLobby.getMemberLimit()) : 0;
|
||||
}
|
||||
|
||||
export function getLobbyMemberLimit(lobbyId: string): number {
|
||||
const lobby = getKnownLobby(lobbyId);
|
||||
if (!lobby) return 0;
|
||||
return lobby ? Number(lobby.getMemberLimit()) : 0;
|
||||
}
|
||||
|
||||
export function getCurrentLobbyOwner(): string {
|
||||
return currentLobby ? currentLobby.getOwner().steamId64.toString(10) : '';
|
||||
}
|
||||
|
||||
export function getLobbyOwner(lobbyId: string): string {
|
||||
const lobby = getKnownLobby(lobbyId);
|
||||
return lobby ? lobby.getOwner().steamId64.toString(10) : '';
|
||||
}
|
||||
|
||||
export function getCurrentLobbyMembersList(storeIn: gdjs.Variable): void {
|
||||
if (currentLobby) {
|
||||
storeIn.fromJSObject(
|
||||
currentLobby
|
||||
.getMembers()
|
||||
.map((steamID) => steamID.steamId64.toString(10))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export function getLobbyMembersList(
|
||||
lobbyId: string,
|
||||
storeIn: gdjs.Variable
|
||||
): void {
|
||||
const lobby = getKnownLobby(lobbyId);
|
||||
if (lobby) {
|
||||
storeIn.fromJSObject(
|
||||
lobby.getMembers().map((steamID) => steamID.steamId64.toString(10))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// ---
|
||||
|
||||
export function isAppOwned(appId: string): boolean {
|
||||
return !!steamAPI && steamAPI.apps.isSubscribedApp(Number(appId));
|
||||
}
|
||||
|
||||
export function isAppInstalled(appId: string): boolean {
|
||||
return !!steamAPI && steamAPI.apps.isAppInstalled(Number(appId));
|
||||
}
|
||||
|
||||
export function isDLCInstalled(dlcId: string): boolean {
|
||||
return !!steamAPI && steamAPI.apps.isDlcInstalled(Number(dlcId));
|
||||
}
|
||||
|
||||
export function getAppInstallDirectory(appId: string): string {
|
||||
return steamAPI ? steamAPI.apps.appInstallDir(Number(appId)) : '';
|
||||
}
|
||||
|
||||
export function isVacBanned(): boolean {
|
||||
return !!steamAPI && steamAPI.apps.isVacBanned();
|
||||
}
|
||||
|
||||
export function isLowViolence(): boolean {
|
||||
return !!steamAPI && steamAPI.apps.isLowViolence();
|
||||
}
|
||||
|
||||
export function userBoughtTheGame(): boolean {
|
||||
return !!steamAPI && steamAPI.apps.isSubscribed();
|
||||
}
|
||||
|
||||
export function currentGameLanguage(): string {
|
||||
return steamAPI ? steamAPI.apps.currentGameLanguage() : '';
|
||||
}
|
||||
|
||||
export function currentBetaName(): string {
|
||||
return steamAPI ? steamAPI.apps.currentBetaName() || '' : '';
|
||||
}
|
||||
|
||||
export function getBuildId(): number {
|
||||
return steamAPI ? steamAPI.apps.appBuildId() : 0;
|
||||
}
|
||||
|
||||
// ---
|
||||
|
||||
export function isCloudEnabled(): boolean {
|
||||
return (
|
||||
!!steamAPI &&
|
||||
steamAPI.cloud.isEnabledForAccount() &&
|
||||
steamAPI.cloud.isEnabledForApp()
|
||||
);
|
||||
}
|
||||
|
||||
export function readFile(fileName: string): string {
|
||||
return steamAPI ? steamAPI.cloud.readFile(fileName) : '';
|
||||
}
|
||||
|
||||
export function writeFile(
|
||||
fileName: string,
|
||||
content: string,
|
||||
results: gdjs.Variable
|
||||
): void {
|
||||
if (steamAPI)
|
||||
results.setBoolean(steamAPI.cloud.writeFile(fileName, content));
|
||||
}
|
||||
|
||||
export function fileExists(fileName: string): boolean {
|
||||
return steamAPI ? steamAPI.cloud.fileExists(fileName) : false;
|
||||
}
|
||||
|
||||
export function deleteFile(fileName: string, results: gdjs.Variable): void {
|
||||
if (steamAPI) results.setBoolean(steamAPI.cloud.deleteFile(fileName));
|
||||
}
|
||||
|
||||
// ---
|
||||
|
||||
export function createWorkshopItem(result: gdjs.Variable): gdjs.AsyncTask {
|
||||
if (steamAPI)
|
||||
return new gdjs.PromiseTask(
|
||||
steamAPI.workshop
|
||||
.createItem()
|
||||
.then(({ itemId }) => {
|
||||
result.setString(itemId.toString());
|
||||
})
|
||||
.catch(() => {
|
||||
result.setString('failure');
|
||||
})
|
||||
);
|
||||
else {
|
||||
result.setString('failure');
|
||||
return new gdjs.ResolveTask();
|
||||
}
|
||||
}
|
||||
|
||||
enum UgcItemVisibility {
|
||||
Public = 0,
|
||||
FriendsOnly = 1,
|
||||
Private = 2,
|
||||
Unlisted = 3,
|
||||
}
|
||||
|
||||
export function updateWorkshopItem(
|
||||
itemId: string,
|
||||
title: string,
|
||||
description: string,
|
||||
changeNote: string,
|
||||
previewPath: string,
|
||||
contentPath: string,
|
||||
tags: string,
|
||||
visibility: keyof import('steamworks.js/client').workshop.UgcItemVisibility,
|
||||
result: gdjs.Variable
|
||||
): gdjs.AsyncTask {
|
||||
if (steamAPI) {
|
||||
const changes: import('steamworks.js/client').workshop.UgcUpdate = {};
|
||||
|
||||
if (title) changes.title = title;
|
||||
if (description) changes.description = description;
|
||||
if (changeNote) changes.changeNote = changeNote;
|
||||
if (previewPath) changes.previewPath = previewPath;
|
||||
if (contentPath) changes.contentPath = contentPath;
|
||||
if (tags) changes.tags = tags.split(',');
|
||||
if (visibility)
|
||||
//@ts-ignore const enum 😩
|
||||
changes.visibility = UgcItemVisibility[visibility];
|
||||
|
||||
return new gdjs.PromiseTask(
|
||||
steamAPI.workshop
|
||||
.updateItem(BigInt(itemId), changes)
|
||||
.then(() => {
|
||||
result.setBoolean(true);
|
||||
})
|
||||
.catch(() => {
|
||||
result.setBoolean(false);
|
||||
})
|
||||
);
|
||||
} else {
|
||||
result.setBoolean(false);
|
||||
return new gdjs.ResolveTask();
|
||||
}
|
||||
}
|
||||
|
||||
export function subscribeToWorkshopItem(
|
||||
itemId: string,
|
||||
result: gdjs.Variable
|
||||
): gdjs.AsyncTask {
|
||||
if (steamAPI)
|
||||
return new gdjs.PromiseTask(
|
||||
steamAPI.workshop
|
||||
.subscribe(BigInt(itemId))
|
||||
.then(() => {
|
||||
result.setBoolean(true);
|
||||
})
|
||||
.catch(() => {
|
||||
result.setBoolean(false);
|
||||
})
|
||||
);
|
||||
else {
|
||||
result.setBoolean(false);
|
||||
return new gdjs.ResolveTask();
|
||||
}
|
||||
}
|
||||
|
||||
export function unsubscribeToWorkshopItem(
|
||||
itemId: string,
|
||||
result: gdjs.Variable
|
||||
): gdjs.AsyncTask {
|
||||
if (steamAPI)
|
||||
return new gdjs.PromiseTask(
|
||||
steamAPI.workshop
|
||||
.unsubscribe(BigInt(itemId))
|
||||
.then(() => {
|
||||
result.setBoolean(true);
|
||||
})
|
||||
.catch(() => {
|
||||
result.setBoolean(false);
|
||||
})
|
||||
);
|
||||
else {
|
||||
result.setBoolean(false);
|
||||
return new gdjs.ResolveTask();
|
||||
}
|
||||
}
|
||||
|
||||
export function startWorkshopDownload(
|
||||
itemId: string,
|
||||
highPriority: boolean
|
||||
): void {
|
||||
if (steamAPI) steamAPI.workshop.download(BigInt(itemId), highPriority);
|
||||
}
|
||||
|
||||
enum WorkshopItemStates {
|
||||
None = 0,
|
||||
Subscribed = 1,
|
||||
LegacyItem = 2,
|
||||
Installed = 4,
|
||||
NeedsUpdate = 8,
|
||||
Downloading = 16,
|
||||
DownloadPending = 32,
|
||||
}
|
||||
|
||||
export function workshopItemState(
|
||||
itemId: string,
|
||||
state: keyof WorkshopItemStates
|
||||
): boolean {
|
||||
return (
|
||||
!!steamAPI &&
|
||||
(steamAPI.workshop.state(BigInt(itemId)) &
|
||||
WorkshopItemStates[state]) !==
|
||||
0
|
||||
);
|
||||
}
|
||||
|
||||
export function getWorkshopItemLocation(itemId: string): string {
|
||||
return steamAPI
|
||||
? steamAPI.workshop.installInfo(BigInt(itemId))?.folder || ''
|
||||
: '';
|
||||
}
|
||||
|
||||
export function getWorkshopItemSizeOnDisk(itemId: string): number {
|
||||
return steamAPI
|
||||
? Number(steamAPI.workshop.installInfo(BigInt(itemId))?.sizeOnDisk) || 0
|
||||
: 0;
|
||||
}
|
||||
|
||||
export function getWorkshopItemInstallTimestamp(itemId: string): number {
|
||||
return steamAPI
|
||||
? steamAPI.workshop.installInfo(BigInt(itemId))?.timestamp || 0
|
||||
: 0;
|
||||
}
|
||||
|
||||
export function getWorkshopItemDownloadProgress(itemId: string): number {
|
||||
return steamAPI
|
||||
? Number(steamAPI.workshop.downloadInfo(BigInt(itemId))?.current) || 0
|
||||
: 0;
|
||||
}
|
||||
|
||||
export function getWorkshopItemDownloadTotal(itemId: string): number {
|
||||
return steamAPI
|
||||
? Number(steamAPI.workshop.downloadInfo(BigInt(itemId))?.total) || 0
|
||||
: 0;
|
||||
}
|
||||
}
|
||||
}
|
362
Extensions/Steamworks/types.d.ts
vendored
362
Extensions/Steamworks/types.d.ts
vendored
@@ -1,362 +0,0 @@
|
||||
declare module 'steamworks.js/client' {
|
||||
export function init(appId: number): void;
|
||||
export function restartAppIfNecessary(appId: number): boolean;
|
||||
export function runCallbacks(): void;
|
||||
export interface PlayerSteamId {
|
||||
steamId64: bigint;
|
||||
steamId32: string;
|
||||
accountId: number;
|
||||
}
|
||||
export namespace achievement {
|
||||
export function activate(achievement: string): boolean;
|
||||
export function isActivated(achievement: string): boolean;
|
||||
export function clear(achievement: string): boolean;
|
||||
}
|
||||
export namespace apps {
|
||||
export function isSubscribedApp(appId: number): boolean;
|
||||
export function isAppInstalled(appId: number): boolean;
|
||||
export function isDlcInstalled(appId: number): boolean;
|
||||
export function isSubscribedFromFreeWeekend(): boolean;
|
||||
export function isVacBanned(): boolean;
|
||||
export function isCybercafe(): boolean;
|
||||
export function isLowViolence(): boolean;
|
||||
export function isSubscribed(): boolean;
|
||||
export function appBuildId(): number;
|
||||
export function appInstallDir(appId: number): string;
|
||||
export function appOwner(): PlayerSteamId;
|
||||
export function availableGameLanguages(): Array<string>;
|
||||
export function currentGameLanguage(): string;
|
||||
export function currentBetaName(): string | null;
|
||||
}
|
||||
export namespace auth {
|
||||
/** @param timeoutSeconds - The number of seconds to wait for the ticket to be validated. Default value is 10 seconds. */
|
||||
export function getSessionTicket(
|
||||
timeoutSeconds?: number | undefined | null
|
||||
): Promise<Ticket>;
|
||||
export class Ticket {
|
||||
cancel(): void;
|
||||
getBytes(): Buffer;
|
||||
}
|
||||
}
|
||||
|
||||
export const enum ChatMemberStateChange {
|
||||
/** This user has joined or is joining the lobby. */
|
||||
Entered,
|
||||
/** This user has left or is leaving the lobby. */
|
||||
Left,
|
||||
/** User disconnected without leaving the lobby first. */
|
||||
Disconnected,
|
||||
/** The user has been kicked. */
|
||||
Kicked,
|
||||
/** The user has been kicked and banned. */
|
||||
Banned,
|
||||
}
|
||||
|
||||
export interface CallbackReturns {
|
||||
[callback.SteamCallback.PersonaStateChange]: {
|
||||
steam_id: bigint;
|
||||
flags: { bits: number };
|
||||
};
|
||||
[callback.SteamCallback.SteamServersConnected]: {};
|
||||
[callback.SteamCallback.SteamServersDisconnected]: {
|
||||
reason: number;
|
||||
};
|
||||
[callback.SteamCallback.SteamServerConnectFailure]: {
|
||||
reason: number;
|
||||
still_retrying: boolean;
|
||||
};
|
||||
[callback.SteamCallback.LobbyDataUpdate]: {
|
||||
lobby: bigint;
|
||||
member: bigint;
|
||||
success: boolean;
|
||||
};
|
||||
[callback.SteamCallback.LobbyChatUpdate]: {
|
||||
lobby: bigint;
|
||||
user_changed: bigint;
|
||||
making_change: bigint;
|
||||
member_state_change: ChatMemberStateChange;
|
||||
};
|
||||
[callback.SteamCallback.P2PSessionRequest]: {
|
||||
remote: bigint;
|
||||
};
|
||||
[callback.SteamCallback.P2PSessionConnectFail]: {
|
||||
remote: bigint;
|
||||
error: number;
|
||||
};
|
||||
[callback.SteamCallback.GameLobbyJoinRequested]: {
|
||||
lobby_steam_id: bigint;
|
||||
friend_steam_id: bigint;
|
||||
};
|
||||
[callback.SteamCallback.MicroTxnAuthorizationResponse]: {
|
||||
app_id: number;
|
||||
order_id: number | bigint;
|
||||
authorized: boolean;
|
||||
};
|
||||
}
|
||||
|
||||
export namespace callback {
|
||||
export const enum SteamCallback {
|
||||
PersonaStateChange = 0,
|
||||
SteamServersConnected = 1,
|
||||
SteamServersDisconnected = 2,
|
||||
SteamServerConnectFailure = 3,
|
||||
LobbyDataUpdate = 4,
|
||||
LobbyChatUpdate = 5,
|
||||
P2PSessionRequest = 6,
|
||||
P2PSessionConnectFail = 7,
|
||||
GameLobbyJoinRequested = 8,
|
||||
MicroTxnAuthorizationResponse = 9,
|
||||
}
|
||||
export function register<C extends keyof CallbackReturns>(
|
||||
steamCallback: C,
|
||||
handler: (value: CallbackReturns[C]) => void
|
||||
): Handle;
|
||||
export class Handle {
|
||||
disconnect(): void;
|
||||
}
|
||||
}
|
||||
export namespace cloud {
|
||||
export function isEnabledForAccount(): boolean;
|
||||
export function isEnabledForApp(): boolean;
|
||||
export function readFile(name: string): string;
|
||||
export function writeFile(name: string, content: string): boolean;
|
||||
export function deleteFile(name: string): boolean;
|
||||
export function fileExists(name: string): boolean;
|
||||
}
|
||||
export namespace input {
|
||||
export interface AnalogActionVector {
|
||||
x: number;
|
||||
y: number;
|
||||
}
|
||||
export function init(): void;
|
||||
export function getControllers(): Array<Controller>;
|
||||
export function getActionSet(actionSetName: string): bigint;
|
||||
export function getDigitalAction(actionName: string): bigint;
|
||||
export function getAnalogAction(actionName: string): bigint;
|
||||
export function shutdown(): void;
|
||||
export class Controller {
|
||||
activateActionSet(actionSetHandle: bigint): void;
|
||||
isDigitalActionPressed(actionHandle: bigint): boolean;
|
||||
getAnalogActionVector(actionHandle: bigint): AnalogActionVector;
|
||||
}
|
||||
}
|
||||
export namespace localplayer {
|
||||
export function getSteamId(): PlayerSteamId;
|
||||
export function getName(): string;
|
||||
export function getLevel(): number;
|
||||
/** @returns the 2 digit ISO 3166-1-alpha-2 format country code which client is running in, e.g. "US" or "UK". */
|
||||
export function getIpCountry(): string;
|
||||
export function setRichPresence(
|
||||
key: string,
|
||||
value?: string | undefined | null
|
||||
): void;
|
||||
}
|
||||
export namespace matchmaking {
|
||||
export const enum LobbyType {
|
||||
Private = 0,
|
||||
FriendsOnly = 1,
|
||||
Public = 2,
|
||||
Invisible = 3,
|
||||
}
|
||||
export function createLobby(
|
||||
lobbyType: LobbyType,
|
||||
maxMembers: number
|
||||
): Promise<Lobby>;
|
||||
export function joinLobby(lobbyId: bigint): Promise<Lobby>;
|
||||
export function getLobbies(): Promise<Array<Lobby>>;
|
||||
export class Lobby {
|
||||
id: bigint;
|
||||
join(): Promise<Lobby>;
|
||||
leave(): void;
|
||||
openInviteDialog(): void;
|
||||
getMemberCount(): bigint;
|
||||
getMemberLimit(): bigint | null;
|
||||
getMembers(): Array<PlayerSteamId>;
|
||||
getOwner(): PlayerSteamId;
|
||||
setJoinable(joinable: boolean): boolean;
|
||||
getData(key: string): string | null;
|
||||
setData(key: string, value: string): boolean;
|
||||
deleteData(key: string): boolean;
|
||||
/** Get an object containing all the lobby data */
|
||||
getFullData(): Record<string, string>;
|
||||
/**
|
||||
* Merge current lobby data with provided data in a single batch
|
||||
* @returns true if all data was set successfully
|
||||
*/
|
||||
mergeFullData(data: Record<string, string>): boolean;
|
||||
}
|
||||
}
|
||||
export namespace networking {
|
||||
export interface P2PPacket {
|
||||
data: Buffer;
|
||||
size: number;
|
||||
steamId: PlayerSteamId;
|
||||
}
|
||||
/** The method used to send a packet */
|
||||
export const enum SendType {
|
||||
/**
|
||||
* Send the packet directly over udp.
|
||||
*
|
||||
* Can't be larger than 1200 bytes
|
||||
*/
|
||||
Unreliable = 0,
|
||||
/**
|
||||
* Like `Unreliable` but doesn't buffer packets
|
||||
* sent before the connection has started.
|
||||
*/
|
||||
UnreliableNoDelay = 1,
|
||||
/**
|
||||
* Reliable packet sending.
|
||||
*
|
||||
* Can't be larger than 1 megabyte.
|
||||
*/
|
||||
Reliable = 2,
|
||||
/**
|
||||
* Like `Reliable` but applies the nagle
|
||||
* algorithm to packets being sent
|
||||
*/
|
||||
ReliableWithBuffering = 3,
|
||||
}
|
||||
export function sendP2PPacket(
|
||||
steamId64: bigint,
|
||||
sendType: SendType,
|
||||
data: Buffer
|
||||
): boolean;
|
||||
export function isP2PPacketAvailable(): number;
|
||||
export function readP2PPacket(size: number): P2PPacket;
|
||||
export function acceptP2PSession(steamId64: bigint): void;
|
||||
}
|
||||
export namespace overlay {
|
||||
export const enum Dialog {
|
||||
Friends = 0,
|
||||
Community = 1,
|
||||
Players = 2,
|
||||
Settings = 3,
|
||||
OfficialGameGroup = 4,
|
||||
Stats = 5,
|
||||
Achievements = 6,
|
||||
}
|
||||
export const enum StoreFlag {
|
||||
None = 0,
|
||||
AddToCart = 1,
|
||||
AddToCartAndShow = 2,
|
||||
}
|
||||
export function activateDialog(dialog: Dialog): void;
|
||||
export function activateDialogToUser(
|
||||
dialog: Dialog,
|
||||
steamId64: bigint
|
||||
): void;
|
||||
export function activateInviteDialog(lobbyId: bigint): void;
|
||||
export function activateToWebPage(url: string): void;
|
||||
export function activateToStore(appId: number, flag: StoreFlag): void;
|
||||
}
|
||||
export namespace stats {
|
||||
export function getInt(name: string): number | null;
|
||||
export function setInt(name: string, value: number): boolean;
|
||||
export function store(): boolean;
|
||||
export function resetAll(achievementsToo: boolean): boolean;
|
||||
}
|
||||
export namespace utils {
|
||||
export function getAppId(): number;
|
||||
export function getServerRealTime(): number;
|
||||
export function isSteamRunningOnSteamDeck(): boolean;
|
||||
}
|
||||
export namespace workshop {
|
||||
export interface UgcResult {
|
||||
itemId: bigint;
|
||||
needsToAcceptAgreement: boolean;
|
||||
}
|
||||
export const enum UgcItemVisibility {
|
||||
Public = 0,
|
||||
FriendsOnly = 1,
|
||||
Private = 2,
|
||||
Unlisted = 3,
|
||||
}
|
||||
export interface UgcUpdate {
|
||||
title?: string;
|
||||
description?: string;
|
||||
changeNote?: string;
|
||||
previewPath?: string;
|
||||
contentPath?: string;
|
||||
tags?: Array<string>;
|
||||
visibility?: UgcItemVisibility;
|
||||
}
|
||||
export interface InstallInfo {
|
||||
folder: string;
|
||||
sizeOnDisk: bigint;
|
||||
timestamp: number;
|
||||
}
|
||||
export interface DownloadInfo {
|
||||
current: bigint;
|
||||
total: bigint;
|
||||
}
|
||||
export function createItem(
|
||||
appId?: number | undefined | null
|
||||
): Promise<UgcResult>;
|
||||
export function updateItem(
|
||||
itemId: bigint,
|
||||
updateDetails: UgcUpdate,
|
||||
appId?: number | undefined | null
|
||||
): Promise<UgcResult>;
|
||||
/**
|
||||
* Subscribe to a workshop item. It will be downloaded and installed as soon as possible.
|
||||
*
|
||||
* {@link https://partner.steamgames.com/doc/api/ISteamUGC#SubscribeItem}
|
||||
*/
|
||||
export function subscribe(itemId: bigint): Promise<void>;
|
||||
/**
|
||||
* Unsubscribe from a workshop item. This will result in the item being removed after the game quits.
|
||||
*
|
||||
* {@link https://partner.steamgames.com/doc/api/ISteamUGC#UnsubscribeItem}
|
||||
*/
|
||||
export function unsubscribe(itemId: bigint): Promise<void>;
|
||||
/**
|
||||
* Gets the current state of a workshop item on this client. States can be combined.
|
||||
*
|
||||
* @returns a number with the current item state, e.g. 9
|
||||
* 9 = 1 (The current user is subscribed to this item) + 8 (The item needs an update)
|
||||
*
|
||||
* {@link https://partner.steamgames.com/doc/api/ISteamUGC#GetItemState}
|
||||
* {@link https://partner.steamgames.com/doc/api/ISteamUGC#EItemState}
|
||||
*/
|
||||
export function state(itemId: bigint): number;
|
||||
/**
|
||||
* Gets info about currently installed content on the disc for workshop item.
|
||||
*
|
||||
* @returns an object with the the properties {folder, size_on_disk, timestamp}
|
||||
*
|
||||
* {@link https://partner.steamgames.com/doc/api/ISteamUGC#GetItemInstallInfo}
|
||||
*/
|
||||
export function installInfo(itemId: bigint): InstallInfo | null;
|
||||
/**
|
||||
* Get info about a pending download of a workshop item.
|
||||
*
|
||||
* @returns an object with the properties {current, total}
|
||||
*
|
||||
* {@link https://partner.steamgames.com/doc/api/ISteamUGC#GetItemDownloadInfo}
|
||||
*/
|
||||
export function downloadInfo(itemId: bigint): DownloadInfo | null;
|
||||
/**
|
||||
* Download or update a workshop item.
|
||||
*
|
||||
* @param highPriority - If high priority is true, start the download in high priority mode, pausing any existing in-progress Steam downloads and immediately begin downloading this workshop item.
|
||||
* @returns true or false
|
||||
*
|
||||
* {@link https://partner.steamgames.com/doc/api/ISteamUGC#DownloadItem}
|
||||
*/
|
||||
export function download(itemId: bigint, highPriority: boolean): boolean;
|
||||
}
|
||||
}
|
||||
|
||||
declare module 'steamworks.js' {
|
||||
export function init(appId?: number): Client;
|
||||
export function restartAppIfNecessary(appId: number): boolean;
|
||||
export function electronEnableSteamOverlay(
|
||||
disableEachFrameInvalidation?: boolean
|
||||
): void;
|
||||
export type Client = Omit<
|
||||
typeof import('steamworks.js/client'),
|
||||
'init' | 'runCallbacks'
|
||||
>;
|
||||
export const SteamCallback: typeof import('steamworks.js/client').callback.SteamCallback;
|
||||
}
|
@@ -1,73 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="10mm"
|
||||
height="10mm"
|
||||
viewBox="0 0 210 297"
|
||||
version="1.1"
|
||||
id="svg1042"
|
||||
sodipodi:docname="steam.svg"
|
||||
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview11"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
inkscape:zoom="32"
|
||||
inkscape:cx="13.375"
|
||||
inkscape:cy="19.671875"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1001"
|
||||
inkscape:window-x="-9"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg1042" />
|
||||
<defs
|
||||
id="defs1039">
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath443">
|
||||
<path
|
||||
d="m 42.739,391.343 h 30.117 v 28.885 H 42.739 Z"
|
||||
id="path441" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
<ellipse
|
||||
style="fill:#ffffff;stroke-width:7.68645;fill-opacity:1"
|
||||
id="path35"
|
||||
cy="148.67365"
|
||||
cx="98.748901"
|
||||
rx="142.2489"
|
||||
ry="148.32635"
|
||||
inkscape:label="arthuro was here (and added this white circle). congrats if you are finding this cool easter egg." />
|
||||
<g
|
||||
id="layer1">
|
||||
<g
|
||||
id="g437"
|
||||
transform="matrix(9.8615397,0,0,-10.282153,-194.26604,4737.3625)">
|
||||
<g
|
||||
id="g439"
|
||||
clip-path="url(#clipPath443)"
|
||||
transform="translate(-27.450714,40.508429)">
|
||||
<g
|
||||
id="g445"
|
||||
transform="translate(59.633,411.0144)">
|
||||
<path
|
||||
d="m 0,0 c -0.299,-0.449 -0.459,-0.976 -0.458,-1.516 0.001,-0.722 0.289,-1.415 0.8,-1.926 0.511,-0.51 1.204,-0.797 1.927,-0.797 0.539,0 1.066,0.16 1.515,0.46 0.448,0.299 0.798,0.725 1.004,1.224 0.206,0.498 0.26,1.047 0.155,1.576 C 4.837,-0.45 4.577,0.035 4.196,0.417 3.814,0.798 3.328,1.057 2.799,1.162 2.27,1.267 1.721,1.212 1.223,1.006 0.725,0.799 0.299,0.449 0,0 M 5.281,0.501 C 5.68,-0.096 5.892,-0.798 5.892,-1.516 5.889,-2.477 5.506,-3.398 4.826,-4.078 4.145,-4.758 3.224,-5.14 2.262,-5.142 c -0.718,0 -1.419,0.213 -2.016,0.612 -0.597,0.399 -1.062,0.966 -1.337,1.629 -0.274,0.664 -0.346,1.394 -0.206,2.098 0.14,0.704 0.486,1.35 0.994,1.858 C 0.205,1.562 0.852,1.908 1.556,2.047 2.26,2.187 2.99,2.115 3.653,1.839 4.316,1.564 4.883,1.099 5.281,0.501 m -13.124,-13.202 -1.777,0.735 c 0.258,-0.538 0.667,-0.988 1.176,-1.297 0.51,-0.309 1.098,-0.463 1.694,-0.443 0.595,0.02 1.172,0.212 1.66,0.555 0.488,0.342 0.865,0.819 1.086,1.372 0.222,0.553 0.277,1.159 0.16,1.743 -0.117,0.584 -0.402,1.122 -0.819,1.547 -0.418,0.425 -0.95,0.719 -1.532,0.847 -0.582,0.128 -1.189,0.083 -1.746,-0.128 l 1.833,-0.76 c 0.538,-0.24 0.961,-0.681 1.178,-1.228 0.218,-0.548 0.212,-1.158 -0.014,-1.702 -0.226,-0.544 -0.656,-0.977 -1.198,-1.209 -0.541,-0.231 -1.152,-0.241 -1.701,-0.029 z M 11.842,5.103 h -0.257 v 0.459 h 0.26 c 0.2,0 0.269,-0.089 0.269,-0.218 0,-0.034 -0.008,-0.068 -0.022,-0.099 C 12.077,5.214 12.057,5.186 12.031,5.164 12.005,5.141 11.975,5.124 11.943,5.113 11.91,5.103 11.876,5.099 11.842,5.103 m 0.491,0.244 c 0,0.199 -0.108,0.389 -0.478,0.389 H 11.373 V 4.352 h 0.203 V 4.9 h 0.298 l 0.278,-0.548 h 0.247 l -0.316,0.612 c 0.074,0.032 0.137,0.086 0.182,0.154 0.044,0.068 0.068,0.148 0.068,0.229 M 10.862,4.367 C 10.73,4.56 10.658,4.787 10.654,5.021 h -0.012 c -0.006,0.159 0.02,0.317 0.078,0.465 0.058,0.149 0.146,0.283 0.258,0.396 0.113,0.113 0.247,0.201 0.395,0.259 0.148,0.059 0.307,0.086 0.466,0.08 0.233,0 0.462,-0.069 0.656,-0.199 C 12.69,5.893 12.841,5.709 12.931,5.493 13.022,5.278 13.046,5.04 13.002,4.811 12.957,4.582 12.846,4.371 12.682,4.205 12.518,4.038 12.308,3.924 12.079,3.877 11.851,3.829 11.613,3.851 11.396,3.938 11.18,4.025 10.994,4.174 10.862,4.367 m 2.132,-0.121 c 0.154,0.229 0.237,0.499 0.238,0.775 0.006,0.185 -0.026,0.369 -0.094,0.541 -0.068,0.172 -0.17,0.329 -0.301,0.46 -0.13,0.131 -0.286,0.234 -0.458,0.304 -0.171,0.069 -0.355,0.102 -0.54,0.098 -0.276,0 -0.546,-0.081 -0.776,-0.234 C 10.833,6.037 10.653,5.82 10.547,5.565 10.441,5.31 10.412,5.03 10.465,4.759 c 0.053,-0.271 0.185,-0.52 0.38,-0.716 0.194,-0.196 0.443,-0.33 0.713,-0.385 0.271,-0.055 0.552,-0.028 0.807,0.077 0.255,0.104 0.474,0.282 0.629,0.511 m -25.289,1.137 c 2.667,2.462 6.162,3.829 9.791,3.831 L -2.497,9.191 C 0.19,9.192 2.824,8.443 5.108,7.028 7.393,5.614 9.238,3.59 10.435,1.184 c 1.197,-2.406 1.699,-5.098 1.45,-7.773 -0.25,-2.676 -1.24,-5.229 -2.861,-7.372 -1.621,-2.143 -3.808,-3.791 -6.315,-4.759 -2.507,-0.969 -5.234,-1.218 -7.874,-0.721 -2.641,0.497 -5.091,1.721 -7.074,3.535 -1.983,1.813 -3.421,4.144 -4.151,6.73 l 5.535,-2.29 c 0.202,-0.992 0.766,-1.874 1.581,-2.475 0.815,-0.6 1.824,-0.877 2.831,-0.777 1.008,0.101 1.942,0.572 2.622,1.321 0.681,0.75 1.059,1.726 1.061,2.739 v 0.193 l 4.908,3.502 h 0.114 c 1.078,0 2.131,0.32 3.026,0.918 0.896,0.599 1.594,1.45 2.007,2.445 0.412,0.995 0.52,2.09 0.31,3.147 C 7.394,0.604 6.876,1.574 6.114,2.336 5.352,3.098 4.382,3.616 3.325,3.827 2.268,4.037 1.173,3.929 0.178,3.517 -0.817,3.104 -1.668,2.406 -2.267,1.51 -2.865,0.615 -3.185,-0.438 -3.185,-1.516 V -1.573 L -6.627,-6.56 h -0.228 c -0.821,0 -1.623,-0.248 -2.299,-0.713 l -7.74,3.202 c 0.291,3.617 1.933,6.993 4.599,9.454"
|
||||
style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
||||
id="path447" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 5.6 KiB |
30
newIDE/electron-app/app/package-lock.json
generated
30
newIDE/electron-app/app/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "gdevelop",
|
||||
"version": "5.1.164",
|
||||
"version": "5.0.139",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "gdevelop",
|
||||
"version": "5.1.164",
|
||||
"version": "5.0.139",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@electron/remote": "^2.0.8",
|
||||
@@ -26,7 +26,6 @@
|
||||
"lodash.debounce": "^4.0.8",
|
||||
"lodash.throttle": "^4.1.1",
|
||||
"minimist": "^1.2.3",
|
||||
"steamworks.js": "^0.2.0",
|
||||
"ws": "^5.1.1"
|
||||
}
|
||||
},
|
||||
@@ -139,7 +138,8 @@
|
||||
"node_modules/@types/node": {
|
||||
"version": "16.11.47",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.47.tgz",
|
||||
"integrity": "sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g=="
|
||||
"integrity": "sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@types/semver": {
|
||||
"version": "6.2.0",
|
||||
@@ -4325,17 +4325,6 @@
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/steamworks.js": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/steamworks.js/-/steamworks.js-0.2.0.tgz",
|
||||
"integrity": "sha512-24NFONmtetpZKsdy1SOGZtox7WbmFApzykkW4g53ecB2pnf1AeBuBSB2jGMhK5lG1rgKdmwlbRp1f6P1g7Hk2Q==",
|
||||
"dependencies": {
|
||||
"@types/node": "*"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 14"
|
||||
}
|
||||
},
|
||||
"node_modules/stream-combiner": {
|
||||
"version": "0.0.4",
|
||||
"resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
|
||||
@@ -4902,7 +4891,8 @@
|
||||
"@types/node": {
|
||||
"version": "16.11.47",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.47.tgz",
|
||||
"integrity": "sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g=="
|
||||
"integrity": "sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g==",
|
||||
"peer": true
|
||||
},
|
||||
"@types/semver": {
|
||||
"version": "6.2.0",
|
||||
@@ -8250,14 +8240,6 @@
|
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz",
|
||||
"integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4="
|
||||
},
|
||||
"steamworks.js": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/steamworks.js/-/steamworks.js-0.2.0.tgz",
|
||||
"integrity": "sha512-24NFONmtetpZKsdy1SOGZtox7WbmFApzykkW4g53ecB2pnf1AeBuBSB2jGMhK5lG1rgKdmwlbRp1f6P1g7Hk2Q==",
|
||||
"requires": {
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"stream-combiner": {
|
||||
"version": "0.0.4",
|
||||
"resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz",
|
||||
|
@@ -25,7 +25,6 @@
|
||||
"lodash.debounce": "^4.0.8",
|
||||
"lodash.throttle": "^4.1.1",
|
||||
"minimist": "^1.2.3",
|
||||
"steamworks.js": "0.2.0",
|
||||
"ws": "^5.1.1"
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user