@nvisy/sdk 0.1.0 → 0.2.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/CHANGELOG.md +23 -4
- package/LICENSE.txt +1 -1
- package/README.md +20 -61
- package/dist/client-D6GtLRbO.d.ts +823 -0
- package/dist/datatypes/index.d.ts +8 -0
- package/dist/datatypes/index.js +3 -0
- package/dist/datatypes/index.js.map +1 -0
- package/dist/index.d.ts +254 -2
- package/dist/index.js +1244 -361
- package/dist/index.js.map +1 -1
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.js +956 -0
- package/dist/services/index.js.map +1 -0
- package/dist/workspace-3RLqaMcj.d.ts +7055 -0
- package/package.json +33 -33
- package/dist/builder-BEUIGfoZ.d.ts +0 -138
- package/dist/builder.d.ts +0 -2
- package/dist/builder.js +0 -424
- package/dist/builder.js.map +0 -1
- package/dist/client.d.ts +0 -2
- package/dist/client.js +0 -424
- package/dist/client.js.map +0 -1
- package/dist/errors.d.ts +0 -124
- package/dist/errors.js +0 -201
- package/dist/errors.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config.ts","../src/errors.ts","../src/client.ts","../src/builder.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Configuration options for the Nvisy client\n */\nexport interface ClientConfig {\n\t/**\n\t * API key for authentication\n\t */\n\tapiKey: string;\n\n\t/**\n\t * Base URL for the Nvisy API\n\t * @default \"https://api.nvisy.com\"\n\t */\n\tbaseUrl?: string;\n\n\t/**\n\t * Request timeout in milliseconds\n\t * @default 30000\n\t */\n\ttimeout?: number;\n\n\t/**\n\t * Maximum number of retry attempts for failed requests\n\t * @default 3\n\t */\n\tmaxRetries?: number;\n\n\t/**\n\t * Custom headers to include with requests\n\t */\n\theaders?: Record<string, string>;\n}\n\n/**\n * Internal fully-resolved configuration\n */\nexport type ResolvedClientConfig = Required<ClientConfig>;\n\n/**\n * Environment variable names for configuration\n */\nconst ENV_VARS = {\n\tAPI_KEY: \"NVISY_API_KEY\",\n\tBASE_URL: \"NVISY_BASE_URL\",\n\tTIMEOUT: \"NVISY_TIMEOUT\",\n\tMAX_RETRIES: \"NVISY_MAX_RETRIES\",\n} as const;\n\n/**\n * Default configuration values\n */\nconst DEFAULTS = {\n\tbaseUrl: \"https://api.nvisy.com\",\n\ttimeout: 30_000,\n\tmaxRetries: 3,\n\theaders: {},\n} as const;\n\n/**\n * Load configuration from environment variables\n */\nexport function loadConfigFromEnv(): Partial<ClientConfig> {\n\tconst config: Partial<ClientConfig> = {};\n\n\tconst apiKey = process.env[ENV_VARS.API_KEY];\n\tif (apiKey) {\n\t\tconfig.apiKey = apiKey;\n\t}\n\n\tconst baseUrl = process.env[ENV_VARS.BASE_URL];\n\tif (baseUrl) {\n\t\tconfig.baseUrl = baseUrl;\n\t}\n\n\tconst timeout = process.env[ENV_VARS.TIMEOUT];\n\tif (timeout) {\n\t\tconst timeoutMs = parseInt(timeout, 10);\n\t\tif (!Number.isNaN(timeoutMs)) {\n\t\t\tconfig.timeout = timeoutMs;\n\t\t}\n\t}\n\n\tconst maxRetries = process.env[ENV_VARS.MAX_RETRIES];\n\tif (maxRetries) {\n\t\tconst retries = parseInt(maxRetries, 10);\n\t\tif (!Number.isNaN(retries)) {\n\t\t\tconfig.maxRetries = retries;\n\t\t}\n\t}\n\n\treturn config;\n}\n\n/**\n * Resolve configuration with defaults\n */\nexport function resolveConfig(userConfig: ClientConfig): ResolvedClientConfig {\n\tconst envConfig = loadConfigFromEnv();\n\tconst mergedConfig = { ...envConfig, ...userConfig };\n\n\treturn {\n\t\tapiKey: mergedConfig.apiKey || \"\",\n\t\tbaseUrl: mergedConfig.baseUrl || DEFAULTS.baseUrl,\n\t\ttimeout: mergedConfig.timeout ?? DEFAULTS.timeout,\n\t\tmaxRetries: mergedConfig.maxRetries ?? DEFAULTS.maxRetries,\n\t\theaders: { ...DEFAULTS.headers, ...mergedConfig.headers },\n\t};\n}\n\n/**\n * Get available environment variable names\n */\nexport function getEnvironmentVariables(): Record<string, string> {\n\treturn { ...ENV_VARS };\n}\n","/**\n * Error response structure from server\n */\nexport interface ErrorResponse {\n\t/** Error type/name */\n\tname: string;\n\t/** Human-readable error message */\n\tmessage: string;\n\t/** Additional error context */\n\tcontext: string;\n}\n\n/**\n * Abstract base error class for all Nvisy SDK errors\n */\nexport abstract class ClientError extends Error {\n\tpublic readonly name: string;\n\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = this.constructor.name;\n\n\t\t// Maintains proper stack trace for where our error was thrown (only available on V8)\n\t\tif (Error.captureStackTrace) {\n\t\t\tError.captureStackTrace(this, this.constructor);\n\t\t}\n\t}\n\n\t/**\n\t * Convert error to JSON representation\n\t */\n\ttoJSON(): ErrorResponse {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: this.message,\n\t\t\tcontext: \"\",\n\t\t};\n\t}\n}\n\n/**\n * Configuration error - thrown when client configuration is invalid\n */\nexport class ConfigError extends ClientError {\n\t/** Field that caused the error (for validation errors) */\n\tpublic readonly field?: string;\n\t/** Reason why the configuration is invalid */\n\tpublic readonly reason?: string;\n\n\tconstructor(\n\t\tmessage: string,\n\t\toptions?: {\n\t\t\tfield?: string;\n\t\t\treason?: string;\n\t\t},\n\t) {\n\t\tsuper(message);\n\t\tthis.field = options?.field;\n\t\tthis.reason = options?.reason;\n\t}\n\n\t/**\n\t * Create error for missing API key\n\t */\n\tstatic missingApiKey(): ConfigError {\n\t\treturn new ConfigError(\"API key is required\", {\n\t\t\tfield: \"apiKey\",\n\t\t\treason: \"API key must be provided in configuration\",\n\t\t});\n\t}\n\n\t/**\n\t * Create error for invalid configuration field\n\t */\n\tstatic invalidField(field: string, reason: string): ConfigError {\n\t\treturn new ConfigError(`Invalid configuration for ${field}: ${reason}`, {\n\t\t\tfield,\n\t\t\treason,\n\t\t});\n\t}\n\n\t/**\n\t * Create error for missing required field\n\t */\n\tstatic missingField(field: string): ConfigError {\n\t\treturn new ConfigError(`Missing required configuration field: ${field}`, {\n\t\t\tfield,\n\t\t\treason: \"This field is required\",\n\t\t});\n\t}\n\n\t/**\n\t * Convert error to JSON representation\n\t */\n\ttoJSON(): ErrorResponse {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: this.message,\n\t\t\tcontext:\n\t\t\t\tthis.field || this.reason\n\t\t\t\t\t? `field: ${this.field}, reason: ${this.reason}`\n\t\t\t\t\t: \"\",\n\t\t};\n\t}\n}\n\n/**\n * Network error - thrown when network requests fail\n */\nexport class NetworkError extends ClientError {\n\t/** Original error that caused this network error */\n\tpublic readonly cause?: Error;\n\n\tconstructor(message: string, cause?: Error) {\n\t\tsuper(message);\n\t\tthis.cause = cause;\n\t}\n\n\t/**\n\t * Create error for network/connection issues\n\t */\n\tstatic connection(message: string, cause?: Error): NetworkError {\n\t\treturn new NetworkError(message, cause);\n\t}\n\n\t/**\n\t * Create error for request timeout\n\t */\n\tstatic timeout(timeoutMs: number): NetworkError {\n\t\treturn new NetworkError(`Request timed out after ${timeoutMs}ms`);\n\t}\n\n\t/**\n\t * Create error for aborted request\n\t */\n\tstatic aborted(): NetworkError {\n\t\treturn new NetworkError(\"Request was aborted\");\n\t}\n\n\t/**\n\t * Create error for DNS resolution failure\n\t */\n\tstatic dnsResolution(hostname: string): NetworkError {\n\t\treturn new NetworkError(`Failed to resolve hostname: ${hostname}`);\n\t}\n\n\t/**\n\t * Convert error to JSON representation\n\t */\n\ttoJSON(): ErrorResponse {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: this.message,\n\t\t\tcontext: this.cause ? `cause: ${this.cause.message}` : \"\",\n\t\t};\n\t}\n}\n\n/**\n * API error - thrown when server responds with an error\n */\nexport class ApiError extends ClientError {\n\t/** Error response from server */\n\tpublic readonly errorResponse?: ErrorResponse;\n\t/** HTTP status code */\n\tpublic readonly statusCode: number;\n\t/** Request ID for debugging */\n\tpublic readonly requestId?: string;\n\n\tconstructor(\n\t\tmessage: string,\n\t\tstatusCode: number,\n\t\toptions?: {\n\t\t\terrorResponse?: ErrorResponse;\n\t\t\trequestId?: string;\n\t\t},\n\t) {\n\t\tsuper(message);\n\t\tthis.statusCode = statusCode;\n\t\tthis.errorResponse = options?.errorResponse;\n\t\tthis.requestId = options?.requestId;\n\t}\n\n\t/**\n\t * Create error from HTTP response\n\t */\n\tstatic fromResponse(\n\t\tresponse: Response,\n\t\terrorData?: ErrorResponse,\n\t\trequestId?: string,\n\t): ApiError {\n\t\tconst message =\n\t\t\terrorData?.message || `HTTP ${response.status}: ${response.statusText}`;\n\n\t\treturn new ApiError(message, response.status, {\n\t\t\terrorResponse: errorData,\n\t\t\trequestId,\n\t\t});\n\t}\n\n\t/**\n\t * Create error for rate limiting\n\t */\n\tstatic rateLimited(retryAfter?: number, requestId?: string): ApiError {\n\t\tconst message = retryAfter\n\t\t\t? `Rate limited. Retry after ${retryAfter} seconds`\n\t\t\t: \"Rate limited\";\n\n\t\treturn new ApiError(message, 429, {\n\t\t\trequestId,\n\t\t\terrorResponse: {\n\t\t\t\tname: \"RateLimitError\",\n\t\t\t\tmessage,\n\t\t\t\tcontext: retryAfter ? `retryAfter: ${retryAfter}` : \"\",\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Check if error is a client error (4xx)\n\t */\n\tisClientError(): boolean {\n\t\treturn this.statusCode\n\t\t\t? this.statusCode >= 400 && this.statusCode < 500\n\t\t\t: false;\n\t}\n\n\t/**\n\t * Check if error is a server error (5xx)\n\t */\n\tisServerError(): boolean {\n\t\treturn this.statusCode ? this.statusCode >= 500 : false;\n\t}\n\n\t/**\n\t * Check if error is retryable based on HTTP status\n\t */\n\tisRetryable(): boolean {\n\t\tif (!this.statusCode) return false;\n\n\t\t// Retry on server errors and specific client errors\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 * Get retry delay in milliseconds (returns null if not retryable)\n\t */\n\tgetRetryDelay(): number | null {\n\t\tif (!this.isRetryable()) return null;\n\n\t\t// For rate limiting, check if we have retry-after info\n\t\tif (this.statusCode === 429 && this.errorResponse?.context) {\n\t\t\tconst match = this.errorResponse.context.match(/retryAfter: (\\d+)/);\n\t\t\tif (match) {\n\t\t\t\tconst retryAfter = parseInt(match[1], 10);\n\t\t\t\treturn retryAfter * 1000; // Convert seconds to milliseconds\n\t\t\t}\n\t\t}\n\n\t\t// Default delays based on error type\n\t\tif (this.statusCode >= 500) {\n\t\t\treturn 1000; // 1 second for server errors\n\t\t}\n\n\t\treturn 1000; // Default 1 second\n\t}\n\n\t/**\n\t * Convert error to JSON representation\n\t */\n\ttoJSON(): ErrorResponse {\n\t\treturn {\n\t\t\tname: this.name,\n\t\t\tmessage: this.message,\n\t\t\tcontext: `statusCode: ${this.statusCode}${\n\t\t\t\tthis.requestId ? `, requestId: ${this.requestId}` : \"\"\n\t\t\t}${\n\t\t\t\tthis.errorResponse\n\t\t\t\t\t? `, errorResponse: ${JSON.stringify(this.errorResponse)}`\n\t\t\t\t\t: \"\"\n\t\t\t}`,\n\t\t};\n\t}\n}\n","import createClient from \"openapi-fetch\";\nimport { ClientBuilder } from \"./builder.js\";\nimport {\n\ttype ClientConfig,\n\ttype ResolvedClientConfig,\n\tresolveConfig,\n} from \"./config.js\";\nimport { ConfigError } from \"./errors.js\";\n\n/**\n * Main client class for interacting with the Nvisy document redaction API\n */\nexport class Client {\n\t#config: ResolvedClientConfig;\n\t#openApiClient: ReturnType<typeof createClient>;\n\n\t/**\n\t * Create a new Nvisy client instance\n\t */\n\tconstructor(userConfig: ClientConfig) {\n\t\ttry {\n\t\t\t// Validate configuration first\n\t\t\tthis.#validateConfig(userConfig);\n\t\t\t// Resolve configuration with defaults\n\t\t\tthis.#config = resolveConfig(userConfig);\n\t\t} catch (error) {\n\t\t\tif (error instanceof ConfigError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tthrow ConfigError.invalidField(\n\t\t\t\t\"config\",\n\t\t\t\t`Configuration error: ${String(error)}`,\n\t\t\t);\n\t\t}\n\n\t\t// Create openapi-fetch client with proper headers\n\t\tthis.#openApiClient = createClient({\n\t\t\tbaseUrl: this.#config.baseUrl,\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${this.#config.apiKey}`,\n\t\t\t\t\"Content-Type\": \"application/json\",\n\t\t\t\t\"User-Agent\": this.#buildUserAgent(),\n\t\t\t\t...this.#config.headers,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Create a new ClientBuilder for fluent configuration\n\t */\n\tstatic builder(): ClientBuilder {\n\t\treturn new ClientBuilder();\n\t}\n\n\t/**\n\t * Create a client from environment variables\n\t */\n\tstatic fromEnvironment(): Client {\n\t\treturn ClientBuilder.fromEnvironment().build();\n\t}\n\n\t/**\n\t * Get the current configuration (readonly copy)\n\t */\n\tgetConfig(): Readonly<ResolvedClientConfig> {\n\t\treturn Object.freeze({ ...this.#config });\n\t}\n\n\t/**\n\t * Get the underlying openapi-fetch client for advanced usage\n\t */\n\tgetOpenApiClient(): ReturnType<typeof createClient> {\n\t\treturn this.#openApiClient;\n\t}\n\n\t/**\n\t * Validate configuration by reusing ClientBuilder validation\n\t */\n\t#validateConfig(config: ClientConfig): void {\n\t\tconst builder = new ClientBuilder().withApiKey(config.apiKey);\n\n\t\tif (config.baseUrl !== undefined) {\n\t\t\tbuilder.withBaseUrl(config.baseUrl);\n\t\t}\n\n\t\tif (config.timeout !== undefined) {\n\t\t\tbuilder.withTimeout(config.timeout);\n\t\t}\n\n\t\tif (config.maxRetries !== undefined) {\n\t\t\tbuilder.withMaxRetries(config.maxRetries);\n\t\t}\n\n\t\tif (config.headers !== undefined) {\n\t\t\tbuilder.withHeaders(config.headers);\n\t\t}\n\t}\n\n\t/**\n\t * Build user agent string\n\t */\n\t#buildUserAgent(): string {\n\t\t// In a real implementation, this would import from package.json\n\t\tconst sdkVersion = \"1.0.0\";\n\t\tconst nodeVersion = process.version;\n\t\tconst platform = process.platform;\n\n\t\treturn `@nvisy/sdk/${sdkVersion} (${platform}; Node.js ${nodeVersion})`;\n\t}\n\n\t/**\n\t * Create a new client with modified configuration\n\t */\n\twithConfig(configChanges: Partial<ClientConfig>): Client {\n\t\tconst newConfig: ClientConfig = {\n\t\t\tapiKey: this.#config.apiKey,\n\t\t\tbaseUrl: this.#config.baseUrl,\n\t\t\ttimeout: this.#config.timeout,\n\t\t\tmaxRetries: this.#config.maxRetries,\n\t\t\theaders: this.#config.headers,\n\t\t\t...configChanges,\n\t\t};\n\t\treturn new Client(newConfig);\n\t}\n\n\t/**\n\t * Create a new client with additional headers\n\t */\n\twithHeaders(additionalHeaders: Record<string, string>): Client {\n\t\treturn this.withConfig({\n\t\t\theaders: { ...this.#config.headers, ...additionalHeaders },\n\t\t});\n\t}\n\n\t/**\n\t * Create a new client with a different timeout\n\t */\n\twithTimeout(timeoutMs: number): Client {\n\t\treturn this.withConfig({ timeout: timeoutMs });\n\t}\n\n\t/**\n\t * Create a new client with different retry settings\n\t */\n\twithMaxRetries(maxRetries: number): Client {\n\t\treturn this.withConfig({ maxRetries });\n\t}\n}\n","import { Client } from \"./client.js\";\nimport type { ClientConfig } from \"./config.js\";\nimport { loadConfigFromEnv } from \"./config.js\";\nimport { ConfigError } from \"./errors.js\";\n\n/**\n * Reserved headers that cannot be overridden\n */\nconst RESERVED_HEADERS = [\"authorization\", \"content-type\", \"user-agent\"];\n\n/**\n * Builder class for constructing client instances with a fluent API\n */\nexport class ClientBuilder {\n\t#config: Partial<ClientConfig> = {};\n\n\t/**\n\t * Create a ClientBuilder instance with an API key\n\t */\n\tstatic fromApiKey(apiKey: string): ClientBuilder {\n\t\treturn new ClientBuilder().withApiKey(apiKey);\n\t}\n\n\t/**\n\t * Create a ClientBuilder instance from environment variables\n\t */\n\tstatic fromEnvironment(): ClientBuilder {\n\t\tconst envConfig = loadConfigFromEnv();\n\n\t\tif (!envConfig.apiKey) {\n\t\t\tthrow ConfigError.missingApiKey();\n\t\t}\n\n\t\tconst builder = new ClientBuilder().withApiKey(envConfig.apiKey);\n\n\t\tif (envConfig.baseUrl) {\n\t\t\tbuilder.withBaseUrl(envConfig.baseUrl);\n\t\t}\n\t\tif (envConfig.timeout) {\n\t\t\tbuilder.withTimeout(envConfig.timeout);\n\t\t}\n\t\tif (envConfig.maxRetries !== undefined) {\n\t\t\tbuilder.withMaxRetries(envConfig.maxRetries);\n\t\t}\n\t\tif (envConfig.headers) {\n\t\t\tbuilder.withHeaders(envConfig.headers);\n\t\t}\n\n\t\treturn builder;\n\t}\n\n\t/**\n\t * Set the API key for authentication\n\t */\n\twithApiKey(apiKey: string): this {\n\t\tthis.#validateString(\"apiKey\", apiKey);\n\n\t\tconst trimmedKey = apiKey.trim();\n\t\tif (trimmedKey.length < 10) {\n\t\t\tthrow ConfigError.invalidField(\n\t\t\t\t\"apiKey\",\n\t\t\t\t\"must be at least 10 characters\",\n\t\t\t);\n\t\t}\n\n\t\tif (!/^[a-zA-Z0-9_-]+$/.test(trimmedKey)) {\n\t\t\tthrow ConfigError.invalidField(\"apiKey\", \"contains invalid characters\");\n\t\t}\n\n\t\tthis.#config.apiKey = trimmedKey;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the base URL for the API\n\t */\n\twithBaseUrl(baseUrl: string): this {\n\t\tthis.#validateString(\"baseUrl\", baseUrl);\n\t\tthis.#validateUrl(baseUrl);\n\t\tthis.#config.baseUrl = baseUrl;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the request timeout in milliseconds\n\t */\n\twithTimeout(timeoutMs: number): this {\n\t\tthis.#validateInteger(\"timeout\", timeoutMs, 1000, 300_000);\n\t\tthis.#config.timeout = timeoutMs;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set the maximum number of retry attempts\n\t */\n\twithMaxRetries(maxRetries: number): this {\n\t\tthis.#validateInteger(\"maxRetries\", maxRetries, 0, 5);\n\t\tthis.#config.maxRetries = maxRetries;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Add a single custom header (merges with existing headers)\n\t */\n\twithHeader(name: string, value: string): this {\n\t\tthis.#validateSingleHeader(name, value);\n\n\t\tif (!this.#config.headers) {\n\t\t\tthis.#config.headers = {};\n\t\t}\n\n\t\tthis.#config.headers[name] = value;\n\t\treturn this;\n\t}\n\n\t/**\n\t * Set custom headers (merges with existing headers)\n\t */\n\twithHeaders(headers: Record<string, string>): this {\n\t\tif (!headers || typeof headers !== \"object\" || Array.isArray(headers)) {\n\t\t\tthrow ConfigError.invalidField(\"headers\", \"must be a valid object\");\n\t\t}\n\n\t\tfor (const [name, value] of Object.entries(headers)) {\n\t\t\tthis.withHeader(name, value);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Build and return the configured client instance\n\t */\n\tbuild(): Client {\n\t\tif (!this.#config.apiKey) {\n\t\t\tthrow ConfigError.missingApiKey();\n\t\t}\n\n\t\treturn new Client(this.#config as ClientConfig);\n\t}\n\n\t/**\n\t * Get the current configuration (for debugging/testing)\n\t */\n\tgetConfig(): Readonly<Partial<ClientConfig>> {\n\t\treturn { ...this.#config };\n\t}\n\n\t/**\n\t * Validate string field\n\t */\n\t#validateString(fieldName: string, value: string): void {\n\t\tif (!value || typeof value !== \"string\" || value.trim().length === 0) {\n\t\t\tthrow ConfigError.invalidField(fieldName, \"must be a non-empty string\");\n\t\t}\n\t}\n\n\t/**\n\t * Validate integer field with range\n\t */\n\t#validateInteger(\n\t\tfieldName: string,\n\t\tvalue: number,\n\t\tmin: number,\n\t\tmax: number,\n\t): void {\n\t\tif (!Number.isInteger(value) || value < min) {\n\t\t\tthrow ConfigError.invalidField(fieldName, `must be an integer >= ${min}`);\n\t\t}\n\n\t\tif (value > max) {\n\t\t\tthrow ConfigError.invalidField(fieldName, `must not exceed ${max}`);\n\t\t}\n\t}\n\n\t/**\n\t * Validate URL format\n\t */\n\t#validateUrl(baseUrl: string): void {\n\t\tlet url: URL;\n\t\ttry {\n\t\t\turl = new URL(baseUrl);\n\t\t} catch {\n\t\t\tthrow ConfigError.invalidField(\"baseUrl\", \"must be a valid URL\");\n\t\t}\n\n\t\tconst allowedProtocols = [\"https:\", \"http:\"];\n\t\tif (!allowedProtocols.includes(url.protocol)) {\n\t\t\tthrow ConfigError.invalidField(\n\t\t\t\t\"baseUrl\",\n\t\t\t\t`protocol must be one of: ${allowedProtocols.join(\", \")}`,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Validate single header name and value\n\t */\n\t#validateSingleHeader(name: string, value: string): void {\n\t\tif (!name || typeof name !== \"string\" || name.trim().length === 0) {\n\t\t\tthrow ConfigError.invalidField(\n\t\t\t\t\"header name\",\n\t\t\t\t\"must be a non-empty string\",\n\t\t\t);\n\t\t}\n\t\tif (typeof value !== \"string\") {\n\t\t\tthrow ConfigError.invalidField(\"header value\", \"must be a string\");\n\t\t}\n\n\t\t// Check for invalid header names (RFC 7230)\n\t\tif (!/^[a-zA-Z0-9!#$%&'*+\\-.^_`|~]+$/.test(name)) {\n\t\t\tthrow ConfigError.invalidField(\n\t\t\t\t\"header name\",\n\t\t\t\t`invalid header name: ${name}`,\n\t\t\t);\n\t\t}\n\n\t\t// Check for reserved headers\n\t\tif (RESERVED_HEADERS.includes(name.toLowerCase())) {\n\t\t\tthrow ConfigError.invalidField(\n\t\t\t\t\"header name\",\n\t\t\t\t`header \"${name}\" is reserved and cannot be overridden`,\n\t\t\t);\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/errors.ts","../src/middleware/error.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":[],"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.2.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\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 ApiError} - Errors returned by the Nvisy API (4xx/5xx responses)\n * - {@link ConfigError} - Client configuration validation errors\n * - {@link NetworkError} - Network connectivity and request failures\n *\n * All errors extend the built-in Error class and include additional context\n * to help with debugging and error handling.\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 * Unwraps an openapi-fetch response, throwing an {@link ApiError} if the request failed.\n *\n * This is a convenience function for handling the response pattern from openapi-fetch.\n * If the response contains an error, it throws an ApiError. Otherwise, it returns the data.\n *\n * @typeParam T - The expected data type on success\n * @param result - The openapi-fetch response object\n * @returns The response data\n * @throws {ApiError} If the response contains an error\n *\n * @example\n * ```typescript\n * const result = await api.GET(\"/account\");\n * const account = unwrap(result); // Throws ApiError if result.error exists\n * ```\n *\n * @internal\n */\nexport function unwrap<T>(result: {\n\tdata?: T;\n\terror?: ErrorResponse;\n\tresponse: Response;\n}): T {\n\tif (result.error) {\n\t\tthrow new ApiError(result.error, result.response.status);\n\t}\n\treturn result.data as 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.get();\n * } catch (error) {\n * if (error instanceof ApiError) {\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 ApiError extends Error 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 validationErrors?: ErrorResponse[\"validationErrors\"];\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 ApiError 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.validationErrors = response.validationErrors;\n\t\tthis.statusCode = statusCode;\n\n\t\t// Maintains proper stack trace for where our error was thrown (only available on V8)\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\tvalidationErrors: this.validationErrors,\n\t\t};\n\t}\n}\n\n/**\n * Abstract base class for SDK-specific errors.\n *\n * This class provides common functionality for all client-side errors\n * (as opposed to API errors). It ensures proper error naming and stack traces.\n *\n * @internal\n */\nexport abstract class ClientError extends Error {\n\t/**\n\t * The error class name (e.g., \"ConfigError\", \"NetworkError\").\n\t */\n\tpublic readonly name: string;\n\n\t/**\n\t * Creates a new ClientError.\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 client configuration is invalid.\n *\n * This error is thrown during client initialization if the provided\n * configuration is missing required fields or contains invalid values.\n *\n * @example\n * ```typescript\n * try {\n * const client = new Client().withApiToken(\"short\");\n * } catch (error) {\n * if (error instanceof ConfigError) {\n * console.log(`Config error in field '${error.field}': ${error.reason}`);\n * }\n * }\n * ```\n */\nexport class ConfigError extends ClientError {\n\t/**\n\t * The configuration field that caused the error.\n\t * May be undefined for general configuration errors.\n\t */\n\tpublic readonly field?: string;\n\n\t/**\n\t * A description of why the configuration is invalid.\n\t * May be undefined for simple errors.\n\t */\n\tpublic readonly reason?: string;\n\n\t/**\n\t * Creates a new ConfigError.\n\t *\n\t * @param message - The error message\n\t * @param options - Additional error context\n\t * @param options.field - The field that caused the error\n\t * @param options.reason - Why the configuration is invalid\n\t */\n\tconstructor(\n\t\tmessage: string,\n\t\toptions?: {\n\t\t\tfield?: string;\n\t\t\treason?: string;\n\t\t},\n\t) {\n\t\tsuper(message);\n\t\tthis.field = options?.field;\n\t\tthis.reason = options?.reason;\n\t}\n\n\t/**\n\t * Creates a ConfigError for a missing API token.\n\t *\n\t * @returns A ConfigError indicating the API token is required\n\t *\n\t * @internal\n\t */\n\tstatic missingApiToken(): ConfigError {\n\t\treturn new ConfigError(\"API token is required\", {\n\t\t\tfield: \"apiToken\",\n\t\t\treason: \"API token must be provided in configuration\",\n\t\t});\n\t}\n\n\t/**\n\t * Creates a ConfigError for an invalid configuration field.\n\t *\n\t * @param field - The name of the invalid field\n\t * @param reason - Why the field value is invalid\n\t * @returns A ConfigError with field and reason context\n\t *\n\t * @internal\n\t */\n\tstatic invalidField(field: string, reason: string): ConfigError {\n\t\treturn new ConfigError(`Invalid configuration for ${field}: ${reason}`, {\n\t\t\tfield,\n\t\t\treason,\n\t\t});\n\t}\n\n\t/**\n\t * Creates a ConfigError for a missing required field.\n\t *\n\t * @param field - The name of the missing field\n\t * @returns A ConfigError indicating the field is required\n\t *\n\t * @internal\n\t */\n\tstatic missingField(field: string): ConfigError {\n\t\treturn new ConfigError(`Missing required configuration field: ${field}`, {\n\t\t\tfield,\n\t\t\treason: \"This field is required\",\n\t\t});\n\t}\n}\n\n/**\n * Error thrown when a network request fails.\n *\n * This error wraps underlying network errors (connection failures, timeouts,\n * aborted requests) and provides a consistent interface for handling them.\n *\n * @example\n * ```typescript\n * try {\n * await client.account.get();\n * } catch (error) {\n * if (error instanceof NetworkError) {\n * console.log(\"Network error:\", error.message);\n * if (error.cause) {\n * console.log(\"Caused by:\", error.cause.message);\n * }\n * }\n * }\n * ```\n */\nexport class NetworkError extends ClientError {\n\t/**\n\t * The underlying error that caused this network error.\n\t * May be undefined if no underlying error is available.\n\t */\n\tpublic readonly cause?: Error;\n\n\t/**\n\t * Creates a new NetworkError.\n\t *\n\t * @param message - The error message\n\t * @param cause - The underlying error that caused this failure\n\t */\n\tconstructor(message: string, cause?: Error) {\n\t\tsuper(message);\n\t\tthis.cause = cause;\n\t}\n\n\t/**\n\t * Creates a NetworkError for connection issues.\n\t *\n\t * @param message - Description of the connection problem\n\t * @param cause - The underlying error\n\t * @returns A NetworkError for connection failures\n\t *\n\t * @internal\n\t */\n\tstatic connection(message: string, cause?: Error): NetworkError {\n\t\treturn new NetworkError(message, cause);\n\t}\n\n\t/**\n\t * Creates a NetworkError for aborted requests.\n\t *\n\t * @returns A NetworkError indicating the request was aborted\n\t *\n\t * @internal\n\t */\n\tstatic aborted(): NetworkError {\n\t\treturn new NetworkError(\"Request was aborted\");\n\t}\n}\n","import type { Middleware } from \"openapi-fetch\";\nimport type { ErrorResponse } from \"@/datatypes/index.js\";\nimport { ApiError, NetworkError } from \"@/errors.js\";\n\n/**\n * Middleware that automatically throws ApiError 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 ApiError(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 NetworkError\n\t\tif (error instanceof Error) {\n\t\t\tif (error.name === \"AbortError\") {\n\t\t\t\tthrow NetworkError.aborted();\n\t\t\t}\n\t\t\tthrow NetworkError.connection(error.message, error);\n\t\t}\n\t\tthrow NetworkError.connection(\"An unknown network error occurred\");\n\t},\n};\n","import type { ApiClient } from \"@/client.js\";\nimport type { Account, UpdateAccount } from \"@/datatypes/index.js\";\n\n/**\n * Service for handling account operations\n */\nexport class AccountService {\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 get(): Promise<Account> {\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 update(updates: UpdateAccount): Promise<Account> {\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 delete(): Promise<void> {\n\t\tawait this.#api.DELETE(\"/account\");\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type { Activity, Pagination } from \"@/datatypes/index.js\";\n\n/**\n * Service for handling workspace activity operations\n */\nexport class ActivitiesService {\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 query parameters (offset, limit)\n\t * @returns Promise that resolves with the list of activities\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync list(workspaceId: string, query?: Pagination): Promise<Activity[]> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspace_id}/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\tCreateAnnotation,\n\tPagination,\n\tUpdateAnnotation,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling file annotation operations\n */\nexport class AnnotationsService {\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 query parameters (offset, limit)\n\t * @returns Promise that resolves with the list of annotations\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync list(fileId: string, query?: Pagination): Promise<Annotation[]> {\n\t\tconst { data } = await this.#api.GET(\"/files/{file_id}/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 get(annotationId: string): Promise<Annotation> {\n\t\tconst { data } = await this.#api.GET(\"/annotations/{annotation_id}\", {\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 create(\n\t\tfileId: string,\n\t\tannotation: CreateAnnotation,\n\t): Promise<Annotation> {\n\t\tconst { data } = await this.#api.POST(\"/files/{file_id}/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 update(\n\t\tannotationId: string,\n\t\tupdates: UpdateAnnotation,\n\t): Promise<Annotation> {\n\t\tconst { data } = await this.#api.PATCH(\"/annotations/{annotation_id}\", {\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 delete(annotationId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/annotations/{annotation_id}\", {\n\t\t\tparams: { path: { annotationId } },\n\t\t});\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tApiToken,\n\tApiTokenWithSecret,\n\tCreateApiToken,\n\tUpdateApiToken,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling API token operations\n */\nexport class ApiTokensService {\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 options - Pagination options\n\t * @returns Promise that resolves with the list of API tokens\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync list(options?: {\n\t\toffset?: number;\n\t\tlimit?: number;\n\t}): Promise<ApiToken[]> {\n\t\tconst { data } = await this.#api.GET(\"/api-tokens/\", {\n\t\t\tparams: { query: options },\n\t\t});\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Get a specific API token by access token\n\t * @param accessToken - The access 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 get(accessToken: string): Promise<ApiToken> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/api-tokens/{access_token}/\" as \"/api-tokens/{access_token}/\",\n\t\t\t{\n\t\t\t\tparams: { path: { access_token: accessToken } as never },\n\t\t\t},\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 secret, shown only once)\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync create(token: CreateApiToken): Promise<ApiTokenWithSecret> {\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 accessToken - The access 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 update(\n\t\taccessToken: string,\n\t\tupdates: UpdateApiToken,\n\t): Promise<ApiToken> {\n\t\tconst { data } = await this.#api.PATCH(\n\t\t\t\"/api-tokens/{access_token}/\" as \"/api-tokens/{access_token}/\",\n\t\t\t{\n\t\t\t\tparams: { path: { access_token: accessToken } as never },\n\t\t\t\tbody: updates,\n\t\t\t},\n\t\t);\n\t\treturn data!;\n\t}\n\n\t/**\n\t * Revoke an API token\n\t * @param accessToken - The access 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 revoke(accessToken: string): Promise<void> {\n\t\tawait this.#api.DELETE(\n\t\t\t\"/api-tokens/{access_token}/\" as \"/api-tokens/{access_token}/\",\n\t\t\t{\n\t\t\t\tparams: { path: { access_token: accessToken } as never },\n\t\t\t},\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 AuthService {\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 login(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 details - 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 signup(details: Signup): Promise<AuthToken> {\n\t\tconst { data } = await this.#api.POST(\"/auth/signup\", {\n\t\t\tbody: details,\n\t\t});\n\t\treturn data!;\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type { Comment, CreateComment, Pagination } from \"@/datatypes/index.js\";\n\n/**\n * Service for handling file comment operations\n */\nexport class CommentsService {\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 query parameters (offset, limit)\n\t * @returns Promise that resolves with the list of comments\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync list(fileId: string, query?: Pagination): Promise<Comment[]> {\n\t\tconst { data } = await this.#api.GET(\"/files/{file_id}/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 create(fileId: string, comment: CreateComment): Promise<Comment> {\n\t\tconst { data } = await this.#api.POST(\"/files/{file_id}/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 * Delete a comment\n\t * @param fileId - File ID\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 delete(fileId: string, commentId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/files/{file_id}/comments/{comment_id}\", {\n\t\t\tparams: { path: { fileId, commentId } },\n\t\t});\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tCreateDocument,\n\tDocument,\n\tPagination,\n\tUpdateDocument,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling document operations\n */\nexport class DocumentsService {\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 query parameters (offset, limit)\n\t * @returns Promise that resolves with the list of documents\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync list(workspaceId: string, query?: Pagination): Promise<Document[]> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspace_id}/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 get(documentId: string): Promise<Document> {\n\t\tconst { data } = await this.#api.GET(\"/documents/{document_id}\", {\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 create(\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/{workspace_id}/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 update(documentId: string, updates: UpdateDocument): Promise<Document> {\n\t\tconst { data } = await this.#api.PATCH(\"/documents/{document_id}\", {\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 delete(documentId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/documents/{document_id}\", {\n\t\t\tparams: { path: { documentId } },\n\t\t});\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tDownloadArchivedFilesRequest,\n\tDownloadMultipleFilesRequest,\n\tFile,\n\tListFilesQuery,\n\tPagination,\n\tUpdateFile,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling file operations\n */\nexport class FilesService {\n\t#api: ApiClient;\n\n\tconstructor(api: ApiClient) {\n\t\tthis.#api = api;\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, sortBy, order, offset, limit)\n\t * @returns Promise that resolves with the list of files\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync list(\n\t\tworkspaceId: string,\n\t\tquery?: ListFilesQuery & Pagination,\n\t): Promise<File[]> {\n\t\tconst { data } = await this.#api.GET(\"/workspaces/{workspace_id}/files/\", {\n\t\t\tparams: { path: { workspaceId }, query },\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 download(fileId: string): Promise<Response> {\n\t\tconst { response } = await this.#api.GET(\"/files/{file_id}\", {\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 update(fileId: string, updates: UpdateFile): Promise<File> {\n\t\tconst { data } = await this.#api.PATCH(\"/files/{file_id}\", {\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 delete(fileId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/files/{file_id}\", {\n\t\t\tparams: { path: { fileId } },\n\t\t});\n\t}\n\n\t/**\n\t * Download multiple files\n\t * @param workspaceId - Workspace ID\n\t * @param request - Download request with file IDs\n\t * @returns Promise that resolves with the download response\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync downloadMultiple(\n\t\tworkspaceId: string,\n\t\trequest: DownloadMultipleFilesRequest,\n\t): Promise<Response> {\n\t\tconst { response } = await this.#api.POST(\n\t\t\t\"/workspaces/{workspace_id}/files/download\",\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 * Download files as an archive\n\t * @param workspaceId - Workspace ID\n\t * @param request - Archive download request\n\t * @returns Promise that resolves with the archive response\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync downloadArchive(\n\t\tworkspaceId: string,\n\t\trequest: DownloadArchivedFilesRequest,\n\t): Promise<Response> {\n\t\tconst { response } = await this.#api.POST(\n\t\t\t\"/workspaces/{workspace_id}/files/archive\",\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","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tCreateIntegration,\n\tIntegration,\n\tListIntegrationsQuery,\n\tPagination,\n\tUpdateIntegration,\n\tUpdateIntegrationCredentials,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling integration operations\n */\nexport class IntegrationsService {\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 query parameters (integrationType, offset, limit)\n\t * @returns Promise that resolves with the list of integrations\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync list(\n\t\tworkspaceId: string,\n\t\tquery?: ListIntegrationsQuery & Pagination,\n\t): Promise<Integration[]> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspace_id}/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 get(integrationId: string): Promise<Integration> {\n\t\tconst { data } = await this.#api.GET(\"/integrations/{integration_id}/\", {\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 create(\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/{workspace_id}/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 update(\n\t\tintegrationId: string,\n\t\tupdates: UpdateIntegration,\n\t): Promise<Integration> {\n\t\tconst { data } = await this.#api.PUT(\"/integrations/{integration_id}/\", {\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 updateCredentials(\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/{integration_id}/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 delete(integrationId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/integrations/{integration_id}/\", {\n\t\t\tparams: { path: { integrationId } },\n\t\t});\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tCreateInvite,\n\tGenerateInviteCode,\n\tInvite,\n\tInviteCode,\n\tListInvitesQuery,\n\tMember,\n\tPagination,\n\tReplyInvite,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling workspace invitation operations\n */\nexport class InvitesService {\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, offset, limit)\n\t * @returns Promise that resolves with the list of invitations\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync list(\n\t\tworkspaceId: string,\n\t\tquery?: ListInvitesQuery & Pagination,\n\t): Promise<Invite[]> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspace_id}/invites/\",\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 * 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 send(workspaceId: string, invite: CreateInvite): Promise<Invite> {\n\t\tconst { data } = await this.#api.POST(\n\t\t\t\"/workspaces/{workspace_id}/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 cancel(inviteId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/invites/{invite_id}/\", {\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 reply(inviteId: string, reply: ReplyInvite): Promise<Invite> {\n\t\tconst { data } = await this.#api.PATCH(\"/invites/{invite_id}/reply/\", {\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 generateCode(\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/{workspace_id}/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 * Join a workspace using an invite code\n\t * @param inviteCode - The invite code\n\t * @returns Promise that resolves with the member details\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync joinWithCode(inviteCode: string): Promise<Member> {\n\t\tconst { data } = await this.#api.POST(\"/invites/{invite_code}/join/\", {\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\tListMembersQuery,\n\tMember,\n\tPagination,\n\tUpdateMemberRole,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling member operations\n */\nexport class MembersService {\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, offset, limit)\n\t * @returns Promise that resolves with the list of members\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync list(\n\t\tworkspaceId: string,\n\t\tquery?: ListMembersQuery & Pagination,\n\t): Promise<Member[]> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspace_id}/members/\",\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 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 get(workspaceId: string, accountId: string): Promise<Member> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspace_id}/members/{account_id}/\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId, accountId } },\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 role - 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 updateRole(\n\t\tworkspaceId: string,\n\t\taccountId: string,\n\t\trole: UpdateMemberRole,\n\t): Promise<Member> {\n\t\tconst { data } = await this.#api.PATCH(\n\t\t\t\"/workspaces/{workspace_id}/members/{account_id}/role\",\n\t\t\t{\n\t\t\t\tparams: { path: { workspaceId, accountId } },\n\t\t\t\tbody: role,\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 remove(workspaceId: string, accountId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/workspaces/{workspace_id}/members/{account_id}/\", {\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 leave(workspaceId: string): Promise<void> {\n\t\tawait this.#api.POST(\"/workspaces/{workspace_id}/members/leave\", {\n\t\t\tparams: { path: { workspaceId } },\n\t\t});\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type { Notification, Pagination } from \"@/datatypes/index.js\";\n\n/**\n * Service for handling account notification operations\n */\nexport class NotificationsService {\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 query parameters (offset, limit)\n\t * @returns Promise that resolves with the list of notifications\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync list(query?: Pagination): Promise<Notification[]> {\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","import type { ApiClient } from \"@/client.js\";\nimport type { IntegrationRun, Pagination } from \"@/datatypes/index.js\";\n\n/**\n * Service for handling integration run operations\n */\nexport class RunsService {\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 query parameters (offset, limit)\n\t * @returns Promise that resolves with the list of integration runs\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync list(\n\t\tworkspaceId: string,\n\t\tquery?: Pagination,\n\t): Promise<IntegrationRun[]> {\n\t\tconst { data } = await this.#api.GET(\"/workspaces/{workspace_id}/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 get(runId: string): Promise<IntegrationRun> {\n\t\tconst { data } = await this.#api.GET(\"/runs/{run_id}\", {\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 StatusService {\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 health(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\tUpdateWebhook,\n\tWebhook,\n\tWebhookWithSecret,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling webhook operations\n */\nexport class WebhooksService {\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 * @returns Promise that resolves with the list of webhooks\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync list(workspaceId: string): Promise<Webhook[]> {\n\t\tconst { data } = await this.#api.GET(\n\t\t\t\"/workspaces/{workspace_id}/webhooks/\",\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 * 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 get(webhookId: string): Promise<Webhook> {\n\t\tconst { data } = await this.#api.GET(\"/webhooks/{webhook_id}/\", {\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 (includes secret, shown only once)\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync create(\n\t\tworkspaceId: string,\n\t\twebhook: CreateWebhook,\n\t): Promise<WebhookWithSecret> {\n\t\tconst { data } = await this.#api.POST(\n\t\t\t\"/workspaces/{workspace_id}/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 update(webhookId: string, updates: UpdateWebhook): Promise<Webhook> {\n\t\tconst { data } = await this.#api.PUT(\"/webhooks/{webhook_id}/\", {\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 delete(webhookId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/webhooks/{webhook_id}/\", {\n\t\t\tparams: { path: { webhookId } },\n\t\t});\n\t}\n}\n","import type { ApiClient } from \"@/client.js\";\nimport type {\n\tCreateWorkspace,\n\tPagination,\n\tUpdateWorkspace,\n\tWorkspace,\n} from \"@/datatypes/index.js\";\n\n/**\n * Service for handling workspace operations\n */\nexport class WorkspacesService {\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 query parameters (offset, limit)\n\t * @returns Promise that resolves with the list of workspaces\n\t * @throws {ApiError} if the request fails\n\t */\n\tasync list(query?: Pagination): Promise<Workspace[]> {\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 get(workspaceId: string): Promise<Workspace> {\n\t\tconst { data } = await this.#api.GET(\"/workspaces/{workspace_id}/\", {\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 create(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 update(\n\t\tworkspaceId: string,\n\t\tupdates: UpdateWorkspace,\n\t): Promise<Workspace> {\n\t\tconst { data } = await this.#api.PATCH(\"/workspaces/{workspace_id}/\", {\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 delete(workspaceId: string): Promise<void> {\n\t\tawait this.#api.DELETE(\"/workspaces/{workspace_id}/\", {\n\t\t\tparams: { path: { workspaceId } },\n\t\t});\n\t}\n}\n","/**\n * @fileoverview Main client for the Nvisy SDK.\n *\n * This module exports the {@link Client} 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 client = new Client({ apiToken: \"your-api-token\" });\n * const account = await client.account.get();\n * ```\n */\n\nimport createClient, { type Client as OpenApiClient } from \"openapi-fetch\";\nimport { type ClientConfig, DEFAULTS } from \"@/config.js\";\nimport { ConfigError } from \"@/errors.js\";\nimport { errorMiddleware } from \"@/middleware/index.js\";\nimport type { paths } from \"@/schema/api.js\";\nimport {\n\tAccountService,\n\tApiTokensService,\n\tAuthService,\n\tCommentsService,\n\tDocumentsService,\n\tFilesService,\n\tIntegrationsService,\n\tInvitesService,\n\tMembersService,\n\tStatusService,\n\tWebhooksService,\n\tWorkspacesService,\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 Client.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 client = new Client({ apiToken: \"your-api-token\" });\n * const account = await client.account.get();\n * const workspaces = await client.workspaces.list();\n * ```\n */\nexport class Client {\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 {ConfigError} If the API token is invalid\n\t *\n\t * @example\n\t * ```typescript\n\t * const client = new Client({\n\t * apiToken: \"your-api-token\",\n\t * baseUrl: \"https://custom.api.nvisy.com\",\n\t * });\n\t * const account = await client.account.get();\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};\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\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 {ConfigError} 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 ConfigError.invalidField(\"apiToken\", \"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 ConfigError.invalidField(\n\t\t\t\t\"apiToken\",\n\t\t\t\t\"must be at least 10 characters\",\n\t\t\t);\n\t\t}\n\n\t\tif (!/^[a-zA-Z0-9_-]+$/.test(trimmedToken)) {\n\t\t\tthrow ConfigError.invalidField(\"apiToken\", \"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 Client instance with the new token\n\t * @throws {ConfigError} If the API token is invalid\n\t *\n\t * @example\n\t * ```typescript\n\t * const client = new Client({ apiToken: \"original-token\" });\n\t * const newClient = client.withApiToken(\"new-token\");\n\t *\n\t * // newClient uses the new token\n\t * // client still uses the original token\n\t * ```\n\t */\n\twithApiToken(apiToken: string): Client {\n\t\treturn new Client({ ...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\t * @returns The AuthService instance\n\t */\n\tget auth(): AuthService {\n\t\treturn new AuthService(this.#api);\n\t}\n\n\t/**\n\t * Service for API status and health checks.\n\t *\n\t * @returns The StatusService instance\n\t */\n\tget status(): StatusService {\n\t\treturn new StatusService(this.#api);\n\t}\n\n\t/**\n\t * Service for managing the authenticated user's account.\n\t *\n\t * @returns The AccountService instance\n\t */\n\tget account(): AccountService {\n\t\treturn new AccountService(this.#api);\n\t}\n\n\t/**\n\t * Service for managing API tokens.\n\t *\n\t * @returns The ApiTokensService instance\n\t */\n\tget apiTokens(): ApiTokensService {\n\t\treturn new ApiTokensService(this.#api);\n\t}\n\n\t/**\n\t * Service for managing file comments.\n\t *\n\t * @returns The CommentsService instance\n\t */\n\tget comments(): CommentsService {\n\t\treturn new CommentsService(this.#api);\n\t}\n\n\t/**\n\t * Service for document operations.\n\t *\n\t * @returns The DocumentsService instance\n\t */\n\tget documents(): DocumentsService {\n\t\treturn new DocumentsService(this.#api);\n\t}\n\n\t/**\n\t * Service for file operations (upload, download, delete).\n\t *\n\t * @returns The FilesService instance\n\t */\n\tget files(): FilesService {\n\t\treturn new FilesService(this.#api);\n\t}\n\n\t/**\n\t * Service for managing integrations.\n\t *\n\t * @returns The IntegrationsService instance\n\t */\n\tget integrations(): IntegrationsService {\n\t\treturn new IntegrationsService(this.#api);\n\t}\n\n\t/**\n\t * Service for managing workspace invitations.\n\t *\n\t * @returns The InvitesService instance\n\t */\n\tget invites(): InvitesService {\n\t\treturn new InvitesService(this.#api);\n\t}\n\n\t/**\n\t * Service for managing workspace members.\n\t *\n\t * @returns The MembersService instance\n\t */\n\tget members(): MembersService {\n\t\treturn new MembersService(this.#api);\n\t}\n\n\t/**\n\t * Service for managing webhooks.\n\t *\n\t * @returns The WebhooksService instance\n\t */\n\tget webhooks(): WebhooksService {\n\t\treturn new WebhooksService(this.#api);\n\t}\n\n\t/**\n\t * Service for managing workspaces.\n\t *\n\t * @returns The WorkspacesService instance\n\t */\n\tget workspaces(): WorkspacesService {\n\t\treturn new WorkspacesService(this.#api);\n\t}\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { b as AccountService, c as ActivitiesService, d as AnnotationsService, e as ApiTokensService, f as AuthService, g as CommentsService, h as DocumentsService, F as FilesService, I as IntegrationsService, i as InvitesService, M as MembersService, N as NotificationsService, R as RunsService, S as StatusService, W as WebhooksService, j as WorkspacesService } from '../client-D6GtLRbO.js';
|
|
2
|
+
import '../workspace-3RLqaMcj.js';
|
|
3
|
+
import 'openapi-fetch';
|