@nvisy/sdk 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/config.ts","../src/errors.ts","../src/middleware/error.ts","../src/middleware/logging.ts","../src/services/account.ts","../src/services/activities.ts","../src/services/annotations.ts","../src/services/api-tokens.ts","../src/services/auth.ts","../src/services/comments.ts","../src/services/documents.ts","../src/services/files.ts","../src/services/integrations.ts","../src/services/invites.ts","../src/services/members.ts","../src/services/notifications.ts","../src/services/runs.ts","../src/services/status.ts","../src/services/webhooks.ts","../src/services/workspaces.ts","../src/client.ts"],"names":["formData"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @fileoverview Configuration types and constants for the Nvisy SDK.\n *\n * This module provides configuration interfaces, default values, and environment\n * variable names used throughout the SDK.\n *\n * @module config\n */\n\n/**\n * Current SDK version.\n *\n * Used in the default user agent string and for version tracking.\n */\nexport const VERSION = \"0.3.0\";\n\n/**\n * Configuration options for creating a Nvisy client.\n *\n * The `apiToken` field is required for authentication. All other fields are optional\n * and will use sensible defaults when omitted.\n *\n * @example\n * ```typescript\n * const config: ClientConfig = {\n * apiToken: \"your-api-token\",\n * baseUrl: \"https://api.nvisy.com\",\n * headers: { \"X-Custom-Header\": \"value\" },\n * };\n * const client = new Client(config);\n * ```\n */\nexport interface ClientConfig {\n\t/**\n\t * API token for authentication.\n\t *\n\t * Tokens can be obtained from the Nvisy dashboard or via the auth endpoints.\n\t */\n\tapiToken: string;\n\n\t/**\n\t * Base URL for the Nvisy API.\n\t *\n\t * @default \"https://api.nvisy.com\"\n\t */\n\tbaseUrl?: string;\n\n\t/**\n\t * Custom headers to include with every request.\n\t *\n\t * These headers are merged with the default headers (Content-Type, User-Agent,\n\t * and Authorization). Custom headers take precedence over defaults if there\n\t * are conflicts.\n\t */\n\theaders?: Record<string, string>;\n\n\t/**\n\t * Custom user agent string to identify your application.\n\t *\n\t * @default \"@nvisy/sdk v.{version}\"\n\t */\n\tuserAgent?: string;\n\n\t/**\n\t * Enable logging for requests and responses.\n\t *\n\t * When enabled, logs request method, URL, status, and timing to console.\n\t *\n\t * @default false\n\t */\n\twithLogging?: boolean;\n}\n\n/**\n * Default configuration values used when options are not explicitly provided.\n */\nexport const DEFAULTS = {\n\t/**\n\t * Default base URL for the Nvisy API.\n\t */\n\tBASE_URL: \"https://api.nvisy.com\",\n\n\t/**\n\t * Default user agent string.\n\t */\n\tUSER_AGENT: `@nvisy/sdk v.${VERSION}`,\n} as const;\n","/**\n * @fileoverview Error types for the Nvisy SDK.\n *\n * This module defines the error hierarchy used throughout the SDK:\n * - {@link NvisyError} - Base error class for all SDK errors\n * - {@link NvisyApiError} - Errors returned by the Nvisy API (4xx/5xx responses)\n *\n * @module errors\n */\n\nimport type { ErrorResponse } from \"@/datatypes/index.js\";\n\n// Re-export ErrorResponse type for convenience\nexport type { ErrorResponse } from \"@/datatypes/index.js\";\n\n/**\n * Base error class for all Nvisy SDK errors.\n *\n * This class provides common functionality for all SDK errors.\n * It ensures proper error naming and stack traces.\n *\n * @example\n * ```typescript\n * try {\n * const client = new Client({ apiToken: \"\" });\n * } catch (error) {\n * if (error instanceof NvisyError) {\n * console.log(\"SDK error:\", error.message);\n * }\n * }\n * ```\n */\nexport class NvisyError extends Error {\n\t/**\n\t * The error class name.\n\t */\n\tpublic readonly name: string;\n\n\t/**\n\t * Creates a new NvisyError.\n\t *\n\t * @param message - The error message\n\t */\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = this.constructor.name;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, this.constructor);\n\t\t}\n\t}\n}\n\n/**\n * Error thrown when the Nvisy API returns an error response.\n *\n * This error class wraps the API's {@link ErrorResponse} format and adds\n * the HTTP status code. It provides helper methods to categorize errors\n * and determine if they are retryable.\n *\n * @example\n * ```typescript\n * try {\n * await client.account.getAccount();\n * } catch (error) {\n * if (error instanceof NvisyApiError) {\n * console.log(`API Error: ${error.message}`);\n * console.log(`Status: ${error.statusCode}`);\n * if (error.isRetryable()) {\n * // Implement retry logic\n * }\n * }\n * }\n * ```\n */\nexport class NvisyApiError extends NvisyError implements ErrorResponse {\n\t/**\n\t * The error type identifier (e.g., \"ValidationError\", \"NotFoundError\").\n\t */\n\tpublic readonly name: string;\n\n\t/**\n\t * Human-readable error message safe for display to end users.\n\t */\n\tpublic readonly message: string;\n\n\t/**\n\t * The resource type that the error relates to (e.g., \"account\", \"project\").\n\t * May be null if the error is not resource-specific.\n\t */\n\tpublic readonly resource?: string | null;\n\n\t/**\n\t * A helpful suggestion for resolving the error.\n\t * May be null if no suggestion is available.\n\t */\n\tpublic readonly suggestion?: string | null;\n\n\t/**\n\t * Field-specific validation errors.\n\t * Present when the error is due to invalid input data.\n\t */\n\tpublic readonly validation?: ErrorResponse[\"validation\"];\n\n\t/**\n\t * HTTP status code of the response (e.g., 400, 404, 500).\n\t */\n\tpublic readonly statusCode: number;\n\n\t/**\n\t * Creates a new NvisyApiError from an API error response.\n\t *\n\t * @param response - The error response from the API\n\t * @param statusCode - The HTTP status code of the response\n\t */\n\tconstructor(response: ErrorResponse, statusCode: number) {\n\t\tsuper(response.message);\n\t\tthis.name = response.name;\n\t\tthis.message = response.message;\n\t\tthis.resource = response.resource;\n\t\tthis.suggestion = response.suggestion;\n\t\tthis.validation = response.validation;\n\t\tthis.statusCode = statusCode;\n\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, this.constructor);\n\t\t}\n\t}\n\n\t/**\n\t * Checks if this is a client error (4xx status code).\n\t *\n\t * Client errors indicate problems with the request itself, such as\n\t * invalid input, missing authentication, or accessing non-existent resources.\n\t *\n\t * @returns True if the status code is in the 4xx range\n\t */\n\tisClientError(): boolean {\n\t\treturn this.statusCode >= 400 && this.statusCode < 500;\n\t}\n\n\t/**\n\t * Checks if this is a server error (5xx status code).\n\t *\n\t * Server errors indicate problems on the API side. These are typically\n\t * transient and may succeed if retried.\n\t *\n\t * @returns True if the status code is in the 5xx range\n\t */\n\tisServerError(): boolean {\n\t\treturn this.statusCode >= 500;\n\t}\n\n\t/**\n\t * Determines if this error is safe to retry.\n\t *\n\t * An error is considered retryable if it's a server error (5xx),\n\t * a request timeout (408), or rate limiting (429).\n\t *\n\t * @returns True if the request may succeed on retry\n\t */\n\tisRetryable(): boolean {\n\t\treturn (\n\t\t\tthis.statusCode >= 500 || // Server errors\n\t\t\tthis.statusCode === 408 || // Request timeout\n\t\t\tthis.statusCode === 429 // Rate limited\n\t\t);\n\t}\n\n\t/**\n\t * Converts the error to a plain {@link ErrorResponse} object.\n\t *\n\t * Useful for serialization or logging.\n\t *\n\t * @returns A plain object representation of the error\n\t */\n\ttoJSON(): ErrorResponse {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: this.message,\n\t\t\tresource: this.resource,\n\t\t\tsuggestion: this.suggestion,\n\t\t\tvalidation: this.validation,\n\t\t};\n\t}\n}\n","import type { Middleware } from \"openapi-fetch\";\nimport type { ErrorResponse } from \"@/datatypes/index.js\";\nimport { NvisyApiError, NvisyError } from \"@/errors.js\";\n\n/**\n * Middleware that automatically throws NvisyApiError for error responses.\n * This replaces the need for manual checks in services.\n */\nexport const errorMiddleware: Middleware = {\n\tasync onResponse({ response }) {\n\t\tif (!response.ok) {\n\t\t\tconst error = (await response.clone().json()) as ErrorResponse;\n\t\t\tthrow new NvisyApiError(error, response.status);\n\t\t}\n\t\treturn response;\n\t},\n\n\tonError({ error }) {\n\t\t// Wrap fetch errors (network failures, CORS, etc.) in NvisyError\n\t\tif (error instanceof Error) {\n\t\t\tthrow new NvisyError(error.message);\n\t\t}\n\t\tthrow new NvisyError(\"An unknown network error occurred\");\n\t},\n};\n","import type { Middleware } from \"openapi-fetch\";\n\n/**\n * Creates a logging middleware for debugging requests and responses.\n *\n * Logs request method, URL, response status, and timing to console.\n */\nexport function createLoggingMiddleware(): Middleware {\n\treturn {\n\t\tasync onRequest({ request }) {\n\t\t\tconst start = performance.now();\n\t\t\t(request as Request & { _startTime?: number })._startTime = start;\n\t\t\treturn request;\n\t\t},\n\n\t\tasync onResponse({ request, response }) {\n\t\t\tconst start =\n\t\t\t\t(request as Request & { _startTime?: number })._startTime ??\n\t\t\t\tperformance.now();\n\t\t\tconst duration = Math.round(performance.now() - start);\n\t\t\tconst url = new URL(request.url);\n\n\t\t\tconsole.log(\n\t\t\t\t`[nvisy] ${request.method} ${url.pathname} ${response.status} (${duration}ms)`,\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst cloned = response.clone();\n\t\t\t\ttry {\n\t\t\t\t\tconst body = await cloned.json();\n\t\t\t\t\tconsole.error(\"[nvisy] Response:\", JSON.stringify(body, null, 2));\n\t\t\t\t} catch {\n\t\t\t\t\tconst text = await cloned.text();\n\t\t\t\t\tif (text) console.error(\"[nvisy] Response:\", text);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn response;\n\t\t},\n\n\t\tonError({ request, error }) {\n\t\t\tconst start =\n\t\t\t\t(request as Request & { _startTime?: number })._startTime ??\n\t\t\t\tperformance.now();\n\t\t\tconst duration = Math.round(performance.now() - start);\n\t\t\tconst url = new URL(request.url);\n\n\t\t\tconsole.error(\n\t\t\t\t`[nvisy] ${request.method} ${url.pathname} ERROR (${duration}ms):`,\n\t\t\t\terror instanceof Error ? error.message : error,\n\t\t\t);\n\t\t},\n\t};\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tAccount as AccountData,\n\tUpdateAccount,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling account operations\n */\nexport class Account {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * Get the authenticated user's account details\n\t * @returns Promise that resolves with the account details\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync getAccount(): Promise<AccountData> {\n\t\tconst { data } = await this.#api.GET(\"/account\");\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Update the authenticated user's account details\n\t * @param updates - Account update request\n\t * @returns Promise that resolves with the updated account\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync updateAccount(updates: UpdateAccount): Promise<AccountData> {\n\t\tconst { data } = await this.#api.PATCH(\"/account\", {\n\t\t\tbody: updates,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Delete the authenticated user's account\n\t * @returns Promise that resolves when the account is deleted\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync deleteAccount(): Promise<void> {\n\t\tawait this.#api.DELETE(\"/account\");\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type { ActivitiesPage, CursorPagination } from \"@/datatypes/index.js\";\n\n/**\n * Service for handling workspace activity operations\n */\nexport class Activities {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * List activities for a workspace\n\t * @param workspaceId - Workspace ID\n\t * @param query - Optional pagination parameters (limit, after)\n\t * @returns Promise that resolves with a paginated list of activities\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync listActivities(\n\t\tworkspaceId: string,\n\t\tquery?: CursorPagination,\n\t): Promise<ActivitiesPage> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspaceId}/activities/\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId }, query },\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tAnnotation,\n\tAnnotationsPage,\n\tCreateAnnotation,\n\tCursorPagination,\n\tUpdateAnnotation,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling file annotation operations\n */\nexport class Annotations {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * List annotations for a file\n\t * @param fileId - File ID\n\t * @param query - Optional pagination parameters (limit, after)\n\t * @returns Promise that resolves with a paginated list of annotations\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync listAnnotations(\n\t\tfileId: string,\n\t\tquery?: CursorPagination,\n\t): Promise<AnnotationsPage> {\n\t\tconst { data } = await this.#api.GET(\"/files/{fileId}/annotations/\", {\n\t\t\tparams: { path: { fileId }, query },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Get annotation details by ID\n\t * @param annotationId - Annotation ID\n\t * @returns Promise that resolves with the annotation details\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync getAnnotation(annotationId: string): Promise<Annotation> {\n\t\tconst { data } = await this.#api.GET(\"/annotations/{annotationId}\", {\n\t\t\tparams: { path: { annotationId } },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Create a new annotation\n\t * @param fileId - File ID\n\t * @param annotation - Annotation creation request\n\t * @returns Promise that resolves with the created annotation\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync createAnnotation(\n\t\tfileId: string,\n\t\tannotation: CreateAnnotation,\n\t): Promise<Annotation> {\n\t\tconst { data } = await this.#api.POST(\"/files/{fileId}/annotations/\", {\n\t\t\tparams: { path: { fileId } },\n\t\t\tbody: annotation,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Update an existing annotation\n\t * @param annotationId - Annotation ID\n\t * @param updates - Annotation update request\n\t * @returns Promise that resolves with the updated annotation\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync updateAnnotation(\n\t\tannotationId: string,\n\t\tupdates: UpdateAnnotation,\n\t): Promise<Annotation> {\n\t\tconst { data } = await this.#api.PATCH(\"/annotations/{annotationId}\", {\n\t\t\tparams: { path: { annotationId } },\n\t\t\tbody: updates,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Delete an annotation\n\t * @param annotationId - Annotation ID\n\t * @returns Promise that resolves when the annotation is deleted\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync deleteAnnotation(annotationId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/annotations/{annotationId}\", {\n\t\t\tparams: { path: { annotationId } },\n\t\t});\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tApiToken,\n\tApiTokensPage,\n\tApiTokenWithJWT,\n\tCreateApiToken,\n\tCursorPagination,\n\tUpdateApiToken,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling API token operations\n */\nexport class ApiTokens {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * List all API tokens for the authenticated account\n\t * @param query - Optional pagination parameters (limit, after)\n\t * @returns Promise that resolves with a paginated list of API tokens\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync listApiTokens(query?: CursorPagination): Promise<ApiTokensPage> {\n\t\tconst { data } = await this.#api.GET(\"/api-tokens/\", {\n\t\t\tparams: { query },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Get a specific API token by token ID\n\t * @param tokenId - The token identifier\n\t * @returns Promise that resolves with the API token details\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync getApiToken(tokenId: string): Promise<ApiToken> {\n\t\tconst { data } = await this.#api.GET(\"/api-tokens/{tokenId}/\", {\n\t\t\tparams: { path: { tokenId } },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Create a new API token\n\t * @param token - Token creation request\n\t * @returns Promise that resolves with the created token (includes JWT, shown only once)\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync createApiToken(token: CreateApiToken): Promise<ApiTokenWithJWT> {\n\t\tconst { data } = await this.#api.POST(\"/api-tokens/\", {\n\t\t\tbody: token,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Update an existing API token\n\t * @param tokenId - The token identifier\n\t * @param updates - Token update request\n\t * @returns Promise that resolves with the updated token\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync updateApiToken(\n\t\ttokenId: string,\n\t\tupdates: UpdateApiToken,\n\t): Promise<ApiToken> {\n\t\tconst { data } = await this.#api.PATCH(\"/api-tokens/{tokenId}/\", {\n\t\t\tparams: { path: { tokenId } },\n\t\t\tbody: updates,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Revoke an API token\n\t * @param tokenId - The token identifier\n\t * @returns Promise that resolves when the token is revoked\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync revokeApiToken(tokenId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/api-tokens/{tokenId}/\", {\n\t\t\tparams: { path: { tokenId } },\n\t\t});\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type { AuthToken, Login, Signup } from \"@/datatypes/index.js\";\n\n/**\n * Service for handling authentication operations\n */\nexport class Auth {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * Login with email and password\n\t * @param credentials - Login credentials\n\t * @returns Promise that resolves with the auth response containing access token\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync loginAccount(credentials: Login): Promise<AuthToken> {\n\t\tconst { data } = await this.#api.POST(\"/auth/login\", {\n\t\t\tbody: credentials,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Sign up a new account\n\t * @param credentials - Signup details\n\t * @returns Promise that resolves with the auth response containing access token\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync signupAccount(credentials: Signup): Promise<AuthToken> {\n\t\tconst { data } = await this.#api.POST(\"/auth/signup\", {\n\t\t\tbody: credentials,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Logout and invalidate the current access token\n\t * @returns Promise that resolves when logout is complete\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync logoutAccount(): Promise<void> {\n\t\tawait this.#api.POST(\"/auth/logout\");\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tComment,\n\tCommentsPage,\n\tCreateComment,\n\tCursorPagination,\n\tUpdateComment,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling file comment operations\n */\nexport class Comments {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * List all comments on a file\n\t * @param fileId - File ID\n\t * @param query - Optional pagination parameters (limit, after)\n\t * @returns Promise that resolves with a paginated list of comments\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync listComments(\n\t\tfileId: string,\n\t\tquery?: CursorPagination,\n\t): Promise<CommentsPage> {\n\t\tconst { data } = await this.#api.GET(\"/files/{fileId}/comments\", {\n\t\t\tparams: { path: { fileId }, query },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Create a new comment on a file\n\t * @param fileId - File ID\n\t * @param comment - Comment creation request\n\t * @returns Promise that resolves with the created comment\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync createComment(\n\t\tfileId: string,\n\t\tcomment: CreateComment,\n\t): Promise<Comment> {\n\t\tconst { data } = await this.#api.POST(\"/files/{fileId}/comments\", {\n\t\t\tparams: { path: { fileId } },\n\t\t\tbody: comment,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Update a comment\n\t * @param commentId - Comment ID\n\t * @param updates - Comment update request\n\t * @returns Promise that resolves with the updated comment\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync updateComment(\n\t\tcommentId: string,\n\t\tupdates: UpdateComment,\n\t): Promise<Comment> {\n\t\tconst { data } = await this.#api.PATCH(\"/comments/{commentId}\", {\n\t\t\tparams: { path: { commentId } },\n\t\t\tbody: updates,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Delete a comment\n\t * @param commentId - Comment ID\n\t * @returns Promise that resolves when the comment is deleted\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync deleteComment(commentId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/comments/{commentId}\", {\n\t\t\tparams: { path: { commentId } },\n\t\t});\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tCreateDocument,\n\tCursorPagination,\n\tDocument,\n\tDocumentsPage,\n\tUpdateDocument,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling document operations\n */\nexport class Documents {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * List documents in a workspace\n\t * @param workspaceId - Workspace ID\n\t * @param query - Optional pagination parameters (limit, after)\n\t * @returns Promise that resolves with a paginated list of documents\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync listDocuments(\n\t\tworkspaceId: string,\n\t\tquery?: CursorPagination,\n\t): Promise<DocumentsPage> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspaceId}/documents\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId }, query },\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Get document details by ID\n\t * @param documentId - Document ID\n\t * @returns Promise that resolves with the document details\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync getDocument(documentId: string): Promise<Document> {\n\t\tconst { data } = await this.#api.GET(\"/documents/{documentId}\", {\n\t\t\tparams: { path: { documentId } },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Create a new document\n\t * @param workspaceId - Workspace ID\n\t * @param document - Document creation request\n\t * @returns Promise that resolves with the created document\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync createDocument(\n\t\tworkspaceId: string,\n\t\tdocument: CreateDocument,\n\t): Promise<Document> {\n\t\tconst { data } = await this.#api.POST(\n\t\t\t\"/workspaces/{workspaceId}/documents\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId } },\n\t\t\t\tbody: document,\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Update an existing document\n\t * @param documentId - Document ID\n\t * @param updates - Document update request\n\t * @returns Promise that resolves with the updated document\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync updateDocument(\n\t\tdocumentId: string,\n\t\tupdates: UpdateDocument,\n\t): Promise<Document> {\n\t\tconst { data } = await this.#api.PATCH(\"/documents/{documentId}\", {\n\t\t\tparams: { path: { documentId } },\n\t\t\tbody: updates,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Delete a document\n\t * @param documentId - Document ID\n\t * @returns Promise that resolves when the document is deleted\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync deleteDocument(documentId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/documents/{documentId}\", {\n\t\t\tparams: { path: { documentId } },\n\t\t});\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tCursorPagination,\n\tDeleteFiles,\n\tDownloadFiles,\n\tFile,\n\tFilesPage,\n\tListFiles,\n\tUpdateFile,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling file operations\n */\nexport class Files {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * Upload one or more files to a workspace\n\t * @param workspaceId - Workspace ID\n\t * @param files - File or array of files to upload\n\t * @returns Promise that resolves with the uploaded file metadata\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync uploadFiles(\n\t\tworkspaceId: string,\n\t\tfiles: Blob | Blob[],\n\t): Promise<File[]> {\n\t\tconst formData = new FormData();\n\t\tconst fileArray = Array.isArray(files) ? files : [files];\n\n\t\tfor (const file of fileArray) {\n\t\t\tconst name = file instanceof File ? file.name : \"file\";\n\t\t\tformData.append(\"files\", file, name);\n\t\t}\n\n\t\tconst { data } = await this.#api.POST(\"/workspaces/{workspaceId}/files/\", {\n\t\t\tparams: { path: { workspaceId } },\n\t\t\t// Schema types multipart as unknown[], but openapi-fetch needs FormData.\n\t\t\tbody: formData as unknown as unknown[],\n\t\t\tbodySerializer: (formData) => formData,\n\t\t\t// Remove Content-Type so browser sets multipart/form-data with boundary.\n\t\t\theaders: { \"Content-Type\": null } as unknown as HeadersInit,\n\t\t});\n\n\t\treturn data!;\n\t}\n\n\t/**\n\t * List files in a workspace\n\t * @param workspaceId - Workspace ID\n\t * @param query - Optional query parameters (formats, limit, after)\n\t * @returns Promise that resolves with a paginated list of files\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync listFiles(\n\t\tworkspaceId: string,\n\t\tquery?: ListFiles & CursorPagination,\n\t): Promise<FilesPage> {\n\t\tconst { data } = await this.#api.GET(\"/workspaces/{workspaceId}/files/\", {\n\t\t\tparams: { path: { workspaceId }, query },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Get file metadata by ID\n\t * @param fileId - File ID\n\t * @returns Promise that resolves with the file metadata\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync getFile(fileId: string): Promise<File> {\n\t\tconst { data } = await this.#api.GET(\"/files/{fileId}\", {\n\t\t\tparams: { path: { fileId } },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Download a file by ID\n\t * @param fileId - File ID\n\t * @returns Promise that resolves with the file response\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync downloadFile(fileId: string): Promise<Response> {\n\t\tconst { response } = await this.#api.GET(\"/files/{fileId}/content\", {\n\t\t\tparams: { path: { fileId } },\n\t\t\tparseAs: \"stream\",\n\t\t});\n\t\treturn response;\n\t}\n\n\t/**\n\t * Update a file's metadata\n\t * @param fileId - File ID\n\t * @param updates - File update request\n\t * @returns Promise that resolves with the updated file\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync updateFile(fileId: string, updates: UpdateFile): Promise<File> {\n\t\tconst { data } = await this.#api.PATCH(\"/files/{fileId}\", {\n\t\t\tparams: { path: { fileId } },\n\t\t\tbody: updates,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Delete a file\n\t * @param fileId - File ID\n\t * @returns Promise that resolves when the file is deleted\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync deleteFile(fileId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/files/{fileId}\", {\n\t\t\tparams: { path: { fileId } },\n\t\t});\n\t}\n\n\t/**\n\t * Download files as an archive\n\t * @param workspaceId - Workspace ID\n\t * @param request - Download request with format and optional file IDs\n\t * @returns Promise that resolves with the archive response\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync downloadFiles(\n\t\tworkspaceId: string,\n\t\trequest: DownloadFiles,\n\t): Promise<Response> {\n\t\tconst { response } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspaceId}/files/batch\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId } },\n\t\t\t\tbody: request,\n\t\t\t\tparseAs: \"stream\",\n\t\t\t},\n\t\t);\n\t\treturn response;\n\t}\n\n\t/**\n\t * Delete multiple files\n\t * @param workspaceId - Workspace ID\n\t * @param request - Delete request with file IDs\n\t * @returns Promise that resolves when the files are deleted\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync deleteFiles(workspaceId: string, request: DeleteFiles): Promise<void> {\n\t\tawait this.#api.DELETE(\"/workspaces/{workspaceId}/files/batch\", {\n\t\t\tparams: { path: { workspaceId } },\n\t\t\tbody: request,\n\t\t});\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tCreateIntegration,\n\tCursorPagination,\n\tIntegration,\n\tIntegrationsPage,\n\tUpdateIntegration,\n\tUpdateIntegrationCredentials,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling integration operations\n */\nexport class Integrations {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * List integrations for a workspace\n\t * @param workspaceId - Workspace ID\n\t * @param query - Optional pagination parameters (limit, after)\n\t * @returns Promise that resolves with a paginated list of integrations\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync listIntegrations(\n\t\tworkspaceId: string,\n\t\tquery?: CursorPagination,\n\t): Promise<IntegrationsPage> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspaceId}/integrations/\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId }, query },\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Get integration details by ID\n\t * @param integrationId - Integration ID\n\t * @returns Promise that resolves with the integration details\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync getIntegration(integrationId: string): Promise<Integration> {\n\t\tconst { data } = await this.#api.GET(\"/integrations/{integrationId}/\", {\n\t\t\tparams: { path: { integrationId } },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Create a new integration\n\t * @param workspaceId - Workspace ID\n\t * @param integration - Integration creation request\n\t * @returns Promise that resolves with the created integration\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync createIntegration(\n\t\tworkspaceId: string,\n\t\tintegration: CreateIntegration,\n\t): Promise<Integration> {\n\t\tconst { data } = await this.#api.POST(\n\t\t\t\"/workspaces/{workspaceId}/integrations/\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId } },\n\t\t\t\tbody: integration,\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Update an existing integration\n\t * @param integrationId - Integration ID\n\t * @param updates - Integration update request\n\t * @returns Promise that resolves with the updated integration\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync updateIntegration(\n\t\tintegrationId: string,\n\t\tupdates: UpdateIntegration,\n\t): Promise<Integration> {\n\t\tconst { data } = await this.#api.PUT(\"/integrations/{integrationId}/\", {\n\t\t\tparams: { path: { integrationId } },\n\t\t\tbody: updates,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Update integration credentials\n\t * @param integrationId - Integration ID\n\t * @param credentials - New credentials\n\t * @returns Promise that resolves with the updated integration\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync updateIntegrationCredentials(\n\t\tintegrationId: string,\n\t\tcredentials: UpdateIntegrationCredentials,\n\t): Promise<Integration> {\n\t\tconst { data } = await this.#api.PATCH(\n\t\t\t\"/integrations/{integrationId}/credentials/\",\n\t\t\t{\n\t\t\t\tparams: { path: { integrationId } },\n\t\t\t\tbody: credentials,\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Delete an integration\n\t * @param integrationId - Integration ID\n\t * @returns Promise that resolves when the integration is deleted\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync deleteIntegration(integrationId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/integrations/{integrationId}/\", {\n\t\t\tparams: { path: { integrationId } },\n\t\t});\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tCreateInvite,\n\tCursorPagination,\n\tGenerateInviteCode,\n\tInvite,\n\tInviteCode,\n\tInvitePreview,\n\tInvitesPage,\n\tListInvites,\n\tMember,\n\tReplyInvite,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling workspace invitation operations\n */\nexport class Invites {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * List all invitations for a workspace\n\t * @param workspaceId - Workspace ID\n\t * @param query - Optional query parameters (role, sortBy, order, limit, after)\n\t * @returns Promise that resolves with a paginated list of invitations\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync listInvites(\n\t\tworkspaceId: string,\n\t\tquery?: ListInvites & CursorPagination,\n\t): Promise<InvitesPage> {\n\t\tconst { data } = await this.#api.GET(\"/workspaces/{workspaceId}/invites/\", {\n\t\t\tparams: { path: { workspaceId }, query },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Send an invitation to join a workspace\n\t * @param workspaceId - Workspace ID\n\t * @param invite - Invitation request\n\t * @returns Promise that resolves with the created invitation\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync sendInvite(workspaceId: string, invite: CreateInvite): Promise<Invite> {\n\t\tconst { data } = await this.#api.POST(\n\t\t\t\"/workspaces/{workspaceId}/invites/\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId } },\n\t\t\t\tbody: invite,\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Cancel a pending invitation\n\t * @param inviteId - Invite ID\n\t * @returns Promise that resolves when the invitation is canceled\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync cancelInvite(inviteId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/invites/{inviteId}/\", {\n\t\t\tparams: { path: { inviteId } },\n\t\t});\n\t}\n\n\t/**\n\t * Reply to an invitation (accept or decline)\n\t * @param inviteId - Invite ID\n\t * @param reply - Reply request\n\t * @returns Promise that resolves with the updated invitation\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync replyToInvite(inviteId: string, reply: ReplyInvite): Promise<Invite> {\n\t\tconst { data } = await this.#api.POST(\"/invites/{inviteId}/\", {\n\t\t\tparams: { path: { inviteId } },\n\t\t\tbody: reply,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Generate a shareable invite code for a workspace\n\t * @param workspaceId - Workspace ID\n\t * @param options - Invite code generation options\n\t * @returns Promise that resolves with the generated invite code\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync generateInviteCode(\n\t\tworkspaceId: string,\n\t\toptions: GenerateInviteCode,\n\t): Promise<InviteCode> {\n\t\tconst { data } = await this.#api.POST(\n\t\t\t\"/workspaces/{workspaceId}/invites/code/\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId } },\n\t\t\t\tbody: options,\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Reply to an invite code (accept or decline)\n\t * @param inviteCode - The invite code\n\t * @param reply - Optional reply request (defaults to accept if not provided)\n\t * @returns Promise that resolves with the member details if accepted, null if declined\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync replyToInviteCode(\n\t\tinviteCode: string,\n\t\treply?: ReplyInvite | null,\n\t): Promise<Member | null> {\n\t\tconst { data } = await this.#api.POST(\"/invites/code/{inviteCode}/\", {\n\t\t\tparams: { path: { inviteCode } },\n\t\t\tbody: reply ?? null,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Preview an invite code without joining\n\t * @param inviteCode - The invite code\n\t * @returns Promise that resolves with the invite preview details\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync previewInvite(inviteCode: string): Promise<InvitePreview> {\n\t\tconst { data } = await this.#api.GET(\"/invites/code/{inviteCode}/\", {\n\t\t\tparams: { path: { inviteCode } },\n\t\t});\n\t\treturn data!;\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tCursorPagination,\n\tListMembers,\n\tMember,\n\tMembersPage,\n\tUpdateMember,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling member operations\n */\nexport class Members {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * List members of a workspace\n\t * @param workspaceId - Workspace ID\n\t * @param query - Optional query parameters (role, has2fa, sortBy, order, limit, after)\n\t * @returns Promise that resolves with a paginated list of members\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync listMembers(\n\t\tworkspaceId: string,\n\t\tquery?: ListMembers & CursorPagination,\n\t): Promise<MembersPage> {\n\t\tconst { data } = await this.#api.GET(\"/workspaces/{workspaceId}/members/\", {\n\t\t\tparams: { path: { workspaceId }, query },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Get member details by account ID\n\t * @param workspaceId - Workspace ID\n\t * @param accountId - Account ID\n\t * @returns Promise that resolves with the member details\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync getMember(workspaceId: string, accountId: string): Promise<Member> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspaceId}/members/{accountId}/\",\n\t\t\t{\n\t\t\t\tparams: {\n\t\t\t\t\tpath: { workspaceId, accountId },\n\t\t\t\t},\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Update a member's role\n\t * @param workspaceId - Workspace ID\n\t * @param accountId - Account ID\n\t * @param updates - New role for the member\n\t * @returns Promise that resolves with the updated member\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync updateMember(\n\t\tworkspaceId: string,\n\t\taccountId: string,\n\t\tupdates: UpdateMember,\n\t): Promise<Member> {\n\t\tconst { data } = await this.#api.PATCH(\n\t\t\t\"/workspaces/{workspaceId}/members/{accountId}/role\",\n\t\t\t{\n\t\t\t\tparams: {\n\t\t\t\t\tpath: { workspaceId, accountId },\n\t\t\t\t},\n\t\t\t\tbody: updates,\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Remove a member from a workspace\n\t * @param workspaceId - Workspace ID\n\t * @param accountId - Account ID\n\t * @returns Promise that resolves when the member is removed\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync removeMember(workspaceId: string, accountId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/workspaces/{workspaceId}/members/{accountId}/\", {\n\t\t\tparams: { path: { workspaceId, accountId } },\n\t\t});\n\t}\n\n\t/**\n\t * Leave a workspace\n\t * @param workspaceId - Workspace ID\n\t * @returns Promise that resolves when the member has left\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync leaveWorkspace(workspaceId: string): Promise<void> {\n\t\tawait this.#api.POST(\"/workspaces/{workspaceId}/members/leave\", {\n\t\t\tparams: { path: { workspaceId } },\n\t\t});\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tCursorPagination,\n\tNotificationsPage,\n\tUnreadStatus,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling account notification operations\n */\nexport class Notifications {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * List notifications for the authenticated account\n\t * @param query - Optional pagination parameters (limit, after)\n\t * @returns Promise that resolves with a paginated list of notifications\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync listNotifications(\n\t\tquery?: CursorPagination,\n\t): Promise<NotificationsPage> {\n\t\tconst { data } = await this.#api.GET(\"/notifications/\", {\n\t\t\tparams: { query },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Get the unread notifications count for the authenticated account\n\t * @returns Promise that resolves with the unread status\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync getUnreadNotificationsStatus(): Promise<UnreadStatus> {\n\t\tconst { data } = await this.#api.GET(\"/notifications/unread\");\n\t\treturn data!;\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tCursorPagination,\n\tIntegrationRun,\n\tIntegrationRunsPage,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling integration run operations\n */\nexport class Runs {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * List integration runs for a workspace\n\t * @param workspaceId - Workspace ID\n\t * @param query - Optional pagination parameters (limit, after)\n\t * @returns Promise that resolves with a paginated list of integration runs\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync listRuns(\n\t\tworkspaceId: string,\n\t\tquery?: CursorPagination,\n\t): Promise<IntegrationRunsPage> {\n\t\tconst { data } = await this.#api.GET(\"/workspaces/{workspaceId}/runs/\", {\n\t\t\tparams: { path: { workspaceId }, query },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Get integration run details by ID\n\t * @param runId - Run ID\n\t * @returns Promise that resolves with the integration run details\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync getRun(runId: string): Promise<IntegrationRun> {\n\t\tconst { data } = await this.#api.GET(\"/runs/{runId}\", {\n\t\t\tparams: { path: { runId } },\n\t\t});\n\t\treturn data!;\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type { CheckHealth, MonitorStatus } from \"@/datatypes/index.js\";\n\n/**\n * Service for handling status and health check operations\n */\nexport class Status {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * Check the health status of the API\n\t * @param options - Health check options\n\t * @returns Promise that resolves with the API health status\n\t */\n\tasync checkHealth(options?: CheckHealth): Promise<MonitorStatus> {\n\t\tconst { data, error } = await this.#api.GET(\"/health\", {\n\t\t\tparams: { path: { version: \"v1\" } },\n\t\t\tbody: options ?? {},\n\t\t});\n\t\t// Health endpoint returns MonitorStatus for both 200 and 503\n\t\treturn (data ?? error) as MonitorStatus;\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tCreateWebhook,\n\tCursorPagination,\n\tTestWebhook,\n\tUpdateWebhook,\n\tWebhook,\n\tWebhookResult,\n\tWebhooksPage,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling webhook operations\n */\nexport class Webhooks {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * List all webhooks in a workspace\n\t * @param workspaceId - Workspace ID\n\t * @param query - Optional pagination parameters (limit, after)\n\t * @returns Promise that resolves with a paginated list of webhooks\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync listWebhooks(\n\t\tworkspaceId: string,\n\t\tquery?: CursorPagination,\n\t): Promise<WebhooksPage> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspaceId}/webhooks/\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId }, query },\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Get a specific webhook by ID\n\t * @param webhookId - Webhook ID\n\t * @returns Promise that resolves with the webhook details\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync getWebhook(webhookId: string): Promise<Webhook> {\n\t\tconst { data } = await this.#api.GET(\"/webhooks/{webhookId}/\", {\n\t\t\tparams: { path: { webhookId } },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Create a new webhook\n\t * @param workspaceId - Workspace ID\n\t * @param webhook - Webhook creation request\n\t * @returns Promise that resolves with the created webhook\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync createWebhook(\n\t\tworkspaceId: string,\n\t\twebhook: CreateWebhook,\n\t): Promise<Webhook> {\n\t\tconst { data } = await this.#api.POST(\n\t\t\t\"/workspaces/{workspaceId}/webhooks/\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId } },\n\t\t\t\tbody: webhook,\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Update an existing webhook\n\t * @param webhookId - Webhook ID\n\t * @param updates - Webhook update request\n\t * @returns Promise that resolves with the updated webhook\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync updateWebhook(\n\t\twebhookId: string,\n\t\tupdates: UpdateWebhook,\n\t): Promise<Webhook> {\n\t\tconst { data } = await this.#api.PUT(\"/webhooks/{webhookId}/\", {\n\t\t\tparams: { path: { webhookId } },\n\t\t\tbody: updates,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Delete a webhook\n\t * @param webhookId - Webhook ID\n\t * @returns Promise that resolves when the webhook is deleted\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync deleteWebhook(webhookId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/webhooks/{webhookId}/\", {\n\t\t\tparams: { path: { webhookId } },\n\t\t});\n\t}\n\n\t/**\n\t * Test a webhook by sending a test payload\n\t * @param webhookId - Webhook ID\n\t * @param options - Test webhook options\n\t * @returns Promise that resolves with the test result\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync testWebhook(\n\t\twebhookId: string,\n\t\toptions?: TestWebhook,\n\t): Promise<WebhookResult> {\n\t\tconst { data } = await this.#api.POST(\"/webhooks/{webhookId}/test/\", {\n\t\t\tparams: { path: { webhookId } },\n\t\t\tbody: options ?? {},\n\t\t});\n\t\treturn data!;\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tCreateWorkspace,\n\tCursorPagination,\n\tNotificationSettings,\n\tUpdateNotificationSettings,\n\tUpdateWorkspace,\n\tWorkspace,\n\tWorkspacesPage,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling workspace operations\n */\nexport class Workspaces {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\n\t}\n\n\t/**\n\t * List all workspaces\n\t * @param query - Optional pagination parameters (limit, after)\n\t * @returns Promise that resolves with a paginated list of workspaces\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync listWorkspaces(query?: CursorPagination): Promise<WorkspacesPage> {\n\t\tconst { data } = await this.#api.GET(\"/workspaces/\", {\n\t\t\tparams: { query },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Get workspace details by ID\n\t * @param workspaceId - Workspace ID\n\t * @returns Promise that resolves with the workspace details\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync getWorkspace(workspaceId: string): Promise<Workspace> {\n\t\tconst { data } = await this.#api.GET(\"/workspaces/{workspaceId}/\", {\n\t\t\tparams: { path: { workspaceId } },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Create a new workspace\n\t * @param workspace - Workspace creation request\n\t * @returns Promise that resolves with the created workspace\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync createWorkspace(workspace: CreateWorkspace): Promise<Workspace> {\n\t\tconst { data } = await this.#api.POST(\"/workspaces/\", {\n\t\t\tbody: workspace,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Update an existing workspace\n\t * @param workspaceId - Workspace ID\n\t * @param updates - Workspace update request\n\t * @returns Promise that resolves with the updated workspace\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync updateWorkspace(\n\t\tworkspaceId: string,\n\t\tupdates: UpdateWorkspace,\n\t): Promise<Workspace> {\n\t\tconst { data } = await this.#api.PATCH(\"/workspaces/{workspaceId}/\", {\n\t\t\tparams: { path: { workspaceId } },\n\t\t\tbody: updates,\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Delete a workspace\n\t * @param workspaceId - Workspace ID\n\t * @returns Promise that resolves when the workspace is deleted\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync deleteWorkspace(workspaceId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/workspaces/{workspaceId}/\", {\n\t\t\tparams: { path: { workspaceId } },\n\t\t});\n\t}\n\n\t/**\n\t * Get notification settings for the authenticated user in a workspace\n\t * @param workspaceId - Workspace ID\n\t * @returns Promise that resolves with the notification settings\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync getNotificationSettings(\n\t\tworkspaceId: string,\n\t): Promise<NotificationSettings> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspaceId}/notifications\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId } },\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Update notification settings for the authenticated user in a workspace\n\t * @param workspaceId - Workspace ID\n\t * @param settings - Notification settings update request\n\t * @returns Promise that resolves with the updated notification settings\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync updateNotificationSettings(\n\t\tworkspaceId: string,\n\t\tsettings: UpdateNotificationSettings,\n\t): Promise<NotificationSettings> {\n\t\tconst { data } = await this.#api.PATCH(\n\t\t\t\"/workspaces/{workspaceId}/notifications\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId } },\n\t\t\t\tbody: settings,\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n}\n","/**\n * @fileoverview Main client for the Nvisy SDK.\n *\n * This module exports the {@link Nvisy} class, which is the primary entry point\n * for interacting with the Nvisy document processing API.\n *\n * @module client\n *\n * @example\n * ```typescript\n * const nvisy = new Nvisy({ apiToken: \"your-api-token\" });\n * const account = await nvisy.account.getAccount();\n * ```\n */\n\nimport createClient, { type Client as OpenApiClient } from \"openapi-fetch\";\nimport { type ClientConfig, DEFAULTS } from \"@/config.js\";\nimport { NvisyError } from \"@/errors.js\";\nimport {\n\tcreateLoggingMiddleware,\n\terrorMiddleware,\n} from \"@/middleware/index.js\";\nimport type { paths } from \"@/schema/api.js\";\nimport {\n\tAccount,\n\tActivities,\n\tAnnotations,\n\tApiTokens,\n\tAuth,\n\tComments,\n\tDocuments,\n\tFiles,\n\tIntegrations,\n\tInvites,\n\tMembers,\n\tNotifications,\n\tRuns,\n\tStatus,\n\tWebhooks,\n\tWorkspaces,\n} from \"@/services/index.js\";\n\n/**\n * Typed openapi-fetch client for the Nvisy API.\n *\n * This type represents the low-level HTTP client configured with the Nvisy API schema.\n * It's exposed via {@link Nvisy.api} for advanced use cases requiring direct API access.\n */\nexport type ApiClient = OpenApiClient<paths>;\n\n/**\n * Internal configuration state for the client with all fields resolved.\n *\n * @internal\n */\ntype ResolvedConfig = Required<ClientConfig>;\n\n/**\n * Main client class for interacting with the Nvisy document processing API.\n *\n * @example\n * ```typescript\n * const nvisy = new Nvisy({ apiToken: \"your-api-token\" });\n * const account = await nvisy.account.getAccount();\n * const workspaces = await nvisy.workspaces.listWorkspaces();\n * ```\n */\nexport class Nvisy {\n\t/**\n\t * The resolved client configuration with defaults applied.\n\t * @internal\n\t */\n\treadonly #config: ResolvedConfig;\n\n\t/**\n\t * The underlying openapi-fetch client instance.\n\t * @internal\n\t */\n\treadonly #api: ApiClient;\n\n\t/**\n\t * Creates a new Nvisy client instance.\n\t *\n\t * @param config - Configuration options with required `apiToken`\n\t * @throws {NvisyError} If the API token is invalid\n\t *\n\t * @example\n\t * ```typescript\n\t * const nvisy = new Nvisy({\n\t * apiToken: \"your-api-token\",\n\t * baseUrl: \"https://custom.api.nvisy.com\",\n\t * });\n\t * const account = await nvisy.account.getAccount();\n\t * ```\n\t */\n\tconstructor(config: ClientConfig) {\n\t\tconst validatedToken = this.#validateApiToken(config.apiToken);\n\n\t\tthis.#config = {\n\t\t\tapiToken: validatedToken,\n\t\t\tbaseUrl: config.baseUrl ?? DEFAULTS.BASE_URL,\n\t\t\theaders: config.headers ?? {},\n\t\t\tuserAgent: config.userAgent ?? DEFAULTS.USER_AGENT,\n\t\t\twithLogging: config.withLogging ?? false,\n\t\t};\n\n\t\tthis.#api = this.#createApiClient();\n\t}\n\n\t/**\n\t * Creates and configures the underlying openapi-fetch client.\n\t *\n\t * @returns A configured ApiClient instance\n\t * @internal\n\t */\n\t#createApiClient(): ApiClient {\n\t\tconst headers: Record<string, string> = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\"User-Agent\": this.#config.userAgent,\n\t\t\tAuthorization: `Bearer ${this.#config.apiToken}`,\n\t\t\t...this.#config.headers,\n\t\t};\n\n\t\tconst api = createClient<paths>({\n\t\t\tbaseUrl: this.#config.baseUrl,\n\t\t\theaders,\n\t\t});\n\n\t\tif (this.#config.withLogging) {\n\t\t\tapi.use(createLoggingMiddleware());\n\t\t}\n\n\t\tapi.use(errorMiddleware);\n\t\treturn api;\n\t}\n\n\t/**\n\t * Validates an API token format.\n\t *\n\t * @param apiToken - The API token to validate\n\t * @returns The trimmed API token if valid\n\t * @throws {NvisyError} If the API token is invalid\n\t * @internal\n\t */\n\t#validateApiToken(apiToken: string): string {\n\t\tif (typeof apiToken !== \"string\" || apiToken.trim().length === 0) {\n\t\t\tthrow new NvisyError(\"API token must be a non-empty string\");\n\t\t}\n\n\t\tconst trimmedToken = apiToken.trim();\n\t\tif (trimmedToken.length < 10) {\n\t\t\tthrow new NvisyError(\"API token must be at least 10 characters\");\n\t\t}\n\n\t\tif (!/^[a-zA-Z0-9_.\\-]+$/.test(trimmedToken)) {\n\t\t\tthrow new NvisyError(\"API token contains invalid characters\");\n\t\t}\n\n\t\treturn trimmedToken;\n\t}\n\n\t/**\n\t * Creates a new client with a different API token.\n\t *\n\t * Returns a new client instance with the new token. The original client\n\t * remains unchanged. All other configuration (base URL, headers, etc.)\n\t * is preserved in the new client.\n\t *\n\t * @param apiToken - The new API token\n\t * @returns A new Nvisy instance with the new token\n\t * @throws {NvisyError} If the API token is invalid\n\t *\n\t * @example\n\t * ```typescript\n\t * const nvisy = new Nvisy({ apiToken: \"original-token\" });\n\t * const newNvisy = nvisy.withApiToken(\"new-token\");\n\t *\n\t * // newNvisy uses the new token\n\t * // nvisy still uses the original token\n\t * ```\n\t */\n\twithApiToken(apiToken: string): Nvisy {\n\t\treturn new Nvisy({ ...this.#config, apiToken });\n\t}\n\n\t/**\n\t * The base URL used for API requests.\n\t *\n\t * @returns The configured base URL\n\t */\n\tget baseUrl(): string {\n\t\treturn this.#config.baseUrl;\n\t}\n\n\t/**\n\t * The underlying openapi-fetch client for direct API access.\n\t *\n\t * Use this for advanced scenarios where you need direct access to the\n\t * HTTP client, such as calling endpoints not covered by the service classes.\n\t *\n\t * @returns The configured ApiClient instance\n\t */\n\tget api(): ApiClient {\n\t\treturn this.#api;\n\t}\n\n\t/**\n\t * Service for authentication operations (login, signup, logout).\n\t */\n\tget auth(): Auth {\n\t\treturn new Auth(this.#api);\n\t}\n\n\t/**\n\t * Service for API status and health checks.\n\t */\n\tget status(): Status {\n\t\treturn new Status(this.#api);\n\t}\n\n\t/**\n\t * Service for managing the authenticated user's account.\n\t */\n\tget account(): Account {\n\t\treturn new Account(this.#api);\n\t}\n\n\t/**\n\t * Service for viewing workspace activities.\n\t */\n\tget activities(): Activities {\n\t\treturn new Activities(this.#api);\n\t}\n\n\t/**\n\t * Service for managing file annotations.\n\t */\n\tget annotations(): Annotations {\n\t\treturn new Annotations(this.#api);\n\t}\n\n\t/**\n\t * Service for managing API tokens.\n\t */\n\tget apiTokens(): ApiTokens {\n\t\treturn new ApiTokens(this.#api);\n\t}\n\n\t/**\n\t * Service for managing file comments.\n\t */\n\tget comments(): Comments {\n\t\treturn new Comments(this.#api);\n\t}\n\n\t/**\n\t * Service for document operations.\n\t */\n\tget documents(): Documents {\n\t\treturn new Documents(this.#api);\n\t}\n\n\t/**\n\t * Service for file operations (upload, download, delete).\n\t */\n\tget files(): Files {\n\t\treturn new Files(this.#api);\n\t}\n\n\t/**\n\t * Service for managing integrations.\n\t */\n\tget integrations(): Integrations {\n\t\treturn new Integrations(this.#api);\n\t}\n\n\t/**\n\t * Service for managing workspace invitations.\n\t */\n\tget invites(): Invites {\n\t\treturn new Invites(this.#api);\n\t}\n\n\t/**\n\t * Service for managing workspace members.\n\t */\n\tget members(): Members {\n\t\treturn new Members(this.#api);\n\t}\n\n\t/**\n\t * Service for managing notifications.\n\t */\n\tget notifications(): Notifications {\n\t\treturn new Notifications(this.#api);\n\t}\n\n\t/**\n\t * Service for managing processing runs.\n\t */\n\tget runs(): Runs {\n\t\treturn new Runs(this.#api);\n\t}\n\n\t/**\n\t * Service for managing webhooks.\n\t */\n\tget webhooks(): Webhooks {\n\t\treturn new Webhooks(this.#api);\n\t}\n\n\t/**\n\t * Service for managing workspaces.\n\t */\n\tget workspaces(): Workspaces {\n\t\treturn new Workspaces(this.#api);\n\t}\n}\n"]}
1
+ {"version":3,"file":"index.js","names":["#config","#api","#validateApiToken","#createApiClient"],"sources":["../src/middleware/logging.ts","../src/client.ts"],"sourcesContent":["import type { Middleware } from \"openapi-fetch\";\n\n/**\n * Creates a logging middleware for debugging requests and responses.\n *\n * Logs request method, URL, response status, and timing to console.\n */\nexport function createLoggingMiddleware(): Middleware {\n\treturn {\n\t\tasync onRequest({ request }) {\n\t\t\tconst start = performance.now();\n\t\t\t(request as Request & { _startTime?: number })._startTime = start;\n\t\t\treturn request;\n\t\t},\n\n\t\tasync onResponse({ request, response }) {\n\t\t\tconst start =\n\t\t\t\t(request as Request & { _startTime?: number })._startTime ??\n\t\t\t\tperformance.now();\n\t\t\tconst duration = Math.round(performance.now() - start);\n\t\t\tconst url = new URL(request.url);\n\n\t\t\tconsole.log(\n\t\t\t\t`[nvisy] ${request.method} ${url.pathname} ${response.status} (${duration}ms)`,\n\t\t\t);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst cloned = response.clone();\n\t\t\t\ttry {\n\t\t\t\t\tconst body = await cloned.json();\n\t\t\t\t\tconsole.error(\"[nvisy] Response:\", JSON.stringify(body, null, 2));\n\t\t\t\t} catch {\n\t\t\t\t\tconst text = await cloned.text();\n\t\t\t\t\tif (text) console.error(\"[nvisy] Response:\", text);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn response;\n\t\t},\n\n\t\tonError({ request, error }) {\n\t\t\tconst start =\n\t\t\t\t(request as Request & { _startTime?: number })._startTime ??\n\t\t\t\tperformance.now();\n\t\t\tconst duration = Math.round(performance.now() - start);\n\t\t\tconst url = new URL(request.url);\n\n\t\t\tconsole.error(\n\t\t\t\t`[nvisy] ${request.method} ${url.pathname} ERROR (${duration}ms):`,\n\t\t\t\terror instanceof Error ? error.message : error,\n\t\t\t);\n\t\t},\n\t};\n}\n","/**\n * @fileoverview Main client for the Nvisy SDK.\n *\n * This module exports the {@link Nvisy} class, which is the primary entry point\n * for interacting with the Nvisy document processing API.\n *\n * @module client\n *\n * @example\n * ```typescript\n * const nvisy = new Nvisy({ apiToken: \"your-api-token\" });\n * const account = await nvisy.account.getAccount();\n * ```\n */\n\nimport createClient, { type Client as OpenApiClient } from \"openapi-fetch\";\nimport { type ClientConfig, DEFAULTS } from \"@/config.js\";\nimport { NvisyError } from \"@/errors.js\";\nimport {\n\tcreateLoggingMiddleware,\n\terrorMiddleware,\n} from \"@/middleware/index.js\";\nimport type { paths } from \"@/schema/api.js\";\nimport {\n\tAccount,\n\tActivities,\n\tApiTokens,\n\tAuth,\n\tConnections,\n\tFiles,\n\tInvites,\n\tMembers,\n\tNotifications,\n\tPipelines,\n\tPolicies,\n\tRuns,\n\tStatus,\n\tWebhooks,\n\tWorkspaces,\n} from \"@/services/index.js\";\n\n/**\n * Typed openapi-fetch client for the Nvisy API.\n *\n * This type represents the low-level HTTP client configured with the Nvisy API schema.\n * It's exposed via {@link Nvisy.api} for advanced use cases requiring direct API access.\n */\nexport type ApiClient = OpenApiClient<paths>;\n\n/**\n * Internal configuration state for the client with all fields resolved.\n *\n * @internal\n */\ntype ResolvedConfig = Required<ClientConfig>;\n\n/**\n * Main client class for interacting with the Nvisy document processing API.\n *\n * @example\n * ```typescript\n * const nvisy = new Nvisy({ apiToken: \"your-api-token\" });\n * const account = await nvisy.account.getAccount();\n * const workspaces = await nvisy.workspaces.listWorkspaces();\n * ```\n */\nexport class Nvisy {\n\t/**\n\t * The resolved client configuration with defaults applied.\n\t * @internal\n\t */\n\treadonly #config: ResolvedConfig;\n\n\t/**\n\t * The underlying openapi-fetch client instance.\n\t * @internal\n\t */\n\treadonly #api: ApiClient;\n\n\t/**\n\t * Creates a new Nvisy client instance.\n\t *\n\t * @param config - Configuration options with required `apiToken`\n\t * @throws {NvisyError} If the API token is invalid\n\t *\n\t * @example\n\t * ```typescript\n\t * const nvisy = new Nvisy({\n\t * apiToken: \"your-api-token\",\n\t * baseUrl: \"https://custom.api.nvisy.com\",\n\t * });\n\t * const account = await nvisy.account.getAccount();\n\t * ```\n\t */\n\tconstructor(config: ClientConfig) {\n\t\tconst validatedToken = this.#validateApiToken(config.apiToken);\n\n\t\tthis.#config = {\n\t\t\tapiToken: validatedToken,\n\t\t\tbaseUrl: config.baseUrl ?? DEFAULTS.BASE_URL,\n\t\t\theaders: config.headers ?? {},\n\t\t\tuserAgent: config.userAgent ?? DEFAULTS.USER_AGENT,\n\t\t\twithLogging: config.withLogging ?? false,\n\t\t};\n\n\t\tthis.#api = this.#createApiClient();\n\t}\n\n\t/**\n\t * Creates and configures the underlying openapi-fetch client.\n\t *\n\t * @returns A configured ApiClient instance\n\t * @internal\n\t */\n\t#createApiClient(): ApiClient {\n\t\tconst headers: Record<string, string> = {\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\"User-Agent\": this.#config.userAgent,\n\t\t\tAuthorization: `Bearer ${this.#config.apiToken}`,\n\t\t\t...this.#config.headers,\n\t\t};\n\n\t\tconst api = createClient<paths>({\n\t\t\tbaseUrl: this.#config.baseUrl,\n\t\t\theaders,\n\t\t});\n\n\t\tif (this.#config.withLogging) {\n\t\t\tapi.use(createLoggingMiddleware());\n\t\t}\n\n\t\tapi.use(errorMiddleware);\n\t\treturn api;\n\t}\n\n\t/**\n\t * Validates an API token format.\n\t *\n\t * @param apiToken - The API token to validate\n\t * @returns The trimmed API token if valid\n\t * @throws {NvisyError} If the API token is invalid\n\t * @internal\n\t */\n\t#validateApiToken(apiToken: string): string {\n\t\tif (typeof apiToken !== \"string\" || apiToken.trim().length === 0) {\n\t\t\tthrow new NvisyError(\"API token must be a non-empty string\");\n\t\t}\n\n\t\tconst trimmedToken = apiToken.trim();\n\t\tif (trimmedToken.length < 10) {\n\t\t\tthrow new NvisyError(\"API token must be at least 10 characters\");\n\t\t}\n\n\t\tif (!/^[a-zA-Z0-9_.-]+$/.test(trimmedToken)) {\n\t\t\tthrow new NvisyError(\"API token contains invalid characters\");\n\t\t}\n\n\t\treturn trimmedToken;\n\t}\n\n\t/**\n\t * Creates a new client with a different API token.\n\t *\n\t * Returns a new client instance with the new token. The original client\n\t * remains unchanged. All other configuration (base URL, headers, etc.)\n\t * is preserved in the new client.\n\t *\n\t * @param apiToken - The new API token\n\t * @returns A new Nvisy instance with the new token\n\t * @throws {NvisyError} If the API token is invalid\n\t *\n\t * @example\n\t * ```typescript\n\t * const nvisy = new Nvisy({ apiToken: \"original-token\" });\n\t * const newNvisy = nvisy.withApiToken(\"new-token\");\n\t *\n\t * // newNvisy uses the new token\n\t * // nvisy still uses the original token\n\t * ```\n\t */\n\twithApiToken(apiToken: string): Nvisy {\n\t\treturn new Nvisy({ ...this.#config, apiToken });\n\t}\n\n\t/**\n\t * The base URL used for API requests.\n\t *\n\t * @returns The configured base URL\n\t */\n\tget baseUrl(): string {\n\t\treturn this.#config.baseUrl;\n\t}\n\n\t/**\n\t * The underlying openapi-fetch client for direct API access.\n\t *\n\t * Use this for advanced scenarios where you need direct access to the\n\t * HTTP client, such as calling endpoints not covered by the service classes.\n\t *\n\t * @returns The configured ApiClient instance\n\t */\n\tget api(): ApiClient {\n\t\treturn this.#api;\n\t}\n\n\t/**\n\t * Service for authentication operations (login, signup, logout).\n\t */\n\tget auth(): Auth {\n\t\treturn new Auth(this.#api);\n\t}\n\n\t/**\n\t * Service for API status and health checks.\n\t */\n\tget status(): Status {\n\t\treturn new Status(this.#api);\n\t}\n\n\t/**\n\t * Service for managing the authenticated user's account.\n\t */\n\tget account(): Account {\n\t\treturn new Account(this.#api);\n\t}\n\n\t/**\n\t * Service for viewing workspace activities.\n\t */\n\tget activities(): Activities {\n\t\treturn new Activities(this.#api);\n\t}\n\n\t/**\n\t * Service for managing API tokens.\n\t */\n\tget apiTokens(): ApiTokens {\n\t\treturn new ApiTokens(this.#api);\n\t}\n\n\t/**\n\t * Service for managing connections.\n\t */\n\tget connections(): Connections {\n\t\treturn new Connections(this.#api);\n\t}\n\n\t/**\n\t * Service for file operations (upload, download, delete).\n\t */\n\tget files(): Files {\n\t\treturn new Files(this.#api);\n\t}\n\n\t/**\n\t * Service for managing pipelines.\n\t */\n\tget pipelines(): Pipelines {\n\t\treturn new Pipelines(this.#api);\n\t}\n\n\t/**\n\t * Service for managing policies.\n\t */\n\tget policies(): Policies {\n\t\treturn new Policies(this.#api);\n\t}\n\n\t/**\n\t * Service for managing workspace invitations.\n\t */\n\tget invites(): Invites {\n\t\treturn new Invites(this.#api);\n\t}\n\n\t/**\n\t * Service for managing workspace members.\n\t */\n\tget members(): Members {\n\t\treturn new Members(this.#api);\n\t}\n\n\t/**\n\t * Service for managing notifications.\n\t */\n\tget notifications(): Notifications {\n\t\treturn new Notifications(this.#api);\n\t}\n\n\t/**\n\t * Service for managing pipeline runs.\n\t */\n\tget runs(): Runs {\n\t\treturn new Runs(this.#api);\n\t}\n\n\t/**\n\t * Service for managing webhooks.\n\t */\n\tget webhooks(): Webhooks {\n\t\treturn new Webhooks(this.#api);\n\t}\n\n\t/**\n\t * Service for managing workspaces.\n\t */\n\tget workspaces(): Workspaces {\n\t\treturn new Workspaces(this.#api);\n\t}\n}\n"],"mappings":"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"}
@@ -1,5 +1,2 @@
1
- export { a as Account, b as Activities, c as Annotations, d as ApiTokens, e as Auth, C as Comments, D as Documents, F as Files, I as Integrations, f as Invites, M as Members, g as Notifications, R as Runs, S as Status, W as Webhooks, h as Workspaces } from '../client-DQRisDAK.js';
2
- import 'openapi-fetch';
3
- import '../config-L7FKq_q5.js';
4
- import '../auth-CncOz2vx.js';
5
- import '../workspace-BjdbMWsa.js';
1
+ import { _ as Account, a as Status, c as Pipelines, d as Invites, f as Files, g as Activities, h as ApiTokens, i as Webhooks, l as Notifications, m as Auth, o as Runs, p as Connections, r as Workspaces, s as Policies, u as Members } from "../client-DAxwkjk3.js";
2
+ export { Account, Activities, ApiTokens, Auth, Connections, Files, Invites, Members, Notifications, Pipelines, Policies, Runs, Status, Webhooks, Workspaces };