UNPKG

@squarecloud/api

Version:
1 lines 10 kB
{"version":3,"sources":["../../src/modules/network.ts","../../src/lib/routes.ts","../../src/structures/error.ts","../../src/assertions/common.ts","../../src/assertions/literal.ts"],"sourcesContent":["import { assertString } from \"@/assertions/literal\";\nimport { Routes } from \"@/lib/routes\";\nimport type { WebsiteApplication } from \"@/structures\";\n\nexport class NetworkModule {\n\tconstructor(public readonly application: WebsiteApplication) {}\n\n\t/**\n\t * Integrates your website with a custom domain\n\t * - Requires [Senior plan](https://squarecloud.app/plans) or higher\n\t *\n\t * @param custom - The custom domain you want to use (e.g. yoursite.com)\n\t */\n\tasync setCustomDomain(custom: string) {\n\t\tassertString(custom, \"CUSTOM_DOMAIN\");\n\t\tconst data = await this.application.client.api.request(\n\t\t\tRoutes.apps.network.custom(this.application.id),\n\t\t\t{ method: \"POST\", body: { custom } },\n\t\t);\n\n\t\treturn data.status === \"success\";\n\t}\n\n\t/**\n\t * Gets analytics for a custom domain\n\t * - Requires [Senior plan](https://squarecloud.app/plans) or higher\n\t * - Requires the application to have an integrated custom domain\n\t */\n\tasync analytics() {\n\t\tconst data = await this.application.client.api.request(\n\t\t\tRoutes.apps.network.analytics(this.application.id),\n\t\t);\n\n\t\treturn data?.response;\n\t}\n\n\t/**\n\t * Get the DNS records for your custom domain.\n\t */\n\tasync dns() {\n\t\tconst data = await this.application.client.api.request(\n\t\t\tRoutes.apps.network.dns(this.application.id),\n\t\t);\n\n\t\treturn data?.response;\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","export class SquareCloudAPIError extends TypeError {\n\tconstructor(\n\t\tcode: string,\n\t\tmessage?: string,\n\t\toptions?: { stack?: string; cause?: unknown },\n\t) {\n\t\tsuper(code);\n\n\t\tthis.name = \"SquareCloudAPIError\";\n\n\t\tthis.message =\n\t\t\t(code\n\t\t\t\t?.replaceAll(\"_\", \" \")\n\t\t\t\t.toLowerCase()\n\t\t\t\t.replace(/(^|\\s)\\S/g, (L) => L.toUpperCase()) || \"UNKNOWN_CODE\") +\n\t\t\t(message ? `: ${message}` : \"\");\n\n\t\tif (options?.stack) {\n\t\t\tthis.stack = options.stack;\n\t\t}\n\n\t\tif (options?.cause) {\n\t\t\tthis.cause = options.cause;\n\t\t}\n\t}\n}\n","import { SquareCloudAPIError } from \"../structures\";\n\nexport interface AssertionProps {\n\tvalidate: (value: unknown) => boolean;\n\texpect: string;\n\tvalue: unknown;\n\tname?: string;\n}\n\nexport function assert({ validate, value, expect, name }: AssertionProps) {\n\tif (!validate(value)) {\n\t\tconst code = name ? `INVALID_${name}` : \"VALIDATION_ERROR\";\n\t\tconst message = `Expected ${expect}, got ${typeof value}`;\n\n\t\tthrow new SquareCloudAPIError(code, message);\n\t}\n}\n\nexport function makeAssertion(\n\texpect: string,\n\tvalidate: (value: unknown) => boolean,\n) {\n\treturn (value: unknown, name?: string) => {\n\t\tassert({ validate, value, expect, name });\n\t};\n}\n","import { makeAssertion } from \"./common\";\n\nexport const assertString = makeAssertion(\n\t\"string\",\n\t(value) => typeof value === \"string\",\n);\n\nexport const assertBoolean = makeAssertion(\n\t\"boolean\",\n\t(value) => typeof value === \"boolean\",\n);\n\nexport const assertPathLike = makeAssertion(\n\t\"string or Buffer\",\n\t(value) => typeof value === \"string\" || value instanceof Buffer,\n);\n"],"mappings":"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","names":[]}