@pelican.ts/sdk 0.2.1 → 0.2.3

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/api/client/account.ts","../src/api/client/client.ts","../src/api/client/server_databases.ts","../src/api/client/server_files.ts","../src/api/client/server_schedules.ts","../src/api/client/server_allocations.ts","../src/api/client/server_users.ts","../src/api/client/server_backups.ts","../src/api/client/server_startup.ts","../src/api/client/server_settings.ts","../src/api/client/server_websocket.ts","../src/api/client/server_activity.ts","../src/api/client/server.ts","../src/api/application/users.ts","../src/utils/transform.ts","../src/api/application/client.ts","../src/api/base/request.ts","../src/api/base/types.ts"],"sourcesContent":["import {Client as UserClient} from \"@/api/client/client\";\nimport {Client as AppClient} from \"@/api/application/client\";\nimport {Agent} from \"@/api/base/request\";\n\nexport class PelicanClient extends UserClient{\n constructor(url: string, token: string) {\n const ax = new Agent(url, token, \"client\")\n super(ax.requester)\n }\n}\n\nexport class PelicanApplication extends AppClient{\n constructor(url: string, token: string) {\n const ax = new Agent(url, token, \"application\")\n super(ax.requester)\n }\n}","import {AxiosInstance} from \"axios\";\nimport {APIKey, SSHKey, User} from \"@/api/client/types/user\";\nimport {GenericListResponse, GenericResponse} from \"@/api/base/types\";\nimport z from \"zod\";\n\n\nexport class Account {\n private readonly r: AxiosInstance\n\n constructor(requester: AxiosInstance) {\n this.r = requester\n }\n\n info = async (): Promise<User> => {\n const {data} = await this.r.get<GenericResponse<User, \"user\">>(\"/account\")\n return data.attributes\n }\n\n updateEmail = async (newEmail: string, password: string): Promise<void> => {\n newEmail = z.email().parse(newEmail)\n await this.r.put(\"/account/email\", {email: newEmail, password})\n }\n\n updatePassword = async (newPassword: string): Promise<void> => {\n newPassword = z.string().min(8).parse(newPassword)\n await this.r.put(\"/account/password\", {\n password: newPassword,\n password_confirmation: newPassword\n })\n }\n\n apiKeys = {\n list: async (): Promise<APIKey[]> => {\n const {data} = await this.r.get<\n GenericListResponse<GenericResponse<APIKey, \"api_key\">>\n >(\"/account/api-keys\")\n return data.data.map(k => k.attributes)\n },\n\n create: async (description: string, allowed_ips?: string[]): Promise<APIKey & { secret_token: string }> => {\n allowed_ips = z.array(z.ipv4()).optional().parse(allowed_ips)\n const {data} = await this.r.post<\n GenericResponse<APIKey, \"api_key\", { secret_token: string }>\n >(\"/account/api-keys\", {description, allowed_ips})\n return {...data.attributes, secret_token: data.meta!.secret_token}\n },\n\n delete: async (identifier: string): Promise<void> => {\n await this.r.delete(`/account/api-keys/${identifier}`)\n }\n }\n\n sshKeys = {\n list: async (): Promise<SSHKey[]> => {\n const {data} = await this.r.get<\n GenericListResponse<GenericResponse<SSHKey, \"ssh_key\">>\n >(\"/account/ssh-keys\")\n return data.data.map(k => k.attributes)\n },\n\n create: async (name: string, public_key: string): Promise<SSHKey> => {\n const {data} = await this.r.post<\n GenericResponse<SSHKey, \"ssh_key\">\n >(\"/account/ssh-keys\", {name, public_key})\n return data.attributes\n },\n\n delete: async (fingerprint: string): Promise<void> => {\n await this.r.post(`/account/ssh-keys/remove`, {fingerprint})\n }\n }\n\n twoFactor = {\n info: async (): Promise<{ image_url_data: string }> => {\n const {data} = await this.r.get<\n Awaited<ReturnType<typeof this.twoFactor.info>>\n >(\"/account/two-factor\")\n return data\n },\n\n enable: async (code: string): Promise<{ tokens: string[] }> => {\n const {data} = await this.r.post<\n Awaited<ReturnType<typeof this.twoFactor.enable>>\n >(\"/account/two-factor\", {code})\n return data\n },\n\n disable: async (password: string): Promise<void> => {\n await this.r.delete(\"/account/two-factor\", {data: {password}})\n }\n }\n}","import {Account} from \"@/api/client/account\";\nimport {AxiosInstance} from \"axios\";\nimport {Permission} from \"@/api/client/types/user\";\nimport {GenericListResponse, GenericResponse} from \"@/api/base/types\";\nimport {Server} from \"@/api/client/types/server\";\nimport z from \"zod\";\nimport {ServerClient} from \"@/api/client/server\";\n\n\nexport class Client {\n account: Account\n\n private readonly r: AxiosInstance\n\n constructor(requester: AxiosInstance) {\n this.r = requester\n this.account = new Account(requester)\n }\n\n listPermissions = async (): Promise<Record<string, Permission>> => {\n const {data} = await this.r.get<\n GenericResponse<{ permissions: Record<string, Permission> }, \"system_permissions\">\n >(\"/permissions\")\n\n return data.attributes.permissions\n }\n\n listServers = async (\n type: \"accessible\" | \"mine\" | \"admin\" | \"admin-all\" = \"accessible\",\n page: number = 1,\n per_page: number = 50,\n include?: (\"egg\" | \"subusers\")[],\n ): Promise<Server[]> => {\n z.number().positive().parse(page)\n const {data} = await this.r.get<\n GenericListResponse<GenericResponse<Server, \"server\">>\n >(\"/servers\", {\n params: {type, page, include: include?.join(\",\")}\n })\n return data.data.map(s => s.attributes)\n }\n\n server = (uuid: string): ServerClient => new ServerClient(this.r, uuid)\n\n}\n\n\n/*\nInclude: ?include=param1,param2\nAvail: ?param1=val1&param2=val2\nFilters: ?filter[param1]=val1&filter[param2]=val2\nSort: ?sort=-param, param=asc, -param=desc\n*/","import {AxiosInstance} from \"axios\";\nimport z from \"zod\";\nimport {GenericListResponse, GenericResponse} from \"@/api/base/types\";\nimport {Database} from \"@/api/common/types/server_database\";\n// TODO: Check for validity\n\nexport class ServerDatabases {\n private readonly r: AxiosInstance\n private readonly id: string\n\n constructor(requester: AxiosInstance, id: string) {\n this.r = requester\n this.id = id\n }\n\n list = async (\n include?: (\"password\")[], page: number = 1\n ): Promise<Database[]> => {\n z.number().positive().parse(page)\n const {data} = await this.r.get<\n GenericListResponse<GenericResponse<Database, \"server_database\">>\n >(`/servers/${this.id}/databases`, {\n params: {include: include?.join(\",\"), page}\n })\n return data.data.map(d => d.attributes)\n }\n\n create = async (database: string, remote: string): Promise<Database> => {\n const {data} = await this.r.post<\n GenericResponse<Database, \"server_database\">\n >(`/servers/${this.id}/databases`, {database, remote})\n return data.attributes\n }\n\n rotatePassword = async (database_id: string): Promise<Database> => {\n const {data} = await this.r.post<\n GenericResponse<Database, \"server_database\">\n >(`/servers/${this.id}/databases/${database_id}/rotate-password`)\n return data.attributes\n }\n\n delete = async (database_id: string): Promise<void> => {\n await this.r.delete(`/servers/${this.id}/databases/${database_id}`)\n }\n}","import axios, {AxiosInstance} from \"axios\";\nimport {string} from \"zod\";\nimport {FileObject} from \"@/api/common/types/server_files\";\nimport {GenericListResponse, GenericResponse} from \"@/api/base/types\";\n\n\nexport class ServerFiles {\n private readonly r: AxiosInstance\n private readonly id: string\n\n constructor(requester: AxiosInstance, id: string) {\n this.r = requester\n this.id = id\n }\n\n list = async (path?: string): Promise<FileObject[]> => {\n const {data} = await this.r.get<\n GenericListResponse<GenericResponse<FileObject, \"file_object\">>\n >(`/servers/${this.id}/files/list`, {\n params: {directory: path}\n })\n return data.data.map(r => r.attributes)\n }\n\n /**\n * Return the contents of a file. To read binary file (non-editable) use {@link download} instead\n */\n contents = async (path: string): Promise<string> => {\n const {data} = await this.r.get<string>(`/servers/${this.id}/files/contents`, {\n params: {file: path}\n })\n return data\n }\n\n downloadGetUrl = async (path: string): Promise<string> => {\n const {data} = await this.r.get<\n GenericResponse<{ url: string }, \"signed_url\">\n >(`/servers/${this.id}/files/download`, {\n params: {file: path}\n })\n return data.attributes.url\n }\n\n download = async (path: string): Promise<ArrayBuffer> => {\n const url = await this.downloadGetUrl(path)\n const {data} = await axios.get<ArrayBuffer>(url, {responseType: \"arraybuffer\"})\n return data\n }\n\n rename = async (\n root: string = \"/\",\n files: { from: string, to: string }[]\n ): Promise<void> => {\n await this.r.put(`/servers/${this.id}/files/rename`, {root, files})\n }\n\n copy = async (location: string): Promise<void> => {\n await this.r.post(`/servers/${this.id}/files/copy`, {location})\n }\n\n write = async (path: string, content: string): Promise<void> => {\n await this.r.post(`/servers/${this.id}/files/write`, content, {\n params: {file: path},\n })\n }\n\n compress = async (\n root: string = \"/\",\n files: string[],\n archive_name?: string,\n extension?: \"zip\" | \"tgz\" | \"tar.gz\" | \"txz\" | \"tar.xz\" | \"tbz2\" | \"tar.bz2\"\n ): Promise<void> => {\n await this.r.post(`/servers/${this.id}/files/compress`, {root, files, archive_name, extension})\n }\n\n decompress = async (\n root: string = \"/\",\n file: string,\n ): Promise<void> => {\n await this.r.post(`/servers/${this.id}/files/decompress`, {root, file})\n }\n\n delete = async (\n root: string = \"/\",\n files: string[],\n ): Promise<void> => {\n await this.r.post(`/servers/${this.id}/files/delete`, {root, files})\n }\n\n createFolder = async (\n root: string = \"/\",\n name: string,\n ): Promise<void> => {\n await this.r.post(`/servers/${this.id}/files/create-folder`, {root, name})\n }\n\n chmod = async (\n root: string = \"/\",\n files: Array<{ file: string, mode: number }>\n ): Promise<void> => {\n await this.r.post(`/servers/${this.id}/files/chmod`, {root, files})\n }\n\n pullFromRemote = async (\n url: string,\n directory?: string,\n filename?: string, // Unused\n use_header: boolean = false, // Unused\n foreground: boolean = false // Unused\n ): Promise<void> => {\n await this.r.post(`/servers/${this.id}/files/pull`, {url, directory, filename, use_header, foreground})\n }\n\n uploadGetUrl = async (): Promise<string> => {\n const {data} = await this.r.get<\n GenericResponse<{ url: string }, \"signed_url\">\n >(`/servers/${this.id}/files/upload`)\n return data.attributes.url\n }\n\n upload = async (file: File, root: string = \"/\"): Promise<void> => {\n const url = await this.uploadGetUrl()\n await axios.post(url, {files: file}, {\n headers: {\"Content-Type\": \"multipart/form-data\"},\n params: {directory: root}\n })\n }\n}","import {AxiosInstance} from \"axios\";\nimport {Schedule, ScheduleTask} from \"@/api/common/types/server_schedule\";\nimport {GenericListResponse, GenericResponse} from \"@/api/base/types\";\nimport {PartialBy} from \"@/utils/types\";\n\nexport class ServerSchedules {\n private readonly r: AxiosInstance\n private readonly id: string\n\n constructor(requester: AxiosInstance, id: string) {\n this.r = requester\n this.id = id\n }\n\n list = async (): Promise<Schedule[]> => {\n const {data} = await this.r.get<\n GenericListResponse<GenericResponse<Schedule, \"server_schedule\">>\n >(`/servers/${this.id}/schedules`)\n return data.data.map(d => d.attributes)\n }\n\n create = async (params: ScheduleCreateParams): Promise<Schedule> => {\n const {data} = await this.r.post<\n GenericResponse<Schedule, \"server_schedule\">\n >(`/servers/${this.id}/schedules`, params)\n return data.attributes\n }\n\n control = (sched_id: number) => new ScheduleControl(this.r, this.id, sched_id)\n}\n\ntype ScheduleCreateParams = {\n name: string,\n is_active?: boolean,\n only_when_online?: boolean,\n minute: string,\n hour: string,\n day_of_week: string,\n month: string,\n day_of_month: string\n}\n\nclass ScheduleControl {\n private r: AxiosInstance\n private readonly id: string\n private readonly sched_id: number\n\n constructor(requester: AxiosInstance, id: string, sched_id: number) {\n this.r = requester\n this.id = id\n this.sched_id = sched_id\n }\n\n info = async (): Promise<Schedule> => {\n const {data} = await this.r.get<\n GenericResponse<Schedule, \"server_schedule\">\n >(`/servers/${this.id}/schedules/${this.sched_id}`)\n return data.attributes\n }\n\n update = async (params: ScheduleCreateParams): Promise<Schedule> => {\n const {data} = await this.r.post<\n GenericResponse<Schedule, \"server_schedule\">\n >(`/servers/${this.id}/schedules/${this.sched_id}`, params)\n return data.attributes\n }\n\n delete = async (): Promise<void> => {\n await this.r.delete(`/servers/${this.id}/schedules/${this.sched_id}`)\n }\n\n execute = async (): Promise<void> => {\n await this.r.post(`/servers/${this.id}/schedules/${this.sched_id}/execute`)\n }\n\n tasks = {\n create: async (\n opts: PartialBy<\n Pick<ScheduleTask, \"action\" | \"payload\" | \"time_offset\" | \"sequence_id\" | \"continue_on_failure\">,\n \"payload\" | \"sequence_id\" | \"continue_on_failure\"\n >\n ): Promise<ScheduleTask> => {\n const {data} = await this.r.post<\n GenericResponse<ScheduleTask, \"server_schedule_task\">\n >(`/servers/${this.id}/schedules/${this.sched_id}/tasks`, opts)\n return data.attributes\n },\n\n update: async <T extends \"command\" | \"power\" | \"backup\" | \"delete_files\">(\n task_id: number,\n opts: PartialBy<\n Pick<ScheduleTask, \"action\" | \"payload\" | \"time_offset\" | \"sequence_id\" | \"continue_on_failure\">,\n \"payload\" | \"sequence_id\" | \"continue_on_failure\"\n >\n ): Promise<ScheduleTask> => {\n const {data} = await this.r.post<\n GenericResponse<ScheduleTask, \"server_schedule_task\">\n >(`/servers/${this.id}/schedules/${this.sched_id}/tasks/${task_id}`, opts)\n return data.attributes\n },\n\n delete: async (task_id: number): Promise<void> => {\n await this.r.delete(`/servers/${this.id}/schedules/${this.sched_id}/tasks/${task_id}`)\n }\n }\n}","import {AxiosInstance} from \"axios\";\nimport {GenericListResponse, GenericResponse} from \"@/api/base/types\";\nimport {Allocation} from \"@/api/common/types/server_allocations\";\n\nexport class ServerAllocations {\n private readonly r: AxiosInstance\n private readonly id: string\n\n constructor(requester: AxiosInstance, id: string) {\n this.r = requester\n this.id = id\n }\n\n list = async (): Promise<Allocation[]> => {\n const {data} = await this.r.get<\n GenericListResponse<GenericResponse<Allocation, \"allocation\">>\n >(`/servers/${this.id}/network/allocations`)\n return data.data.map(r => r.attributes)\n }\n\n autoAssign = async (): Promise<Allocation> => {\n const {data} = await this.r.post<\n GenericResponse<Allocation, \"allocation\">\n >(`/servers/${this.id}/network/allocations`)\n return data.attributes\n }\n\n setNotes = async (alloc_id: number, notes: string): Promise<Allocation> => {\n const {data} = await this.r.post<\n GenericResponse<Allocation, \"allocation\">\n >(`/servers/${this.id}/network/allocations/${alloc_id}`, {notes})\n return data.attributes\n }\n\n setPrimary = async (alloc_id: number): Promise<Allocation> => {\n const {data} = await this.r.post<\n GenericResponse<Allocation, \"allocation\">\n >(`/servers/${this.id}/network/allocations/${alloc_id}/primary`)\n return data.attributes\n }\n\n unassign = async (alloc_id: number): Promise<void> => {\n await this.r.delete(`/servers/${this.id}/network/allocations/${alloc_id}`)\n }\n}","import {AxiosInstance} from \"axios\";\nimport {GenericListResponse, GenericResponse} from \"@/api/base/types\";\nimport {ServerSubuser, SubuserPermission} from \"@/api/client/types/server_subuser\";\n\nexport class ServerUsers {\n private readonly r: AxiosInstance\n private readonly id: string\n\n constructor(requester: AxiosInstance, id: string) {\n this.r = requester\n this.id = id\n }\n\n list = async (): Promise<ServerSubuser[]> => {\n const {data} = await this.r.get<\n GenericListResponse<GenericResponse<ServerSubuser, \"user\">>\n >(`/servers/${this.id}/users`)\n return data.data.map(d => d.attributes)\n }\n\n create = async (email: string, permissions: SubuserPermission[] | string[]): Promise<ServerSubuser> => {\n const {data} = await this.r.post<\n GenericResponse<ServerSubuser, \"user\">\n >(`/servers/${this.id}/users`, {email, permissions})\n return data.attributes\n }\n\n info = async (user_id: number): Promise<ServerSubuser> => {\n const {data} = await this.r.get<\n GenericResponse<ServerSubuser, \"user\">\n >(`/servers/${this.id}/users/${user_id}`)\n return data.attributes\n }\n\n update = async (user_id: number, permissions: SubuserPermission[] | string[]): Promise<ServerSubuser> => {\n const {data} = await this.r.put<\n GenericResponse<ServerSubuser, \"user\">\n >(`/servers/${this.id}/users/${user_id}`, {permissions})\n return data.attributes\n }\n\n delete = async (user_id: number): Promise<void> => {\n await this.r.delete(`/servers/${this.id}/users/${user_id}`)\n }\n\n}","import axios, {AxiosInstance} from \"axios\";\nimport {Backup} from \"@/api/common/types/server_backup\";\nimport z, {string} from \"zod\";\nimport {GenericListResponse, GenericResponse} from \"@/api/base/types\";\n\n\nexport class ServerBackups {\n private readonly r: AxiosInstance\n private readonly id: string\n\n constructor(requester: AxiosInstance, id: string) {\n this.r = requester\n this.id = id\n }\n\n list = async (page: number = 1): Promise<Backup[]> => {\n z.number().positive().parse(page)\n const {data} = await this.r.get<\n GenericListResponse<GenericResponse<Backup, \"backup\">>\n >(`/servers/${this.id}/backups`, {\n params: {page}\n })\n\n return data.data.map(d=>d.attributes)\n }\n\n create = async (args: {\n name?: string,\n is_locked: boolean,\n ignored_files: string[],\n }): Promise<Backup> => {\n args.name = z.string().max(255).optional().parse(args.name)\n const {data} = await this.r.post<\n GenericResponse<Backup, \"backup\">\n >(`/servers/${this.id}/backups`, {\n name: args.name,\n is_locked: args.is_locked,\n ignored_files: args.ignored_files.join(\"\\n\")\n })\n return data.attributes\n }\n\n info = async (backup_uuid: string): Promise<Backup> => {\n const {data} = await this.r.get<\n GenericResponse<Backup, \"backup\">\n >(`/servers/${this.id}/backups/${backup_uuid}`)\n return data.attributes\n }\n\n downloadGetUrl = async (backup_uuid: string): Promise<string> => {\n const {data} = await this.r.get<\n GenericResponse<{ url: string }, \"signed_url\">\n >(`/servers/${this.id}/backups/${backup_uuid}/download`)\n return data.attributes.url\n }\n\n download = async (backup_uuid: string): Promise<ArrayBuffer> => {\n const url = await this.downloadGetUrl(backup_uuid)\n const {data} = await axios.get<ArrayBuffer>(url, {responseType: \"arraybuffer\"})\n return data\n }\n\n delete = async (backup_uuid: string): Promise<void> => {\n await this.r.delete(`/servers/${this.id}/backups/${backup_uuid}`)\n }\n\n}","import {AxiosInstance} from \"axios\";\nimport {CustomListResponse, GenericListResponse, GenericResponse} from \"@/api/base/types\";\nimport {StartupMeta, StartupParams} from \"@/api/common/types/server_startup\";\n\n\nexport class ServerStartup {\n private readonly r: AxiosInstance\n private readonly id: string\n\n constructor(requester: AxiosInstance, id: string) {\n this.r = requester\n this.id = id\n }\n\n list = async (): Promise<CustomListResponse<StartupParams, StartupMeta>> => {\n const {data} = await this.r.get<\n CustomListResponse<GenericResponse<StartupParams, \"egg_variable\">, StartupMeta>\n >(`/servers/${this.id}/startup`)\n\n return {\n object: \"list\",\n meta: data.meta,\n data: data.data.map(d=>d.attributes)\n }\n }\n\n set = async (key: string, value: string): Promise<StartupParams> => {\n const {data} = await this.r.put<\n GenericResponse<StartupParams, \"egg_variable\">\n >(`/servers/${this.id}/startup/variable`, {key, value})\n return data.attributes\n }\n}","import {AxiosInstance} from \"axios\";\nimport z from \"zod\";\nimport {Nullable} from \"@/utils/types\";\n\n\nexport class ServerSettings {\n private readonly r: AxiosInstance\n private readonly id: string\n\n constructor(requester: AxiosInstance, id: string) {\n this.r = requester\n this.id = id\n }\n\n rename = async (name: string): Promise<void> => {\n name = z.string().max(255).parse(name)\n await this.r.post(`/servers/${this.id}/settings/rename`, {name})\n }\n\n updateDescription = async (description: Nullable<string>): Promise<void> => {\n await this.r.post(`/servers/${this.id}/settings/description`, {description})\n }\n\n reinstall = async (): Promise<void> => {\n await this.r.post(`/servers/${this.id}/settings/reinstall`)\n }\n\n changeDockerImage = async (image: string): Promise<void> => {\n await this.r.post(`/servers/${this.id}/settings/docker-image`, {image})\n }\n}","import {AxiosInstance} from \"axios\"\nimport {EventEmitter} from \"events\"\nimport WebSocket from \"isomorphic-ws\"\nimport stripColor from \"strip-color\"\nimport {\n BackupCompletedJson,\n PowerState,\n SOCKET_EVENT,\n StatsWsJson,\n WebsocketEvent\n} from \"@/api/client/types/websocket\";\nimport {ServerSignalOption} from \"@/api/common/types/server_power\";\n\nconst isBrowser = typeof window !== \"undefined\"\n\n\ntype WebsocketHandshakePayload = {\n data: {\n token: string\n socket: string\n }\n}\n\ntype SocketEventPayloadMap = {\n [SOCKET_EVENT.AUTH_SUCCESS]: undefined\n [SOCKET_EVENT.STATUS]: PowerState\n [SOCKET_EVENT.CONSOLE_OUTPUT]: string\n [SOCKET_EVENT.STATS]: StatsWsJson\n [SOCKET_EVENT.DAEMON_ERROR]: undefined\n [SOCKET_EVENT.DAEMON_MESSAGE]: string\n [SOCKET_EVENT.INSTALL_OUTPUT]: string\n [SOCKET_EVENT.INSTALL_STARTED]: undefined\n [SOCKET_EVENT.INSTALL_COMPLETED]: undefined\n [SOCKET_EVENT.TRANSFER_LOGS]: string\n [SOCKET_EVENT.TRANSFER_STATUS]: string\n [SOCKET_EVENT.BACKUP_COMPLETED]: BackupCompletedJson\n [SOCKET_EVENT.BACKUP_RESTORE_COMPLETED]: undefined\n [SOCKET_EVENT.TOKEN_EXPIRING]: undefined\n [SOCKET_EVENT.TOKEN_EXPIRED]: undefined\n [SOCKET_EVENT.JWT_ERROR]: string\n}\n\ntype Listener<E extends SOCKET_EVENT> = SocketEventPayloadMap[E] extends undefined\n ? () => void\n : (payload: SocketEventPayloadMap[E]) => void\n\ntype MessageEventLike = {data?: unknown}\n\ntype CloseEventLike = Parameters<NonNullable<WebSocket[\"onclose\"]>>[0]\n\ntype ErrorEventLike = Parameters<NonNullable<WebSocket[\"onerror\"]>>[0]\n\nconst RECONNECT_ERRORS = new Set([\n \"jwt: exp claim is invalid\",\n \"jwt: created too far in past (denylist)\",\n])\n\nconst FALLBACK_LOG_MESSAGE = \"No logs - is the server online?\"\n\nexport class ServerWebsocket {\n private readonly r: AxiosInstance\n private readonly serverId: string\n private socket?: WebSocket\n private currentToken?: string\n private readonly bus = new EventEmitter()\n private debugLogging = false\n private stripColors: boolean\n private detachMessageListener?: () => void\n\n constructor(requester: AxiosInstance, id: string, stripColors: boolean = false) {\n this.r = requester\n this.serverId = id\n this.stripColors = stripColors\n }\n\n public on<E extends SOCKET_EVENT>(event: E, listener: Listener<E>): () => void {\n const handler = listener as (...args: unknown[]) => void\n this.bus.on(event, handler)\n return () => {\n this.bus.removeListener(event, handler)\n }\n }\n\n public deregister<E extends SOCKET_EVENT>(event: E, listener: Listener<E>): void {\n const handler = listener as (...args: unknown[]) => void\n this.bus.removeListener(event, handler)\n }\n\n private emit<E extends SOCKET_EVENT>(event: E, ...args: SocketEventPayloadMap[E] extends undefined ? [] : [SocketEventPayloadMap[E]]): void {\n if (args.length === 0) {\n this.bus.emit(event)\n } else {\n this.bus.emit(event, args[0])\n }\n }\n\n public async connect(resumable?: boolean, debugLogging?: boolean): Promise<void> {\n this.debugLogging = debugLogging ?? false\n\n if (this.socket) {\n return\n }\n\n const socketUrl = await this.refreshCredentials()\n\n this.socket = isBrowser\n ? new WebSocket(socketUrl)\n : new WebSocket(socketUrl, undefined, {origin: new URL(socketUrl).origin})\n\n await new Promise<void>((resolve, reject) => {\n const socket = this.socket\n if (!socket) {\n reject(new Error(\"Failed to create socket connection\"))\n return\n }\n\n socket.onopen = async () => {\n try {\n await this.authenticate()\n this.attachMessageListener()\n socket.onopen = null\n socket.onerror = null\n resolve()\n } catch (error) {\n socket.onopen = null\n socket.onerror = null\n reject(error instanceof Error ? error : new Error(\"Websocket authentication failed\"))\n }\n }\n\n socket.onerror = (event: ErrorEventLike) => {\n socket.onopen = null\n socket.onerror = null\n reject(event instanceof Error ? event : new Error(\"Websocket connection error\"))\n }\n })\n\n if (resumable) {\n this.makeResumable(true)\n }\n }\n\n public onSocketDisconnect(handler: (event: CloseEventLike) => void): void {\n if (!this.socket) {\n console.error(new Error(\"No socket connection\"))\n return\n }\n\n this.socket.onclose = handler\n }\n\n public onSocketError(handler: (event: ErrorEventLike) => void): void {\n if (!this.socket) {\n console.error(new Error(\"No socket connection\"))\n return\n }\n\n this.socket.onerror = handler\n }\n\n public makeResumable(disconnectsToo: boolean): void {\n const scheduleReconnect = () => {\n setTimeout(() => {\n const previous = this.socket\n this.detachMessageListener?.()\n this.detachMessageListener = undefined\n this.socket = undefined\n previous?.close()\n void this.connect(true, this.debugLogging)\n }, 1000)\n }\n\n this.onSocketError(() => scheduleReconnect())\n\n if (disconnectsToo) {\n this.onSocketDisconnect(() => scheduleReconnect())\n }\n }\n\n private attachMessageListener(): void {\n if (!this.socket) {\n throw new Error(\"No socket connection\")\n }\n\n this.detachMessageListener?.()\n\n const handler = (event: unknown) => {\n void this.handleIncomingMessage(event)\n }\n\n if (typeof this.socket.addEventListener === \"function\") {\n this.socket.addEventListener(\"message\", handler as (event: MessageEventLike) => void)\n this.detachMessageListener = () => {\n this.socket?.removeEventListener?.(\"message\", handler as (event: MessageEventLike) => void)\n }\n } else {\n const fallback = (data: unknown) => handler({data} satisfies MessageEventLike)\n const socket = this.socket as unknown as {\n on?: (event: string, listener: (data: unknown) => void) => void\n off?: (event: string, listener: (data: unknown) => void) => void\n removeListener?: (event: string, listener: (data: unknown) => void) => void\n }\n\n socket.on?.(\"message\", fallback)\n this.detachMessageListener = () => {\n const target = this.socket as unknown as typeof socket | undefined\n if (!target) {\n return\n }\n\n if (typeof target.off === \"function\") {\n target.off(\"message\", fallback)\n } else if (typeof target.removeListener === \"function\") {\n target.removeListener(\"message\", fallback)\n }\n }\n }\n }\n\n private async handleIncomingMessage(event: unknown): Promise<void> {\n const message = this.parseMessage(event)\n if (!message) {\n return\n }\n\n try {\n await this.dispatchMessage(message)\n } catch (error) {\n if (this.debugLogging) {\n console.error(\"Error while handling websocket message\", error)\n }\n }\n }\n\n private parseMessage(event: unknown): WebsocketEvent | null {\n const payload = this.normalisePayload(event)\n if (!payload) {\n return null\n }\n\n try {\n return JSON.parse(payload) as WebsocketEvent\n } catch (error) {\n if (this.debugLogging) {\n console.warn(\"Failed to parse websocket payload\", error)\n }\n return null\n }\n }\n\n private normalisePayload(event: unknown): string | null {\n if (typeof event === \"string\") {\n return event\n }\n\n if (typeof event === \"object\" && event !== null && \"data\" in event) {\n return this.normalisePayload((event as MessageEventLike).data)\n }\n\n if (typeof Buffer !== \"undefined\" && Buffer.isBuffer(event)) {\n return event.toString(\"utf8\")\n }\n\n if (typeof ArrayBuffer !== \"undefined\" && event instanceof ArrayBuffer) {\n if (typeof TextDecoder !== \"undefined\") {\n return new TextDecoder().decode(new Uint8Array(event))\n }\n\n if (typeof Buffer !== \"undefined\") {\n return Buffer.from(event).toString(\"utf8\")\n }\n }\n\n return null\n }\n\n private async dispatchMessage(message: WebsocketEvent): Promise<void> {\n switch (message.event) {\n case SOCKET_EVENT.AUTH_SUCCESS: {\n if (this.debugLogging) {\n console.debug(\"Auth success\")\n }\n this.emit(SOCKET_EVENT.AUTH_SUCCESS)\n break\n }\n case SOCKET_EVENT.STATUS: {\n if (this.debugLogging) {\n console.debug(\"Received status event\", message.args[0])\n }\n this.emit(SOCKET_EVENT.STATUS, message.args[0])\n break\n }\n case SOCKET_EVENT.CONSOLE_OUTPUT: {\n let output = message.args[0]\n if (this.stripColors) {\n output = stripColor(output)\n }\n if (this.debugLogging) {\n console.debug(\"Received console output\", output)\n }\n this.emit(SOCKET_EVENT.CONSOLE_OUTPUT, output)\n break\n }\n case SOCKET_EVENT.STATS: {\n try {\n const payload = JSON.parse(message.args[0]) as StatsWsJson\n this.emit(SOCKET_EVENT.STATS, payload)\n } catch (error) {\n if (this.debugLogging) {\n console.warn(\"Failed to parse stats payload\", error)\n }\n }\n break\n }\n case SOCKET_EVENT.DAEMON_ERROR: {\n this.emit(SOCKET_EVENT.DAEMON_ERROR)\n break\n }\n case SOCKET_EVENT.BACKUP_COMPLETED: {\n try {\n const payload = JSON.parse(message.args[0]) as BackupCompletedJson\n this.emit(SOCKET_EVENT.BACKUP_COMPLETED, payload)\n } catch (error) {\n if (this.debugLogging) {\n console.warn(\"Failed to parse backup payload\", error)\n }\n }\n break\n }\n case SOCKET_EVENT.DAEMON_MESSAGE: {\n let output = message.args[0]\n if (this.stripColors) {\n output = stripColor(output)\n }\n this.emit(SOCKET_EVENT.DAEMON_MESSAGE, output)\n break\n }\n case SOCKET_EVENT.INSTALL_OUTPUT: {\n let output = message.args[0]\n if (this.stripColors) {\n output = stripColor(output)\n }\n this.emit(SOCKET_EVENT.INSTALL_OUTPUT, output)\n break\n }\n case SOCKET_EVENT.BACKUP_RESTORE_COMPLETED: {\n this.emit(SOCKET_EVENT.BACKUP_RESTORE_COMPLETED)\n break\n }\n case SOCKET_EVENT.INSTALL_COMPLETED: {\n this.emit(SOCKET_EVENT.INSTALL_COMPLETED)\n break\n }\n case SOCKET_EVENT.INSTALL_STARTED: {\n this.emit(SOCKET_EVENT.INSTALL_STARTED)\n break\n }\n case SOCKET_EVENT.TRANSFER_LOGS: {\n this.emit(SOCKET_EVENT.TRANSFER_LOGS, message.args[0])\n break\n }\n case SOCKET_EVENT.TRANSFER_STATUS: {\n this.emit(SOCKET_EVENT.TRANSFER_STATUS, message.args[0])\n break\n }\n case SOCKET_EVENT.TOKEN_EXPIRING: {\n this.emit(SOCKET_EVENT.TOKEN_EXPIRING)\n if (this.debugLogging) {\n console.warn(\"Token expiring, renewing...\")\n }\n await this.refreshCredentials()\n await this.authenticate()\n break\n }\n case SOCKET_EVENT.TOKEN_EXPIRED: {\n this.emit(SOCKET_EVENT.TOKEN_EXPIRED)\n throw new Error(\"Token expired\")\n }\n case SOCKET_EVENT.JWT_ERROR: {\n const reason = message.args[0]\n if (RECONNECT_ERRORS.has(reason)) {\n this.emit(SOCKET_EVENT.TOKEN_EXPIRING)\n if (this.debugLogging) {\n console.warn(\"Token expiring (JWT error), renewing...\")\n }\n await this.refreshCredentials()\n await this.authenticate()\n } else {\n this.emit(SOCKET_EVENT.JWT_ERROR, reason)\n throw new Error(\"Token expired\")\n }\n break\n }\n default: {\n if (this.debugLogging) {\n console.warn(\"Unknown websocket event\", message)\n }\n break\n }\n }\n }\n\n private async refreshCredentials(): Promise<string> {\n const {data} = await this.r.get<WebsocketHandshakePayload>(`/servers/${this.serverId}/websocket`)\n this.currentToken = data.data.token\n return data.data.socket\n }\n\n private async authenticate(): Promise<void> {\n if (!this.socket) {\n throw new Error(\"No socket connection\")\n }\n\n if (!this.currentToken) {\n throw new Error(\"Missing websocket token\")\n }\n\n this.socket.send(JSON.stringify({event: \"auth\", args: [this.currentToken]}))\n }\n\n public disconnect(): void {\n this.detachMessageListener?.()\n this.detachMessageListener = undefined\n if (this.socket) {\n this.socket.close()\n this.socket = undefined\n }\n }\n\n public requestStats(): void {\n this.send(\"send stats\", [null])\n }\n\n public requestLogs(): void {\n this.send(\"send logs\", [null])\n }\n\n private send(event: string, args: unknown[]): void {\n if (!this.socket) {\n if (this.debugLogging) {\n console.warn(`Attempted to send \"${event}\" without an active websocket connection`)\n }\n return\n }\n\n this.socket.send(JSON.stringify({event, args}))\n }\n\n public getStats(): Promise<StatsWsJson> {\n return new Promise((resolve, reject) => {\n if (!this.socket) {\n reject(new Error(\"No socket connection\"))\n return\n }\n\n let off: (() => void) | undefined\n const timeout = setTimeout(() => {\n off?.()\n reject(new Error(\"Timed out waiting for stats\"))\n }, 5000)\n\n off = this.on(SOCKET_EVENT.STATS, (payload) => {\n clearTimeout(timeout)\n off?.()\n resolve(payload)\n })\n\n this.requestStats()\n })\n }\n\n public getLogs(): Promise<string[]> {\n return new Promise((resolve, reject) => {\n if (!this.socket) {\n reject(new Error(\"No socket connection\"))\n return\n }\n\n const lines: string[] = []\n let off: (() => void) | undefined\n let initialTimeout: ReturnType<typeof setTimeout> | undefined\n let idleTimeout: ReturnType<typeof setTimeout> | undefined\n\n const finalize = (payload: string[]) => {\n off?.()\n if (initialTimeout) {\n clearTimeout(initialTimeout)\n }\n if (idleTimeout) {\n clearTimeout(idleTimeout)\n }\n resolve(payload)\n }\n\n initialTimeout = setTimeout(() => {\n finalize(lines.length > 0 ? lines : [FALLBACK_LOG_MESSAGE])\n }, 5000)\n\n off = this.on(SOCKET_EVENT.CONSOLE_OUTPUT, (line) => {\n lines.push(line)\n if (initialTimeout) {\n clearTimeout(initialTimeout)\n initialTimeout = undefined\n }\n if (idleTimeout) {\n clearTimeout(idleTimeout)\n }\n idleTimeout = setTimeout(() => {\n finalize(lines)\n }, 1000)\n })\n\n this.requestLogs()\n })\n }\n\n public sendPoweraction(action: ServerSignalOption): void {\n this.send(\"set state\", [action])\n }\n\n public sendCommand(cmd: string): void {\n this.send(\"send command\", [cmd])\n }\n}\n","import {AxiosInstance} from \"axios\";\nimport {ServerActivityLog} from \"@/api/client/types/server\";\nimport {GenericListResponse, GenericResponse} from \"@/api/base/types\";\n\nexport class ServerActivity {\n private readonly r: AxiosInstance\n private readonly id: string\n\n constructor(r: AxiosInstance, id: string) {\n this.r = r\n this.id = id\n }\n\n list = async (\n page: number = 1,\n per_page: number = 25,\n ): Promise<ServerActivityLog[]> => {\n const {data} = await this.r.get<GenericListResponse<GenericResponse<ServerActivityLog, \"activity_log\">>>(`/server/${this.id}/activity`, {\n params: {\n page,\n per_page,\n },\n })\n return data.data.map(log => log.attributes)\n }\n}","import {AxiosInstance} from \"axios\";\nimport {GenericResponse} from \"@/api/base/types\";\nimport {Server, ServerStats} from \"@/api/client/types/server\";\nimport {ServerDatabases} from \"@/api/client/server_databases\";\nimport {ServerFiles} from \"@/api/client/server_files\";\nimport {ServerSchedules} from \"@/api/client/server_schedules\";\nimport {ServerAllocations} from \"@/api/client/server_allocations\";\nimport {ServerUsers} from \"@/api/client/server_users\";\nimport {ServerBackups} from \"@/api/client/server_backups\";\nimport {ServerStartup} from \"@/api/client/server_startup\";\nimport {ServerSettings} from \"@/api/client/server_settings\";\nimport {ServerWebsocket} from \"@/api/client/server_websocket\";\nimport {ServerActivity} from \"@/api/client/server_activity\";\n\n\nexport class ServerClient {\n private readonly r: AxiosInstance\n private readonly id: string\n\n activity: ServerActivity\n databases: ServerDatabases\n files: ServerFiles\n schedules: ServerSchedules\n allocations: ServerAllocations\n users: ServerUsers\n backups: ServerBackups\n startup: ServerStartup\n variables: ServerStartup\n settings: ServerSettings\n\n constructor(requester: AxiosInstance, id: string) {\n this.r = requester\n this.id = id\n\n this.activity = new ServerActivity(requester, id)\n this.databases = new ServerDatabases(requester, id)\n this.files = new ServerFiles(requester, id)\n this.schedules = new ServerSchedules(requester, id)\n this.allocations = new ServerAllocations(requester, id)\n this.users = new ServerUsers(requester, id)\n this.backups = new ServerBackups(requester, id)\n this.startup = new ServerStartup(requester, id)\n this.variables = this.startup // preferable\n this.settings = new ServerSettings(requester, id)\n }\n\n info = async (include?: (\"egg\" | \"subusers\")[]): Promise<Server> => {\n const {data} = await this.r.get<GenericResponse<Server, \"server\">>(`/servers/${this.id}`, {\n params: {include: include?.join(\",\")}\n })\n return data.attributes\n }\n\n websocket = (stripColors: boolean = false): ServerWebsocket => {\n return new ServerWebsocket(this.r, this.id, stripColors)\n }\n\n resources = async (): Promise<ServerStats> => {\n const {data} = await this.r.get<GenericResponse<ServerStats, \"stats\">>(`/servers/${this.id}/resources`)\n return data.attributes\n }\n\n command = async (command: string): Promise<void> => {\n await this.r.post(`/servers/${this.id}/command`, {command})\n }\n\n power = async (signal: \"start\" | \"stop\" | \"restart\" | \"kill\"): Promise<void> => {\n await this.r.post(`/servers/${this.id}/power`, {signal})\n }\n}","import {AxiosInstance} from \"axios\";\nimport z from \"zod\";\nimport {GenericListResponse, GenericResponse} from \"@/api/base/types\";\nimport {User} from \"@/api/application/types/user\";\nimport {ArrayQueryParams, SortParam} from \"@/utils/transform\";\nimport {ExactlyOneKey} from \"@/utils/types\";\n\n\nexport class Users {\n private readonly r: AxiosInstance\n\n constructor(requester: AxiosInstance) {\n this.r = requester\n }\n\n list = async (\n {...opts}: ListType,\n page: number = 1\n ): Promise<User[]> => {\n z.number().positive().parse(page)\n const {data} = await this.r.get<\n GenericListResponse<GenericResponse<User, \"user\">>\n >(\"/users\", {\n params: {\n include: opts.include?.join(\",\"),\n page,\n ...ArrayQueryParams({filters: opts.filters || {}}),\n sort: opts.sort?.id\n ? SortParam(\"id\", opts.sort?.id)\n : SortParam(\"uuid\", opts.sort?.uuid!)\n }\n })\n\n return data.data.map(d => d.attributes)\n }\n\n info = async (\n id: number,\n {include}: { include?: (\"servers\")[] }\n ): Promise<User> => {\n z.number().positive().parse(id)\n const {data} = await this.r.get<\n GenericResponse<User, \"user\">\n >(`/users/${id}`, {\n params: {include: include?.join(\",\")}\n })\n return data.attributes\n }\n\n infoByExternal = async (\n external_id: string,\n {include}: { include?: (\"servers\")[] }\n ): Promise<User> => {\n const {data} = await this.r.get<\n GenericResponse<User, \"user\">\n >(`/users/external/${external_id}`)\n return data.attributes\n }\n\n create = async (user: CreateType): Promise<User> => {\n const {data} = await this.r.post<\n GenericResponse<User, \"user\">\n >(\"/users\", user)\n return data.attributes\n }\n\n update = async (id: number, user: UpdateType): Promise<User> => {\n z.number().positive().parse(id)\n const {data} = await this.r.put<\n GenericResponse<User, \"user\">\n >(`/users/${id}`, user)\n return data.attributes\n }\n\n delete = async (id: number): Promise<void> => {\n z.number().positive().parse(id)\n await this.r.delete(`/users/${id}`)\n }\n\n}\n\ntype ListType = {\n include?: (\"servers\")[],\n filters?: ListFilters,\n sort?: ListSort\n}\ntype ListFilters = {\n [key in \"email\" | \"uuid\" | \"username\" | \"external_id\"]: string;\n};\n\ntype ListSort = ExactlyOneKey<\"id\" | \"uuid\", \"asc\" | \"desc\">\n\ntype CreateType = {\n email: string,\n username: string,\n first_name: string,\n last_name: string\n}\n\ntype UpdateType = CreateType & {\n language: string\n password: string\n}","import {string} from \"zod\";\n\n\nexport const ArrayQueryParams = (p: {\n [key: string]: {\n [key: string]: string\n }\n}): {\n [key: string]: string\n} => {\n const params = new URLSearchParams()\n\n const o: ReturnType<typeof ArrayQueryParams> = {}\n\n for (const [param, value] of Object.entries(p)) {\n for (const [key, val] of Object.entries(value)) {\n o[`${param}[${key}]`] = val\n }\n }\n\n return o\n}\n\nexport const SortParam = (key: string, p: \"asc\" | \"desc\"): string => {\n return `${p===\"desc\" ? \"-\" : \"\"}${key}`\n}","import {AxiosInstance} from \"axios\";\nimport {Users} from \"@/api/application/users\";\n\nexport class Client {\n private readonly r: AxiosInstance\n users: Users\n\n constructor(requester: AxiosInstance) {\n this.r = requester\n\n this.users = new Users(requester)\n }\n}","import z from \"zod\"\nimport axios, {AxiosInstance, AxiosResponse} from \"axios\";\nimport {PterodactylError, PterodactylException} from \"@/api/base/types\";\n\nexport class Agent {\n private readonly base_url: string\n private readonly token: string\n readonly requester: AxiosInstance\n\n constructor(url: string, token: string, type: \"client\" | \"application\") {\n this.base_url = z.url(\"Invalid URL Schema\").parse(url)\n this.token = z.string().regex(/^(ptl[ac]|pacc|papp)_.+$/, \"Invalid token type\").parse(token)\n\n this.requester = axios.create({\n baseURL: this.base_url.replace(/\\/+$/, \"\")+`/api/${type}`,\n timeout: 3000,\n headers: {\n Authorization: `Bearer ${this.token}`\n }\n })\n\n this.requester.interceptors.response.use(undefined, (error: any)=>{\n if (error.response && error.response.status === 400) {\n return Promise.reject(new PterodactylException(\n 'Invalid request data',\n error.response.data as PterodactylError[],\n error.response.status\n ));\n }\n return Promise.reject(error);\n })\n }\n}","export type GenericResponse<T, N extends string = string, M = undefined> = {\n object: N,\n attributes: T,\n meta?: M\n}\n\ntype PaginationMeta = {\n total: number,\n count: number,\n per_page: number,\n current_page: number,\n total_pages: number,\n links: any\n}\n\nexport type GenericListResponse<T> = {\n object: \"list\",\n data: T[],\n meta?: { pagination: PaginationMeta }\n}\n\nexport type CustomListResponse<T, M> = {\n object: \"list\",\n data: T[],\n meta?: M\n}\n\n\nexport class PterodactylException extends Error {\n data: PterodactylError[]\n status: number\n\n constructor(message: string, data: PterodactylError[], status: number) {\n super(message)\n this.data = data\n this.status = status\n }\n}\n\nexport type PterodactylError = {\n code: string,\n status?: number,\n detail: string,\n source?: {\n [key: string]: string\n }\n}"],"mappings":"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","names":["z","import_zod","import_zod","z","axios","import_axios","import_zod","z","axios","import_zod","z","WebSocket","stripColor","z","import_zod","z","Client","import_zod","import_axios","z","axios","Client"]}