UNPKG

@squarecloud/api

Version:
1 lines 9.42 kB
{"version":3,"sources":["../../src/structures/status.ts","../../src/lib/routes.ts"],"sourcesContent":["import type {\n\tAPIApplicationStatus,\n\tAPIApplicationStatusAll,\n\tApplicationStatus as ApplicationStatusType,\n} from \"@squarecloud/api-types/v2\";\n\nimport { Routes } from \"@/lib/routes\";\nimport type { ApplicationStatusUsage } from \"@/types/application\";\nimport type { SquareCloudAPI } from \"..\";\n\n/**\n * Represents an application status fetched from status all endpoint\n */\nexport class SimpleApplicationStatus<R extends boolean = boolean> {\n\t/** The application's ID this status came from */\n\tpublic readonly applicationId: string;\n\t/** Usage statuses for this application */\n\tpublic usage: R extends true\n\t\t? Pick<ApplicationStatusUsage, \"cpu\" | \"ram\">\n\t\t: undefined;\n\t/** Whether the application is running or not */\n\tpublic running: R;\n\n\t/**\n\t * Represents an application status fetched from status all endpoint\n\t *\n\t * @constructor\n\t * @param client - The client for this status\n\t * @param data - The data from this status\n\t */\n\tconstructor(\n\t\tpublic readonly client: SquareCloudAPI,\n\t\tdata: APIApplicationStatusAll,\n\t) {\n\t\tconst { id, running } = data;\n\n\t\tthis.applicationId = id;\n\t\tthis.running = running as R;\n\n\t\tif (running) {\n\t\t\tconst { cpu, ram } = data;\n\n\t\t\tthis.usage = { cpu, ram } as R extends true\n\t\t\t\t? Pick<ApplicationStatusUsage, \"cpu\" | \"ram\">\n\t\t\t\t: undefined;\n\t\t}\n\t}\n\n\t/**\n\t * Fetches the full application status\n\t */\n\tasync fetch() {\n\t\tconst data = await this.client.api.request(\n\t\t\tRoutes.apps.status(this.applicationId),\n\t\t);\n\n\t\treturn new ApplicationStatus(\n\t\t\tthis.client,\n\t\t\tdata.response,\n\t\t\tthis.applicationId,\n\t\t);\n\t}\n}\n\n/**\n * Represents an application status\n */\nexport class ApplicationStatus {\n\t/** The application's ID this status came from */\n\tpublic readonly applicationId: string;\n\t/** Usage statuses for this application */\n\tpublic usage: ApplicationStatusUsage;\n\t/** Whether the application is running or not */\n\tpublic running: boolean;\n\t/**\n\t * The status of the application\n\t *\n\t * - 'exited' (stopped)\n\t * - 'created' (being created)\n\t * - 'running'\n\t * - 'starting'\n\t * - 'restarting'\n\t * - 'deleting'\n\t */\n\tpublic status: ApplicationStatusType;\n\t/** For how long the app is running in millisseconds */\n\tpublic uptimeTimestamp?: number;\n\t/** For how long the app is running */\n\tpublic uptime?: Date;\n\n\t/**\n\t * Represents an application status\n\t *\n\t * @constructor\n\t * @param client - The client for this status\n\t * @param data - The data from this status\n\t * @param applicationId - The application ID this status came from\n\t */\n\tconstructor(\n\t\tpublic readonly client: SquareCloudAPI,\n\t\tdata: APIApplicationStatus,\n\t\tapplicationId: string,\n\t) {\n\t\tconst { cpu, ram, network, storage, running, status, uptime } = data;\n\n\t\tthis.applicationId = applicationId;\n\t\tthis.usage = { cpu, ram, network, storage };\n\t\tthis.running = running;\n\t\tthis.status = status;\n\t\tthis.uptime = uptime ? new Date(uptime) : undefined;\n\t\tthis.uptimeTimestamp = uptime ?? undefined;\n\t}\n}\n","import type { APIEndpoint } from \"@/types\";\n\nexport type Route<T extends APIEndpoint> = string & { __route: T };\nexport const Route = <T extends APIEndpoint>(route: string) =>\n\troute as Route<T>;\n\ninterface IRoutes {\n\t[k: string]: ((...args: string[]) => Route<APIEndpoint>) | IRoutes;\n}\n\nexport const Routes = {\n\tuser: () => {\n\t\treturn Route<\"user\">(\"users/me\");\n\t},\n\tservice: {\n\t\tstatus: () => {\n\t\t\treturn Route<\"service/status\">(\"service/status\");\n\t\t},\n\t},\n\tapps: {\n\t\tupload: () => {\n\t\t\treturn Route<\"apps/upload\">(\"apps\");\n\t\t},\n\t\tstatusAll: () => {\n\t\t\treturn Route<\"apps/status-all\">(\"apps/status\");\n\t\t},\n\t\tinfo: (appId: string) => {\n\t\t\treturn Route<\"apps/info\">(`apps/${appId}`);\n\t\t},\n\t\tstatus: (appId: string) => {\n\t\t\treturn Route<\"apps/status\">(`apps/${appId}/status`);\n\t\t},\n\t\tlogs: (appId: string) => {\n\t\t\treturn Route<\"apps/logs\">(`apps/${appId}/logs`);\n\t\t},\n\t\tdelete: (appId: string) => {\n\t\t\treturn Route<\"apps/delete\">(`apps/${appId}`);\n\t\t},\n\t\tcommit: (appId: string) => {\n\t\t\treturn Route<\"apps/commit\">(`apps/${appId}/commit`);\n\t\t},\n\t\tsnapshots: (appId: string) => {\n\t\t\treturn Route<\"apps/snapshots\">(`apps/${appId}/snapshots`);\n\t\t},\n\t\tgenerateSnapshot: (appId: string) => {\n\t\t\treturn Route<\"apps/generate-snapshot\">(`apps/${appId}/snapshots`);\n\t\t},\n\t\tstart: (appId: string) => {\n\t\t\treturn Route<\"apps/start\">(`apps/${appId}/start`);\n\t\t},\n\t\trestart: (appId: string) => {\n\t\t\treturn Route<\"apps/restart\">(`apps/${appId}/restart`);\n\t\t},\n\t\tstop: (appId: string) => {\n\t\t\treturn Route<\"apps/stop\">(`apps/${appId}/stop`);\n\t\t},\n\t\tfiles: {\n\t\t\tread: (appId: string) => {\n\t\t\t\treturn Route<\"apps/files/read\">(`apps/${appId}/files/content`);\n\t\t\t},\n\t\t\tlist: (appId: string) => {\n\t\t\t\treturn Route<\"apps/files/list\">(`apps/${appId}/files`);\n\t\t\t},\n\t\t\tupsert: (appId: string) => {\n\t\t\t\treturn Route<\"apps/files/upsert\">(`apps/${appId}/files`);\n\t\t\t},\n\t\t\tmove: (appId: string) => {\n\t\t\t\treturn Route<\"apps/files/move\">(`apps/${appId}/files`);\n\t\t\t},\n\t\t\tdelete: (appId: string) => {\n\t\t\t\treturn Route<\"apps/files/delete\">(`apps/${appId}/files`);\n\t\t\t},\n\t\t},\n\t\tdeployments: {\n\t\t\tlist: (appId: string) => {\n\t\t\t\treturn Route<\"apps/deployments/list\">(`apps/${appId}/deployments`);\n\t\t\t},\n\t\t\tcurrent: (appId: string) => {\n\t\t\t\treturn Route<\"apps/deployments/current\">(\n\t\t\t\t\t`apps/${appId}/deployments/current`,\n\t\t\t\t);\n\t\t\t},\n\t\t\twebhook: (appId: string) => {\n\t\t\t\treturn Route<\"apps/deployments/webhook\">(\n\t\t\t\t\t`apps/${appId}/deploy/webhook`,\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tnetwork: {\n\t\t\tdns: (appId: string) => {\n\t\t\t\treturn Route<\"apps/network/dns\">(`apps/${appId}/network/dns`);\n\t\t\t},\n\t\t\tcustom: (appId: string) => {\n\t\t\t\treturn Route<\"apps/network/custom\">(`apps/${appId}/network/custom`);\n\t\t\t},\n\t\t\tanalytics: (appId: string) => {\n\t\t\t\treturn Route<\"apps/network/analytics\">(\n\t\t\t\t\t`apps/${appId}/network/analytics`,\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t},\n} satisfies IRoutes;\n"],"mappings":"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","names":[]}