netsuite-sdk 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/transport/oauth.ts","../src/types/errors.ts","../src/transport/retry.ts","../src/transport/middleware-chain.ts","../src/types/http.ts","../src/transport/http-transport.ts","../src/suiteql/suiteql-client.ts","../src/records/record-client.ts","../src/restlets/restlet-client.ts","../src/utils/validation.ts","../src/client.ts","../src/suiteql/query-builder.ts","../src/utils/response-cache.ts","../src/utils/rate-limiter.ts","../src/utils/date.ts","../src/utils/error-parser.ts","../src/utils/url-builder.ts"],"names":["month","day","year"],"mappings":"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","file":"index.mjs","sourcesContent":["import OAuth from 'oauth-1.0a';\nimport { createHmac } from 'node:crypto';\nimport type { OAuthConfig } from '../types/config.js';\nimport type { HttpMethod } from '../types/http.js';\n\n/**\n * Creates a reusable OAuth 1.0a signing function.\n * Each invocation generates a fresh nonce and timestamp,\n * so it's safe to call on every request (including retries).\n */\nexport function createOAuthSigner(\n config: OAuthConfig,\n): (url: string, method: HttpMethod) => Record<string, string> {\n const oauth = new OAuth({\n consumer: { key: config.consumerKey, secret: config.consumerSecret },\n signature_method: 'HMAC-SHA256',\n hash_function: (baseString: string, key: string) =>\n createHmac('sha256', key).update(baseString).digest('base64'),\n realm: config.realm,\n });\n\n const token = { key: config.tokenKey, secret: config.tokenSecret };\n\n return (url: string, method: HttpMethod): Record<string, string> => {\n const requestData = { url, method };\n const authorization = oauth.authorize(requestData, token);\n return oauth.toHeader(authorization) as unknown as Record<string, string>;\n };\n}\n","import type { HttpMethod } from './http.js';\n\nexport interface NetSuiteErrorDetail {\n type?: string;\n title?: string;\n status?: number;\n detail?: string;\n 'o:errorCode'?: string;\n 'o:errorDetails'?: Array<{\n detail?: string;\n 'o:errorCode'?: string;\n 'o:errorPath'?: string;\n }>;\n}\n\nexport class NetSuiteError extends Error {\n public readonly status: number;\n public readonly code: string;\n public readonly details?: NetSuiteErrorDetail;\n public readonly requestUrl?: string;\n public readonly requestMethod?: HttpMethod;\n\n constructor(\n message: string,\n status: number,\n code: string,\n details?: NetSuiteErrorDetail,\n requestUrl?: string,\n requestMethod?: HttpMethod,\n ) {\n super(message);\n this.name = 'NetSuiteError';\n this.status = status;\n this.code = code;\n this.details = details;\n this.requestUrl = requestUrl;\n this.requestMethod = requestMethod;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, NetSuiteError);\n }\n }\n\n /** Whether this is a retryable error (5xx, timeout, network) */\n get isRetryable(): boolean {\n return this.status >= 500 || this.code === 'TIMEOUT' || this.code === 'NETWORK_ERROR';\n }\n\n /** Whether this is an auth error (401, 403) */\n get isAuthError(): boolean {\n return this.status === 401 || this.status === 403;\n }\n\n static isNetSuiteError(error: unknown): error is NetSuiteError {\n return error instanceof NetSuiteError;\n }\n}\n","import { NetSuiteError } from '../types/errors.js';\n\nexport interface RetryConfig {\n maxRetries: number;\n initialDelay: number;\n maxDelay: number;\n backoffFactor: number;\n shouldRetry: (error: unknown, attempt: number) => boolean;\n onRetry?: (error: unknown, attempt: number) => void;\n}\n\nconst DEFAULT_RETRY_CONFIG: RetryConfig = {\n maxRetries: 3,\n initialDelay: 1000,\n maxDelay: 30_000,\n backoffFactor: 2,\n shouldRetry: (error: unknown) => {\n if (error instanceof NetSuiteError) {\n return error.isRetryable;\n }\n // Retry unknown errors (network failures, etc.)\n return true;\n },\n};\n\n/**\n * Execute a function with exponential backoff retry + jitter.\n * Each retry calls `fn()` fresh, so OAuth signatures get new nonces.\n */\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n config: Partial<RetryConfig> = {},\n): Promise<T> {\n const opts = { ...DEFAULT_RETRY_CONFIG, ...config };\n\n for (let attempt = 0; attempt <= opts.maxRetries; attempt++) {\n try {\n return await fn();\n } catch (error) {\n const isLastAttempt = attempt === opts.maxRetries;\n if (isLastAttempt || !opts.shouldRetry(error, attempt)) {\n throw error;\n }\n\n opts.onRetry?.(error, attempt + 1);\n\n const delay = Math.min(\n opts.initialDelay * Math.pow(opts.backoffFactor, attempt),\n opts.maxDelay,\n );\n // Add jitter: +/- 25% to prevent thundering herd\n const jitter = delay * 0.25 * (Math.random() * 2 - 1);\n await new Promise((resolve) => setTimeout(resolve, delay + jitter));\n }\n }\n\n // Unreachable, but satisfies TypeScript\n throw new Error('Retry loop exited unexpectedly');\n}\n","import type { Middleware, RequestContext, ResponseContext } from '../types/middleware.js';\n\n/**\n * Execute a chain of middleware functions, then the final handler.\n * Each middleware can modify the request context before calling next(),\n * and inspect/modify the response after.\n */\nexport function executeMiddlewareChain(\n middlewares: Middleware[],\n context: RequestContext,\n finalHandler: () => Promise<ResponseContext>,\n): Promise<ResponseContext> {\n let index = 0;\n\n function next(): Promise<ResponseContext> {\n if (index >= middlewares.length) {\n return finalHandler();\n }\n const middleware = middlewares[index++];\n return middleware(context, next);\n }\n\n return next();\n}\n","import type { AxiosResponse } from 'axios';\n\nexport type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';\n\nexport interface RequestOptions {\n method?: HttpMethod;\n headers?: Record<string, string>;\n body?: unknown;\n /** Override timeout for this request */\n timeout?: number;\n /** Override retry count for this request */\n maxRetries?: number;\n}\n\nexport interface NetSuiteResponse<T = unknown> {\n data: T;\n status: number;\n headers: Record<string, string>;\n duration: number;\n}\n\n/** Convert AxiosResponse headers to a plain record */\nexport function extractHeaders(response: AxiosResponse): Record<string, string> {\n const headers: Record<string, string> = {};\n if (response.headers) {\n for (const [key, value] of Object.entries(response.headers)) {\n if (typeof value === 'string') {\n headers[key] = value;\n }\n }\n }\n return headers;\n}\n","import axios, { type AxiosInstance, type AxiosError } from 'axios';\nimport http from 'node:http';\nimport https from 'node:https';\nimport { createOAuthSigner } from './oauth.js';\nimport { withRetry } from './retry.js';\nimport { executeMiddlewareChain } from './middleware-chain.js';\nimport { NetSuiteError } from '../types/errors.js';\nimport { extractHeaders } from '../types/http.js';\nimport type { NetSuiteConfig } from '../types/config.js';\nimport type { HttpMethod, RequestOptions, NetSuiteResponse } from '../types/http.js';\nimport type { Middleware, RequestContext, ResponseContext } from '../types/middleware.js';\nimport type { Logger } from '../types/logger.js';\n\ninterface ResolvedConfig {\n timeout: number;\n maxRetries: number;\n retryDelay: number;\n defaultHeaders: Record<string, string>;\n logger?: Logger;\n}\n\nexport class HttpTransport {\n private sign: (url: string, method: HttpMethod) => Record<string, string>;\n private axiosInstance: AxiosInstance;\n private middlewares: Middleware[] = [];\n private config: ResolvedConfig;\n\n constructor(config: NetSuiteConfig) {\n this.config = {\n timeout: config.timeout ?? 30_000,\n maxRetries: config.maxRetries ?? 3,\n retryDelay: config.retryDelay ?? 1000,\n defaultHeaders: config.defaultHeaders ?? {},\n logger: config.logger,\n };\n\n this.sign = createOAuthSigner(config.auth);\n\n this.axiosInstance = axios.create({\n timeout: this.config.timeout,\n headers: {\n 'Content-Type': 'application/json',\n 'Accept-Encoding': 'gzip, deflate',\n },\n httpAgent: new http.Agent({ keepAlive: true }),\n httpsAgent: new https.Agent({ keepAlive: true }),\n maxRedirects: 5,\n // Let us handle all status codes in our error handling\n validateStatus: () => true,\n });\n }\n\n /** Add a middleware to the chain. Returns `this` for chaining. */\n use(middleware: Middleware): this {\n this.middlewares.push(middleware);\n return this;\n }\n\n /** Execute an HTTP request with OAuth signing, retry, and middleware. */\n async request<T = unknown>(\n url: string,\n options: RequestOptions = {},\n ): Promise<NetSuiteResponse<T>> {\n const method = options.method ?? 'GET';\n const timeout = options.timeout ?? this.config.timeout;\n const maxRetries = options.maxRetries ?? this.config.maxRetries;\n\n return withRetry(\n async () => {\n // Re-sign on each attempt (fresh nonce/timestamp)\n const authHeaders = this.sign(url, method);\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...this.config.defaultHeaders,\n ...authHeaders,\n ...options.headers,\n };\n\n const context: RequestContext = {\n url,\n method,\n headers,\n body: options.body,\n metadata: {},\n };\n\n // Execute middleware chain, then the actual HTTP call\n const response = await executeMiddlewareChain(\n this.middlewares,\n context,\n () => this.executeRequest<T>(context, timeout),\n );\n\n return {\n data: response.body as T,\n status: response.status,\n headers: response.headers,\n duration: response.duration,\n };\n },\n {\n maxRetries,\n initialDelay: this.config.retryDelay,\n shouldRetry: (error) => {\n if (error instanceof NetSuiteError) {\n return error.isRetryable;\n }\n return true;\n },\n onRetry: (error, attempt) => {\n this.config.logger?.warn(`Retry attempt ${attempt}/${maxRetries}`, {\n url,\n method,\n error,\n });\n },\n },\n );\n }\n\n private async executeRequest<T>(\n context: RequestContext,\n timeout: number,\n ): Promise<ResponseContext> {\n const startTime = performance.now();\n\n try {\n this.config.logger?.debug(`${context.method} ${context.url}`, {\n headers: Object.keys(context.headers),\n });\n\n const response = await this.axiosInstance.request({\n url: context.url,\n method: context.method,\n headers: context.headers,\n data:\n context.body && ['POST', 'PUT', 'PATCH'].includes(context.method)\n ? context.body\n : undefined,\n timeout,\n });\n\n const duration = Math.round(performance.now() - startTime);\n\n this.config.logger?.info(`${context.method} ${context.url} → ${response.status}`, {\n duration,\n });\n\n // Throw on non-2xx responses\n if (response.status >= 400) {\n const errorBody = response.data ?? {};\n const message =\n errorBody.detail ??\n errorBody.title ??\n errorBody.message ??\n `HTTP ${response.status}`;\n const code =\n errorBody['o:errorCode'] ??\n errorBody.code ??\n `HTTP_${response.status}`;\n\n throw new NetSuiteError(\n message,\n response.status,\n code,\n errorBody,\n context.url,\n context.method,\n );\n }\n\n return {\n status: response.status,\n headers: extractHeaders(response),\n body: response.status === 204 ? undefined : response.data,\n duration,\n };\n } catch (error) {\n if (error instanceof NetSuiteError) {\n throw error;\n }\n\n const duration = Math.round(performance.now() - startTime);\n const axiosError = error as AxiosError;\n\n if (axiosError.code === 'ECONNABORTED' || axiosError.code === 'ERR_CANCELED') {\n throw new NetSuiteError(\n `Request timed out after ${timeout}ms`,\n 504,\n 'TIMEOUT',\n undefined,\n context.url,\n context.method,\n );\n }\n\n throw new NetSuiteError(\n axiosError.message || 'Network error',\n 0,\n 'NETWORK_ERROR',\n undefined,\n context.url,\n context.method,\n );\n }\n }\n}\n","import type { HttpTransport } from '../transport/http-transport.js';\nimport type { SuiteQLOptions, SuiteQLResult, SuiteQLRawResponse } from '../types/suiteql.js';\n\n/**\n * SuiteQL client for executing queries against the NetSuite SuiteQL REST endpoint.\n *\n * Handles the `Prefer: transient` header requirement and automatic pagination.\n */\nexport class SuiteQLClient {\n private transport: HttpTransport;\n private baseUrl: string;\n\n constructor(transport: HttpTransport, accountId: string) {\n this.transport = transport;\n const normalizedId = accountId.toLowerCase().replace(/_/g, '-');\n this.baseUrl = `https://${normalizedId}.suitetalk.api.netsuite.com/services/rest/query/v1/suiteql`;\n }\n\n /**\n * Execute a SuiteQL query and return all matching rows.\n * Automatically paginates across multiple pages.\n *\n * @example\n * ```ts\n * const result = await client.suiteql.query<Customer>(\n * 'SELECT id, companyname, email FROM customer WHERE isinactive = \\'F\\'',\n * { pageSize: 500 }\n * );\n * console.log(result.items); // all rows\n * console.log(result.totalResults); // total count from NetSuite\n * ```\n */\n async query<T = Record<string, unknown>>(\n sql: string,\n options: SuiteQLOptions = {},\n ): Promise<SuiteQLResult<T>> {\n const {\n pageSize = 1000,\n offset: startOffset = 0,\n maxRows = Infinity,\n timeout,\n } = options;\n\n const allItems: T[] = [];\n let currentOffset = startOffset;\n let totalResults = 0;\n let pagesFetched = 0;\n const startTime = performance.now();\n\n while (true) {\n const effectiveLimit = Math.min(pageSize, maxRows - allItems.length);\n if (effectiveLimit <= 0) break;\n\n const url = `${this.baseUrl}?limit=${effectiveLimit}&offset=${currentOffset}`;\n\n const response = await this.transport.request<SuiteQLRawResponse<T>>(url, {\n method: 'POST',\n body: { q: sql },\n headers: { Prefer: 'transient' },\n timeout,\n });\n\n const page = response.data;\n totalResults = page.totalResults;\n pagesFetched++;\n\n allItems.push(...page.items);\n\n // Determine if more pages exist\n const hasMore = page.hasMore || currentOffset + page.items.length < totalResults;\n if (!hasMore || allItems.length >= maxRows || page.items.length === 0) break;\n\n currentOffset += page.items.length;\n }\n\n return {\n items: allItems,\n totalResults,\n pagesFetched,\n hasMore: allItems.length < totalResults,\n duration: Math.round(performance.now() - startTime),\n };\n }\n\n /**\n * Execute a query and return a single row, or null if not found.\n *\n * @example\n * ```ts\n * const customer = await client.suiteql.queryOne<Customer>(\n * 'SELECT id, companyname FROM customer WHERE id = 123'\n * );\n * ```\n */\n async queryOne<T = Record<string, unknown>>(\n sql: string,\n options?: Omit<SuiteQLOptions, 'maxRows'>,\n ): Promise<T | null> {\n const result = await this.query<T>(sql, { ...options, maxRows: 1 });\n return result.items[0] ?? null;\n }\n\n /**\n * Execute a query and yield pages as an async generator.\n * Useful for streaming large result sets without holding everything in memory.\n *\n * @example\n * ```ts\n * for await (const page of client.suiteql.queryPages<Transaction>(\n * 'SELECT id, tranid, total FROM transaction',\n * { pageSize: 500 }\n * )) {\n * await processBatch(page);\n * }\n * ```\n */\n async *queryPages<T = Record<string, unknown>>(\n sql: string,\n options: SuiteQLOptions = {},\n ): AsyncGenerator<T[], void, undefined> {\n const {\n pageSize = 1000,\n offset: startOffset = 0,\n maxRows = Infinity,\n timeout,\n } = options;\n\n let currentOffset = startOffset;\n let totalYielded = 0;\n\n while (true) {\n const effectiveLimit = Math.min(pageSize, maxRows - totalYielded);\n if (effectiveLimit <= 0) return;\n\n const url = `${this.baseUrl}?limit=${effectiveLimit}&offset=${currentOffset}`;\n\n const response = await this.transport.request<SuiteQLRawResponse<T>>(url, {\n method: 'POST',\n body: { q: sql },\n headers: { Prefer: 'transient' },\n timeout,\n });\n\n const page = response.data;\n\n if (page.items.length === 0) return;\n\n yield page.items;\n\n totalYielded += page.items.length;\n const hasMore = page.hasMore || currentOffset + page.items.length < page.totalResults;\n if (!hasMore || totalYielded >= maxRows) return;\n\n currentOffset += page.items.length;\n }\n }\n}\n","import type { HttpTransport } from '../transport/http-transport.js';\nimport type { NetSuiteResponse } from '../types/http.js';\nimport type {\n RecordType,\n RecordGetOptions,\n RecordListOptions,\n RecordListResponse,\n} from '../types/records.js';\n\n/**\n * Client for NetSuite REST Record API v1.\n * Provides CRUD operations on NetSuite records.\n */\nexport class RecordClient {\n private transport: HttpTransport;\n private baseUrl: string;\n\n constructor(transport: HttpTransport, accountId: string) {\n this.transport = transport;\n const normalizedId = accountId.toLowerCase().replace(/_/g, '-');\n this.baseUrl = `https://${normalizedId}.suitetalk.api.netsuite.com/services/rest/record/v1`;\n }\n\n /** Get a record by type and internal ID */\n async get<T = Record<string, unknown>>(\n recordType: RecordType,\n id: string | number,\n options?: RecordGetOptions,\n ): Promise<NetSuiteResponse<T>> {\n const params = new URLSearchParams();\n if (options?.fields?.length) {\n params.set('fields', options.fields.join(','));\n }\n if (options?.expandSubResources) {\n params.set('expandSubResources', 'true');\n }\n const qs = params.toString();\n const url = `${this.baseUrl}/${recordType}/${id}${qs ? `?${qs}` : ''}`;\n\n return this.transport.request<T>(url);\n }\n\n /** List records of a given type */\n async list<T = Record<string, unknown>>(\n recordType: RecordType,\n options?: RecordListOptions,\n ): Promise<NetSuiteResponse<RecordListResponse<T>>> {\n const params = new URLSearchParams();\n if (options?.limit != null) params.set('limit', String(options.limit));\n if (options?.offset != null) params.set('offset', String(options.offset));\n if (options?.fields?.length) params.set('fields', options.fields.join(','));\n if (options?.expandSubResources) params.set('expandSubResources', 'true');\n if (options?.query) {\n for (const [key, value] of Object.entries(options.query)) {\n params.set(key, value);\n }\n }\n const qs = params.toString();\n const url = `${this.baseUrl}/${recordType}${qs ? `?${qs}` : ''}`;\n\n return this.transport.request<RecordListResponse<T>>(url);\n }\n\n /** Create a new record */\n async create<T = Record<string, unknown>>(\n recordType: RecordType,\n body: Record<string, unknown>,\n ): Promise<NetSuiteResponse<T>> {\n return this.transport.request<T>(`${this.baseUrl}/${recordType}`, {\n method: 'POST',\n body,\n });\n }\n\n /** Update an existing record (partial update via PATCH) */\n async update<T = Record<string, unknown>>(\n recordType: RecordType,\n id: string | number,\n body: Record<string, unknown>,\n ): Promise<NetSuiteResponse<T>> {\n return this.transport.request<T>(`${this.baseUrl}/${recordType}/${id}`, {\n method: 'PATCH',\n body,\n });\n }\n\n /** Replace an existing record (full replace via PUT) */\n async replace<T = Record<string, unknown>>(\n recordType: RecordType,\n id: string | number,\n body: Record<string, unknown>,\n ): Promise<NetSuiteResponse<T>> {\n return this.transport.request<T>(`${this.baseUrl}/${recordType}/${id}`, {\n method: 'PUT',\n body,\n });\n }\n\n /** Delete a record */\n async delete(\n recordType: RecordType,\n id: string | number,\n ): Promise<NetSuiteResponse<void>> {\n return this.transport.request<void>(`${this.baseUrl}/${recordType}/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Upsert: create or update based on external ID */\n async upsert<T = Record<string, unknown>>(\n recordType: RecordType,\n externalIdField: string,\n externalIdValue: string,\n body: Record<string, unknown>,\n ): Promise<NetSuiteResponse<T>> {\n return this.transport.request<T>(\n `${this.baseUrl}/${recordType}/eid:${externalIdField}=${externalIdValue}`,\n { method: 'PUT', body },\n );\n }\n}\n","import type { HttpTransport } from '../transport/http-transport.js';\nimport type { RequestOptions, NetSuiteResponse } from '../types/http.js';\n\nexport interface RestletParams {\n /** Script ID of the RESTlet */\n script: string | number;\n /** Deploy ID of the RESTlet */\n deploy: string | number;\n /** Additional query parameters */\n params?: Record<string, string | number | boolean>;\n}\n\n/**\n * Client for calling NetSuite RESTlets.\n * Auto-builds the RESTlet URL from account ID, script, and deploy IDs.\n */\nexport class RestletClient {\n private transport: HttpTransport;\n private baseUrl: string;\n\n constructor(transport: HttpTransport, accountId: string) {\n this.transport = transport;\n const normalizedId = accountId.toLowerCase().replace(/_/g, '-');\n this.baseUrl = `https://${normalizedId}.restlets.api.netsuite.com/app/site/hosting/restlet.nl`;\n }\n\n /** Execute a RESTlet call */\n async call<T = unknown>(\n restlet: RestletParams,\n options?: RequestOptions,\n ): Promise<NetSuiteResponse<T>> {\n const searchParams = new URLSearchParams({\n script: String(restlet.script),\n deploy: String(restlet.deploy),\n });\n\n if (restlet.params) {\n for (const [key, value] of Object.entries(restlet.params)) {\n searchParams.set(key, String(value));\n }\n }\n\n const url = `${this.baseUrl}?${searchParams.toString()}`;\n return this.transport.request<T>(url, options);\n }\n}\n","import type { NetSuiteConfig } from '../types/config.js';\n\n/** Validate a NetSuiteConfig and return an array of error messages (empty = valid). */\nexport function validateConfig(config: unknown): string[] {\n const errors: string[] = [];\n\n if (!config || typeof config !== 'object') {\n return ['Config must be a non-null object'];\n }\n\n const c = config as Record<string, unknown>;\n\n // auth\n if (!c.auth || typeof c.auth !== 'object') {\n errors.push('auth is required and must be an object');\n } else {\n const auth = c.auth as Record<string, unknown>;\n const requiredFields = ['consumerKey', 'consumerSecret', 'tokenKey', 'tokenSecret', 'realm'];\n for (const field of requiredFields) {\n if (!auth[field] || typeof auth[field] !== 'string') {\n errors.push(`auth.${field} is required and must be a non-empty string`);\n }\n }\n }\n\n // accountId\n if (!c.accountId || typeof c.accountId !== 'string') {\n errors.push('accountId is required and must be a non-empty string');\n }\n\n return errors;\n}\n","import { HttpTransport } from './transport/http-transport.js';\nimport { SuiteQLClient } from './suiteql/suiteql-client.js';\nimport { RecordClient } from './records/record-client.js';\nimport { RestletClient } from './restlets/restlet-client.js';\nimport { validateConfig } from './utils/validation.js';\nimport type { NetSuiteConfig } from './types/config.js';\nimport type { RequestOptions, NetSuiteResponse } from './types/http.js';\nimport type { Middleware } from './types/middleware.js';\n\n/**\n * Main NetSuite API client.\n *\n * Provides namespaced access to SuiteQL, Record, and RESTlet APIs,\n * plus raw HTTP methods as an escape hatch.\n *\n * @example\n * ```ts\n * import { NetSuiteClient } from 'netsuite-sdk';\n *\n * const client = new NetSuiteClient({\n * auth: {\n * consumerKey: '...',\n * consumerSecret: '...',\n * tokenKey: '...',\n * tokenSecret: '...',\n * realm: '1234567',\n * },\n * accountId: '1234567',\n * });\n *\n * // SuiteQL\n * const result = await client.suiteql.query('SELECT id, companyname FROM customer');\n *\n * // Records\n * const customer = await client.records.get('customer', 123);\n *\n * // RESTlets\n * const data = await client.restlets.call({ script: '1', deploy: '1' });\n * ```\n */\nexport class NetSuiteClient {\n /** SuiteQL query execution and builder */\n public readonly suiteql: SuiteQLClient;\n\n /** REST Record API CRUD */\n public readonly records: RecordClient;\n\n /** RESTlet caller */\n public readonly restlets: RestletClient;\n\n private readonly transport: HttpTransport;\n\n constructor(config: NetSuiteConfig) {\n const errors = validateConfig(config);\n if (errors.length > 0) {\n throw new Error(`Invalid NetSuite configuration:\\n - ${errors.join('\\n - ')}`);\n }\n\n this.transport = new HttpTransport(config);\n this.suiteql = new SuiteQLClient(this.transport, config.accountId);\n this.records = new RecordClient(this.transport, config.accountId);\n this.restlets = new RestletClient(this.transport, config.accountId);\n }\n\n /** Add middleware to all requests. Returns `this` for chaining. */\n use(middleware: Middleware): this {\n this.transport.use(middleware);\n return this;\n }\n\n /** Make a raw HTTP request (escape hatch for custom endpoints). */\n async request<T = unknown>(\n url: string,\n options?: RequestOptions,\n ): Promise<NetSuiteResponse<T>> {\n return this.transport.request<T>(url, options);\n }\n\n /** Convenience: GET request */\n async get<T = unknown>(\n url: string,\n options?: Omit<RequestOptions, 'method'>,\n ): Promise<NetSuiteResponse<T>> {\n return this.transport.request<T>(url, { ...options, method: 'GET' });\n }\n\n /** Convenience: POST request */\n async post<T = unknown>(\n url: string,\n body?: unknown,\n options?: Omit<RequestOptions, 'method' | 'body'>,\n ): Promise<NetSuiteResponse<T>> {\n return this.transport.request<T>(url, { ...options, method: 'POST', body });\n }\n\n /** Convenience: PUT request */\n async put<T = unknown>(\n url: string,\n body?: unknown,\n options?: Omit<RequestOptions, 'method' | 'body'>,\n ): Promise<NetSuiteResponse<T>> {\n return this.transport.request<T>(url, { ...options, method: 'PUT', body });\n }\n\n /** Convenience: PATCH request */\n async patch<T = unknown>(\n url: string,\n body?: unknown,\n options?: Omit<RequestOptions, 'method' | 'body'>,\n ): Promise<NetSuiteResponse<T>> {\n return this.transport.request<T>(url, { ...options, method: 'PATCH', body });\n }\n\n /** Convenience: DELETE request */\n async delete<T = unknown>(\n url: string,\n options?: Omit<RequestOptions, 'method'>,\n ): Promise<NetSuiteResponse<T>> {\n return this.transport.request<T>(url, { ...options, method: 'DELETE' });\n }\n}\n","/**\n * Fluent builder for constructing SuiteQL queries with basic value escaping.\n *\n * @example\n * ```ts\n * import { suiteql } from 'netsuite-sdk';\n *\n * const sql = suiteql()\n * .select('c.id', 'c.companyname', 'c.email')\n * .from('customer', 'c')\n * .leftJoin('transaction t', 'c.id = t.entity')\n * .whereEquals('c.isinactive', 'F')\n * .whereNotNull('c.email')\n * .groupBy('c.id', 'c.companyname', 'c.email')\n * .orderBy('c.companyname', 'ASC')\n * .build();\n * ```\n */\nexport class SuiteQLBuilder {\n private _select: string[] = [];\n private _from = '';\n private _joins: string[] = [];\n private _where: string[] = [];\n private _groupBy: string[] = [];\n private _orderBy: string[] = [];\n private _having: string[] = [];\n\n /** Add columns to SELECT clause */\n select(...columns: string[]): this {\n this._select.push(...columns);\n return this;\n }\n\n /** Set the FROM table, with optional alias */\n from(table: string, alias?: string): this {\n this._from = alias ? `${table} ${alias}` : table;\n return this;\n }\n\n /** Add a JOIN clause */\n join(table: string, condition: string, type: 'INNER' | 'LEFT' | 'RIGHT' = 'INNER'): this {\n this._joins.push(`${type} JOIN ${table} ON ${condition}`);\n return this;\n }\n\n /** Add a LEFT JOIN clause */\n leftJoin(table: string, condition: string): this {\n return this.join(table, condition, 'LEFT');\n }\n\n /** Add a RIGHT JOIN clause */\n rightJoin(table: string, condition: string): this {\n return this.join(table, condition, 'RIGHT');\n }\n\n /** Add a raw WHERE condition */\n where(condition: string): this {\n this._where.push(condition);\n return this;\n }\n\n /** Add a WHERE column = value condition. Values are escaped. */\n whereEquals(column: string, value: string | number | boolean): this {\n this._where.push(`${column} = ${escapeValue(value)}`);\n return this;\n }\n\n /** Add a WHERE column != value condition. Values are escaped. */\n whereNotEquals(column: string, value: string | number | boolean): this {\n this._where.push(`${column} != ${escapeValue(value)}`);\n return this;\n }\n\n /** Add a WHERE column IN (...) condition. Values are escaped. */\n whereIn(column: string, values: (string | number)[]): this {\n const escaped = values.map(escapeValue);\n this._where.push(`${column} IN (${escaped.join(', ')})`);\n return this;\n }\n\n /** Add a WHERE column IS NULL condition */\n whereNull(column: string): this {\n this._where.push(`${column} IS NULL`);\n return this;\n }\n\n /** Add a WHERE column IS NOT NULL condition */\n whereNotNull(column: string): this {\n this._where.push(`${column} IS NOT NULL`);\n return this;\n }\n\n /** Add a WHERE column BETWEEN start AND end condition. Values are escaped. */\n whereBetween(column: string, start: string | number, end: string | number): this {\n this._where.push(`${column} BETWEEN ${escapeValue(start)} AND ${escapeValue(end)}`);\n return this;\n }\n\n /** Add a WHERE column LIKE pattern condition. Value is escaped. */\n whereLike(column: string, pattern: string): this {\n this._where.push(`${column} LIKE ${escapeValue(pattern)}`);\n return this;\n }\n\n /** Add columns to GROUP BY clause */\n groupBy(...columns: string[]): this {\n this._groupBy.push(...columns);\n return this;\n }\n\n /** Add a HAVING condition (used with GROUP BY) */\n having(condition: string): this {\n this._having.push(condition);\n return this;\n }\n\n /** Add a column to ORDER BY clause */\n orderBy(column: string, direction: 'ASC' | 'DESC' = 'ASC'): this {\n this._orderBy.push(`${column} ${direction}`);\n return this;\n }\n\n /** Build the SQL string. Throws if SELECT or FROM is missing. */\n build(): string {\n if (this._select.length === 0) {\n throw new Error('SuiteQLBuilder: SELECT clause is required');\n }\n if (!this._from) {\n throw new Error('SuiteQLBuilder: FROM clause is required');\n }\n\n const parts: string[] = [\n `SELECT ${this._select.join(', ')}`,\n `FROM ${this._from}`,\n ];\n\n if (this._joins.length > 0) {\n parts.push(this._joins.join(' '));\n }\n\n if (this._where.length > 0) {\n parts.push(`WHERE ${this._where.join(' AND ')}`);\n }\n\n if (this._groupBy.length > 0) {\n parts.push(`GROUP BY ${this._groupBy.join(', ')}`);\n }\n\n if (this._having.length > 0) {\n parts.push(`HAVING ${this._having.join(' AND ')}`);\n }\n\n if (this._orderBy.length > 0) {\n parts.push(`ORDER BY ${this._orderBy.join(', ')}`);\n }\n\n return parts.join(' ');\n }\n\n /** Alias for build() */\n toString(): string {\n return this.build();\n }\n}\n\n/** Escape a value for safe inclusion in a SuiteQL query */\nfunction escapeValue(value: string | number | boolean): string {\n if (typeof value === 'number') {\n return String(value);\n }\n if (typeof value === 'boolean') {\n return value ? \"'T'\" : \"'F'\";\n }\n // Escape single quotes by doubling them\n const escaped = value.replace(/'/g, \"''\");\n return `'${escaped}'`;\n}\n\n/** Factory function for creating a new SuiteQL query builder */\nexport function suiteql(): SuiteQLBuilder {\n return new SuiteQLBuilder();\n}\n","interface CacheEntry<T> {\n data: T;\n expiresAt: number;\n}\n\n/**\n * Simple in-memory TTL-based cache for API responses.\n */\nexport class ResponseCache {\n private cache = new Map<string, CacheEntry<unknown>>();\n\n /** Get a cached value, or null if not found or expired. */\n get<T>(key: string): T | null {\n const entry = this.cache.get(key);\n if (!entry) return null;\n\n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return null;\n }\n\n return entry.data as T;\n }\n\n /** Set a cached value with a TTL in seconds. */\n set(key: string, data: unknown, ttlSeconds: number): void {\n this.cache.set(key, {\n data,\n expiresAt: Date.now() + ttlSeconds * 1000,\n });\n }\n\n /** Delete a specific cache entry. */\n delete(key: string): boolean {\n return this.cache.delete(key);\n }\n\n /** Clear all cached entries. */\n clear(): void {\n this.cache.clear();\n }\n\n /** Get the number of entries (including expired). */\n get size(): number {\n return this.cache.size;\n }\n}\n\n/** Create a cache key from request parameters. */\nexport function createCacheKey(\n url: string,\n method: string,\n params?: unknown,\n): string {\n const base = `${method}:${url}`;\n if (params) {\n return `${base}:${JSON.stringify(params)}`;\n }\n return base;\n}\n","/**\n * Sliding-window rate limiter.\n * Tracks requests within a time window and prevents exceeding the limit.\n */\nexport class RateLimiter {\n private timestamps: number[] = [];\n private maxRequests: number;\n private windowMs: number;\n\n constructor(maxRequests = 100, windowMs = 60_000) {\n this.maxRequests = maxRequests;\n this.windowMs = windowMs;\n }\n\n /** Check if a request can be made without exceeding the limit. */\n canMakeRequest(): boolean {\n this.pruneExpired();\n return this.timestamps.length < this.maxRequests;\n }\n\n /** Record that a request was made. */\n recordRequest(): void {\n this.pruneExpired();\n this.timestamps.push(Date.now());\n }\n\n /** Get the number of remaining requests in the current window. */\n getRemainingRequests(): number {\n this.pruneExpired();\n return Math.max(0, this.maxRequests - this.timestamps.length);\n }\n\n /** Get ms until the next request slot opens. Returns 0 if a slot is available. */\n getTimeUntilNextSlot(): number {\n this.pruneExpired();\n if (this.timestamps.length < this.maxRequests) return 0;\n const oldest = this.timestamps[0];\n return Math.max(0, oldest + this.windowMs - Date.now());\n }\n\n private pruneExpired(): void {\n const cutoff = Date.now() - this.windowMs;\n while (this.timestamps.length > 0 && this.timestamps[0] <= cutoff) {\n this.timestamps.shift();\n }\n }\n}\n","/**\n * Format a Date as a NetSuite date string (YYYY-MM-DD).\n */\nexport function formatNetSuiteDate(date: Date): string {\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n return `${year}-${month}-${day}`;\n}\n\n/**\n * Parse a NetSuite date string (YYYY-MM-DD or MM/DD/YYYY) into a Date.\n */\nexport function parseNetSuiteDate(dateString: string): Date {\n // Handle MM/DD/YYYY format\n if (dateString.includes('/')) {\n const [month, day, year] = dateString.split('/');\n return new Date(Number(year), Number(month) - 1, Number(day));\n }\n // Handle YYYY-MM-DD format\n const [year, month, day] = dateString.split('-');\n return new Date(Number(year), Number(month) - 1, Number(day));\n}\n","import type { NetSuiteErrorDetail } from '../types/errors.js';\n\n/**\n * Parse a NetSuite error response body into a structured format.\n */\nexport function parseNetSuiteError(error: unknown): {\n message: string;\n code?: string;\n details?: NetSuiteErrorDetail;\n} {\n if (!error || typeof error !== 'object') {\n return { message: String(error) };\n }\n\n const e = error as Record<string, unknown>;\n\n // Standard NetSuite REST API error format\n if (e.title || e.detail) {\n return {\n message: String(e.detail ?? e.title ?? 'Unknown error'),\n code: e['o:errorCode'] as string | undefined,\n details: e as NetSuiteErrorDetail,\n };\n }\n\n // Fallback for other error formats\n if (e.message) {\n return {\n message: String(e.message),\n code: e.code as string | undefined,\n };\n }\n\n return { message: JSON.stringify(error) };\n}\n","/**\n * Normalize a NetSuite account ID for use in API URLs.\n * Sandbox accounts use underscore format (e.g., \"1234567_SB1\")\n * but URLs require hyphens (e.g., \"1234567-sb1\").\n */\nexport function normalizeAccountId(accountId: string): string {\n return accountId.toLowerCase().replace(/_/g, '-');\n}\n\n/** Build the SuiteTalk REST API base URL */\nexport function buildSuiteTalkUrl(accountId: string): string {\n return `https://${normalizeAccountId(accountId)}.suitetalk.api.netsuite.com`;\n}\n\n/** Build the RESTlet base URL */\nexport function buildRestletUrl(accountId: string): string {\n return `https://${normalizeAccountId(accountId)}.restlets.api.netsuite.com`;\n}\n"]}
1
+ {"version":3,"sources":["../src/transport/oauth.js","../src/types/errors.js","../src/transport/retry.js","../src/transport/middleware-chain.js","../src/types/http.js","../src/transport/http-transport.js","../src/suiteql/suiteql-client.js","../src/records/record-client.js","../src/restlets/restlet-client.js","../src/utils/validation.js","../src/client.js","../src/suiteql/query-builder.js","../src/utils/response-cache.js","../src/utils/rate-limiter.js","../src/utils/date.js","../src/utils/error-parser.js","../src/utils/url-builder.js","../src/index.ts","../src/records/soap-client.ts"],"names":["exports","d","b","NetSuiteError","attempt","HttpTransport","_this","_a","SuiteQLClient","RecordClient","RestletClient","validateConfig","NetSuiteClient","suiteql","SuiteQLBuilder","createCacheKey","ResponseCache","RateLimiter","formatNetSuiteDate","parseNetSuiteDate","parseNetSuiteError","normalizeAccountId"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createOAuthSigner = createOAuthSigner;\nvar oauth_1_0a_1 = require(\"oauth-1.0a\");\nvar node_crypto_1 = require(\"node:crypto\");\n/**\n * Creates a reusable OAuth 1.0a signing function.\n * Each invocation generates a fresh nonce and timestamp,\n * so it's safe to call on every request (including retries).\n */\nfunction createOAuthSigner(config) {\n var oauth = new oauth_1_0a_1.default({\n consumer: { key: config.consumerKey, secret: config.consumerSecret },\n signature_method: 'HMAC-SHA256',\n hash_function: function (baseString, key) {\n return (0, node_crypto_1.createHmac)('sha256', key).update(baseString).digest('base64');\n },\n realm: config.realm,\n });\n var token = { key: config.tokenKey, secret: config.tokenSecret };\n return function (url, method) {\n var requestData = { url: url, method: method };\n var authorization = oauth.authorize(requestData, token);\n return oauth.toHeader(authorization);\n };\n}\n","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NetSuiteError = void 0;\nvar NetSuiteError = /** @class */ (function (_super) {\n __extends(NetSuiteError, _super);\n function NetSuiteError(message, status, code, details, requestUrl, requestMethod) {\n var _this = _super.call(this, message) || this;\n _this.name = 'NetSuiteError';\n _this.status = status;\n _this.code = code;\n _this.details = details;\n _this.requestUrl = requestUrl;\n _this.requestMethod = requestMethod;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, NetSuiteError);\n }\n return _this;\n }\n Object.defineProperty(NetSuiteError.prototype, \"isRetryable\", {\n /** Whether this is a retryable error (5xx, timeout, network) */\n get: function () {\n return this.status >= 500 || this.code === 'TIMEOUT' || this.code === 'NETWORK_ERROR';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NetSuiteError.prototype, \"isAuthError\", {\n /** Whether this is an auth error (401, 403) */\n get: function () {\n return this.status === 401 || this.status === 403;\n },\n enumerable: false,\n configurable: true\n });\n NetSuiteError.isNetSuiteError = function (error) {\n return error instanceof NetSuiteError;\n };\n return NetSuiteError;\n}(Error));\nexports.NetSuiteError = NetSuiteError;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withRetry = withRetry;\nvar errors_js_1 = require(\"../types/errors.js\");\nvar DEFAULT_RETRY_CONFIG = {\n maxRetries: 3,\n initialDelay: 1000,\n maxDelay: 30000,\n backoffFactor: 2,\n shouldRetry: function (error) {\n if (error instanceof errors_js_1.NetSuiteError) {\n return error.isRetryable;\n }\n // Retry unknown errors (network failures, etc.)\n return true;\n },\n};\n/**\n * Execute a function with exponential backoff retry + jitter.\n * Each retry calls `fn()` fresh, so OAuth signatures get new nonces.\n */\nfunction withRetry(fn_1) {\n return __awaiter(this, arguments, void 0, function (fn, config) {\n var opts, _loop_1, attempt, state_1;\n var _a;\n if (config === void 0) { config = {}; }\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n opts = __assign(__assign({}, DEFAULT_RETRY_CONFIG), config);\n _loop_1 = function (attempt) {\n var _c, error_1, isLastAttempt, delay_1, jitter_1;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _d.trys.push([0, 2, , 4]);\n _c = {};\n return [4 /*yield*/, fn()];\n case 1: return [2 /*return*/, (_c.value = _d.sent(), _c)];\n case 2:\n error_1 = _d.sent();\n isLastAttempt = attempt === opts.maxRetries;\n if (isLastAttempt || !opts.shouldRetry(error_1, attempt)) {\n throw error_1;\n }\n (_a = opts.onRetry) === null || _a === void 0 ? void 0 : _a.call(opts, error_1, attempt + 1);\n delay_1 = Math.min(opts.initialDelay * Math.pow(opts.backoffFactor, attempt), opts.maxDelay);\n jitter_1 = delay_1 * 0.25 * (Math.random() * 2 - 1);\n return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, delay_1 + jitter_1); })];\n case 3:\n _d.sent();\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n };\n attempt = 0;\n _b.label = 1;\n case 1:\n if (!(attempt <= opts.maxRetries)) return [3 /*break*/, 4];\n return [5 /*yield**/, _loop_1(attempt)];\n case 2:\n state_1 = _b.sent();\n if (typeof state_1 === \"object\")\n return [2 /*return*/, state_1.value];\n _b.label = 3;\n case 3:\n attempt++;\n return [3 /*break*/, 1];\n case 4: \n // Unreachable, but satisfies TypeScript\n throw new Error('Retry loop exited unexpectedly');\n }\n });\n });\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.executeMiddlewareChain = executeMiddlewareChain;\n/**\n * Execute a chain of middleware functions, then the final handler.\n * Each middleware can modify the request context before calling next(),\n * and inspect/modify the response after.\n */\nfunction executeMiddlewareChain(middlewares, context, finalHandler) {\n var index = 0;\n function next() {\n if (index >= middlewares.length) {\n return finalHandler();\n }\n var middleware = middlewares[index++];\n return middleware(context, next);\n }\n return next();\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extractHeaders = extractHeaders;\n/** Convert AxiosResponse headers to a plain record */\nfunction extractHeaders(response) {\n var headers = {};\n if (response.headers) {\n for (var _i = 0, _a = Object.entries(response.headers); _i < _a.length; _i++) {\n var _b = _a[_i], key = _b[0], value = _b[1];\n if (typeof value === 'string') {\n headers[key] = value;\n }\n }\n }\n return headers;\n}\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpTransport = void 0;\nvar axios_1 = require(\"axios\");\nvar node_http_1 = require(\"node:http\");\nvar node_https_1 = require(\"node:https\");\nvar oauth_js_1 = require(\"./oauth.js\");\nvar retry_js_1 = require(\"./retry.js\");\nvar middleware_chain_js_1 = require(\"./middleware-chain.js\");\nvar errors_js_1 = require(\"../types/errors.js\");\nvar http_js_1 = require(\"../types/http.js\");\nvar HttpTransport = /** @class */ (function () {\n function HttpTransport(config) {\n var _a, _b, _c, _d;\n this.middlewares = [];\n this.config = {\n timeout: (_a = config.timeout) !== null && _a !== void 0 ? _a : 30000,\n maxRetries: (_b = config.maxRetries) !== null && _b !== void 0 ? _b : 3,\n retryDelay: (_c = config.retryDelay) !== null && _c !== void 0 ? _c : 1000,\n defaultHeaders: (_d = config.defaultHeaders) !== null && _d !== void 0 ? _d : {},\n logger: config.logger,\n };\n this.sign = (0, oauth_js_1.createOAuthSigner)(config.auth);\n this.axiosInstance = axios_1.default.create({\n timeout: this.config.timeout,\n headers: {\n 'Content-Type': 'application/json',\n 'Accept-Encoding': 'gzip, deflate',\n },\n httpAgent: new node_http_1.default.Agent({ keepAlive: true }),\n httpsAgent: new node_https_1.default.Agent({ keepAlive: true }),\n maxRedirects: 5,\n // Let us handle all status codes in our error handling\n validateStatus: function () { return true; },\n });\n }\n /** Add a middleware to the chain. Returns `this` for chaining. */\n HttpTransport.prototype.use = function (middleware) {\n this.middlewares.push(middleware);\n return this;\n };\n /** Execute an HTTP request with OAuth signing, retry, and middleware. */\n HttpTransport.prototype.request = function (url_1) {\n return __awaiter(this, arguments, void 0, function (url, options) {\n var method, timeout, maxRetries;\n var _this = this;\n var _a, _b, _c;\n if (options === void 0) { options = {}; }\n return __generator(this, function (_d) {\n method = (_a = options.method) !== null && _a !== void 0 ? _a : 'GET';\n timeout = (_b = options.timeout) !== null && _b !== void 0 ? _b : this.config.timeout;\n maxRetries = (_c = options.maxRetries) !== null && _c !== void 0 ? _c : this.config.maxRetries;\n return [2 /*return*/, (0, retry_js_1.withRetry)(function () { return __awaiter(_this, void 0, void 0, function () {\n var authHeaders, headers, context, response;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n authHeaders = this.sign(url, method);\n headers = __assign(__assign(__assign({ 'Content-Type': 'application/json' }, this.config.defaultHeaders), authHeaders), options.headers);\n context = {\n url: url,\n method: method,\n headers: headers,\n body: options.body,\n metadata: {},\n };\n return [4 /*yield*/, (0, middleware_chain_js_1.executeMiddlewareChain)(this.middlewares, context, function () { return _this.executeRequest(context, timeout); })];\n case 1:\n response = _a.sent();\n return [2 /*return*/, {\n data: response.body,\n status: response.status,\n headers: response.headers,\n duration: response.duration,\n }];\n }\n });\n }); }, {\n maxRetries: maxRetries,\n initialDelay: this.config.retryDelay,\n shouldRetry: function (error) {\n if (error instanceof errors_js_1.NetSuiteError) {\n return error.isRetryable;\n }\n return true;\n },\n onRetry: function (error, attempt) {\n var _a;\n (_a = _this.config.logger) === null || _a === void 0 ? void 0 : _a.warn(\"Retry attempt \".concat(attempt, \"/\").concat(maxRetries), {\n url: url,\n method: method,\n error: error,\n });\n },\n })];\n });\n });\n };\n HttpTransport.prototype.executeRequest = function (context, timeout) {\n return __awaiter(this, void 0, void 0, function () {\n var startTime, response, duration, errorBody, message, code, error_1, duration, axiosError;\n var _a, _b, _c, _d, _e, _f, _g, _h;\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n startTime = performance.now();\n _j.label = 1;\n case 1:\n _j.trys.push([1, 3, , 4]);\n (_a = this.config.logger) === null || _a === void 0 ? void 0 : _a.debug(\"\".concat(context.method, \" \").concat(context.url), {\n headers: Object.keys(context.headers),\n });\n return [4 /*yield*/, this.axiosInstance.request({\n url: context.url,\n method: context.method,\n headers: context.headers,\n data: context.body && ['POST', 'PUT', 'PATCH'].includes(context.method)\n ? context.body\n : undefined,\n timeout: timeout,\n })];\n case 2:\n response = _j.sent();\n duration = Math.round(performance.now() - startTime);\n (_b = this.config.logger) === null || _b === void 0 ? void 0 : _b.info(\"\".concat(context.method, \" \").concat(context.url, \" \\u2192 \").concat(response.status), {\n duration: duration,\n });\n // Throw on non-2xx responses\n if (response.status >= 400) {\n errorBody = (_c = response.data) !== null && _c !== void 0 ? _c : {};\n message = (_f = (_e = (_d = errorBody.detail) !== null && _d !== void 0 ? _d : errorBody.title) !== null && _e !== void 0 ? _e : errorBody.message) !== null && _f !== void 0 ? _f : \"HTTP \".concat(response.status);\n code = (_h = (_g = errorBody['o:errorCode']) !== null && _g !== void 0 ? _g : errorBody.code) !== null && _h !== void 0 ? _h : \"HTTP_\".concat(response.status);\n throw new errors_js_1.NetSuiteError(message, response.status, code, errorBody, context.url, context.method);\n }\n return [2 /*return*/, {\n status: response.status,\n headers: (0, http_js_1.extractHeaders)(response),\n body: response.status === 204 ? undefined : response.data,\n duration: duration,\n }];\n case 3:\n error_1 = _j.sent();\n if (error_1 instanceof errors_js_1.NetSuiteError) {\n throw error_1;\n }\n duration = Math.round(performance.now() - startTime);\n axiosError = error_1;\n if (axiosError.code === 'ECONNABORTED' || axiosError.code === 'ERR_CANCELED') {\n throw new errors_js_1.NetSuiteError(\"Request timed out after \".concat(timeout, \"ms\"), 504, 'TIMEOUT', undefined, context.url, context.method);\n }\n throw new errors_js_1.NetSuiteError(axiosError.message || 'Network error', 0, 'NETWORK_ERROR', undefined, context.url, context.method);\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n return HttpTransport;\n}());\nexports.HttpTransport = HttpTransport;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SuiteQLClient = void 0;\n/**\n * SuiteQL client for executing queries against the NetSuite SuiteQL REST endpoint.\n *\n * Handles the `Prefer: transient` header requirement and automatic pagination.\n */\nvar SuiteQLClient = /** @class */ (function () {\n function SuiteQLClient(transport, accountId) {\n this.transport = transport;\n var normalizedId = accountId.toLowerCase().replace(/_/g, '-');\n this.baseUrl = \"https://\".concat(normalizedId, \".suitetalk.api.netsuite.com/services/rest/query/v1/suiteql\");\n }\n /**\n * Execute a SuiteQL query and return all matching rows.\n * Automatically paginates across multiple pages.\n *\n * @example\n * ```ts\n * const result = await client.suiteql.query<Customer>(\n * 'SELECT id, companyname, email FROM customer WHERE isinactive = \\'F\\'',\n * { pageSize: 500 }\n * );\n * console.log(result.items); // all rows\n * console.log(result.totalResults); // total count from NetSuite\n * ```\n */\n SuiteQLClient.prototype.query = function (sql_1) {\n return __awaiter(this, arguments, void 0, function (sql, options) {\n var _a, pageSize, _b, startOffset, _c, maxRows, timeout, allItems, currentOffset, totalResults, pagesFetched, startTime, effectiveLimit, url, response, page, hasMore;\n if (options === void 0) { options = {}; }\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _a = options.pageSize, pageSize = _a === void 0 ? 1000 : _a, _b = options.offset, startOffset = _b === void 0 ? 0 : _b, _c = options.maxRows, maxRows = _c === void 0 ? Infinity : _c, timeout = options.timeout;\n allItems = [];\n currentOffset = startOffset;\n totalResults = 0;\n pagesFetched = 0;\n startTime = performance.now();\n _d.label = 1;\n case 1:\n if (!true) return [3 /*break*/, 3];\n effectiveLimit = Math.min(pageSize, maxRows - allItems.length);\n if (effectiveLimit <= 0)\n return [3 /*break*/, 3];\n url = \"\".concat(this.baseUrl, \"?limit=\").concat(effectiveLimit, \"&offset=\").concat(currentOffset);\n return [4 /*yield*/, this.transport.request(url, {\n method: 'POST',\n body: { q: sql },\n headers: { Prefer: 'transient' },\n timeout: timeout,\n })];\n case 2:\n response = _d.sent();\n page = response.data;\n totalResults = page.totalResults;\n pagesFetched++;\n allItems.push.apply(allItems, page.items);\n hasMore = page.hasMore || currentOffset + page.items.length < totalResults;\n if (!hasMore || allItems.length >= maxRows || page.items.length === 0)\n return [3 /*break*/, 3];\n currentOffset += page.items.length;\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/, {\n items: allItems,\n totalResults: totalResults,\n pagesFetched: pagesFetched,\n hasMore: allItems.length < totalResults,\n duration: Math.round(performance.now() - startTime),\n }];\n }\n });\n });\n };\n /**\n * Execute a query and return a single row, or null if not found.\n *\n * @example\n * ```ts\n * const customer = await client.suiteql.queryOne<Customer>(\n * 'SELECT id, companyname FROM customer WHERE id = 123'\n * );\n * ```\n */\n SuiteQLClient.prototype.queryOne = function (sql, options) {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.query(sql, __assign(__assign({}, options), { maxRows: 1 }))];\n case 1:\n result = _b.sent();\n return [2 /*return*/, (_a = result.items[0]) !== null && _a !== void 0 ? _a : null];\n }\n });\n });\n };\n /**\n * Execute a query and yield pages as an async generator.\n * Useful for streaming large result sets without holding everything in memory.\n *\n * @example\n * ```ts\n * for await (const page of client.suiteql.queryPages<Transaction>(\n * 'SELECT id, tranid, total FROM transaction',\n * { pageSize: 500 }\n * )) {\n * await processBatch(page);\n * }\n * ```\n */\n SuiteQLClient.prototype.queryPages = function (sql_1) {\n return __asyncGenerator(this, arguments, function queryPages_1(sql, options) {\n var _a, pageSize, _b, startOffset, _c, maxRows, timeout, currentOffset, totalYielded, effectiveLimit, url, response, page, hasMore;\n if (options === void 0) { options = {}; }\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n _a = options.pageSize, pageSize = _a === void 0 ? 1000 : _a, _b = options.offset, startOffset = _b === void 0 ? 0 : _b, _c = options.maxRows, maxRows = _c === void 0 ? Infinity : _c, timeout = options.timeout;\n currentOffset = startOffset;\n totalYielded = 0;\n _d.label = 1;\n case 1:\n if (!true) return [3 /*break*/, 11];\n effectiveLimit = Math.min(pageSize, maxRows - totalYielded);\n if (!(effectiveLimit <= 0)) return [3 /*break*/, 3];\n return [4 /*yield*/, __await(void 0)];\n case 2: return [2 /*return*/, _d.sent()];\n case 3:\n url = \"\".concat(this.baseUrl, \"?limit=\").concat(effectiveLimit, \"&offset=\").concat(currentOffset);\n return [4 /*yield*/, __await(this.transport.request(url, {\n method: 'POST',\n body: { q: sql },\n headers: { Prefer: 'transient' },\n timeout: timeout,\n }))];\n case 4:\n response = _d.sent();\n page = response.data;\n if (!(page.items.length === 0)) return [3 /*break*/, 6];\n return [4 /*yield*/, __await(void 0)];\n case 5: return [2 /*return*/, _d.sent()];\n case 6: return [4 /*yield*/, __await(page.items)];\n case 7: return [4 /*yield*/, _d.sent()];\n case 8:\n _d.sent();\n totalYielded += page.items.length;\n hasMore = page.hasMore || currentOffset + page.items.length < page.totalResults;\n if (!(!hasMore || totalYielded >= maxRows)) return [3 /*break*/, 10];\n return [4 /*yield*/, __await(void 0)];\n case 9: return [2 /*return*/, _d.sent()];\n case 10:\n currentOffset += page.items.length;\n return [3 /*break*/, 1];\n case 11: return [2 /*return*/];\n }\n });\n });\n };\n return SuiteQLClient;\n}());\nexports.SuiteQLClient = SuiteQLClient;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RecordClient = void 0;\n/**\n * Client for NetSuite REST Record API v1.\n * Provides CRUD operations on NetSuite records.\n */\nvar RecordClient = /** @class */ (function () {\n function RecordClient(transport, accountId) {\n this.transport = transport;\n var normalizedId = accountId.toLowerCase().replace(/_/g, '-');\n this.baseUrl = \"https://\".concat(normalizedId, \".suitetalk.api.netsuite.com/services/rest/record/v1\");\n }\n /** Get a record by type and internal ID */\n RecordClient.prototype.get = function (recordType, id, options) {\n return __awaiter(this, void 0, void 0, function () {\n var params, qs, url;\n var _a;\n return __generator(this, function (_b) {\n params = new URLSearchParams();\n if ((_a = options === null || options === void 0 ? void 0 : options.fields) === null || _a === void 0 ? void 0 : _a.length) {\n params.set('fields', options.fields.join(','));\n }\n if (options === null || options === void 0 ? void 0 : options.expandSubResources) {\n params.set('expandSubResources', 'true');\n }\n qs = params.toString();\n url = \"\".concat(this.baseUrl, \"/\").concat(recordType, \"/\").concat(id).concat(qs ? \"?\".concat(qs) : '');\n return [2 /*return*/, this.transport.request(url)];\n });\n });\n };\n /** List records of a given type */\n RecordClient.prototype.list = function (recordType, options) {\n return __awaiter(this, void 0, void 0, function () {\n var params, _i, _a, _b, key, value, qs, url;\n var _c;\n return __generator(this, function (_d) {\n params = new URLSearchParams();\n if ((options === null || options === void 0 ? void 0 : options.limit) != null)\n params.set('limit', String(options.limit));\n if ((options === null || options === void 0 ? void 0 : options.offset) != null)\n params.set('offset', String(options.offset));\n if ((_c = options === null || options === void 0 ? void 0 : options.fields) === null || _c === void 0 ? void 0 : _c.length)\n params.set('fields', options.fields.join(','));\n if (options === null || options === void 0 ? void 0 : options.expandSubResources)\n params.set('expandSubResources', 'true');\n if (options === null || options === void 0 ? void 0 : options.query) {\n for (_i = 0, _a = Object.entries(options.query); _i < _a.length; _i++) {\n _b = _a[_i], key = _b[0], value = _b[1];\n params.set(key, value);\n }\n }\n qs = params.toString();\n url = \"\".concat(this.baseUrl, \"/\").concat(recordType).concat(qs ? \"?\".concat(qs) : '');\n return [2 /*return*/, this.transport.request(url)];\n });\n });\n };\n /** Create a new record */\n RecordClient.prototype.create = function (recordType, body) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.transport.request(\"\".concat(this.baseUrl, \"/\").concat(recordType), {\n method: 'POST',\n body: body,\n })];\n });\n });\n };\n /** Update an existing record (partial update via PATCH) */\n RecordClient.prototype.update = function (recordType, id, body) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.transport.request(\"\".concat(this.baseUrl, \"/\").concat(recordType, \"/\").concat(id), {\n method: 'PATCH',\n body: body,\n })];\n });\n });\n };\n /** Replace an existing record (full replace via PUT) */\n RecordClient.prototype.replace = function (recordType, id, body) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.transport.request(\"\".concat(this.baseUrl, \"/\").concat(recordType, \"/\").concat(id), {\n method: 'PUT',\n body: body,\n })];\n });\n });\n };\n /** Delete a record */\n RecordClient.prototype.delete = function (recordType, id) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.transport.request(\"\".concat(this.baseUrl, \"/\").concat(recordType, \"/\").concat(id), {\n method: 'DELETE',\n })];\n });\n });\n };\n /** Upsert: create or update based on external ID */\n RecordClient.prototype.upsert = function (recordType, externalIdField, externalIdValue, body) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.transport.request(\"\".concat(this.baseUrl, \"/\").concat(recordType, \"/eid:\").concat(externalIdField, \"=\").concat(externalIdValue), { method: 'PUT', body: body })];\n });\n });\n };\n return RecordClient;\n}());\nexports.RecordClient = RecordClient;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RestletClient = void 0;\n/**\n * Client for calling NetSuite RESTlets.\n * Auto-builds the RESTlet URL from account ID, script, and deploy IDs.\n */\nvar RestletClient = /** @class */ (function () {\n function RestletClient(transport, accountId) {\n this.transport = transport;\n var normalizedId = accountId.toLowerCase().replace(/_/g, '-');\n this.baseUrl = \"https://\".concat(normalizedId, \".restlets.api.netsuite.com/app/site/hosting/restlet.nl\");\n }\n /** Execute a RESTlet call */\n RestletClient.prototype.call = function (restlet, options) {\n return __awaiter(this, void 0, void 0, function () {\n var searchParams, _i, _a, _b, key, value, url;\n return __generator(this, function (_c) {\n searchParams = new URLSearchParams({\n script: String(restlet.script),\n deploy: String(restlet.deploy),\n });\n if (restlet.params) {\n for (_i = 0, _a = Object.entries(restlet.params); _i < _a.length; _i++) {\n _b = _a[_i], key = _b[0], value = _b[1];\n searchParams.set(key, String(value));\n }\n }\n url = \"\".concat(this.baseUrl, \"?\").concat(searchParams.toString());\n return [2 /*return*/, this.transport.request(url, options)];\n });\n });\n };\n return RestletClient;\n}());\nexports.RestletClient = RestletClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateConfig = validateConfig;\n/** Validate a NetSuiteConfig and return an array of error messages (empty = valid). */\nfunction validateConfig(config) {\n var errors = [];\n if (!config || typeof config !== 'object') {\n return ['Config must be a non-null object'];\n }\n var c = config;\n // auth\n if (!c.auth || typeof c.auth !== 'object') {\n errors.push('auth is required and must be an object');\n }\n else {\n var auth = c.auth;\n var requiredFields = ['consumerKey', 'consumerSecret', 'tokenKey', 'tokenSecret', 'realm'];\n for (var _i = 0, requiredFields_1 = requiredFields; _i < requiredFields_1.length; _i++) {\n var field = requiredFields_1[_i];\n if (!auth[field] || typeof auth[field] !== 'string') {\n errors.push(\"auth.\".concat(field, \" is required and must be a non-empty string\"));\n }\n }\n }\n // accountId\n if (!c.accountId || typeof c.accountId !== 'string') {\n errors.push('accountId is required and must be a non-empty string');\n }\n return errors;\n}\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NetSuiteClient = void 0;\nvar http_transport_js_1 = require(\"./transport/http-transport.js\");\nvar suiteql_client_js_1 = require(\"./suiteql/suiteql-client.js\");\nvar record_client_js_1 = require(\"./records/record-client.js\");\nvar restlet_client_js_1 = require(\"./restlets/restlet-client.js\");\nvar validation_js_1 = require(\"./utils/validation.js\");\n/**\n * Main NetSuite API client.\n *\n * Provides namespaced access to SuiteQL, Record, and RESTlet APIs,\n * plus raw HTTP methods as an escape hatch.\n *\n * @example\n * ```ts\n * import { NetSuiteClient } from 'netsuite-sdk';\n *\n * const client = new NetSuiteClient({\n * auth: {\n * consumerKey: '...',\n * consumerSecret: '...',\n * tokenKey: '...',\n * tokenSecret: '...',\n * realm: '1234567',\n * },\n * accountId: '1234567',\n * });\n *\n * // SuiteQL\n * const result = await client.suiteql.query('SELECT id, companyname FROM customer');\n *\n * // Records\n * const customer = await client.records.get('customer', 123);\n *\n * // RESTlets\n * const data = await client.restlets.call({ script: '1', deploy: '1' });\n * ```\n */\nvar NetSuiteClient = /** @class */ (function () {\n function NetSuiteClient(config) {\n var errors = (0, validation_js_1.validateConfig)(config);\n if (errors.length > 0) {\n throw new Error(\"Invalid NetSuite configuration:\\n - \".concat(errors.join('\\n - ')));\n }\n this.transport = new http_transport_js_1.HttpTransport(config);\n this.suiteql = new suiteql_client_js_1.SuiteQLClient(this.transport, config.accountId);\n this.records = new record_client_js_1.RecordClient(this.transport, config.accountId);\n this.restlets = new restlet_client_js_1.RestletClient(this.transport, config.accountId);\n }\n /** Add middleware to all requests. Returns `this` for chaining. */\n NetSuiteClient.prototype.use = function (middleware) {\n this.transport.use(middleware);\n return this;\n };\n /** Make a raw HTTP request (escape hatch for custom endpoints). */\n NetSuiteClient.prototype.request = function (url, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.transport.request(url, options)];\n });\n });\n };\n /** Convenience: GET request */\n NetSuiteClient.prototype.get = function (url, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.transport.request(url, __assign(__assign({}, options), { method: 'GET' }))];\n });\n });\n };\n /** Convenience: POST request */\n NetSuiteClient.prototype.post = function (url, body, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.transport.request(url, __assign(__assign({}, options), { method: 'POST', body: body }))];\n });\n });\n };\n /** Convenience: PUT request */\n NetSuiteClient.prototype.put = function (url, body, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.transport.request(url, __assign(__assign({}, options), { method: 'PUT', body: body }))];\n });\n });\n };\n /** Convenience: PATCH request */\n NetSuiteClient.prototype.patch = function (url, body, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.transport.request(url, __assign(__assign({}, options), { method: 'PATCH', body: body }))];\n });\n });\n };\n /** Convenience: DELETE request */\n NetSuiteClient.prototype.delete = function (url, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.transport.request(url, __assign(__assign({}, options), { method: 'DELETE' }))];\n });\n });\n };\n return NetSuiteClient;\n}());\nexports.NetSuiteClient = NetSuiteClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SuiteQLBuilder = void 0;\nexports.suiteql = suiteql;\n/**\n * Fluent builder for constructing SuiteQL queries with basic value escaping.\n *\n * @example\n * ```ts\n * import { suiteql } from 'netsuite-sdk';\n *\n * const sql = suiteql()\n * .select('c.id', 'c.companyname', 'c.email')\n * .from('customer', 'c')\n * .leftJoin('transaction t', 'c.id = t.entity')\n * .whereEquals('c.isinactive', 'F')\n * .whereNotNull('c.email')\n * .groupBy('c.id', 'c.companyname', 'c.email')\n * .orderBy('c.companyname', 'ASC')\n * .build();\n * ```\n */\nvar SuiteQLBuilder = /** @class */ (function () {\n function SuiteQLBuilder() {\n this._select = [];\n this._from = '';\n this._joins = [];\n this._where = [];\n this._groupBy = [];\n this._orderBy = [];\n this._having = [];\n }\n /** Add columns to SELECT clause */\n SuiteQLBuilder.prototype.select = function () {\n var _a;\n var columns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n columns[_i] = arguments[_i];\n }\n (_a = this._select).push.apply(_a, columns);\n return this;\n };\n /** Set the FROM table, with optional alias */\n SuiteQLBuilder.prototype.from = function (table, alias) {\n this._from = alias ? \"\".concat(table, \" \").concat(alias) : table;\n return this;\n };\n /** Add a JOIN clause */\n SuiteQLBuilder.prototype.join = function (table, condition, type) {\n if (type === void 0) { type = 'INNER'; }\n this._joins.push(\"\".concat(type, \" JOIN \").concat(table, \" ON \").concat(condition));\n return this;\n };\n /** Add a LEFT JOIN clause */\n SuiteQLBuilder.prototype.leftJoin = function (table, condition) {\n return this.join(table, condition, 'LEFT');\n };\n /** Add a RIGHT JOIN clause */\n SuiteQLBuilder.prototype.rightJoin = function (table, condition) {\n return this.join(table, condition, 'RIGHT');\n };\n /** Add a raw WHERE condition */\n SuiteQLBuilder.prototype.where = function (condition) {\n this._where.push(condition);\n return this;\n };\n /** Add a WHERE column = value condition. Values are escaped. */\n SuiteQLBuilder.prototype.whereEquals = function (column, value) {\n this._where.push(\"\".concat(column, \" = \").concat(escapeValue(value)));\n return this;\n };\n /** Add a WHERE column != value condition. Values are escaped. */\n SuiteQLBuilder.prototype.whereNotEquals = function (column, value) {\n this._where.push(\"\".concat(column, \" != \").concat(escapeValue(value)));\n return this;\n };\n /** Add a WHERE column IN (...) condition. Values are escaped. */\n SuiteQLBuilder.prototype.whereIn = function (column, values) {\n var escaped = values.map(escapeValue);\n this._where.push(\"\".concat(column, \" IN (\").concat(escaped.join(', '), \")\"));\n return this;\n };\n /** Add a WHERE column IS NULL condition */\n SuiteQLBuilder.prototype.whereNull = function (column) {\n this._where.push(\"\".concat(column, \" IS NULL\"));\n return this;\n };\n /** Add a WHERE column IS NOT NULL condition */\n SuiteQLBuilder.prototype.whereNotNull = function (column) {\n this._where.push(\"\".concat(column, \" IS NOT NULL\"));\n return this;\n };\n /** Add a WHERE column BETWEEN start AND end condition. Values are escaped. */\n SuiteQLBuilder.prototype.whereBetween = function (column, start, end) {\n this._where.push(\"\".concat(column, \" BETWEEN \").concat(escapeValue(start), \" AND \").concat(escapeValue(end)));\n return this;\n };\n /** Add a WHERE column LIKE pattern condition. Value is escaped. */\n SuiteQLBuilder.prototype.whereLike = function (column, pattern) {\n this._where.push(\"\".concat(column, \" LIKE \").concat(escapeValue(pattern)));\n return this;\n };\n /** Add columns to GROUP BY clause */\n SuiteQLBuilder.prototype.groupBy = function () {\n var _a;\n var columns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n columns[_i] = arguments[_i];\n }\n (_a = this._groupBy).push.apply(_a, columns);\n return this;\n };\n /** Add a HAVING condition (used with GROUP BY) */\n SuiteQLBuilder.prototype.having = function (condition) {\n this._having.push(condition);\n return this;\n };\n /** Add a column to ORDER BY clause */\n SuiteQLBuilder.prototype.orderBy = function (column, direction) {\n if (direction === void 0) { direction = 'ASC'; }\n this._orderBy.push(\"\".concat(column, \" \").concat(direction));\n return this;\n };\n /** Build the SQL string. Throws if SELECT or FROM is missing. */\n SuiteQLBuilder.prototype.build = function () {\n if (this._select.length === 0) {\n throw new Error('SuiteQLBuilder: SELECT clause is required');\n }\n if (!this._from) {\n throw new Error('SuiteQLBuilder: FROM clause is required');\n }\n var parts = [\n \"SELECT \".concat(this._select.join(', ')),\n \"FROM \".concat(this._from),\n ];\n if (this._joins.length > 0) {\n parts.push(this._joins.join(' '));\n }\n if (this._where.length > 0) {\n parts.push(\"WHERE \".concat(this._where.join(' AND ')));\n }\n if (this._groupBy.length > 0) {\n parts.push(\"GROUP BY \".concat(this._groupBy.join(', ')));\n }\n if (this._having.length > 0) {\n parts.push(\"HAVING \".concat(this._having.join(' AND ')));\n }\n if (this._orderBy.length > 0) {\n parts.push(\"ORDER BY \".concat(this._orderBy.join(', ')));\n }\n return parts.join(' ');\n };\n /** Alias for build() */\n SuiteQLBuilder.prototype.toString = function () {\n return this.build();\n };\n return SuiteQLBuilder;\n}());\nexports.SuiteQLBuilder = SuiteQLBuilder;\n/** Escape a value for safe inclusion in a SuiteQL query */\nfunction escapeValue(value) {\n if (typeof value === 'number') {\n return String(value);\n }\n if (typeof value === 'boolean') {\n return value ? \"'T'\" : \"'F'\";\n }\n // Escape single quotes by doubling them\n var escaped = value.replace(/'/g, \"''\");\n return \"'\".concat(escaped, \"'\");\n}\n/** Factory function for creating a new SuiteQL query builder */\nfunction suiteql() {\n return new SuiteQLBuilder();\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ResponseCache = void 0;\nexports.createCacheKey = createCacheKey;\n/**\n * Simple in-memory TTL-based cache for API responses.\n */\nvar ResponseCache = /** @class */ (function () {\n function ResponseCache() {\n this.cache = new Map();\n }\n /** Get a cached value, or null if not found or expired. */\n ResponseCache.prototype.get = function (key) {\n var entry = this.cache.get(key);\n if (!entry)\n return null;\n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return null;\n }\n return entry.data;\n };\n /** Set a cached value with a TTL in seconds. */\n ResponseCache.prototype.set = function (key, data, ttlSeconds) {\n this.cache.set(key, {\n data: data,\n expiresAt: Date.now() + ttlSeconds * 1000,\n });\n };\n /** Delete a specific cache entry. */\n ResponseCache.prototype.delete = function (key) {\n return this.cache.delete(key);\n };\n /** Clear all cached entries. */\n ResponseCache.prototype.clear = function () {\n this.cache.clear();\n };\n Object.defineProperty(ResponseCache.prototype, \"size\", {\n /** Get the number of entries (including expired). */\n get: function () {\n return this.cache.size;\n },\n enumerable: false,\n configurable: true\n });\n return ResponseCache;\n}());\nexports.ResponseCache = ResponseCache;\n/** Create a cache key from request parameters. */\nfunction createCacheKey(url, method, params) {\n var base = \"\".concat(method, \":\").concat(url);\n if (params) {\n return \"\".concat(base, \":\").concat(JSON.stringify(params));\n }\n return base;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RateLimiter = void 0;\n/**\n * Sliding-window rate limiter.\n * Tracks requests within a time window and prevents exceeding the limit.\n */\nvar RateLimiter = /** @class */ (function () {\n function RateLimiter(maxRequests, windowMs) {\n if (maxRequests === void 0) { maxRequests = 100; }\n if (windowMs === void 0) { windowMs = 60000; }\n this.timestamps = [];\n this.maxRequests = maxRequests;\n this.windowMs = windowMs;\n }\n /** Check if a request can be made without exceeding the limit. */\n RateLimiter.prototype.canMakeRequest = function () {\n this.pruneExpired();\n return this.timestamps.length < this.maxRequests;\n };\n /** Record that a request was made. */\n RateLimiter.prototype.recordRequest = function () {\n this.pruneExpired();\n this.timestamps.push(Date.now());\n };\n /** Get the number of remaining requests in the current window. */\n RateLimiter.prototype.getRemainingRequests = function () {\n this.pruneExpired();\n return Math.max(0, this.maxRequests - this.timestamps.length);\n };\n /** Get ms until the next request slot opens. Returns 0 if a slot is available. */\n RateLimiter.prototype.getTimeUntilNextSlot = function () {\n this.pruneExpired();\n if (this.timestamps.length < this.maxRequests)\n return 0;\n var oldest = this.timestamps[0];\n return Math.max(0, oldest + this.windowMs - Date.now());\n };\n RateLimiter.prototype.pruneExpired = function () {\n var cutoff = Date.now() - this.windowMs;\n while (this.timestamps.length > 0 && this.timestamps[0] <= cutoff) {\n this.timestamps.shift();\n }\n };\n return RateLimiter;\n}());\nexports.RateLimiter = RateLimiter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatNetSuiteDate = formatNetSuiteDate;\nexports.parseNetSuiteDate = parseNetSuiteDate;\n/**\n * Format a Date as a NetSuite date string (YYYY-MM-DD).\n */\nfunction formatNetSuiteDate(date) {\n var year = date.getFullYear();\n var month = String(date.getMonth() + 1).padStart(2, '0');\n var day = String(date.getDate()).padStart(2, '0');\n return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n}\n/**\n * Parse a NetSuite date string (YYYY-MM-DD or MM/DD/YYYY) into a Date.\n */\nfunction parseNetSuiteDate(dateString) {\n // Handle MM/DD/YYYY format\n if (dateString.includes('/')) {\n var _a = dateString.split('/'), month_1 = _a[0], day_1 = _a[1], year_1 = _a[2];\n return new Date(Number(year_1), Number(month_1) - 1, Number(day_1));\n }\n // Handle YYYY-MM-DD format\n var _b = dateString.split('-'), year = _b[0], month = _b[1], day = _b[2];\n return new Date(Number(year), Number(month) - 1, Number(day));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseNetSuiteError = parseNetSuiteError;\n/**\n * Parse a NetSuite error response body into a structured format.\n */\nfunction parseNetSuiteError(error) {\n var _a, _b;\n if (!error || typeof error !== 'object') {\n return { message: String(error) };\n }\n var e = error;\n // Standard NetSuite REST API error format\n if (e.title || e.detail) {\n return {\n message: String((_b = (_a = e.detail) !== null && _a !== void 0 ? _a : e.title) !== null && _b !== void 0 ? _b : 'Unknown error'),\n code: e['o:errorCode'],\n details: e,\n };\n }\n // Fallback for other error formats\n if (e.message) {\n return {\n message: String(e.message),\n code: e.code,\n };\n }\n return { message: JSON.stringify(error) };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalizeAccountId = normalizeAccountId;\nexports.buildSuiteTalkUrl = buildSuiteTalkUrl;\nexports.buildRestletUrl = buildRestletUrl;\n/**\n * Normalize a NetSuite account ID for use in API URLs.\n * Sandbox accounts use underscore format (e.g., \"1234567_SB1\")\n * but URLs require hyphens (e.g., \"1234567-sb1\").\n */\nfunction normalizeAccountId(accountId) {\n return accountId.toLowerCase().replace(/_/g, '-');\n}\n/** Build the SuiteTalk REST API base URL */\nfunction buildSuiteTalkUrl(accountId) {\n return \"https://\".concat(normalizeAccountId(accountId), \".suitetalk.api.netsuite.com\");\n}\n/** Build the RESTlet base URL */\nfunction buildRestletUrl(accountId) {\n return \"https://\".concat(normalizeAccountId(accountId), \".restlets.api.netsuite.com\");\n}\n","// Main client\nexport { NetSuiteClient } from './client.js';\n\n// SuiteQL query builder\nexport { SuiteQLBuilder, suiteql } from './suiteql/query-builder.js';\n\n// Error class\nexport { NetSuiteError } from './types/errors.js';\n\n// SOAP utilities for REST-incompatible fields\nexport {\n SoapFieldClient,\n SOAP_ONLY_FIELDS,\n extractSoapOnlyFields,\n} from './records/soap-client.js';\nexport type { SoapUpdateResult } from './records/soap-client.js';\n\n// Types\nexport type {\n // Config\n NetSuiteConfig,\n OAuthConfig,\n // HTTP\n HttpMethod,\n RequestOptions,\n NetSuiteResponse,\n // SuiteQL\n SuiteQLOptions,\n SuiteQLResult,\n SuiteQLRawResponse,\n // Records\n RecordType,\n RecordGetOptions,\n RecordListOptions,\n RecordListResponse,\n // Middleware\n Middleware,\n RequestContext,\n ResponseContext,\n // Logger\n Logger,\n // Error details\n NetSuiteErrorDetail,\n} from './types/index.js';\n\n// RESTlet types\nexport type { RestletParams } from './restlets/restlet-client.js';\n\n// Utilities\nexport { ResponseCache, createCacheKey } from './utils/response-cache.js';\nexport { RateLimiter } from './utils/rate-limiter.js';\nexport { validateConfig } from './utils/validation.js';\nexport { formatNetSuiteDate, parseNetSuiteDate } from './utils/date.js';\nexport { parseNetSuiteError } from './utils/error-parser.js';\nexport { normalizeAccountId } from './utils/url-builder.js';\n","import { createHmac, randomBytes } from 'node:crypto';\nimport type { OAuthConfig } from '../types/config.js';\nimport type { RecordType } from '../types/records.js';\n\n/**\n * Known fields that are SOAP-only (not writable via REST API).\n * These fields will be extracted and set via SOAP after REST creation.\n */\nexport const SOAP_ONLY_FIELDS: Record<string, string[]> = {\n assemblyItem: ['taxSchedule'],\n inventoryItem: ['taxSchedule'],\n nonInventoryItem: ['taxSchedule'],\n kitItem: ['taxSchedule'],\n serviceItem: ['taxSchedule'],\n otherChargeItem: ['taxSchedule'],\n lotNumberedInventoryItem: ['taxSchedule'],\n serializedInventoryItem: ['taxSchedule'],\n};\n\n/**\n * Map from REST API record type (camelCase) to SOAP record type namespace.\n */\nconst SOAP_RECORD_TYPES: Record<string, { type: string; namespace: string }> = {\n assemblyItem: { type: 'AssemblyItem', namespace: 'listAcct' },\n inventoryItem: { type: 'InventoryItem', namespace: 'listAcct' },\n nonInventoryItem: { type: 'NonInventorySaleItem', namespace: 'listAcct' },\n kitItem: { type: 'KitItem', namespace: 'listAcct' },\n serviceItem: { type: 'ServiceSaleItem', namespace: 'listAcct' },\n otherChargeItem: { type: 'OtherChargeSaleItem', namespace: 'listAcct' },\n lotNumberedInventoryItem: { type: 'LotNumberedInventoryItem', namespace: 'listAcct' },\n serializedInventoryItem: { type: 'SerializedInventoryItem', namespace: 'listAcct' },\n customer: { type: 'Customer', namespace: 'listRel' },\n vendor: { type: 'Vendor', namespace: 'listRel' },\n salesOrder: { type: 'SalesOrder', namespace: 'tranSales' },\n purchaseOrder: { type: 'PurchaseOrder', namespace: 'tranPurch' },\n invoice: { type: 'Invoice', namespace: 'tranSales' },\n};\n\nconst NS_NAMESPACES: Record<string, string> = {\n listAcct: 'urn:accounting_2024_1.lists.webservices.netsuite.com',\n listRel: 'urn:relationships_2024_1.lists.webservices.netsuite.com',\n tranSales: 'urn:sales_2024_1.transactions.webservices.netsuite.com',\n tranPurch: 'urn:purchases_2024_1.transactions.webservices.netsuite.com',\n core: 'urn:core_2024_1.platform.webservices.netsuite.com',\n messages: 'urn:messages_2024_1.platform.webservices.netsuite.com',\n};\n\nexport interface SoapUpdateResult {\n success: boolean;\n internalId?: string;\n error?: string;\n}\n\n/**\n * Extract SOAP-only fields from a record body.\n * Returns the extracted fields and a cleaned body without them.\n */\nexport function extractSoapOnlyFields(\n recordType: RecordType,\n body: Record<string, unknown>,\n): { soapFields: Record<string, unknown>; restBody: Record<string, unknown> } {\n const knownSoapFields = SOAP_ONLY_FIELDS[recordType] ?? [];\n const soapFields: Record<string, unknown> = {};\n const restBody: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(body)) {\n if (knownSoapFields.includes(key)) {\n soapFields[key] = value;\n } else {\n restBody[key] = value;\n }\n }\n\n return { soapFields, restBody };\n}\n\n/**\n * Lightweight SOAP client for setting fields that aren't available via REST.\n * Uses the NetSuite SOAP Web Services API with Token-Based Authentication.\n */\nexport class SoapFieldClient {\n private auth: OAuthConfig;\n private accountId: string;\n\n constructor(auth: OAuthConfig, accountId: string) {\n this.auth = auth;\n this.accountId = accountId;\n }\n\n /**\n * Update SOAP-only fields on an existing record.\n */\n async updateFields(\n recordType: RecordType,\n internalId: string,\n fields: Record<string, unknown>,\n ): Promise<SoapUpdateResult> {\n const soapType = SOAP_RECORD_TYPES[recordType];\n if (!soapType) {\n return {\n success: false,\n error: `Unsupported SOAP record type: ${recordType}`,\n };\n }\n\n const fieldXml = this.buildFieldXml(fields, soapType.namespace);\n const envelope = this.buildUpdateEnvelope(soapType, internalId, fieldXml);\n\n const normalizedId = this.accountId.toLowerCase().replace(/_/g, '-');\n const soapUrl = `https://${normalizedId}.suitetalk.api.netsuite.com/services/NetSuitePort_2024_1`;\n\n const response = await fetch(soapUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'text/xml; charset=utf-8',\n SOAPAction: 'update',\n },\n body: envelope,\n });\n\n const responseText = await response.text();\n\n if (!response.ok) {\n const errorMatch = responseText.match(/<faultstring>(.*?)<\\/faultstring>/s);\n return {\n success: false,\n error: errorMatch?.[1] ?? `SOAP HTTP ${response.status}: ${response.statusText}`,\n };\n }\n\n const successMatch = responseText.match(/isSuccess=\"true\"/);\n if (successMatch) {\n return { success: true, internalId };\n }\n\n const detailMatch = responseText.match(/<platformCore:message>(.*?)<\\/platformCore:message>/s);\n return {\n success: false,\n internalId,\n error: detailMatch?.[1] ?? 'SOAP update returned without success flag',\n };\n }\n\n /**\n * Create a record via SOAP (full creation, not just field update).\n */\n async addRecord(\n recordType: RecordType,\n fields: Record<string, unknown>,\n ): Promise<SoapUpdateResult> {\n const soapType = SOAP_RECORD_TYPES[recordType];\n if (!soapType) {\n return {\n success: false,\n error: `Unsupported SOAP record type: ${recordType}`,\n };\n }\n\n const fieldXml = this.buildFieldXml(fields, soapType.namespace);\n const envelope = this.buildAddEnvelope(soapType, fieldXml);\n\n const normalizedId = this.accountId.toLowerCase().replace(/_/g, '-');\n const soapUrl = `https://${normalizedId}.suitetalk.api.netsuite.com/services/NetSuitePort_2024_1`;\n\n const response = await fetch(soapUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'text/xml; charset=utf-8',\n SOAPAction: 'add',\n },\n body: envelope,\n });\n\n const responseText = await response.text();\n\n if (!response.ok) {\n const errorMatch = responseText.match(/<faultstring>(.*?)<\\/faultstring>/s);\n return {\n success: false,\n error: errorMatch?.[1] ?? `SOAP HTTP ${response.status}: ${response.statusText}`,\n };\n }\n\n const successMatch = responseText.match(/isSuccess=\"true\"/);\n const idMatch = responseText.match(/internalId=\"(\\d+)\"/);\n if (successMatch) {\n return { success: true, internalId: idMatch?.[1] };\n }\n\n const detailMatch = responseText.match(/<platformCore:message>(.*?)<\\/platformCore:message>/s);\n return {\n success: false,\n error: detailMatch?.[1] ?? 'SOAP add returned without success flag',\n };\n }\n\n // ─── Private helpers ──────────────────────────────────────────────────────\n\n private buildFieldXml(fields: Record<string, unknown>, ns: string): string {\n const prefix = ns;\n const parts: string[] = [];\n\n for (const [key, value] of Object.entries(fields)) {\n if (value === null || value === undefined) continue;\n\n if (typeof value === 'object' && value !== null && 'id' in (value as Record<string, unknown>)) {\n // Reference field: { id: '1' } → <prefix:key internalId=\"1\"/>\n parts.push(`<${prefix}:${key} internalId=\"${(value as Record<string, unknown>).id}\"/>`);\n } else if (typeof value === 'object' && value !== null && 'items' in (value as Record<string, unknown>)) {\n // Sublist: { items: [...] } → <prefix:keyList>...</prefix:keyList>\n const items = (value as Record<string, unknown>).items as Record<string, unknown>[];\n const listParts: string[] = [];\n for (const item of items) {\n const itemFields = Object.entries(item)\n .map(([k, v]) => {\n if (typeof v === 'object' && v !== null && 'id' in (v as Record<string, unknown>)) {\n return `<${prefix}:${k} internalId=\"${(v as Record<string, unknown>).id}\"/>`;\n }\n return `<${prefix}:${k}>${String(v)}</${prefix}:${k}>`;\n })\n .join('\\n ');\n listParts.push(`<core:recordRef internalId=\"${(item as Record<string, unknown>).id ?? ''}\"/>`);\n }\n parts.push(`<${prefix}:${key}List>\\n ${listParts.join('\\n ')}\\n </${prefix}:${key}List>`);\n } else if (typeof value === 'boolean') {\n parts.push(`<${prefix}:${key}>${value}</${prefix}:${key}>`);\n } else {\n parts.push(`<${prefix}:${key}>${String(value)}</${prefix}:${key}>`);\n }\n }\n\n return parts.join('\\n ');\n }\n\n private buildTokenPassport(): string {\n const nonce = randomBytes(16).toString('hex');\n const timestamp = Math.floor(Date.now() / 1000).toString();\n const baseString = `${this.accountId}&${this.auth.consumerKey}&${this.auth.tokenKey}&${nonce}&${timestamp}`;\n const signingKey = `${this.auth.consumerSecret}&${this.auth.tokenSecret}`;\n const signature = createHmac('sha256', signingKey).update(baseString).digest('base64');\n\n return `\n <urn:tokenPassport>\n <core:account>${this.accountId}</core:account>\n <core:consumerKey>${this.auth.consumerKey}</core:consumerKey>\n <core:token>${this.auth.tokenKey}</core:token>\n <core:nonce>${nonce}</core:nonce>\n <core:timestamp>${timestamp}</core:timestamp>\n <core:signature algorithm=\"HMAC-SHA256\">${signature}</core:signature>\n </urn:tokenPassport>`;\n }\n\n private buildUpdateEnvelope(\n soapType: { type: string; namespace: string },\n internalId: string,\n fieldXml: string,\n ): string {\n const nsUri = NS_NAMESPACES[soapType.namespace];\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soapenv:Envelope\n xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n xmlns:urn=\"${NS_NAMESPACES.messages}\"\n xmlns:core=\"${NS_NAMESPACES.core}\"\n xmlns:${soapType.namespace}=\"${nsUri}\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n <soapenv:Header>${this.buildTokenPassport()}\n </soapenv:Header>\n <soapenv:Body>\n <urn:update>\n <urn:record xsi:type=\"${soapType.namespace}:${soapType.type}\" internalId=\"${internalId}\">\n ${fieldXml}\n </urn:record>\n </urn:update>\n </soapenv:Body>\n</soapenv:Envelope>`;\n }\n\n private buildAddEnvelope(\n soapType: { type: string; namespace: string },\n fieldXml: string,\n ): string {\n const nsUri = NS_NAMESPACES[soapType.namespace];\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soapenv:Envelope\n xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"\n xmlns:urn=\"${NS_NAMESPACES.messages}\"\n xmlns:core=\"${NS_NAMESPACES.core}\"\n xmlns:${soapType.namespace}=\"${nsUri}\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n <soapenv:Header>${this.buildTokenPassport()}\n </soapenv:Header>\n <soapenv:Body>\n <urn:add>\n <urn:record xsi:type=\"${soapType.namespace}:${soapType.type}\">\n ${fieldXml}\n </urn:record>\n </urn:add>\n </soapenv:Body>\n</soapenv:Envelope>`;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "netsuite-sdk",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "TypeScript-first NetSuite REST API client with first-class SuiteQL support",
5
5
  "author": "David Turton",
6
6
  "repository": {
@@ -49,6 +49,7 @@
49
49
  "@types/node": "^20.0.0",
50
50
  "dotenv": "^17.3.1",
51
51
  "tsup": "^8.0.2",
52
+ "tsx": "^4.21.0",
52
53
  "typescript": "~5.5.4",
53
54
  "vitest": "^2.0.0"
54
55
  },