@major-tech/resource-client 0.2.42 → 0.2.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1952 -45
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +1952 -29
- package/dist/index.js.map +7 -1
- package/package.json +1 -1
- package/dist/base.cjs +0 -78
- package/dist/base.cjs.map +0 -7
- package/dist/base.js +0 -52
- package/dist/base.js.map +0 -1
- package/dist/clients/api-custom.cjs +0 -36
- package/dist/clients/api-custom.cjs.map +0 -7
- package/dist/clients/api-custom.js +0 -9
- package/dist/clients/api-custom.js.map +0 -1
- package/dist/clients/api-graphql.cjs +0 -40
- package/dist/clients/api-graphql.cjs.map +0 -7
- package/dist/clients/api-graphql.js +0 -13
- package/dist/clients/api-graphql.js.map +0 -1
- package/dist/clients/auth.cjs +0 -49
- package/dist/clients/auth.cjs.map +0 -7
- package/dist/clients/auth.js +0 -22
- package/dist/clients/auth.js.map +0 -1
- package/dist/clients/bigquery.cjs +0 -104
- package/dist/clients/bigquery.cjs.map +0 -7
- package/dist/clients/bigquery.js +0 -77
- package/dist/clients/bigquery.js.map +0 -1
- package/dist/clients/cosmosdb.cjs +0 -119
- package/dist/clients/cosmosdb.cjs.map +0 -7
- package/dist/clients/cosmosdb.js +0 -92
- package/dist/clients/cosmosdb.js.map +0 -1
- package/dist/clients/dynamodb.cjs +0 -36
- package/dist/clients/dynamodb.cjs.map +0 -7
- package/dist/clients/dynamodb.js +0 -9
- package/dist/clients/dynamodb.js.map +0 -1
- package/dist/clients/google-analytics.cjs +0 -101
- package/dist/clients/google-analytics.cjs.map +0 -7
- package/dist/clients/google-analytics.js +0 -74
- package/dist/clients/google-analytics.js.map +0 -1
- package/dist/clients/googlesheets.cjs +0 -122
- package/dist/clients/googlesheets.cjs.map +0 -7
- package/dist/clients/googlesheets.js +0 -95
- package/dist/clients/googlesheets.js.map +0 -1
- package/dist/clients/hubspot.cjs +0 -36
- package/dist/clients/hubspot.cjs.map +0 -7
- package/dist/clients/hubspot.js +0 -9
- package/dist/clients/hubspot.js.map +0 -1
- package/dist/clients/lambda.cjs +0 -81
- package/dist/clients/lambda.cjs.map +0 -7
- package/dist/clients/lambda.js +0 -54
- package/dist/clients/lambda.js.map +0 -1
- package/dist/clients/mssql.cjs +0 -59
- package/dist/clients/mssql.cjs.map +0 -7
- package/dist/clients/mssql.js +0 -32
- package/dist/clients/mssql.js.map +0 -1
- package/dist/clients/neo4j.cjs +0 -57
- package/dist/clients/neo4j.cjs.map +0 -7
- package/dist/clients/neo4j.js +0 -30
- package/dist/clients/neo4j.js.map +0 -1
- package/dist/clients/outreach.cjs +0 -51
- package/dist/clients/outreach.cjs.map +0 -7
- package/dist/clients/outreach.js +0 -24
- package/dist/clients/outreach.js.map +0 -1
- package/dist/clients/postgres.cjs +0 -59
- package/dist/clients/postgres.cjs.map +0 -7
- package/dist/clients/postgres.js +0 -32
- package/dist/clients/postgres.js.map +0 -1
- package/dist/clients/quickbooks.cjs +0 -65
- package/dist/clients/quickbooks.cjs.map +0 -7
- package/dist/clients/quickbooks.js +0 -38
- package/dist/clients/quickbooks.js.map +0 -1
- package/dist/clients/s3.cjs +0 -36
- package/dist/clients/s3.cjs.map +0 -7
- package/dist/clients/s3.js +0 -9
- package/dist/clients/s3.js.map +0 -1
- package/dist/clients/salesforce.cjs +0 -131
- package/dist/clients/salesforce.cjs.map +0 -7
- package/dist/clients/salesforce.js +0 -144
- package/dist/clients/salesforce.js.map +0 -1
- package/dist/clients/slack.cjs +0 -66
- package/dist/clients/slack.cjs.map +0 -7
- package/dist/clients/slack.js +0 -39
- package/dist/clients/slack.js.map +0 -1
- package/dist/clients/snowflake.cjs +0 -69
- package/dist/clients/snowflake.cjs.map +0 -7
- package/dist/clients/snowflake.js +0 -42
- package/dist/clients/snowflake.js.map +0 -1
- package/dist/errors.cjs +0 -38
- package/dist/errors.cjs.map +0 -7
- package/dist/errors.js +0 -15
- package/dist/errors.js.map +0 -1
- package/dist/payload-builders/auth.cjs +0 -44
- package/dist/payload-builders/auth.cjs.map +0 -7
- package/dist/payload-builders/auth.js +0 -25
- package/dist/payload-builders/auth.js.map +0 -1
- package/dist/payload-builders/bigquery.cjs +0 -103
- package/dist/payload-builders/bigquery.cjs.map +0 -7
- package/dist/payload-builders/bigquery.js +0 -103
- package/dist/payload-builders/bigquery.js.map +0 -1
- package/dist/payload-builders/cosmosdb.cjs +0 -126
- package/dist/payload-builders/cosmosdb.cjs.map +0 -7
- package/dist/payload-builders/cosmosdb.js +0 -112
- package/dist/payload-builders/cosmosdb.js.map +0 -1
- package/dist/payload-builders/custom.cjs +0 -38
- package/dist/payload-builders/custom.cjs.map +0 -7
- package/dist/payload-builders/custom.js +0 -19
- package/dist/payload-builders/custom.js.map +0 -1
- package/dist/payload-builders/dynamodb.cjs +0 -34
- package/dist/payload-builders/dynamodb.cjs.map +0 -7
- package/dist/payload-builders/dynamodb.js +0 -14
- package/dist/payload-builders/dynamodb.js.map +0 -1
- package/dist/payload-builders/from-extracted-params.cjs +0 -442
- package/dist/payload-builders/from-extracted-params.cjs.map +0 -7
- package/dist/payload-builders/from-extracted-params.js +0 -444
- package/dist/payload-builders/from-extracted-params.js.map +0 -1
- package/dist/payload-builders/google-analytics.cjs +0 -106
- package/dist/payload-builders/google-analytics.cjs.map +0 -7
- package/dist/payload-builders/google-analytics.js +0 -90
- package/dist/payload-builders/google-analytics.js.map +0 -1
- package/dist/payload-builders/googlesheets.cjs +0 -106
- package/dist/payload-builders/googlesheets.cjs.map +0 -7
- package/dist/payload-builders/googlesheets.js +0 -115
- package/dist/payload-builders/googlesheets.js.map +0 -1
- package/dist/payload-builders/graphql.cjs +0 -37
- package/dist/payload-builders/graphql.cjs.map +0 -7
- package/dist/payload-builders/graphql.js +0 -17
- package/dist/payload-builders/graphql.js.map +0 -1
- package/dist/payload-builders/hubspot.cjs +0 -37
- package/dist/payload-builders/hubspot.cjs.map +0 -7
- package/dist/payload-builders/hubspot.js +0 -18
- package/dist/payload-builders/hubspot.js.map +0 -1
- package/dist/payload-builders/index.cjs +0 -101
- package/dist/payload-builders/index.cjs.map +0 -7
- package/dist/payload-builders/index.js +0 -41
- package/dist/payload-builders/index.js.map +0 -1
- package/dist/payload-builders/lambda.cjs +0 -35
- package/dist/payload-builders/lambda.cjs.map +0 -7
- package/dist/payload-builders/lambda.js +0 -16
- package/dist/payload-builders/lambda.js.map +0 -1
- package/dist/payload-builders/mssql.cjs +0 -35
- package/dist/payload-builders/mssql.cjs.map +0 -7
- package/dist/payload-builders/mssql.js +0 -16
- package/dist/payload-builders/mssql.js.map +0 -1
- package/dist/payload-builders/neo4j.cjs +0 -35
- package/dist/payload-builders/neo4j.cjs.map +0 -7
- package/dist/payload-builders/neo4j.js +0 -16
- package/dist/payload-builders/neo4j.js.map +0 -1
- package/dist/payload-builders/outreach.cjs +0 -37
- package/dist/payload-builders/outreach.cjs.map +0 -7
- package/dist/payload-builders/outreach.js +0 -18
- package/dist/payload-builders/outreach.js.map +0 -1
- package/dist/payload-builders/postgres.cjs +0 -35
- package/dist/payload-builders/postgres.cjs.map +0 -7
- package/dist/payload-builders/postgres.js +0 -16
- package/dist/payload-builders/postgres.js.map +0 -1
- package/dist/payload-builders/quickbooks.cjs +0 -45
- package/dist/payload-builders/quickbooks.cjs.map +0 -7
- package/dist/payload-builders/quickbooks.js +0 -18
- package/dist/payload-builders/quickbooks.js.map +0 -1
- package/dist/payload-builders/s3.cjs +0 -35
- package/dist/payload-builders/s3.cjs.map +0 -7
- package/dist/payload-builders/s3.js +0 -16
- package/dist/payload-builders/s3.js.map +0 -1
- package/dist/payload-builders/salesforce.cjs +0 -87
- package/dist/payload-builders/salesforce.cjs.map +0 -7
- package/dist/payload-builders/salesforce.js +0 -91
- package/dist/payload-builders/salesforce.js.map +0 -1
- package/dist/payload-builders/slack.cjs +0 -59
- package/dist/payload-builders/slack.cjs.map +0 -7
- package/dist/payload-builders/slack.js +0 -35
- package/dist/payload-builders/slack.js.map +0 -1
- package/dist/payload-builders/snowflake.cjs +0 -70
- package/dist/payload-builders/snowflake.cjs.map +0 -7
- package/dist/payload-builders/snowflake.js +0 -57
- package/dist/payload-builders/snowflake.js.map +0 -1
- package/dist/schemas/api-custom.cjs +0 -17
- package/dist/schemas/api-custom.cjs.map +0 -7
- package/dist/schemas/api-custom.js +0 -2
- package/dist/schemas/api-custom.js.map +0 -1
- package/dist/schemas/api-googlesheets.cjs +0 -17
- package/dist/schemas/api-googlesheets.cjs.map +0 -7
- package/dist/schemas/api-googlesheets.js +0 -2
- package/dist/schemas/api-googlesheets.js.map +0 -1
- package/dist/schemas/api-graphql.cjs +0 -17
- package/dist/schemas/api-graphql.cjs.map +0 -7
- package/dist/schemas/api-graphql.js +0 -2
- package/dist/schemas/api-graphql.js.map +0 -1
- package/dist/schemas/api-hubspot.cjs +0 -17
- package/dist/schemas/api-hubspot.cjs.map +0 -7
- package/dist/schemas/api-hubspot.js +0 -2
- package/dist/schemas/api-hubspot.js.map +0 -1
- package/dist/schemas/api-outreach.cjs +0 -17
- package/dist/schemas/api-outreach.cjs.map +0 -7
- package/dist/schemas/api-outreach.js +0 -2
- package/dist/schemas/api-outreach.js.map +0 -1
- package/dist/schemas/api-quickbooks.cjs +0 -17
- package/dist/schemas/api-quickbooks.cjs.map +0 -7
- package/dist/schemas/api-quickbooks.js +0 -2
- package/dist/schemas/api-quickbooks.js.map +0 -1
- package/dist/schemas/api-salesforce.cjs +0 -17
- package/dist/schemas/api-salesforce.cjs.map +0 -7
- package/dist/schemas/api-salesforce.js +0 -2
- package/dist/schemas/api-salesforce.js.map +0 -1
- package/dist/schemas/api-slack.cjs +0 -17
- package/dist/schemas/api-slack.cjs.map +0 -7
- package/dist/schemas/api-slack.js +0 -2
- package/dist/schemas/api-slack.js.map +0 -1
- package/dist/schemas/auth.cjs +0 -17
- package/dist/schemas/auth.cjs.map +0 -7
- package/dist/schemas/auth.js +0 -5
- package/dist/schemas/auth.js.map +0 -1
- package/dist/schemas/bigquery.cjs +0 -17
- package/dist/schemas/bigquery.cjs.map +0 -7
- package/dist/schemas/bigquery.js +0 -5
- package/dist/schemas/bigquery.js.map +0 -1
- package/dist/schemas/common.cjs +0 -17
- package/dist/schemas/common.cjs.map +0 -7
- package/dist/schemas/common.js +0 -2
- package/dist/schemas/common.js.map +0 -1
- package/dist/schemas/cosmosdb.cjs +0 -17
- package/dist/schemas/cosmosdb.cjs.map +0 -7
- package/dist/schemas/cosmosdb.js +0 -2
- package/dist/schemas/cosmosdb.js.map +0 -1
- package/dist/schemas/dynamodb.cjs +0 -17
- package/dist/schemas/dynamodb.cjs.map +0 -7
- package/dist/schemas/dynamodb.js +0 -2
- package/dist/schemas/dynamodb.js.map +0 -1
- package/dist/schemas/google-analytics.cjs +0 -17
- package/dist/schemas/google-analytics.cjs.map +0 -7
- package/dist/schemas/google-analytics.js +0 -2
- package/dist/schemas/google-analytics.js.map +0 -1
- package/dist/schemas/index.cjs +0 -40
- package/dist/schemas/index.cjs.map +0 -7
- package/dist/schemas/index.js +0 -24
- package/dist/schemas/index.js.map +0 -1
- package/dist/schemas/lambda.cjs +0 -17
- package/dist/schemas/lambda.cjs.map +0 -7
- package/dist/schemas/lambda.js +0 -2
- package/dist/schemas/lambda.js.map +0 -1
- package/dist/schemas/mssql.cjs +0 -17
- package/dist/schemas/mssql.cjs.map +0 -7
- package/dist/schemas/mssql.js +0 -2
- package/dist/schemas/mssql.js.map +0 -1
- package/dist/schemas/neo4j.cjs +0 -17
- package/dist/schemas/neo4j.cjs.map +0 -7
- package/dist/schemas/neo4j.js +0 -2
- package/dist/schemas/neo4j.js.map +0 -1
- package/dist/schemas/postgres.cjs +0 -17
- package/dist/schemas/postgres.cjs.map +0 -7
- package/dist/schemas/postgres.js +0 -2
- package/dist/schemas/postgres.js.map +0 -1
- package/dist/schemas/request.cjs +0 -17
- package/dist/schemas/request.cjs.map +0 -7
- package/dist/schemas/request.js +0 -2
- package/dist/schemas/request.js.map +0 -1
- package/dist/schemas/response.cjs +0 -17
- package/dist/schemas/response.cjs.map +0 -7
- package/dist/schemas/response.js +0 -2
- package/dist/schemas/response.js.map +0 -1
- package/dist/schemas/s3.cjs +0 -17
- package/dist/schemas/s3.cjs.map +0 -7
- package/dist/schemas/s3.js +0 -2
- package/dist/schemas/s3.js.map +0 -1
- package/dist/schemas/snowflake.cjs +0 -17
- package/dist/schemas/snowflake.cjs.map +0 -7
- package/dist/schemas/snowflake.js +0 -2
- package/dist/schemas/snowflake.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/errors.ts", "../src/base.ts", "../src/payload-builders/postgres.ts", "../src/clients/postgres.ts", "../src/payload-builders/mssql.ts", "../src/clients/mssql.ts", "../src/payload-builders/dynamodb.ts", "../src/clients/dynamodb.ts", "../src/payload-builders/cosmosdb.ts", "../src/clients/cosmosdb.ts", "../src/payload-builders/snowflake.ts", "../src/clients/snowflake.ts", "../src/payload-builders/custom.ts", "../src/clients/api-custom.ts", "../src/payload-builders/hubspot.ts", "../src/clients/hubspot.ts", "../src/payload-builders/salesforce.ts", "../src/clients/salesforce.ts", "../src/payload-builders/googlesheets.ts", "../src/clients/googlesheets.ts", "../src/payload-builders/s3.ts", "../src/clients/s3.ts", "../src/payload-builders/lambda.ts", "../src/clients/lambda.ts", "../src/payload-builders/bigquery.ts", "../src/clients/bigquery.ts", "../src/clients/outreach.ts", "../src/payload-builders/neo4j.ts", "../src/clients/neo4j.ts", "../src/payload-builders/slack.ts", "../src/clients/slack.ts", "../src/payload-builders/quickbooks.ts", "../src/clients/quickbooks.ts", "../src/payload-builders/auth.ts", "../src/clients/auth.ts", "../src/payload-builders/google-analytics.ts", "../src/clients/google-analytics.ts", "../src/payload-builders/graphql.ts", "../src/clients/api-graphql.ts", "../src/payload-builders/outreach.ts", "../src/payload-builders/from-extracted-params.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Error thrown when resource invocation fails\n * Contains the error message and optional HTTP status code\n */\nexport class ResourceInvokeError extends Error {\n readonly httpStatus?: number;\n readonly requestId?: string;\n\n constructor(\n message: string,\n httpStatus?: number,\n requestId?: string\n ) {\n super(message);\n this.name = \"ResourceInvokeError\";\n this.httpStatus = httpStatus;\n this.requestId = requestId;\n }\n}\n\n", "import type {\n ResourceInvokePayload,\n InvokeResponse,\n InvokeRequest,\n} from \"./schemas\";\nimport { ResourceInvokeError } from \"./errors\";\n\nexport interface BaseClientConfig {\n baseUrl: string;\n majorJwtToken?: string;\n applicationId?: string; // For app mode\n toolId?: string; // For tool mode \u2014 mutually exclusive with applicationId\n resourceId: string;\n fetch?: typeof fetch;\n /**\n * Optional function to get additional headers (e.g. for auth)\n * Useful for Next.js Server Components where headers() must be called dynamically\n */\n getHeaders?: () => Promise<Record<string, string>> | Record<string, string>;\n}\n\nexport abstract class BaseResourceClient {\n protected readonly config: {\n baseUrl: string;\n majorJwtToken?: string;\n applicationId?: string;\n toolId?: string;\n resourceId: string;\n fetch: typeof fetch;\n getHeaders?: () => Promise<Record<string, string>> | Record<string, string>;\n };\n\n constructor(config: BaseClientConfig) {\n if (!config.applicationId && !config.toolId) {\n throw new Error(\"BaseResourceClient requires either applicationId or toolId\");\n }\n\n this.config = {\n baseUrl: config.baseUrl.replace(/\\/$/, \"\"),\n majorJwtToken: config.majorJwtToken,\n applicationId: config.applicationId,\n toolId: config.toolId,\n resourceId: config.resourceId,\n fetch: config.fetch || globalThis.fetch,\n getHeaders: config.getHeaders,\n };\n }\n\n protected async invokeRaw(\n payload: ResourceInvokePayload,\n invocationKey: string,\n ): Promise<InvokeResponse> {\n const entityType = this.config.toolId ? \"tools\" : \"apps\";\n const entityId = this.config.toolId || this.config.applicationId;\n const url = `${this.config.baseUrl}/internal/${entityType}/v1/${entityId}/resource/${this.config.resourceId}/invoke`;\n \n const body: InvokeRequest = {\n payload,\n invocationKey,\n };\n\n let headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n\n if (this.config.majorJwtToken) {\n headers[\"x-major-jwt\"] = this.config.majorJwtToken;\n }\n\n if (this.config.getHeaders) {\n const extraHeaders = await this.config.getHeaders();\n headers = { ...headers, ...extraHeaders };\n }\n\n try {\n const response = await this.config.fetch(url, {\n method: \"POST\",\n headers,\n credentials: \"include\",\n body: JSON.stringify(body),\n });\n\n const data = await response.json();\n return data as InvokeResponse;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new ResourceInvokeError(`Failed to invoke resource: ${message}`);\n }\n }\n}\n\n", "import type { DbPostgresPayload, DbParamPrimitive } from \"../schemas\";\n\n/**\n * Build a PostgreSQL invoke payload\n * @param sql The SQL query to execute\n * @param params Optional positional parameters ($1, $2, etc.)\n * @param timeoutMs Optional timeout in milliseconds\n */\nexport function buildPostgresInvokePayload(\n sql: string,\n params?: DbParamPrimitive[],\n timeoutMs?: number\n): DbPostgresPayload {\n return {\n type: \"database\",\n subtype: \"postgresql\",\n sql,\n params,\n timeoutMs,\n };\n}\n", "import type {\n DbParamPrimitive,\n DatabaseInvokeResponse,\n} from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildPostgresInvokePayload } from \"../payload-builders/postgres\";\n\nexport class PostgresResourceClient extends BaseResourceClient {\n /**\n * Execute a SQL query against PostgreSQL\n * @param sql The SQL query to execute\n * @param params Optional positional parameters ($1, $2, etc.)\n * @param invocationKey Unique key for tracking this invocation\n * @param timeoutMs Optional timeout in milliseconds\n * @returns Typed response with rows of type T\n *\n * @example\n * ```ts\n * interface User { id: number; name: string; email: string }\n *\n * const response = await client.invoke<User>(\n * \"SELECT id, name, email FROM users WHERE id = $1\",\n * [123],\n * \"get-user-123\"\n * );\n *\n * if (response.ok) {\n * const users: User[] = response.result.rows;\n * }\n * ```\n */\n async invoke<T = Record<string, unknown>>(\n sql: string,\n params: DbParamPrimitive[] | undefined,\n invocationKey: string,\n timeoutMs?: number\n ): Promise<DatabaseInvokeResponse<T>> {\n const payload = buildPostgresInvokePayload(sql, params, timeoutMs);\n return this.invokeRaw(payload, invocationKey) as Promise<DatabaseInvokeResponse<T>>;\n }\n}\n\n", "import type { DbMssqlPayload, DbMssqlParamValue } from \"../schemas\";\n\n/**\n * Build a MSSQL invoke payload\n * @param sql The SQL query to execute\n * @param params Optional named parameters (e.g., { id: 123 } for @id in the query)\n * @param timeoutMs Optional timeout in milliseconds\n */\nexport function buildMssqlInvokePayload(\n sql: string,\n params?: Record<string, DbMssqlParamValue>,\n timeoutMs?: number\n): DbMssqlPayload {\n return {\n type: \"database\",\n subtype: \"mssql\",\n sql,\n params,\n timeoutMs,\n };\n}\n", "import type {\n DbMssqlParamValue,\n DatabaseInvokeResponse,\n} from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildMssqlInvokePayload } from \"../payload-builders/mssql\";\n\nexport class MssqlResourceClient extends BaseResourceClient {\n /**\n * Execute a SQL query against MSSQL\n * @param sql The SQL query to execute\n * @param params Optional named parameters (e.g., { id: 123 } for @id in the query)\n * @param invocationKey Unique key for tracking this invocation\n * @param timeoutMs Optional timeout in milliseconds\n * @returns Typed response with rows of type T\n *\n * @example\n * ```ts\n * interface User { id: number; name: string; email: string }\n *\n * const response = await client.invoke<User>(\n * \"SELECT id, name, email FROM users WHERE id = @id\",\n * { id: 123 },\n * \"get-user-123\"\n * );\n *\n * if (response.ok) {\n * const users: User[] = response.result.rows;\n * }\n * ```\n */\n async invoke<T = Record<string, unknown>>(\n sql: string,\n params: Record<string, DbMssqlParamValue> | undefined,\n invocationKey: string,\n timeoutMs?: number\n ): Promise<DatabaseInvokeResponse<T>> {\n const payload = buildMssqlInvokePayload(sql, params, timeoutMs);\n return this.invokeRaw(payload, invocationKey) as Promise<DatabaseInvokeResponse<T>>;\n }\n}\n", "import type { DbDynamoDBPayload, DynamoDBCommandInputMap } from \"../schemas\";\n\n/**\n * Build a DynamoDB invoke payload\n * @param command The DynamoDB command to execute\n * @param params The command parameters\n */\nexport function buildDynamoDBInvokePayload<C extends keyof DynamoDBCommandInputMap>(\n command: C,\n params: DynamoDBCommandInputMap[C]\n): DbDynamoDBPayload {\n return {\n type: \"database\",\n subtype: \"dynamodb\",\n command,\n params,\n } as DbDynamoDBPayload;\n}\n", "import type {\n DynamoDBCommandInputMap,\n DbDynamoDBResultForCommand,\n} from \"../schemas\";\nimport type { BaseInvokeSuccess, InvokeFailure } from \"../schemas/response\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildDynamoDBInvokePayload } from \"../payload-builders/dynamodb\";\n\nexport class DynamoDBResourceClient extends BaseResourceClient {\n async invoke<C extends keyof DynamoDBCommandInputMap>(\n command: C,\n params: DynamoDBCommandInputMap[C],\n invocationKey: string,\n ): Promise<BaseInvokeSuccess<DbDynamoDBResultForCommand<C>> | InvokeFailure> {\n const payload = buildDynamoDBInvokePayload(command, params);\n return this.invokeRaw(payload, invocationKey) as Promise<\n BaseInvokeSuccess<DbDynamoDBResultForCommand<C>> | InvokeFailure\n >;\n }\n}\n", "import type {\n DbCosmosDBPayload,\n CosmosQueryPayload,\n CosmosReadPayload,\n CosmosCreatePayload,\n CosmosReplacePayload,\n CosmosUpsertPayload,\n CosmosDeletePayload,\n CosmosPatchPayload,\n CosmosValue,\n PartitionKey,\n CosmosQueryParameter,\n CosmosPatchOperation,\n} from \"../schemas\";\n\n/**\n * Build a CosmosDB invoke payload (raw payload passthrough)\n * @param payload The complete CosmosDB operation payload\n */\nexport function buildCosmosDBInvokePayload(\n payload: DbCosmosDBPayload\n): DbCosmosDBPayload {\n return payload;\n}\n\n/**\n * Build a CosmosDB query payload\n */\nexport function buildCosmosDBQueryPayload(\n container: string,\n query: string,\n options?: {\n parameters?: CosmosQueryParameter[];\n partitionKey?: PartitionKey;\n maxItemCount?: number;\n continuationToken?: string;\n timeoutMs?: number;\n }\n): CosmosQueryPayload {\n return {\n type: \"database\",\n subtype: \"cosmosdb\",\n operation: \"query\",\n container,\n query,\n parameters: options?.parameters,\n partitionKey: options?.partitionKey,\n maxItemCount: options?.maxItemCount,\n continuationToken: options?.continuationToken,\n timeoutMs: options?.timeoutMs,\n };\n}\n\n/**\n * Build a CosmosDB read payload\n */\nexport function buildCosmosDBReadPayload(\n container: string,\n id: string,\n options?: { partitionKey?: PartitionKey; timeoutMs?: number }\n): CosmosReadPayload {\n return {\n type: \"database\",\n subtype: \"cosmosdb\",\n operation: \"read\",\n container,\n id,\n partitionKey: options?.partitionKey,\n timeoutMs: options?.timeoutMs,\n };\n}\n\n/**\n * Build a CosmosDB create payload\n */\nexport function buildCosmosDBCreatePayload(\n container: string,\n body: Record<string, CosmosValue>,\n options?: { partitionKey?: PartitionKey; timeoutMs?: number }\n): CosmosCreatePayload {\n return {\n type: \"database\",\n subtype: \"cosmosdb\",\n operation: \"create\",\n container,\n body,\n partitionKey: options?.partitionKey,\n timeoutMs: options?.timeoutMs,\n };\n}\n\n/**\n * Build a CosmosDB replace payload\n */\nexport function buildCosmosDBReplacePayload(\n container: string,\n id: string,\n body: Record<string, CosmosValue>,\n options?: { partitionKey?: PartitionKey; timeoutMs?: number }\n): CosmosReplacePayload {\n return {\n type: \"database\",\n subtype: \"cosmosdb\",\n operation: \"replace\",\n container,\n id,\n body,\n partitionKey: options?.partitionKey,\n timeoutMs: options?.timeoutMs,\n };\n}\n\n/**\n * Build a CosmosDB upsert payload\n */\nexport function buildCosmosDBUpsertPayload(\n container: string,\n body: Record<string, CosmosValue>,\n options?: { partitionKey?: PartitionKey; timeoutMs?: number }\n): CosmosUpsertPayload {\n return {\n type: \"database\",\n subtype: \"cosmosdb\",\n operation: \"upsert\",\n container,\n body,\n partitionKey: options?.partitionKey,\n timeoutMs: options?.timeoutMs,\n };\n}\n\n/**\n * Build a CosmosDB delete payload\n */\nexport function buildCosmosDBDeletePayload(\n container: string,\n id: string,\n options?: { partitionKey?: PartitionKey; timeoutMs?: number }\n): CosmosDeletePayload {\n return {\n type: \"database\",\n subtype: \"cosmosdb\",\n operation: \"delete\",\n container,\n id,\n partitionKey: options?.partitionKey,\n timeoutMs: options?.timeoutMs,\n };\n}\n\n/**\n * Build a CosmosDB patch payload\n */\nexport function buildCosmosDBPatchPayload(\n container: string,\n id: string,\n patchOperations: CosmosPatchOperation[],\n options?: { partitionKey?: PartitionKey; condition?: string; timeoutMs?: number }\n): CosmosPatchPayload {\n return {\n type: \"database\",\n subtype: \"cosmosdb\",\n operation: \"patch\",\n container,\n id,\n patchOperations,\n partitionKey: options?.partitionKey,\n condition: options?.condition,\n timeoutMs: options?.timeoutMs,\n };\n}\n", "import type {\n DbCosmosDBPayload,\n CosmosValue,\n PartitionKey,\n CosmosQueryParameter,\n CosmosPatchOperation,\n CosmosQueryResult,\n CosmosReadResult,\n CosmosCreateResult,\n CosmosReplaceResult,\n CosmosUpsertResult,\n CosmosDeleteResult,\n CosmosPatchResult,\n DbCosmosDBResultGeneric,\n} from \"../schemas\";\nimport type { BaseInvokeSuccess, InvokeFailure } from \"../schemas/response\";\nimport { BaseResourceClient } from \"../base\";\nimport {\n buildCosmosDBInvokePayload,\n buildCosmosDBQueryPayload,\n buildCosmosDBReadPayload,\n buildCosmosDBCreatePayload,\n buildCosmosDBReplacePayload,\n buildCosmosDBUpsertPayload,\n buildCosmosDBDeletePayload,\n buildCosmosDBPatchPayload,\n} from \"../payload-builders/cosmosdb\";\n\nexport class CosmosDBResourceClient extends BaseResourceClient {\n /**\n * Invoke a CosmosDB operation with a raw payload\n * @param payload The complete operation payload\n * @param invocationKey Unique key for tracking this invocation\n */\n async invoke<T = Record<string, unknown>>(\n payload: DbCosmosDBPayload,\n invocationKey: string\n ): Promise<BaseInvokeSuccess<DbCosmosDBResultGeneric<T>> | InvokeFailure> {\n return this.invokeRaw(buildCosmosDBInvokePayload(payload), invocationKey) as Promise<\n BaseInvokeSuccess<DbCosmosDBResultGeneric<T>> | InvokeFailure\n >;\n }\n\n /**\n * Execute a SQL query against a container\n * @param container The container name\n * @param query The SQL query string\n * @param invocationKey Unique key for tracking this invocation\n * @param options Query options (parameters, partitionKey, pagination)\n */\n async query<T = Record<string, unknown>>(\n container: string,\n query: string,\n invocationKey: string,\n options?: {\n parameters?: CosmosQueryParameter[];\n partitionKey?: PartitionKey;\n maxItemCount?: number;\n continuationToken?: string;\n timeoutMs?: number;\n }\n ): Promise<BaseInvokeSuccess<CosmosQueryResult<T>> | InvokeFailure> {\n const payload = buildCosmosDBQueryPayload(container, query, options);\n return this.invokeRaw(payload, invocationKey) as Promise<\n BaseInvokeSuccess<CosmosQueryResult<T>> | InvokeFailure\n >;\n }\n\n /**\n * Read a single document by ID\n * @param container The container name\n * @param id The document ID\n * @param invocationKey Unique key for tracking this invocation\n * @param options Additional options (partitionKey, timeoutMs)\n */\n async read<T = Record<string, unknown>>(\n container: string,\n id: string,\n invocationKey: string,\n options?: { partitionKey?: PartitionKey; timeoutMs?: number }\n ): Promise<BaseInvokeSuccess<CosmosReadResult<T>> | InvokeFailure> {\n const payload = buildCosmosDBReadPayload(container, id, options);\n return this.invokeRaw(payload, invocationKey) as Promise<\n BaseInvokeSuccess<CosmosReadResult<T>> | InvokeFailure\n >;\n }\n\n /**\n * Create a new document\n * @param container The container name\n * @param body The document body (must include id and partition key properties)\n * @param invocationKey Unique key for tracking this invocation\n * @param options Additional options (partitionKey, timeoutMs)\n */\n async create<T = Record<string, unknown>>(\n container: string,\n body: Record<string, CosmosValue>,\n invocationKey: string,\n options?: { partitionKey?: PartitionKey; timeoutMs?: number }\n ): Promise<BaseInvokeSuccess<CosmosCreateResult<T>> | InvokeFailure> {\n const payload = buildCosmosDBCreatePayload(container, body, options);\n return this.invokeRaw(payload, invocationKey) as Promise<\n BaseInvokeSuccess<CosmosCreateResult<T>> | InvokeFailure\n >;\n }\n\n /**\n * Replace an existing document\n * @param container The container name\n * @param id The document ID\n * @param body The new document body\n * @param invocationKey Unique key for tracking this invocation\n * @param options Additional options (partitionKey, timeoutMs)\n */\n async replace<T = Record<string, unknown>>(\n container: string,\n id: string,\n body: Record<string, CosmosValue>,\n invocationKey: string,\n options?: { partitionKey?: PartitionKey; timeoutMs?: number }\n ): Promise<BaseInvokeSuccess<CosmosReplaceResult<T>> | InvokeFailure> {\n const payload = buildCosmosDBReplacePayload(container, id, body, options);\n return this.invokeRaw(payload, invocationKey) as Promise<\n BaseInvokeSuccess<CosmosReplaceResult<T>> | InvokeFailure\n >;\n }\n\n /**\n * Upsert a document (insert or replace)\n * @param container The container name\n * @param body The document body (must include id and partition key properties)\n * @param invocationKey Unique key for tracking this invocation\n * @param options Additional options (partitionKey, timeoutMs)\n */\n async upsert<T = Record<string, unknown>>(\n container: string,\n body: Record<string, CosmosValue>,\n invocationKey: string,\n options?: { partitionKey?: PartitionKey; timeoutMs?: number }\n ): Promise<BaseInvokeSuccess<CosmosUpsertResult<T>> | InvokeFailure> {\n const payload = buildCosmosDBUpsertPayload(container, body, options);\n return this.invokeRaw(payload, invocationKey) as Promise<\n BaseInvokeSuccess<CosmosUpsertResult<T>> | InvokeFailure\n >;\n }\n\n /**\n * Delete a document\n * @param container The container name\n * @param id The document ID\n * @param invocationKey Unique key for tracking this invocation\n * @param options Additional options (partitionKey, timeoutMs)\n */\n async delete(\n container: string,\n id: string,\n invocationKey: string,\n options?: { partitionKey?: PartitionKey; timeoutMs?: number }\n ): Promise<BaseInvokeSuccess<CosmosDeleteResult> | InvokeFailure> {\n const payload = buildCosmosDBDeletePayload(container, id, options);\n return this.invokeRaw(payload, invocationKey) as Promise<\n BaseInvokeSuccess<CosmosDeleteResult> | InvokeFailure\n >;\n }\n\n /**\n * Patch a document with partial updates\n * @param container The container name\n * @param id The document ID\n * @param patchOperations Array of patch operations\n * @param invocationKey Unique key for tracking this invocation\n * @param options Additional options (partitionKey, condition, timeoutMs)\n */\n async patch<T = Record<string, unknown>>(\n container: string,\n id: string,\n patchOperations: CosmosPatchOperation[],\n invocationKey: string,\n options?: { partitionKey?: PartitionKey; condition?: string; timeoutMs?: number }\n ): Promise<BaseInvokeSuccess<CosmosPatchResult<T>> | InvokeFailure> {\n const payload = buildCosmosDBPatchPayload(container, id, patchOperations, options);\n return this.invokeRaw(payload, invocationKey) as Promise<\n BaseInvokeSuccess<CosmosPatchResult<T>> | InvokeFailure\n >;\n }\n}\n", "import type {\n DbSnowflakePayload,\n SnowflakeExecutePayload,\n SnowflakeStatusPayload,\n SnowflakeCancelPayload,\n SnowflakeBindingValue,\n SnowflakeSessionParameters,\n} from \"../schemas\";\n\n/**\n * Build a Snowflake invoke payload (raw payload passthrough)\n * @param payload The complete Snowflake operation payload\n */\nexport function buildSnowflakeInvokePayload(\n payload: DbSnowflakePayload\n): DbSnowflakePayload {\n return payload;\n}\n\n/**\n * Build a Snowflake execute payload\n * @param statement The SQL statement to execute\n * @param options Execution options\n */\nexport function buildSnowflakeExecutePayload(\n statement: string,\n options?: {\n bindings?: Record<string, SnowflakeBindingValue>;\n database?: string;\n schema?: string;\n warehouse?: string;\n role?: string;\n timeout?: number;\n async?: boolean;\n parameters?: SnowflakeSessionParameters;\n nullable?: boolean;\n requestId?: string;\n }\n): SnowflakeExecutePayload {\n return {\n type: \"database\",\n subtype: \"snowflake\",\n operation: \"execute\",\n statement,\n bindings: options?.bindings,\n database: options?.database,\n schema: options?.schema,\n warehouse: options?.warehouse,\n role: options?.role,\n timeout: options?.timeout,\n async: options?.async,\n parameters: options?.parameters,\n nullable: options?.nullable,\n requestId: options?.requestId,\n };\n}\n\n/**\n * Build a Snowflake status payload\n * @param statementHandle The statement handle from execute operation\n * @param options Status options\n */\nexport function buildSnowflakeStatusPayload(\n statementHandle: string,\n options?: { partition?: number }\n): SnowflakeStatusPayload {\n return {\n type: \"database\",\n subtype: \"snowflake\",\n operation: \"status\",\n statementHandle,\n partition: options?.partition,\n };\n}\n\n/**\n * Build a Snowflake cancel payload\n * @param statementHandle The statement handle to cancel\n */\nexport function buildSnowflakeCancelPayload(\n statementHandle: string\n): SnowflakeCancelPayload {\n return {\n type: \"database\",\n subtype: \"snowflake\",\n operation: \"cancel\",\n statementHandle,\n };\n}\n", "import type {\n DbSnowflakePayload,\n DbSnowflakeResult,\n SnowflakeBindingValue,\n SnowflakeSessionParameters,\n} from \"../schemas\";\nimport type { BaseInvokeSuccess, InvokeFailure } from \"../schemas/response\";\nimport { BaseResourceClient } from \"../base\";\nimport {\n buildSnowflakeInvokePayload,\n buildSnowflakeExecutePayload,\n buildSnowflakeStatusPayload,\n buildSnowflakeCancelPayload,\n} from \"../payload-builders/snowflake\";\n\n/**\n * Response type for Snowflake operations\n */\nexport type SnowflakeInvokeResponse =\n | BaseInvokeSuccess<DbSnowflakeResult>\n | InvokeFailure;\n\n/**\n * Options for execute operation\n */\nexport interface SnowflakeExecuteOptions {\n /** Parameter bindings */\n bindings?: Record<string, SnowflakeBindingValue>;\n /** Override default database */\n database?: string;\n /** Override default schema */\n schema?: string;\n /** Override default warehouse */\n warehouse?: string;\n /** Override default role */\n role?: string;\n /** Timeout in seconds (0 = max timeout of 604800s / 7 days) */\n timeout?: number;\n /** Execute asynchronously - returns statementHandle immediately */\n async?: boolean;\n /** Session parameters for this execution */\n parameters?: SnowflakeSessionParameters;\n /** Return SQL NULL as string \"null\" instead of JSON null */\n nullable?: boolean;\n /** Request ID for idempotency (auto-generated if not provided) */\n requestId?: string;\n}\n\n/**\n * Options for status operation\n */\nexport interface SnowflakeStatusOptions {\n /** For paginated results - retrieve specific partition (0-indexed) */\n partition?: number;\n}\n\nexport class SnowflakeResourceClient extends BaseResourceClient {\n /**\n * Invoke a Snowflake operation with a raw payload\n * @param payload The complete operation payload\n * @param invocationKey Unique key for tracking this invocation\n */\n async invoke(\n payload: DbSnowflakePayload,\n invocationKey: string\n ): Promise<SnowflakeInvokeResponse> {\n return this.invokeRaw(buildSnowflakeInvokePayload(payload), invocationKey) as Promise<SnowflakeInvokeResponse>;\n }\n\n /**\n * Execute a SQL statement\n * @param statement The SQL statement to execute\n * @param invocationKey Unique key for tracking this invocation\n * @param options Execution options (bindings, database overrides, async, etc.)\n */\n async execute(\n statement: string,\n invocationKey: string,\n options: SnowflakeExecuteOptions = {}\n ): Promise<SnowflakeInvokeResponse> {\n const payload = buildSnowflakeExecutePayload(statement, options);\n return this.invokeRaw(payload, invocationKey) as Promise<SnowflakeInvokeResponse>;\n }\n\n /**\n * Get status or results of a statement\n * @param statementHandle The statement handle from execute operation\n * @param invocationKey Unique key for tracking this invocation\n * @param options Status options (partition for paginated results)\n */\n async status(\n statementHandle: string,\n invocationKey: string,\n options: SnowflakeStatusOptions = {}\n ): Promise<SnowflakeInvokeResponse> {\n const payload = buildSnowflakeStatusPayload(statementHandle, options);\n return this.invokeRaw(payload, invocationKey) as Promise<SnowflakeInvokeResponse>;\n }\n\n /**\n * Cancel a running statement\n * @param statementHandle The statement handle to cancel\n * @param invocationKey Unique key for tracking this invocation\n */\n async cancel(\n statementHandle: string,\n invocationKey: string\n ): Promise<SnowflakeInvokeResponse> {\n const payload = buildSnowflakeCancelPayload(statementHandle);\n return this.invokeRaw(payload, invocationKey) as Promise<SnowflakeInvokeResponse>;\n }\n}\n", "import type { ApiCustomPayload, HttpMethod, QueryParams, BodyPayload } from \"../schemas\";\n\n/**\n * Build a Custom API invoke payload\n * @param method HTTP method to use\n * @param path Path to append to the resource's base URL\n * @param options Additional options\n */\nexport function buildCustomApiInvokePayload(\n method: HttpMethod,\n path: string,\n options?: {\n query?: QueryParams;\n headers?: Record<string, string>;\n body?: BodyPayload;\n timeoutMs?: number;\n }\n): ApiCustomPayload {\n return {\n type: \"api\",\n subtype: \"custom\",\n method,\n path,\n query: options?.query,\n headers: options?.headers,\n body: options?.body,\n timeoutMs: options?.timeoutMs ?? 30000,\n };\n}\n", "import type {\n HttpMethod,\n QueryParams,\n BodyPayload,\n ApiInvokeResponse,\n} from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildCustomApiInvokePayload } from \"../payload-builders/custom\";\n\nexport class CustomApiResourceClient extends BaseResourceClient {\n async invoke(\n method: HttpMethod,\n path: string,\n invocationKey: string,\n options: {\n query?: QueryParams;\n headers?: Record<string, string>;\n body?: BodyPayload;\n timeoutMs?: number;\n } = {}\n ): Promise<ApiInvokeResponse> {\n const payload = buildCustomApiInvokePayload(method, path, options);\n return this.invokeRaw(payload, invocationKey) as Promise<ApiInvokeResponse>;\n }\n}\n\n", "import type { ApiHubSpotPayload, HttpMethod, QueryParams, JsonBody } from \"../schemas\";\n\n/**\n * Build a HubSpot invoke payload\n * @param method HTTP method to use\n * @param path HubSpot API path\n * @param options Additional options\n */\nexport function buildHubSpotInvokePayload(\n method: HttpMethod,\n path: string,\n options?: {\n query?: QueryParams;\n body?: JsonBody;\n timeoutMs?: number;\n }\n): ApiHubSpotPayload {\n return {\n type: \"api\",\n subtype: \"hubspot\",\n method,\n path,\n query: options?.query,\n body: options?.body,\n timeoutMs: options?.timeoutMs ?? 30000,\n };\n}\n", "import type {\n HttpMethod,\n QueryParams,\n ApiInvokeResponse,\n} from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildHubSpotInvokePayload } from \"../payload-builders/hubspot\";\n\nexport class HubSpotResourceClient extends BaseResourceClient {\n async invoke(\n method: HttpMethod,\n path: string,\n invocationKey: string,\n options: {\n query?: QueryParams;\n body?: { type: \"json\"; value: unknown };\n timeoutMs?: number;\n } = {}\n ): Promise<ApiInvokeResponse> {\n const payload = buildHubSpotInvokePayload(method, path, options);\n return this.invokeRaw(payload, invocationKey) as Promise<ApiInvokeResponse>;\n }\n}\n\n", "import type { ApiSalesforcePayload, HttpMethod, QueryParams, JsonBody } from \"../schemas\";\n\n/**\n * Build a Salesforce invoke payload\n * @param method HTTP method to use\n * @param path Salesforce API path\n * @param options Additional options\n */\nexport function buildSalesforceInvokePayload(\n method: HttpMethod,\n path: string,\n options?: {\n query?: QueryParams;\n body?: JsonBody;\n timeoutMs?: number;\n }\n): ApiSalesforcePayload {\n return {\n type: \"api\",\n subtype: \"salesforce\",\n method,\n path,\n query: options?.query,\n body: options?.body,\n timeoutMs: options?.timeoutMs ?? 30000,\n };\n}\n\n/**\n * Build a Salesforce query payload for SOQL queries\n * @param query SOQL query string\n * @param options Additional options\n */\nexport function buildSalesforceQueryPayload(\n query: string,\n options?: { timeoutMs?: number }\n): ApiSalesforcePayload {\n return buildSalesforceInvokePayload(\"GET\", \"/services/data/v63.0/query\", {\n query: { q: [query] },\n timeoutMs: options?.timeoutMs,\n });\n}\n\n/**\n * Build a Salesforce getRecord payload\n * @param objectType Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param recordId The record ID\n * @param options Optional fields to retrieve and timeout\n */\nexport function buildSalesforceGetRecordPayload(\n objectType: string,\n recordId: string,\n options?: { fields?: string[]; timeoutMs?: number }\n): ApiSalesforcePayload {\n const query: QueryParams = {};\n if (options?.fields && options.fields.length > 0) {\n query.fields = [options.fields.join(\",\")];\n }\n\n return buildSalesforceInvokePayload(\n \"GET\",\n `/services/data/v63.0/sobjects/${objectType}/${recordId}`,\n {\n query: Object.keys(query).length > 0 ? query : undefined,\n timeoutMs: options?.timeoutMs,\n }\n );\n}\n\n/**\n * Build a Salesforce createRecord payload\n * @param objectType Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param data Record data to create\n * @param options Additional options\n */\nexport function buildSalesforceCreateRecordPayload(\n objectType: string,\n data: Record<string, unknown>,\n options?: { timeoutMs?: number }\n): ApiSalesforcePayload {\n return buildSalesforceInvokePayload(\n \"POST\",\n `/services/data/v63.0/sobjects/${objectType}`,\n {\n body: { type: \"json\", value: data },\n timeoutMs: options?.timeoutMs,\n }\n );\n}\n\n/**\n * Build a Salesforce updateRecord payload\n * @param objectType Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param recordId The record ID to update\n * @param data Fields to update\n * @param options Additional options\n */\nexport function buildSalesforceUpdateRecordPayload(\n objectType: string,\n recordId: string,\n data: Record<string, unknown>,\n options?: { timeoutMs?: number }\n): ApiSalesforcePayload {\n return buildSalesforceInvokePayload(\n \"PATCH\",\n `/services/data/v63.0/sobjects/${objectType}/${recordId}`,\n {\n body: { type: \"json\", value: data },\n timeoutMs: options?.timeoutMs,\n }\n );\n}\n\n/**\n * Build a Salesforce deleteRecord payload\n * @param objectType Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param recordId The record ID to delete\n * @param options Additional options\n */\nexport function buildSalesforceDeleteRecordPayload(\n objectType: string,\n recordId: string,\n options?: { timeoutMs?: number }\n): ApiSalesforcePayload {\n return buildSalesforceInvokePayload(\n \"DELETE\",\n `/services/data/v63.0/sobjects/${objectType}/${recordId}`,\n {\n timeoutMs: options?.timeoutMs,\n }\n );\n}\n\n/**\n * Build a Salesforce describeObject payload\n * @param objectType Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param options Additional options\n */\nexport function buildSalesforceDescribeObjectPayload(\n objectType: string,\n options?: { timeoutMs?: number }\n): ApiSalesforcePayload {\n return buildSalesforceInvokePayload(\n \"GET\",\n `/services/data/v63.0/sobjects/${objectType}/describe`,\n {\n timeoutMs: options?.timeoutMs,\n }\n );\n}\n", "import type {\n HttpMethod,\n QueryParams,\n ApiInvokeResponse,\n} from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildSalesforceInvokePayload } from \"../payload-builders/salesforce\";\n\n/**\n * Client for interacting with Salesforce API resources.\n *\n * This client provides a simple interface for making authenticated requests\n * to the Salesforce REST API. Authentication is handled automatically.\n *\n * @example\n * ```typescript\n * // Query accounts using SOQL\n * const result = await client.invoke(\n * \"GET\",\n * \"/services/data/v63.0/query\",\n * \"query-accounts\",\n * { query: { q: [\"SELECT Id, Name FROM Account LIMIT 10\"] } }\n * );\n *\n * // Get a specific account\n * const account = await client.invoke(\n * \"GET\",\n * \"/services/data/v63.0/sobjects/Account/001xx000003ABCDEF\",\n * \"get-account\"\n * );\n *\n * // Create a new account\n * const newAccount = await client.invoke(\n * \"POST\",\n * \"/services/data/v63.0/sobjects/Account\",\n * \"create-account\",\n * { body: { type: \"json\", value: { Name: \"Acme Corp\" } } }\n * );\n *\n * // Update an account\n * await client.invoke(\n * \"PATCH\",\n * \"/services/data/v63.0/sobjects/Account/001xx000003ABCDEF\",\n * \"update-account\",\n * { body: { type: \"json\", value: { Name: \"Updated Name\" } } }\n * );\n * ```\n */\nexport class SalesforceResourceClient extends BaseResourceClient {\n /**\n * Invoke a Salesforce API request\n *\n * @param method - HTTP method (GET, POST, PATCH, DELETE)\n * @param path - Salesforce API path (e.g., \"/services/data/v63.0/query\")\n * @param invocationKey - Unique key for this invocation (for tracking)\n * @param options - Optional query params, body, and timeout\n * @returns The API response with status and body\n */\n async invoke(\n method: HttpMethod,\n path: string,\n invocationKey: string,\n options: {\n query?: QueryParams;\n body?: { type: \"json\"; value: unknown };\n timeoutMs?: number;\n } = {}\n ): Promise<ApiInvokeResponse> {\n const payload = buildSalesforceInvokePayload(method, path, options);\n return this.invokeRaw(payload, invocationKey) as Promise<ApiInvokeResponse>;\n }\n\n /**\n * Execute a SOQL query\n *\n * @param query - SOQL query string\n * @param invocationKey - Unique key for this invocation\n * @param options - Optional timeout\n * @returns Query results\n *\n * @example\n * ```typescript\n * const result = await client.query(\n * \"SELECT Id, Name, CreatedDate FROM Account WHERE CreatedDate > 2024-01-01T00:00:00Z\",\n * \"recent-accounts\"\n * );\n * ```\n */\n async query(\n query: string,\n invocationKey: string,\n options: { timeoutMs?: number } = {}\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\"GET\", \"/services/data/v63.0/query\", invocationKey, {\n query: { q: [query] },\n timeoutMs: options.timeoutMs,\n });\n }\n\n /**\n * Get a single record by ID\n *\n * @param objectType - Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param recordId - The record ID\n * @param invocationKey - Unique key for this invocation\n * @param options - Optional fields to retrieve and timeout\n * @returns The record data\n */\n async getRecord(\n objectType: string,\n recordId: string,\n invocationKey: string,\n options: { fields?: string[]; timeoutMs?: number } = {}\n ): Promise<ApiInvokeResponse> {\n const query: QueryParams = {};\n if (options.fields && options.fields.length > 0) {\n query.fields = [options.fields.join(\",\")];\n }\n\n return this.invoke(\n \"GET\",\n `/services/data/v63.0/sobjects/${objectType}/${recordId}`,\n invocationKey,\n { query: Object.keys(query).length > 0 ? query : undefined, timeoutMs: options.timeoutMs }\n );\n }\n\n /**\n * Create a new record\n *\n * @param objectType - Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param data - Record data\n * @param invocationKey - Unique key for this invocation\n * @param options - Optional timeout\n * @returns The created record ID\n */\n async createRecord(\n objectType: string,\n data: Record<string, unknown>,\n invocationKey: string,\n options: { timeoutMs?: number } = {}\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\n \"POST\",\n `/services/data/v63.0/sobjects/${objectType}`,\n invocationKey,\n { body: { type: \"json\", value: data }, timeoutMs: options.timeoutMs }\n );\n }\n\n /**\n * Update an existing record\n *\n * @param objectType - Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param recordId - The record ID to update\n * @param data - Fields to update\n * @param invocationKey - Unique key for this invocation\n * @param options - Optional timeout\n * @returns Empty response on success\n */\n async updateRecord(\n objectType: string,\n recordId: string,\n data: Record<string, unknown>,\n invocationKey: string,\n options: { timeoutMs?: number } = {}\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\n \"PATCH\",\n `/services/data/v63.0/sobjects/${objectType}/${recordId}`,\n invocationKey,\n { body: { type: \"json\", value: data }, timeoutMs: options.timeoutMs }\n );\n }\n\n /**\n * Delete a record\n *\n * @param objectType - Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param recordId - The record ID to delete\n * @param invocationKey - Unique key for this invocation\n * @param options - Optional timeout\n * @returns Empty response on success\n */\n async deleteRecord(\n objectType: string,\n recordId: string,\n invocationKey: string,\n options: { timeoutMs?: number } = {}\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\n \"DELETE\",\n `/services/data/v63.0/sobjects/${objectType}/${recordId}`,\n invocationKey,\n { timeoutMs: options.timeoutMs }\n );\n }\n\n /**\n * Describe an object to get its metadata\n *\n * @param objectType - Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param invocationKey - Unique key for this invocation\n * @param options - Optional timeout\n * @returns Object metadata including fields, relationships, etc.\n */\n async describeObject(\n objectType: string,\n invocationKey: string,\n options: { timeoutMs?: number } = {}\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\n \"GET\",\n `/services/data/v63.0/sobjects/${objectType}/describe`,\n invocationKey,\n { timeoutMs: options.timeoutMs }\n );\n }\n}\n", "import type { ApiGoogleSheetsPayload, HttpMethod, QueryParams, JsonBody } from \"../schemas\";\n\n/**\n * Build a Google Sheets invoke payload\n * @param method HTTP method to use\n * @param path Google Sheets API path relative to the spreadsheet\n * @param options Additional options\n */\nexport function buildGoogleSheetsInvokePayload(\n method: HttpMethod,\n path: string,\n options?: {\n query?: QueryParams;\n body?: JsonBody;\n timeoutMs?: number;\n }\n): ApiGoogleSheetsPayload {\n return {\n type: \"api\",\n subtype: \"googlesheets\",\n method,\n path,\n query: options?.query,\n body: options?.body,\n timeoutMs: options?.timeoutMs ?? 30000,\n };\n}\n\n/**\n * Build a Google Sheets getValues payload\n * @param range A1 notation range (e.g., \"Sheet1!A1:D5\")\n * @param options Additional options\n */\nexport function buildGoogleSheetsGetValuesPayload(\n range: string,\n options?: { timeoutMs?: number }\n): ApiGoogleSheetsPayload {\n return buildGoogleSheetsInvokePayload(\"GET\", `/values/${range}`, {\n timeoutMs: options?.timeoutMs,\n });\n}\n\n/**\n * Build a Google Sheets updateValues payload\n * @param range A1 notation range (e.g., \"Sheet1!A1:D5\")\n * @param values 2D array of values to write\n * @param valueInputOption How to interpret input values (\"RAW\" or \"USER_ENTERED\")\n * @param options Additional options\n */\nexport function buildGoogleSheetsUpdateValuesPayload(\n range: string,\n values: unknown[][],\n valueInputOption: \"RAW\" | \"USER_ENTERED\" = \"USER_ENTERED\",\n options?: { timeoutMs?: number }\n): ApiGoogleSheetsPayload {\n return buildGoogleSheetsInvokePayload(\"PUT\", `/values/${range}`, {\n query: { valueInputOption: [valueInputOption] },\n body: { type: \"json\", value: { values } },\n timeoutMs: options?.timeoutMs,\n });\n}\n\n/**\n * Build a Google Sheets appendValues payload\n * @param range A1 notation range (e.g., \"Sheet1!A1:D1\")\n * @param values 2D array of values to append\n * @param valueInputOption How to interpret input values (\"RAW\" or \"USER_ENTERED\")\n * @param options Additional options\n */\nexport function buildGoogleSheetsAppendValuesPayload(\n range: string,\n values: unknown[][],\n valueInputOption: \"RAW\" | \"USER_ENTERED\" = \"USER_ENTERED\",\n options?: { timeoutMs?: number }\n): ApiGoogleSheetsPayload {\n return buildGoogleSheetsInvokePayload(\"POST\", `/values/${range}:append`, {\n query: { valueInputOption: [valueInputOption] },\n body: { type: \"json\", value: { values } },\n timeoutMs: options?.timeoutMs,\n });\n}\n\n/**\n * Build a Google Sheets clearValues payload\n * @param range A1 notation range (e.g., \"Sheet1!A1:D5\")\n * @param options Additional options\n */\nexport function buildGoogleSheetsClearValuesPayload(\n range: string,\n options?: { timeoutMs?: number }\n): ApiGoogleSheetsPayload {\n return buildGoogleSheetsInvokePayload(\"POST\", `/values/${range}:clear`, {\n timeoutMs: options?.timeoutMs,\n });\n}\n\n/**\n * Build a Google Sheets batchGetValues payload\n * @param ranges Array of A1 notation ranges\n * @param options Additional options\n */\nexport function buildGoogleSheetsBatchGetValuesPayload(\n ranges: string[],\n options?: { timeoutMs?: number }\n): ApiGoogleSheetsPayload {\n return buildGoogleSheetsInvokePayload(\"GET\", \"/values:batchGet\", {\n query: { ranges },\n timeoutMs: options?.timeoutMs,\n });\n}\n\n/**\n * Build a Google Sheets batchUpdateValues payload\n * @param data Array of range updates\n * @param valueInputOption How to interpret input values (\"RAW\" or \"USER_ENTERED\")\n * @param options Additional options\n */\nexport function buildGoogleSheetsBatchUpdateValuesPayload(\n data: Array<{ range: string; values: unknown[][] }>,\n valueInputOption: \"RAW\" | \"USER_ENTERED\" = \"USER_ENTERED\",\n options?: { timeoutMs?: number }\n): ApiGoogleSheetsPayload {\n return buildGoogleSheetsInvokePayload(\"POST\", \"/values:batchUpdate\", {\n body: {\n type: \"json\",\n value: {\n valueInputOption,\n data,\n },\n },\n timeoutMs: options?.timeoutMs,\n });\n}\n\n/**\n * Build a Google Sheets getSpreadsheet payload\n * @param options Additional options\n */\nexport function buildGoogleSheetsGetSpreadsheetPayload(\n options?: { timeoutMs?: number }\n): ApiGoogleSheetsPayload {\n return buildGoogleSheetsInvokePayload(\"GET\", \"/\", {\n timeoutMs: options?.timeoutMs,\n });\n}\n\n/**\n * Build a Google Sheets batchUpdate payload (for formatting, creating sheets, etc.)\n * @param requests Array of update requests\n * @param options Additional options\n */\nexport function buildGoogleSheetsBatchUpdatePayload(\n requests: unknown[],\n options?: { timeoutMs?: number }\n): ApiGoogleSheetsPayload {\n return buildGoogleSheetsInvokePayload(\"POST\", \"/:batchUpdate\", {\n body: { type: \"json\", value: { requests } },\n timeoutMs: options?.timeoutMs,\n });\n}\n", "import type {\n HttpMethod,\n QueryParams,\n ApiInvokeResponse,\n} from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildGoogleSheetsInvokePayload } from \"../payload-builders/googlesheets\";\n\nexport class GoogleSheetsResourceClient extends BaseResourceClient {\n async invoke(\n method: HttpMethod,\n path: string,\n invocationKey: string,\n options: {\n query?: QueryParams;\n body?: { type: \"json\"; value: unknown };\n timeoutMs?: number;\n } = {}\n ): Promise<ApiInvokeResponse> {\n const payload = buildGoogleSheetsInvokePayload(method, path, options);\n return this.invokeRaw(payload, invocationKey) as Promise<ApiInvokeResponse>;\n }\n\n /**\n * Get values from a range in the spreadsheet\n * @param range A1 notation range (e.g., \"Sheet1!A1:D5\")\n * @param invocationKey Unique key for tracking this invocation\n */\n async getValues(\n range: string,\n invocationKey: string\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\"GET\", `/values/${range}`, invocationKey);\n }\n\n /**\n * Update values in a range in the spreadsheet\n * @param range A1 notation range (e.g., \"Sheet1!A1:D5\")\n * @param values 2D array of values to write\n * @param invocationKey Unique key for tracking this invocation\n * @param valueInputOption How to interpret input values (\"RAW\" or \"USER_ENTERED\")\n */\n async updateValues(\n range: string,\n values: unknown[][],\n invocationKey: string,\n valueInputOption: \"RAW\" | \"USER_ENTERED\" = \"USER_ENTERED\"\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\n \"PUT\",\n `/values/${range}`,\n invocationKey,\n {\n query: { valueInputOption },\n body: { type: \"json\", value: { values } },\n }\n );\n }\n\n /**\n * Append values to a sheet\n * @param range A1 notation range (e.g., \"Sheet1!A1:D1\")\n * @param values 2D array of values to append\n * @param invocationKey Unique key for tracking this invocation\n * @param valueInputOption How to interpret input values (\"RAW\" or \"USER_ENTERED\")\n */\n async appendValues(\n range: string,\n values: unknown[][],\n invocationKey: string,\n valueInputOption: \"RAW\" | \"USER_ENTERED\" = \"USER_ENTERED\"\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\n \"POST\",\n `/values/${range}:append`,\n invocationKey,\n {\n query: { valueInputOption },\n body: { type: \"json\", value: { values } },\n }\n );\n }\n\n /**\n * Clear values in a range\n * @param range A1 notation range (e.g., \"Sheet1!A1:D5\")\n * @param invocationKey Unique key for tracking this invocation\n */\n async clearValues(\n range: string,\n invocationKey: string\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\"POST\", `/values/${range}:clear`, invocationKey);\n }\n\n /**\n * Batch get multiple ranges\n * @param ranges Array of A1 notation ranges\n * @param invocationKey Unique key for tracking this invocation\n */\n async batchGetValues(\n ranges: string[],\n invocationKey: string\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\"GET\", \"/values:batchGet\", invocationKey, {\n query: { ranges },\n });\n }\n\n /**\n * Batch update multiple ranges\n * @param data Array of range updates\n * @param invocationKey Unique key for tracking this invocation\n * @param valueInputOption How to interpret input values (\"RAW\" or \"USER_ENTERED\")\n */\n async batchUpdateValues(\n data: Array<{ range: string; values: unknown[][] }>,\n invocationKey: string,\n valueInputOption: \"RAW\" | \"USER_ENTERED\" = \"USER_ENTERED\"\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\"POST\", \"/values:batchUpdate\", invocationKey, {\n body: {\n type: \"json\",\n value: {\n valueInputOption,\n data,\n },\n },\n });\n }\n\n /**\n * Get spreadsheet metadata\n * @param invocationKey Unique key for tracking this invocation\n */\n async getSpreadsheet(invocationKey: string): Promise<ApiInvokeResponse> {\n return this.invoke(\"GET\", \"/\", invocationKey);\n }\n\n /**\n * Batch update spreadsheet (for formatting, creating sheets, etc.)\n * @param requests Array of update requests\n * @param invocationKey Unique key for tracking this invocation\n */\n async batchUpdate(\n requests: unknown[],\n invocationKey: string\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\"POST\", \"/:batchUpdate\", invocationKey, {\n body: { type: \"json\", value: { requests } },\n });\n }\n}\n\n", "import type { StorageS3Payload, S3Command } from \"../schemas\";\n\n/**\n * Build an S3 invoke payload\n * @param command The S3 command to execute\n * @param params Parameters for the S3 command\n * @param options Additional options\n */\nexport function buildS3InvokePayload(\n command: S3Command,\n params: Record<string, unknown>,\n options?: { timeoutMs?: number }\n): StorageS3Payload {\n return {\n type: \"storage\",\n subtype: \"s3\",\n command,\n params,\n timeoutMs: options?.timeoutMs,\n };\n}\n", "import type {\n S3Command,\n StorageInvokeResponse,\n} from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildS3InvokePayload } from \"../payload-builders/s3\";\n\nexport class S3ResourceClient extends BaseResourceClient {\n async invoke(\n command: S3Command,\n params: Record<string, unknown>,\n invocationKey: string,\n options: {\n timeoutMs?: number;\n } = {}\n ): Promise<StorageInvokeResponse> {\n const payload = buildS3InvokePayload(command, params, options);\n return this.invokeRaw(payload, invocationKey) as Promise<StorageInvokeResponse>;\n }\n}\n\n", "import type {\n ApiLambdaPayload,\n LambdaInvocationType,\n LambdaLogType,\n} from \"../schemas\";\n\n/**\n * Options for Lambda invocation\n */\nexport interface LambdaInvokeOptions {\n InvocationType?: LambdaInvocationType;\n LogType?: LambdaLogType;\n Qualifier?: string;\n ClientContext?: string;\n DurableExecutionName?: string;\n TenantId?: string;\n}\n\n/**\n * Build a Lambda invoke payload\n * @param functionName The name, ARN, or partial ARN of the Lambda function\n * @param payload The JSON input for the Lambda function\n * @param options Additional invocation options\n */\nexport function buildLambdaInvokePayload(\n functionName: string,\n payload?: unknown,\n options?: LambdaInvokeOptions\n): ApiLambdaPayload {\n return {\n type: \"api\",\n subtype: \"lambda\",\n FunctionName: functionName,\n Payload: payload,\n ...options,\n };\n}\n", "import type {\n ApiLambdaResult,\n LambdaInvocationType,\n LambdaLogType,\n} from \"../schemas\";\nimport type { BaseInvokeSuccess, InvokeFailure } from \"../schemas/response\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildLambdaInvokePayload } from \"../payload-builders/lambda\";\n\n/**\n * Options for Lambda invocation\n */\nexport interface LambdaInvokeOptions {\n /**\n * The invocation mode.\n * - RequestResponse (default): Synchronous invocation\n * - Event: Asynchronous invocation\n * - DryRun: Validate parameters and permissions only\n */\n InvocationType?: LambdaInvocationType;\n\n /**\n * Controls execution log inclusion in the response.\n * - None (default): Don't include logs\n * - Tail: Include the last 4 KB of execution log (sync only)\n */\n LogType?: LambdaLogType;\n\n /**\n * Specifies a version or alias to invoke.\n * If not specified, invokes $LATEST.\n */\n Qualifier?: string;\n\n /**\n * Up to 3,583 bytes of base64-encoded data about the invoking client\n * to pass to the function. Only for synchronous invocations.\n */\n ClientContext?: string;\n\n /**\n * A unique name for durable execution.\n * Length: 1-64 characters. Pattern: [a-zA-Z0-9-_]+\n */\n DurableExecutionName?: string;\n\n /**\n * The identifier for tenant in multi-tenant Lambda function.\n * Length: 1-256 characters.\n */\n TenantId?: string;\n}\n\nexport class LambdaResourceClient extends BaseResourceClient {\n /**\n * Invoke a Lambda function\n *\n * @param functionName - The name, ARN, or partial ARN of the Lambda function\n * @param payload - The JSON input for the Lambda function (optional)\n * @param invocationKey - A unique key for tracking this invocation\n * @param options - Additional invocation options\n * @returns The Lambda invocation result\n *\n * @example\n * ```typescript\n * // Simple synchronous invocation\n * const result = await lambdaClient.invoke(\n * \"my-function\",\n * { key: \"value\" },\n * \"process-data\"\n * );\n *\n * if (result.ok) {\n * console.log(\"Response:\", result.result.Payload);\n * }\n *\n * // Asynchronous invocation\n * const asyncResult = await lambdaClient.invoke(\n * \"my-function\",\n * { key: \"value\" },\n * \"async-process\",\n * { InvocationType: \"Event\" }\n * );\n *\n * // With execution logs\n * const debugResult = await lambdaClient.invoke(\n * \"my-function\",\n * { key: \"value\" },\n * \"debug-invocation\",\n * { LogType: \"Tail\" }\n * );\n *\n * if (debugResult.ok) {\n * // LogResult is base64 encoded\n * const logs = atob(debugResult.result.LogResult || \"\");\n * console.log(\"Execution logs:\", logs);\n * }\n * ```\n */\n async invoke(\n functionName: string,\n payload: unknown,\n invocationKey: string,\n options: LambdaInvokeOptions = {},\n ): Promise<BaseInvokeSuccess<ApiLambdaResult> | InvokeFailure> {\n const invokePayload = buildLambdaInvokePayload(functionName, payload, options);\n return this.invokeRaw(invokePayload, invocationKey) as Promise<\n BaseInvokeSuccess<ApiLambdaResult> | InvokeFailure\n >;\n }\n}\n", "import type { DbBigQueryPayload, BigQueryTableSchema } from \"../schemas\";\n\n/**\n * Build a BigQuery query payload\n * @param sql The SQL query to execute\n * @param params Optional query parameters\n * @param options Query options\n */\nexport function buildBigQueryQueryPayload(\n sql: string,\n params?: Record<string, unknown>,\n options?: { timeoutMs?: number; maxResults?: number }\n): DbBigQueryPayload {\n return {\n type: \"database\",\n subtype: \"bigquery\",\n operation: \"query\",\n sql,\n params,\n timeoutMs: options?.timeoutMs,\n maxResults: options?.maxResults,\n };\n}\n\n/**\n * Build a BigQuery listDatasets payload\n * @param options List options\n */\nexport function buildBigQueryListDatasetsPayload(\n options?: { maxResults?: number }\n): DbBigQueryPayload {\n return {\n type: \"database\",\n subtype: \"bigquery\",\n operation: \"listDatasets\",\n maxResults: options?.maxResults,\n };\n}\n\n/**\n * Build a BigQuery listTables payload\n * @param datasetId The dataset ID\n * @param options List options\n */\nexport function buildBigQueryListTablesPayload(\n datasetId: string,\n options?: { maxResults?: number }\n): DbBigQueryPayload {\n return {\n type: \"database\",\n subtype: \"bigquery\",\n operation: \"listTables\",\n datasetId,\n maxResults: options?.maxResults,\n };\n}\n\n/**\n * Build a BigQuery getTable payload\n * @param datasetId The dataset ID\n * @param tableId The table ID\n */\nexport function buildBigQueryGetTablePayload(\n datasetId: string,\n tableId: string\n): DbBigQueryPayload {\n return {\n type: \"database\",\n subtype: \"bigquery\",\n operation: \"getTable\",\n datasetId,\n tableId,\n };\n}\n\n/**\n * Build a BigQuery insertRows payload\n * @param datasetId The dataset ID\n * @param tableId The table ID\n * @param rows Array of rows to insert\n */\nexport function buildBigQueryInsertRowsPayload(\n datasetId: string,\n tableId: string,\n rows: Record<string, unknown>[]\n): DbBigQueryPayload {\n return {\n type: \"database\",\n subtype: \"bigquery\",\n operation: \"insertRows\",\n datasetId,\n tableId,\n rows,\n };\n}\n\n/**\n * Build a BigQuery createTable payload\n * @param datasetId The dataset ID\n * @param tableId The table ID\n * @param schema Table schema\n * @param options Creation options\n */\nexport function buildBigQueryCreateTablePayload(\n datasetId: string,\n tableId: string,\n schema: BigQueryTableSchema,\n options?: { timeoutMs?: number }\n): DbBigQueryPayload {\n return {\n type: \"database\",\n subtype: \"bigquery\",\n operation: \"createTable\",\n datasetId,\n tableId,\n schema,\n timeoutMs: options?.timeoutMs,\n };\n}\n\n/**\n * Build a raw BigQuery invoke payload\n * @param payload The partial payload\n */\nexport function buildBigQueryInvokePayload(\n payload: Omit<DbBigQueryPayload, \"type\" | \"subtype\">\n): DbBigQueryPayload {\n return {\n type: \"database\",\n subtype: \"bigquery\",\n ...payload,\n };\n}\n", "import type {\n BigQueryInvokeResponse,\n BigQueryTableSchema,\n DbBigQueryPayload,\n} from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport {\n buildBigQueryQueryPayload,\n buildBigQueryListDatasetsPayload,\n buildBigQueryListTablesPayload,\n buildBigQueryGetTablePayload,\n buildBigQueryInsertRowsPayload,\n buildBigQueryCreateTablePayload,\n buildBigQueryInvokePayload,\n} from \"../payload-builders/bigquery\";\n\nexport interface BigQueryQueryOptions {\n timeoutMs?: number;\n maxResults?: number;\n}\n\nexport class BigQueryResourceClient extends BaseResourceClient {\n /**\n * Execute a SQL query\n * @param sql The SQL query to execute\n * @param params Optional query parameters (named parameters)\n * @param invocationKey Unique key for tracking this invocation\n * @param options Query options\n */\n async query(\n sql: string,\n params: Record<string, unknown> | undefined,\n invocationKey: string,\n options?: BigQueryQueryOptions\n ): Promise<BigQueryInvokeResponse> {\n const payload = buildBigQueryQueryPayload(sql, params, options);\n return this.invokeRaw(payload, invocationKey) as Promise<BigQueryInvokeResponse>;\n }\n\n /**\n * List all datasets in the project\n * @param invocationKey Unique key for tracking this invocation\n * @param options List options\n */\n async listDatasets(\n invocationKey: string,\n options?: { maxResults?: number }\n ): Promise<BigQueryInvokeResponse> {\n const payload = buildBigQueryListDatasetsPayload(options);\n return this.invokeRaw(payload, invocationKey) as Promise<BigQueryInvokeResponse>;\n }\n\n /**\n * List all tables in a dataset\n * @param datasetId The dataset ID\n * @param invocationKey Unique key for tracking this invocation\n * @param options List options\n */\n async listTables(\n datasetId: string,\n invocationKey: string,\n options?: { maxResults?: number }\n ): Promise<BigQueryInvokeResponse> {\n const payload = buildBigQueryListTablesPayload(datasetId, options);\n return this.invokeRaw(payload, invocationKey) as Promise<BigQueryInvokeResponse>;\n }\n\n /**\n * Get table metadata and schema\n * @param datasetId The dataset ID\n * @param tableId The table ID\n * @param invocationKey Unique key for tracking this invocation\n */\n async getTable(\n datasetId: string,\n tableId: string,\n invocationKey: string\n ): Promise<BigQueryInvokeResponse> {\n const payload = buildBigQueryGetTablePayload(datasetId, tableId);\n return this.invokeRaw(payload, invocationKey) as Promise<BigQueryInvokeResponse>;\n }\n\n /**\n * Insert rows into a table (streaming insert)\n * @param datasetId The dataset ID\n * @param tableId The table ID\n * @param rows Array of rows to insert\n * @param invocationKey Unique key for tracking this invocation\n */\n async insertRows(\n datasetId: string,\n tableId: string,\n rows: Record<string, unknown>[],\n invocationKey: string\n ): Promise<BigQueryInvokeResponse> {\n const payload = buildBigQueryInsertRowsPayload(datasetId, tableId, rows);\n return this.invokeRaw(payload, invocationKey) as Promise<BigQueryInvokeResponse>;\n }\n\n /**\n * Create a new table\n * @param datasetId The dataset ID\n * @param tableId The table ID\n * @param schema Table schema definition\n * @param invocationKey Unique key for tracking this invocation\n * @param options Table creation options\n */\n async createTable(\n datasetId: string,\n tableId: string,\n schema: BigQueryTableSchema,\n invocationKey: string,\n options?: { timeoutMs?: number }\n ): Promise<BigQueryInvokeResponse> {\n const payload = buildBigQueryCreateTablePayload(datasetId, tableId, schema, options);\n return this.invokeRaw(payload, invocationKey) as Promise<BigQueryInvokeResponse>;\n }\n\n /**\n * Raw invoke with a custom payload\n * @param payload The BigQuery payload\n * @param invocationKey Unique key for tracking this invocation\n */\n async invoke(\n payload: Omit<DbBigQueryPayload, \"type\" | \"subtype\">,\n invocationKey: string\n ): Promise<BigQueryInvokeResponse> {\n const fullPayload = buildBigQueryInvokePayload(payload);\n return this.invokeRaw(fullPayload, invocationKey) as Promise<BigQueryInvokeResponse>;\n }\n}\n", "import type {\n HttpMethod,\n QueryParams,\n ApiOutreachPayload,\n OutreachInvokeResponse,\n} from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\n\nexport class OutreachResourceClient extends BaseResourceClient {\n /**\n * Invoke an Outreach API endpoint\n *\n * @param method - HTTP method (GET, POST, PUT, PATCH, DELETE)\n * @param path - Outreach API path (e.g., \"/api/v2/prospects\")\n * @param invocationKey - Unique key for this invocation (for idempotency/tracking)\n * @param options - Optional query params, body, and timeout\n */\n async invoke(\n method: HttpMethod,\n path: string,\n invocationKey: string,\n options: {\n queryParams?: QueryParams;\n body?: Record<string, unknown>;\n timeoutMs?: number;\n } = {}\n ): Promise<OutreachInvokeResponse> {\n const payload: ApiOutreachPayload = {\n type: \"api\",\n subtype: \"outreach\",\n method,\n path,\n queryParams: options.queryParams,\n body: options.body,\n timeoutMs: options.timeoutMs || 30000,\n };\n\n return this.invokeRaw(payload, invocationKey) as Promise<OutreachInvokeResponse>;\n }\n}\n", "import type { DbNeo4jPayload } from \"../schemas\";\n\n/**\n * Build a Neo4j invoke payload\n * @param cypher The Cypher query to execute\n * @param params Optional named parameters for the query\n * @param timeoutMs Optional timeout in milliseconds\n */\nexport function buildNeo4jInvokePayload(\n cypher: string,\n params?: Record<string, unknown>,\n timeoutMs?: number\n): DbNeo4jPayload {\n return {\n type: \"database\",\n subtype: \"neo4j\",\n cypher,\n params,\n timeoutMs,\n };\n}\n", "import type {\n Neo4jInvokeResponse,\n} from \"../schemas/response\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildNeo4jInvokePayload } from \"../payload-builders/neo4j\";\n\nexport class Neo4jResourceClient extends BaseResourceClient {\n /**\n * Execute a Cypher query against Neo4j\n * @param cypher The Cypher query to execute\n * @param params Optional named parameters for the query\n * @param invocationKey Unique key for tracking this invocation\n * @param timeoutMs Optional timeout in milliseconds\n * @returns Response with records and keys\n *\n * @example\n * ```ts\n * const response = await client.invoke(\n * \"MATCH (n:Person {name: $name}) RETURN n\",\n * { name: \"Alice\" },\n * \"find-alice\"\n * );\n *\n * if (response.ok) {\n * const records = response.result.records;\n * }\n * ```\n */\n async invoke(\n cypher: string,\n params: Record<string, unknown> | undefined,\n invocationKey: string,\n timeoutMs?: number\n ): Promise<Neo4jInvokeResponse> {\n const payload = buildNeo4jInvokePayload(cypher, params, timeoutMs);\n return this.invokeRaw(payload, invocationKey) as Promise<Neo4jInvokeResponse>;\n }\n}\n", "import type { ApiSlackPayload } from \"../schemas\";\n\n/**\n * Build a Slack invoke payload\n * @param method Slack API method (e.g., \"chat.postMessage\")\n * @param options Additional options\n */\nexport function buildSlackInvokePayload(\n method: string,\n options?: {\n body?: Record<string, unknown>;\n timeoutMs?: number;\n }\n): ApiSlackPayload {\n return {\n type: \"api\",\n subtype: \"slack\",\n method,\n body: options?.body,\n timeoutMs: options?.timeoutMs ?? 30000,\n };\n}\n\nexport function buildSlackGetUploadURLPayload(\n filename: string,\n length: number,\n options?: { altText?: string; snippetType?: string }\n): ApiSlackPayload {\n return buildSlackInvokePayload(\"files.getUploadURLExternal\", {\n body: {\n filename,\n length,\n alt_txt: options?.altText,\n snippet_type: options?.snippetType,\n },\n });\n}\n\nexport function buildSlackCompleteUploadPayload(\n files: Array<{ id: string; title?: string }>,\n channelId: string,\n options?: { initialComment?: string; threadTs?: string }\n): ApiSlackPayload {\n return buildSlackInvokePayload(\"files.completeUploadExternal\", {\n body: {\n files,\n channel_id: channelId,\n initial_comment: options?.initialComment,\n thread_ts: options?.threadTs,\n },\n });\n}\n", "import type { ApiInvokeResponse } from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildSlackInvokePayload } from \"../payload-builders/slack\";\n\nexport class SlackResourceClient extends BaseResourceClient {\n async invoke(\n method: string,\n invocationKey: string,\n options: {\n body?: Record<string, unknown>;\n timeoutMs?: number;\n } = {}\n ): Promise<ApiInvokeResponse> {\n const payload = buildSlackInvokePayload(method, options);\n return this.invokeRaw(payload, invocationKey) as Promise<ApiInvokeResponse>;\n }\n\n /**\n * Get a pre-signed upload URL for uploading a file to Slack.\n * Step 1 of the file upload flow.\n * @see https://docs.slack.dev/reference/methods/files.getUploadURLExternal\n */\n async getUploadURL(\n filename: string,\n length: number,\n invocationKey: string,\n options?: {\n altText?: string;\n snippetType?: string;\n }\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\"files.getUploadURLExternal\", invocationKey, {\n body: {\n filename,\n length,\n alt_txt: options?.altText,\n snippet_type: options?.snippetType,\n },\n });\n }\n\n /**\n * Complete a file upload and optionally share it to a channel.\n * Step 3 of the file upload flow (step 2 is uploading binary data to the URL from getUploadURL).\n * @see https://docs.slack.dev/reference/methods/files.completeUploadExternal\n */\n async completeUpload(\n files: Array<{ id: string; title?: string }>,\n channelId: string,\n invocationKey: string,\n options?: {\n initialComment?: string;\n threadTs?: string;\n }\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\"files.completeUploadExternal\", invocationKey, {\n body: {\n files,\n channel_id: channelId,\n initial_comment: options?.initialComment,\n thread_ts: options?.threadTs,\n },\n });\n }\n}\n", "import type { ApiQuickBooksPayload, HttpMethod, QueryParams, JsonBody } from \"../schemas\";\n\nexport function buildQuickBooksInvokePayload(\n method: HttpMethod,\n path: string,\n options?: {\n query?: QueryParams;\n body?: JsonBody;\n timeoutMs?: number;\n }\n): ApiQuickBooksPayload {\n return {\n type: \"api\",\n subtype: \"quickbooks\",\n method,\n path,\n query: options?.query,\n body: options?.body,\n timeoutMs: options?.timeoutMs ?? 30000,\n };\n}\n\nexport function buildQuickBooksQueryPayload(\n query: string,\n options?: { timeoutMs?: number }\n): ApiQuickBooksPayload {\n return buildQuickBooksInvokePayload(\"GET\", \"/query\", {\n query: { query: [query] },\n timeoutMs: options?.timeoutMs,\n });\n}\n", "import type {\n HttpMethod,\n QueryParams,\n ApiInvokeResponse,\n} from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildQuickBooksInvokePayload, buildQuickBooksQueryPayload } from \"../payload-builders/quickbooks\";\n\nexport class QuickBooksResourceClient extends BaseResourceClient {\n /**\n * Invoke a QuickBooks API request\n *\n * @param method - HTTP method (GET, POST, PUT, DELETE)\n * @param path - QuickBooks API path relative to /v3/company/{realmId}\n * @param invocationKey - Unique key for this invocation (for tracking)\n * @param options - Optional query params, body, and timeout\n * @returns The API response with status and body\n */\n async invoke(\n method: HttpMethod,\n path: string,\n invocationKey: string,\n options: {\n query?: QueryParams;\n body?: { type: \"json\"; value: unknown };\n timeoutMs?: number;\n } = {}\n ): Promise<ApiInvokeResponse> {\n const payload = buildQuickBooksInvokePayload(method, path, options);\n return this.invokeRaw(payload, invocationKey) as Promise<ApiInvokeResponse>;\n }\n\n /**\n * Execute a QuickBooks query using SQL-like syntax\n *\n * @param query - QuickBooks query string (e.g., \"SELECT * FROM Customer WHERE DisplayName LIKE 'A%'\")\n * @param invocationKey - Unique key for this invocation\n * @param options - Optional timeout\n * @returns Query results\n *\n * @example\n * ```typescript\n * const result = await client.query(\n * \"SELECT * FROM Invoice WHERE TotalAmt > '100.00'\",\n * \"recent-invoices\"\n * );\n * ```\n */\n async query(\n query: string,\n invocationKey: string,\n options: { timeoutMs?: number } = {}\n ): Promise<ApiInvokeResponse> {\n const payload = buildQuickBooksQueryPayload(query, options);\n return this.invokeRaw(payload, invocationKey) as Promise<ApiInvokeResponse>;\n }\n}\n", "import type { AuthPayload } from \"../schemas\";\n\n/**\n * Build a payload to share (grant) application access for a user by email.\n * @param email Email address of the user to grant access\n */\nexport function buildAuthShareAccessPayload(email: string): AuthPayload {\n return {\n type: \"auth\",\n subtype: \"majorauth\",\n action: \"share\",\n email,\n };\n}\n\n/**\n * Build a payload to revoke application access for a user by email.\n * @param email Email address of the user to revoke access from\n */\nexport function buildAuthRevokeAccessPayload(email: string): AuthPayload {\n return {\n type: \"auth\",\n subtype: \"majorauth\",\n action: \"revoke\",\n email,\n };\n}\n", "import type { AuthInvokeResponse } from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildAuthShareAccessPayload, buildAuthRevokeAccessPayload } from \"../payload-builders/auth\";\n\nexport class MajorAuthResourceClient extends BaseResourceClient {\n /**\n * Grant a user view access to this application by email.\n * If the user doesn't have an account, one will be created.\n * If the user isn't a member of the organization, they will be invited.\n */\n async shareAccess(\n email: string,\n invocationKey: string,\n ): Promise<AuthInvokeResponse> {\n const payload = buildAuthShareAccessPayload(email);\n return this.invokeRaw(payload, invocationKey) as Promise<AuthInvokeResponse>;\n }\n\n /**\n * Revoke a user's view access to this application by email.\n * Only removes app-level access; does not affect org membership or roles.\n */\n async revokeAccess(\n email: string,\n invocationKey: string,\n ): Promise<AuthInvokeResponse> {\n const payload = buildAuthRevokeAccessPayload(email);\n return this.invokeRaw(payload, invocationKey) as Promise<AuthInvokeResponse>;\n }\n}\n", "import type {\n ApiGoogleAnalyticsPayload,\n GADimension,\n GAMetric,\n GADateRange,\n GARunReportOptions,\n} from \"../schemas\";\n\n/**\n * Build a Google Analytics runReport payload\n */\nexport function buildGoogleAnalyticsRunReportPayload(\n dimensions: GADimension[],\n metrics: GAMetric[],\n dateRanges: GADateRange[],\n options?: GARunReportOptions\n): ApiGoogleAnalyticsPayload {\n return {\n type: \"api\",\n subtype: \"googleanalytics\",\n operation: \"runReport\",\n dimensions,\n metrics,\n dateRanges,\n dimensionFilter: options?.dimensionFilter,\n metricFilter: options?.metricFilter,\n orderBys: options?.orderBys,\n limit: options?.limit,\n offset: options?.offset,\n };\n}\n\n/**\n * Build a Google Analytics getMetadata payload\n */\nexport function buildGoogleAnalyticsGetMetadataPayload(): ApiGoogleAnalyticsPayload {\n return {\n type: \"api\",\n subtype: \"googleanalytics\",\n operation: \"getMetadata\",\n };\n}\n\n/**\n * Build a Google Analytics runRealtimeReport payload\n */\nexport function buildGoogleAnalyticsRunRealtimeReportPayload(\n metrics: GAMetric[],\n dimensions?: GADimension[],\n limit?: number\n): ApiGoogleAnalyticsPayload {\n return {\n type: \"api\",\n subtype: \"googleanalytics\",\n operation: \"runRealtimeReport\",\n metrics,\n dimensions,\n limit,\n };\n}\n\n/**\n * Build a Google Analytics listAccounts payload\n */\nexport function buildGoogleAnalyticsListAccountsPayload(\n options?: { pageSize?: number; pageToken?: string }\n): ApiGoogleAnalyticsPayload {\n return {\n type: \"api\",\n subtype: \"googleanalytics\",\n operation: \"listAccounts\",\n pageSize: options?.pageSize,\n pageToken: options?.pageToken,\n };\n}\n\n/**\n * Build a Google Analytics listProperties payload\n */\nexport function buildGoogleAnalyticsListPropertiesPayload(\n accountId?: string,\n options?: { pageSize?: number; pageToken?: string }\n): ApiGoogleAnalyticsPayload {\n return {\n type: \"api\",\n subtype: \"googleanalytics\",\n operation: \"listProperties\",\n accountId,\n pageSize: options?.pageSize,\n pageToken: options?.pageToken,\n };\n}\n\n/**\n * Build a Google Analytics listDataStreams payload\n */\nexport function buildGoogleAnalyticsListDataStreamsPayload(\n propertyId?: string,\n options?: { pageSize?: number; pageToken?: string }\n): ApiGoogleAnalyticsPayload {\n return {\n type: \"api\",\n subtype: \"googleanalytics\",\n operation: \"listDataStreams\",\n propertyId,\n pageSize: options?.pageSize,\n pageToken: options?.pageToken,\n };\n}\n\n/**\n * Build a raw Google Analytics invoke payload\n */\nexport function buildGoogleAnalyticsInvokePayload(\n payload: Record<string, unknown>\n): ApiGoogleAnalyticsPayload {\n return {\n type: \"api\",\n subtype: \"googleanalytics\",\n ...payload,\n } as ApiGoogleAnalyticsPayload;\n}\n", "import type {\n GADimension,\n GAMetric,\n GADateRange,\n GARunReportOptions,\n GoogleAnalyticsInvokeResponse,\n} from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport {\n buildGoogleAnalyticsRunReportPayload,\n buildGoogleAnalyticsGetMetadataPayload,\n buildGoogleAnalyticsRunRealtimeReportPayload,\n buildGoogleAnalyticsListAccountsPayload,\n buildGoogleAnalyticsListPropertiesPayload,\n buildGoogleAnalyticsListDataStreamsPayload,\n buildGoogleAnalyticsInvokePayload,\n} from \"../payload-builders/google-analytics\";\n\nexport class GoogleAnalyticsResourceClient extends BaseResourceClient {\n /**\n * Run a GA4 report with dimensions, metrics, and date ranges\n * @param dimensions Dimensions to group by (e.g. [{name: 'country'}])\n * @param metrics Metrics to retrieve (e.g. [{name: 'activeUsers'}])\n * @param dateRanges Date ranges (e.g. [{startDate: '2024-01-01', endDate: '2024-01-31'}])\n * @param invocationKey Unique key for tracking this invocation\n * @param options Optional report options (filters, ordering, limit, offset)\n */\n async runReport(\n dimensions: GADimension[],\n metrics: GAMetric[],\n dateRanges: GADateRange[],\n invocationKey: string,\n options?: GARunReportOptions\n ): Promise<GoogleAnalyticsInvokeResponse> {\n const payload = buildGoogleAnalyticsRunReportPayload(dimensions, metrics, dateRanges, options);\n return this.invokeRaw(payload, invocationKey) as Promise<GoogleAnalyticsInvokeResponse>;\n }\n\n /**\n * Get available dimensions and metrics for the GA4 property\n * @param invocationKey Unique key for tracking this invocation\n */\n async getMetadata(\n invocationKey: string\n ): Promise<GoogleAnalyticsInvokeResponse> {\n const payload = buildGoogleAnalyticsGetMetadataPayload();\n return this.invokeRaw(payload, invocationKey) as Promise<GoogleAnalyticsInvokeResponse>;\n }\n\n /**\n * Run a realtime report showing current live user activity\n * @param metrics Metrics to retrieve (e.g. [{name: 'activeUsers'}])\n * @param invocationKey Unique key for tracking this invocation\n * @param dimensions Optional dimensions to group by\n * @param limit Optional row limit\n */\n async runRealtimeReport(\n metrics: GAMetric[],\n invocationKey: string,\n dimensions?: GADimension[],\n limit?: number\n ): Promise<GoogleAnalyticsInvokeResponse> {\n const payload = buildGoogleAnalyticsRunRealtimeReportPayload(metrics, dimensions, limit);\n return this.invokeRaw(payload, invocationKey) as Promise<GoogleAnalyticsInvokeResponse>;\n }\n\n /**\n * List all GA4 accounts accessible to the authenticated user\n * @param invocationKey Unique key for tracking this invocation\n * @param options Optional pagination options\n */\n async listAccounts(\n invocationKey: string,\n options?: { pageSize?: number; pageToken?: string }\n ): Promise<GoogleAnalyticsInvokeResponse> {\n const payload = buildGoogleAnalyticsListAccountsPayload(options);\n return this.invokeRaw(payload, invocationKey) as Promise<GoogleAnalyticsInvokeResponse>;\n }\n\n /**\n * List GA4 properties, optionally filtered by account\n * @param invocationKey Unique key for tracking this invocation\n * @param accountId Optional account filter (e.g. 'accounts/12345')\n * @param options Optional pagination options\n */\n async listProperties(\n invocationKey: string,\n accountId?: string,\n options?: { pageSize?: number; pageToken?: string }\n ): Promise<GoogleAnalyticsInvokeResponse> {\n const payload = buildGoogleAnalyticsListPropertiesPayload(accountId, options);\n return this.invokeRaw(payload, invocationKey) as Promise<GoogleAnalyticsInvokeResponse>;\n }\n\n /**\n * List data streams for a GA4 property\n * @param invocationKey Unique key for tracking this invocation\n * @param propertyId Optional property ID (defaults to configured property)\n * @param options Optional pagination options\n */\n async listDataStreams(\n invocationKey: string,\n propertyId?: string,\n options?: { pageSize?: number; pageToken?: string }\n ): Promise<GoogleAnalyticsInvokeResponse> {\n const payload = buildGoogleAnalyticsListDataStreamsPayload(propertyId, options);\n return this.invokeRaw(payload, invocationKey) as Promise<GoogleAnalyticsInvokeResponse>;\n }\n\n /**\n * Execute a raw Google Analytics operation\n * @param payload The raw operation payload\n * @param invocationKey Unique key for tracking this invocation\n */\n async invoke(\n payload: Record<string, unknown>,\n invocationKey: string\n ): Promise<GoogleAnalyticsInvokeResponse> {\n const p = buildGoogleAnalyticsInvokePayload(payload);\n return this.invokeRaw(p, invocationKey) as Promise<GoogleAnalyticsInvokeResponse>;\n }\n}\n", "import type { ApiGraphQLPayload } from \"../schemas\";\n\n/**\n * Build a GraphQL invoke payload\n * @param query GraphQL query or mutation string\n * @param options Additional options\n */\nexport function buildGraphQLInvokePayload(\n query: string,\n options?: {\n variables?: Record<string, unknown>;\n operationName?: string;\n headers?: Record<string, string>;\n timeoutMs?: number;\n }\n): ApiGraphQLPayload {\n return {\n type: \"api\",\n subtype: \"graphql\",\n query,\n variables: options?.variables,\n operationName: options?.operationName,\n headers: options?.headers,\n timeoutMs: options?.timeoutMs ?? 30000,\n };\n}\n", "import type { ApiInvokeResponse } from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildGraphQLInvokePayload } from \"../payload-builders/graphql\";\n\nexport class GraphQLResourceClient extends BaseResourceClient {\n async query(\n query: string,\n invocationKey: string,\n options: {\n variables?: Record<string, unknown>;\n operationName?: string;\n headers?: Record<string, string>;\n timeoutMs?: number;\n } = {}\n ): Promise<ApiInvokeResponse> {\n const payload = buildGraphQLInvokePayload(query, options);\n return this.invokeRaw(payload, invocationKey) as Promise<ApiInvokeResponse>;\n }\n\n async mutate(\n mutation: string,\n invocationKey: string,\n options: {\n variables?: Record<string, unknown>;\n operationName?: string;\n headers?: Record<string, string>;\n timeoutMs?: number;\n } = {}\n ): Promise<ApiInvokeResponse> {\n const payload = buildGraphQLInvokePayload(mutation, options);\n return this.invokeRaw(payload, invocationKey) as Promise<ApiInvokeResponse>;\n }\n}\n", "import type { ApiOutreachPayload, HttpMethod, QueryParams } from \"../schemas\";\n\n/**\n * Build an Outreach invoke payload\n * @param method HTTP method to use\n * @param path Outreach API path (e.g., \"/api/v2/prospects\")\n * @param options Additional options\n */\nexport function buildOutreachInvokePayload(\n method: HttpMethod,\n path: string,\n options?: {\n queryParams?: QueryParams;\n body?: Record<string, unknown>;\n timeoutMs?: number;\n }\n): ApiOutreachPayload {\n return {\n type: \"api\",\n subtype: \"outreach\",\n method,\n path,\n queryParams: options?.queryParams,\n body: options?.body,\n timeoutMs: options?.timeoutMs ?? 30000,\n };\n}\n", "import type { ResourceInvokePayload, CosmosValue } from \"../schemas\";\nimport { buildPostgresInvokePayload } from \"./postgres\";\nimport { buildDynamoDBInvokePayload } from \"./dynamodb\";\nimport {\n buildCosmosDBInvokePayload,\n buildCosmosDBQueryPayload,\n buildCosmosDBReadPayload,\n buildCosmosDBCreatePayload,\n buildCosmosDBReplacePayload,\n buildCosmosDBUpsertPayload,\n buildCosmosDBDeletePayload,\n buildCosmosDBPatchPayload,\n} from \"./cosmosdb\";\nimport { buildMssqlInvokePayload } from \"./mssql\";\nimport {\n buildSnowflakeInvokePayload,\n buildSnowflakeExecutePayload,\n buildSnowflakeStatusPayload,\n buildSnowflakeCancelPayload,\n} from \"./snowflake\";\nimport { buildS3InvokePayload } from \"./s3\";\nimport { buildLambdaInvokePayload } from \"./lambda\";\nimport {\n buildGoogleSheetsInvokePayload,\n buildGoogleSheetsGetValuesPayload,\n buildGoogleSheetsUpdateValuesPayload,\n buildGoogleSheetsAppendValuesPayload,\n buildGoogleSheetsClearValuesPayload,\n buildGoogleSheetsBatchGetValuesPayload,\n buildGoogleSheetsBatchUpdateValuesPayload,\n buildGoogleSheetsGetSpreadsheetPayload,\n buildGoogleSheetsBatchUpdatePayload,\n} from \"./googlesheets\";\nimport { buildHubSpotInvokePayload } from \"./hubspot\";\nimport {\n buildSalesforceInvokePayload,\n buildSalesforceQueryPayload,\n buildSalesforceGetRecordPayload,\n buildSalesforceCreateRecordPayload,\n buildSalesforceUpdateRecordPayload,\n buildSalesforceDeleteRecordPayload,\n buildSalesforceDescribeObjectPayload,\n} from \"./salesforce\";\nimport { buildCustomApiInvokePayload } from \"./custom\";\nimport {\n buildBigQueryQueryPayload,\n buildBigQueryListDatasetsPayload,\n buildBigQueryListTablesPayload,\n buildBigQueryGetTablePayload,\n buildBigQueryInsertRowsPayload,\n buildBigQueryCreateTablePayload,\n buildBigQueryInvokePayload,\n} from \"./bigquery\";\nimport { buildOutreachInvokePayload } from \"./outreach\";\nimport { buildNeo4jInvokePayload } from \"./neo4j\";\nimport { buildSlackInvokePayload, buildSlackGetUploadURLPayload, buildSlackCompleteUploadPayload } from \"./slack\";\nimport { buildQuickBooksInvokePayload, buildQuickBooksQueryPayload } from \"./quickbooks\";\nimport { buildAuthShareAccessPayload, buildAuthRevokeAccessPayload } from \"./auth\";\nimport {\n buildGoogleAnalyticsRunReportPayload,\n buildGoogleAnalyticsGetMetadataPayload,\n buildGoogleAnalyticsListAccountsPayload,\n buildGoogleAnalyticsListPropertiesPayload,\n buildGoogleAnalyticsInvokePayload,\n} from \"./google-analytics\";\nimport { buildGraphQLInvokePayload } from \"./graphql\";\n\n/**\n * Extracted parameter from query extraction\n */\nexport interface ExtractedParam {\n name: string;\n value: string;\n valueType: string;\n /** Whether the value was statically resolvable from source code */\n known?: boolean;\n /** Original expression if not known */\n expression?: string;\n}\n\n/**\n * Check if a param represents an undefined value\n * An undefined param is one that is not statically known and has expression \"undefined\"\n */\nfunction isUndefinedParam(param: ExtractedParam): boolean {\n return param.known === false && param.expression === \"undefined\";\n}\n\n/**\n * Parse a param value based on its type\n */\nfunction parseParamValue(value: string, valueType: string): unknown {\n if (valueType === \"object\" || valueType === \"list\") {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n }\n if (valueType === \"number\") {\n const num = Number(value);\n return isNaN(num) ? value : num;\n }\n if (valueType === \"boolean\") {\n return value === \"true\";\n }\n return value;\n}\n\n/**\n * Find a param by name (case-insensitive)\n * Returns undefined if param is not found or if param is an undefined expression\n */\nfunction findParam(params: ExtractedParam[], name: string): unknown {\n const param = params.find((p) => p.name.toLowerCase() === name.toLowerCase());\n if (!param) return undefined;\n // If param is not known and expression is \"undefined\", treat it as undefined\n if (isUndefinedParam(param)) return undefined;\n return parseParamValue(param.value, param.valueType);\n}\n\n/**\n * Build a payload from extracted params\n * This is the universal builder that routes to the correct resource-specific builder\n *\n * @param subtype The resource subtype (e.g., \"postgresql\", \"dynamodb\", \"cosmosdb\")\n * @param methodName The method name being invoked (e.g., \"invoke\", \"query\", \"execute\")\n * @param extractedParams Array of extracted parameters with their values\n * @returns The complete payload ready to send to the API\n */\nexport function buildPayloadFromExtractedParams(\n subtype: string,\n methodName: string,\n extractedParams: ExtractedParam[]\n): ResourceInvokePayload {\n switch (subtype) {\n // =========================================================================\n // PostgreSQL\n // =========================================================================\n case \"postgresql\": {\n const sql = findParam(extractedParams, \"SQL\") as string;\n const params = findParam(extractedParams, \"Params\") as unknown[] | undefined;\n const timeoutMs = findParam(extractedParams, \"Timeout\") as number | undefined;\n return buildPostgresInvokePayload(sql, params as (string | number | boolean | null)[], timeoutMs);\n }\n\n // =========================================================================\n // DynamoDB\n // =========================================================================\n case \"dynamodb\": {\n const command = findParam(extractedParams, \"Command\") as string;\n const params = findParam(extractedParams, \"Params\") as Record<string, unknown>;\n return buildDynamoDBInvokePayload(command as \"Query\", params as never);\n }\n\n // =========================================================================\n // CosmosDB\n // =========================================================================\n case \"cosmosdb\": {\n if (methodName === \"invoke\") {\n // Raw payload passthrough\n const payload = findParam(extractedParams, \"Payload\");\n return buildCosmosDBInvokePayload(payload as never);\n }\n if (methodName === \"query\") {\n const container = findParam(extractedParams, \"Container\") as string;\n const query = findParam(extractedParams, \"Query\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildCosmosDBQueryPayload(container, query, options);\n }\n if (methodName === \"read\") {\n const container = findParam(extractedParams, \"Container\") as string;\n const id = findParam(extractedParams, \"Id\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildCosmosDBReadPayload(container, id, options);\n }\n if (methodName === \"create\") {\n const container = findParam(extractedParams, \"Container\") as string;\n const body = findParam(extractedParams, \"Body\") as Record<string, CosmosValue>;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildCosmosDBCreatePayload(container, body, options);\n }\n if (methodName === \"replace\") {\n const container = findParam(extractedParams, \"Container\") as string;\n const id = findParam(extractedParams, \"Id\") as string;\n const body = findParam(extractedParams, \"Body\") as Record<string, CosmosValue>;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildCosmosDBReplacePayload(container, id, body, options);\n }\n if (methodName === \"upsert\") {\n const container = findParam(extractedParams, \"Container\") as string;\n const body = findParam(extractedParams, \"Body\") as Record<string, CosmosValue>;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildCosmosDBUpsertPayload(container, body, options);\n }\n if (methodName === \"delete\") {\n const container = findParam(extractedParams, \"Container\") as string;\n const id = findParam(extractedParams, \"Id\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildCosmosDBDeletePayload(container, id, options);\n }\n if (methodName === \"patch\") {\n const container = findParam(extractedParams, \"Container\") as string;\n const id = findParam(extractedParams, \"Id\") as string;\n const patchOperations = findParam(extractedParams, \"PatchOperations\") as never[];\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildCosmosDBPatchPayload(container, id, patchOperations, options);\n }\n // Default: try raw payload\n const payload = findParam(extractedParams, \"Payload\");\n return buildCosmosDBInvokePayload(payload as never);\n }\n\n // =========================================================================\n // MSSQL\n // =========================================================================\n case \"mssql\": {\n const sql = findParam(extractedParams, \"SQL\") as string;\n const params = findParam(extractedParams, \"Params\") as Record<string, unknown> | undefined;\n const timeoutMs = findParam(extractedParams, \"Timeout\") as number | undefined;\n return buildMssqlInvokePayload(sql, params as never, timeoutMs);\n }\n\n // =========================================================================\n // Snowflake\n // =========================================================================\n case \"snowflake\": {\n if (methodName === \"invoke\") {\n const payload = findParam(extractedParams, \"Payload\");\n return buildSnowflakeInvokePayload(payload as never);\n }\n if (methodName === \"execute\") {\n const statement = findParam(extractedParams, \"Statement\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildSnowflakeExecutePayload(statement, options);\n }\n if (methodName === \"status\") {\n const statementHandle = findParam(extractedParams, \"StatementHandle\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildSnowflakeStatusPayload(statementHandle, options);\n }\n if (methodName === \"cancel\") {\n const statementHandle = findParam(extractedParams, \"StatementHandle\") as string;\n return buildSnowflakeCancelPayload(statementHandle);\n }\n // Default: try raw payload\n const payload = findParam(extractedParams, \"Payload\");\n return buildSnowflakeInvokePayload(payload as never);\n }\n\n // =========================================================================\n // S3\n // =========================================================================\n case \"s3\": {\n const command = findParam(extractedParams, \"Command\") as string;\n const params = findParam(extractedParams, \"Params\") as Record<string, unknown>;\n const options = findParam(extractedParams, \"Options\") as { timeoutMs?: number } | undefined;\n return buildS3InvokePayload(command as never, params, options);\n }\n\n // =========================================================================\n // Lambda\n // =========================================================================\n case \"lambda\": {\n const functionName = findParam(extractedParams, \"FunctionName\") as string;\n const payload = findParam(extractedParams, \"Payload\");\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildLambdaInvokePayload(functionName, payload, options);\n }\n\n // =========================================================================\n // Google Sheets\n // =========================================================================\n case \"googlesheets\": {\n if (methodName === \"getValues\") {\n const range = findParam(extractedParams, \"Range\") as string;\n return buildGoogleSheetsGetValuesPayload(range);\n }\n if (methodName === \"updateValues\") {\n const range = findParam(extractedParams, \"Range\") as string;\n const values = findParam(extractedParams, \"Values\") as unknown[][];\n const valueInputOption = (findParam(extractedParams, \"ValueInputOption\") as \"RAW\" | \"USER_ENTERED\") ?? \"USER_ENTERED\";\n return buildGoogleSheetsUpdateValuesPayload(range, values, valueInputOption);\n }\n if (methodName === \"appendValues\") {\n const range = findParam(extractedParams, \"Range\") as string;\n const values = findParam(extractedParams, \"Values\") as unknown[][];\n const valueInputOption = (findParam(extractedParams, \"ValueInputOption\") as \"RAW\" | \"USER_ENTERED\") ?? \"USER_ENTERED\";\n return buildGoogleSheetsAppendValuesPayload(range, values, valueInputOption);\n }\n if (methodName === \"clearValues\") {\n const range = findParam(extractedParams, \"Range\") as string;\n return buildGoogleSheetsClearValuesPayload(range);\n }\n if (methodName === \"batchGetValues\") {\n const ranges = findParam(extractedParams, \"Ranges\") as string[];\n return buildGoogleSheetsBatchGetValuesPayload(ranges);\n }\n if (methodName === \"batchUpdateValues\") {\n const data = findParam(extractedParams, \"Data\") as Array<{ range: string; values: unknown[][] }>;\n const valueInputOption = (findParam(extractedParams, \"ValueInputOption\") as \"RAW\" | \"USER_ENTERED\") ?? \"USER_ENTERED\";\n return buildGoogleSheetsBatchUpdateValuesPayload(data, valueInputOption);\n }\n if (methodName === \"getSpreadsheet\") {\n return buildGoogleSheetsGetSpreadsheetPayload();\n }\n if (methodName === \"batchUpdate\") {\n const requests = findParam(extractedParams, \"Requests\") as unknown[];\n return buildGoogleSheetsBatchUpdatePayload(requests);\n }\n // Default: invoke method\n const method = findParam(extractedParams, \"Method\") as \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n const path = findParam(extractedParams, \"Path\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildGoogleSheetsInvokePayload(method, path, options);\n }\n\n // =========================================================================\n // HubSpot\n // =========================================================================\n case \"hubspot\": {\n const method = findParam(extractedParams, \"Method\") as \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n const path = findParam(extractedParams, \"Path\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildHubSpotInvokePayload(method, path, options);\n }\n\n // =========================================================================\n // Salesforce\n // =========================================================================\n case \"salesforce\": {\n if (methodName === \"query\") {\n const query = findParam(extractedParams, \"Query\") as string;\n return buildSalesforceQueryPayload(query);\n }\n if (methodName === \"getRecord\") {\n const objectType = findParam(extractedParams, \"ObjectType\") as string;\n const recordId = findParam(extractedParams, \"RecordId\") as string;\n return buildSalesforceGetRecordPayload(objectType, recordId);\n }\n if (methodName === \"createRecord\") {\n const objectType = findParam(extractedParams, \"ObjectType\") as string;\n const data = findParam(extractedParams, \"Data\") as Record<string, unknown>;\n return buildSalesforceCreateRecordPayload(objectType, data);\n }\n if (methodName === \"updateRecord\") {\n const objectType = findParam(extractedParams, \"ObjectType\") as string;\n const recordId = findParam(extractedParams, \"RecordId\") as string;\n const data = findParam(extractedParams, \"Data\") as Record<string, unknown>;\n return buildSalesforceUpdateRecordPayload(objectType, recordId, data);\n }\n if (methodName === \"deleteRecord\") {\n const objectType = findParam(extractedParams, \"ObjectType\") as string;\n const recordId = findParam(extractedParams, \"RecordId\") as string;\n return buildSalesforceDeleteRecordPayload(objectType, recordId);\n }\n if (methodName === \"describeObject\") {\n const objectType = findParam(extractedParams, \"ObjectType\") as string;\n return buildSalesforceDescribeObjectPayload(objectType);\n }\n // Default: invoke method\n const method = findParam(extractedParams, \"Method\") as \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n const path = findParam(extractedParams, \"Path\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildSalesforceInvokePayload(method, path, options);\n }\n\n // =========================================================================\n // Custom API\n // =========================================================================\n case \"custom\": {\n const method = findParam(extractedParams, \"Method\") as \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n const path = findParam(extractedParams, \"Path\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildCustomApiInvokePayload(method, path, options);\n }\n\n // =========================================================================\n // BigQuery\n // =========================================================================\n case \"bigquery\": {\n if (methodName === \"query\") {\n const sql = findParam(extractedParams, \"SQL\") as string;\n const params = findParam(extractedParams, \"Params\") as Record<string, unknown> | undefined;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildBigQueryQueryPayload(sql, params, options);\n }\n if (methodName === \"listDatasets\") {\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildBigQueryListDatasetsPayload(options);\n }\n if (methodName === \"listTables\") {\n const datasetId = findParam(extractedParams, \"DatasetId\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildBigQueryListTablesPayload(datasetId, options);\n }\n if (methodName === \"getTable\") {\n const datasetId = findParam(extractedParams, \"DatasetId\") as string;\n const tableId = findParam(extractedParams, \"TableId\") as string;\n return buildBigQueryGetTablePayload(datasetId, tableId);\n }\n if (methodName === \"insertRows\") {\n const datasetId = findParam(extractedParams, \"DatasetId\") as string;\n const tableId = findParam(extractedParams, \"TableId\") as string;\n const rows = findParam(extractedParams, \"Rows\") as Record<string, unknown>[];\n return buildBigQueryInsertRowsPayload(datasetId, tableId, rows);\n }\n if (methodName === \"createTable\") {\n const datasetId = findParam(extractedParams, \"DatasetId\") as string;\n const tableId = findParam(extractedParams, \"TableId\") as string;\n const schema = findParam(extractedParams, \"Schema\") as { fields: Array<{ name: string; type: string; mode?: string; description?: string }> };\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildBigQueryCreateTablePayload(datasetId, tableId, schema, options);\n }\n // Default: invoke method\n const payload = findParam(extractedParams, \"Payload\") as Record<string, unknown>;\n return buildBigQueryInvokePayload(payload as never);\n }\n\n // =========================================================================\n // Outreach\n // =========================================================================\n case \"outreach\": {\n const method = findParam(extractedParams, \"Method\") as \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n const path = findParam(extractedParams, \"Path\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildOutreachInvokePayload(method, path, options);\n }\n\n // =========================================================================\n // Neo4j\n // =========================================================================\n case \"neo4j\": {\n const cypher = findParam(extractedParams, \"Cypher\") as string;\n const params = findParam(extractedParams, \"Params\") as Record<string, unknown> | undefined;\n const timeoutMs = findParam(extractedParams, \"Timeout\") as number | undefined;\n return buildNeo4jInvokePayload(cypher, params, timeoutMs);\n }\n\n // =========================================================================\n // Slack\n // =========================================================================\n case \"slack\": {\n if (methodName === \"getUploadURL\") {\n const filename = findParam(extractedParams, \"Filename\") as string;\n const length = findParam(extractedParams, \"Length\") as number;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildSlackGetUploadURLPayload(filename, length, options);\n }\n\n if (methodName === \"completeUpload\") {\n const files = findParam(extractedParams, \"Files\") as Array<{ id: string; title?: string }>;\n const channelId = findParam(extractedParams, \"ChannelId\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildSlackCompleteUploadPayload(files, channelId, options);\n }\n\n // Default: generic invoke\n const method = findParam(extractedParams, \"Method\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildSlackInvokePayload(method, options);\n }\n\n // =========================================================================\n // QuickBooks\n // =========================================================================\n case \"quickbooks\": {\n if (methodName === \"query\") {\n const query = findParam(extractedParams, \"Query\") as string;\n return buildQuickBooksQueryPayload(query);\n }\n\n const method = findParam(extractedParams, \"Method\") as \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n const path = findParam(extractedParams, \"Path\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildQuickBooksInvokePayload(method, path, options);\n }\n\n // =========================================================================\n // Major Auth\n // =========================================================================\n case \"majorauth\": {\n const email = findParam(extractedParams, \"Email\") as string;\n if (methodName === \"revokeAccess\") {\n return buildAuthRevokeAccessPayload(email);\n }\n return buildAuthShareAccessPayload(email);\n }\n\n // =========================================================================\n // Google Analytics\n // =========================================================================\n case \"googleanalytics\": {\n if (methodName === \"runReport\") {\n const dimensions = findParam(extractedParams, \"Dimensions\") as { name: string }[] | undefined;\n const metrics = findParam(extractedParams, \"Metrics\") as { name: string }[] | undefined;\n const dateRanges = findParam(extractedParams, \"DateRanges\") as { startDate: string; endDate: string }[] | undefined;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildGoogleAnalyticsRunReportPayload(\n dimensions ?? [],\n metrics ?? [],\n dateRanges ?? [],\n options as never\n );\n }\n if (methodName === \"getMetadata\") {\n return buildGoogleAnalyticsGetMetadataPayload();\n }\n if (methodName === \"listAccounts\") {\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildGoogleAnalyticsListAccountsPayload(options as never);\n }\n if (methodName === \"listProperties\") {\n const accountId = findParam(extractedParams, \"AccountId\") as string | undefined;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildGoogleAnalyticsListPropertiesPayload(accountId, options as never);\n }\n // Default: invoke method\n const payload = findParam(extractedParams, \"Payload\") as Record<string, unknown>;\n return buildGoogleAnalyticsInvokePayload(payload as never);\n }\n // =========================================================================\n // GraphQL\n // =========================================================================\n case \"graphql\": {\n const query = findParam(extractedParams, \"Query\") as string;\n const options = findParam(extractedParams, \"Options\") as Record<string, unknown> | undefined;\n return buildGraphQLInvokePayload(query, options);\n }\n\n default:\n throw new Error(`Unsupported resource subtype: ${subtype}`);\n }\n}\n"],
|
|
5
|
+
"mappings": ";AAIO,IAAM,sBAAN,cAAkC,MAAM;AAAA,EACpC;AAAA,EACA;AAAA,EAET,YACE,SACA,YACA,WACA;AACA,UAAM,OAAO;AACb,SAAK,OAAO;AACZ,SAAK,aAAa;AAClB,SAAK,YAAY;AAAA,EACnB;AACF;;;ACGO,IAAe,qBAAf,MAAkC;AAAA,EACpB;AAAA,EAUnB,YAAY,QAA0B;AACpC,QAAI,CAAC,OAAO,iBAAiB,CAAC,OAAO,QAAQ;AAC3C,YAAM,IAAI,MAAM,4DAA4D;AAAA,IAC9E;AAEA,SAAK,SAAS;AAAA,MACZ,SAAS,OAAO,QAAQ,QAAQ,OAAO,EAAE;AAAA,MACzC,eAAe,OAAO;AAAA,MACtB,eAAe,OAAO;AAAA,MACtB,QAAQ,OAAO;AAAA,MACf,YAAY,OAAO;AAAA,MACnB,OAAO,OAAO,SAAS,WAAW;AAAA,MAClC,YAAY,OAAO;AAAA,IACrB;AAAA,EACF;AAAA,EAEA,MAAgB,UACd,SACA,eACyB;AACzB,UAAM,aAAa,KAAK,OAAO,SAAS,UAAU;AAClD,UAAM,WAAW,KAAK,OAAO,UAAU,KAAK,OAAO;AACnD,UAAM,MAAM,GAAG,KAAK,OAAO,OAAO,aAAa,UAAU,OAAO,QAAQ,aAAa,KAAK,OAAO,UAAU;AAE3G,UAAM,OAAsB;AAAA,MAC1B;AAAA,MACA;AAAA,IACF;AAEA,QAAI,UAAkC;AAAA,MACpC,gBAAgB;AAAA,IAClB;AAEA,QAAI,KAAK,OAAO,eAAe;AAC7B,cAAQ,aAAa,IAAI,KAAK,OAAO;AAAA,IACvC;AAEA,QAAI,KAAK,OAAO,YAAY;AAC1B,YAAM,eAAe,MAAM,KAAK,OAAO,WAAW;AAClD,gBAAU,EAAE,GAAG,SAAS,GAAG,aAAa;AAAA,IAC1C;AAEA,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,OAAO,MAAM,KAAK;AAAA,QAC5C,QAAQ;AAAA,QACR;AAAA,QACA,aAAa;AAAA,QACb,MAAM,KAAK,UAAU,IAAI;AAAA,MAC3B,CAAC;AAED,YAAM,OAAO,MAAM,SAAS,KAAK;AACjC,aAAO;AAAA,IACT,SAAS,OAAO;AACd,YAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,YAAM,IAAI,oBAAoB,8BAA8B,OAAO,EAAE;AAAA,IACvE;AAAA,EACF;AACF;;;ACjFO,SAAS,2BACd,KACA,QACA,WACmB;AACnB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACbO,IAAM,yBAAN,cAAqC,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwB7D,MAAM,OACJ,KACA,QACA,eACA,WACoC;AACpC,UAAM,UAAU,2BAA2B,KAAK,QAAQ,SAAS;AACjE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AACF;;;AChCO,SAAS,wBACd,KACA,QACA,WACgB;AAChB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACbO,IAAM,sBAAN,cAAkC,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwB1D,MAAM,OACJ,KACA,QACA,eACA,WACoC;AACpC,UAAM,UAAU,wBAAwB,KAAK,QAAQ,SAAS;AAC9D,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AACF;;;ACjCO,SAAS,2BACd,SACA,QACmB;AACnB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;;;ACTO,IAAM,yBAAN,cAAqC,mBAAmB;AAAA,EAC7D,MAAM,OACJ,SACA,QACA,eAC2E;AAC3E,UAAM,UAAU,2BAA2B,SAAS,MAAM;AAC1D,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAG9C;AACF;;;ACAO,SAAS,2BACd,SACmB;AACnB,SAAO;AACT;AAKO,SAAS,0BACd,WACA,OACA,SAOoB;AACpB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,YAAY,SAAS;AAAA,IACrB,cAAc,SAAS;AAAA,IACvB,cAAc,SAAS;AAAA,IACvB,mBAAmB,SAAS;AAAA,IAC5B,WAAW,SAAS;AAAA,EACtB;AACF;AAKO,SAAS,yBACd,WACA,IACA,SACmB;AACnB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,WAAW,SAAS;AAAA,EACtB;AACF;AAKO,SAAS,2BACd,WACA,MACA,SACqB;AACrB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,WAAW,SAAS;AAAA,EACtB;AACF;AAKO,SAAS,4BACd,WACA,IACA,MACA,SACsB;AACtB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,WAAW,SAAS;AAAA,EACtB;AACF;AAKO,SAAS,2BACd,WACA,MACA,SACqB;AACrB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,WAAW,SAAS;AAAA,EACtB;AACF;AAKO,SAAS,2BACd,WACA,IACA,SACqB;AACrB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,WAAW,SAAS;AAAA,EACtB;AACF;AAKO,SAAS,0BACd,WACA,IACA,iBACA,SACoB;AACpB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,SAAS;AAAA,IACvB,WAAW,SAAS;AAAA,IACpB,WAAW,SAAS;AAAA,EACtB;AACF;;;AC9IO,IAAM,yBAAN,cAAqC,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7D,MAAM,OACJ,SACA,eACwE;AACxE,WAAO,KAAK,UAAU,2BAA2B,OAAO,GAAG,aAAa;AAAA,EAG1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,MACJ,WACA,OACA,eACA,SAOkE;AAClE,UAAM,UAAU,0BAA0B,WAAW,OAAO,OAAO;AACnE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAG9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,KACJ,WACA,IACA,eACA,SACiE;AACjE,UAAM,UAAU,yBAAyB,WAAW,IAAI,OAAO;AAC/D,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAG9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,OACJ,WACA,MACA,eACA,SACmE;AACnE,UAAM,UAAU,2BAA2B,WAAW,MAAM,OAAO;AACnE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAG9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,QACJ,WACA,IACA,MACA,eACA,SACoE;AACpE,UAAM,UAAU,4BAA4B,WAAW,IAAI,MAAM,OAAO;AACxE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAG9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,OACJ,WACA,MACA,eACA,SACmE;AACnE,UAAM,UAAU,2BAA2B,WAAW,MAAM,OAAO;AACnE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAG9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,OACJ,WACA,IACA,eACA,SACgE;AAChE,UAAM,UAAU,2BAA2B,WAAW,IAAI,OAAO;AACjE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAG9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,MACJ,WACA,IACA,iBACA,eACA,SACkE;AAClE,UAAM,UAAU,0BAA0B,WAAW,IAAI,iBAAiB,OAAO;AACjF,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAG9C;AACF;;;AC5KO,SAAS,4BACd,SACoB;AACpB,SAAO;AACT;AAOO,SAAS,6BACd,WACA,SAYyB;AACzB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA,UAAU,SAAS;AAAA,IACnB,UAAU,SAAS;AAAA,IACnB,QAAQ,SAAS;AAAA,IACjB,WAAW,SAAS;AAAA,IACpB,MAAM,SAAS;AAAA,IACf,SAAS,SAAS;AAAA,IAClB,OAAO,SAAS;AAAA,IAChB,YAAY,SAAS;AAAA,IACrB,UAAU,SAAS;AAAA,IACnB,WAAW,SAAS;AAAA,EACtB;AACF;AAOO,SAAS,4BACd,iBACA,SACwB;AACxB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA,WAAW,SAAS;AAAA,EACtB;AACF;AAMO,SAAS,4BACd,iBACwB;AACxB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,EACF;AACF;;;AChCO,IAAM,0BAAN,cAAsC,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9D,MAAM,OACJ,SACA,eACkC;AAClC,WAAO,KAAK,UAAU,4BAA4B,OAAO,GAAG,aAAa;AAAA,EAC3E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,QACJ,WACA,eACA,UAAmC,CAAC,GACF;AAClC,UAAM,UAAU,6BAA6B,WAAW,OAAO;AAC/D,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,OACJ,iBACA,eACA,UAAkC,CAAC,GACD;AAClC,UAAM,UAAU,4BAA4B,iBAAiB,OAAO;AACpE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,OACJ,iBACA,eACkC;AAClC,UAAM,UAAU,4BAA4B,eAAe;AAC3D,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AACF;;;ACvGO,SAAS,4BACd,QACA,MACA,SAMkB;AAClB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,SAAS,SAAS;AAAA,IAClB,MAAM,SAAS;AAAA,IACf,WAAW,SAAS,aAAa;AAAA,EACnC;AACF;;;ACnBO,IAAM,0BAAN,cAAsC,mBAAmB;AAAA,EAC9D,MAAM,OACJ,QACA,MACA,eACA,UAKI,CAAC,GACuB;AAC5B,UAAM,UAAU,4BAA4B,QAAQ,MAAM,OAAO;AACjE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AACF;;;AChBO,SAAS,0BACd,QACA,MACA,SAKmB;AACnB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,MAAM,SAAS;AAAA,IACf,WAAW,SAAS,aAAa;AAAA,EACnC;AACF;;;AClBO,IAAM,wBAAN,cAAoC,mBAAmB;AAAA,EAC5D,MAAM,OACJ,QACA,MACA,eACA,UAII,CAAC,GACuB;AAC5B,UAAM,UAAU,0BAA0B,QAAQ,MAAM,OAAO;AAC/D,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AACF;;;ACdO,SAAS,6BACd,QACA,MACA,SAKsB;AACtB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,MAAM,SAAS;AAAA,IACf,WAAW,SAAS,aAAa;AAAA,EACnC;AACF;AAOO,SAAS,4BACd,OACA,SACsB;AACtB,SAAO,6BAA6B,OAAO,8BAA8B;AAAA,IACvE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE;AAAA,IACpB,WAAW,SAAS;AAAA,EACtB,CAAC;AACH;AAQO,SAAS,gCACd,YACA,UACA,SACsB;AACtB,QAAM,QAAqB,CAAC;AAC5B,MAAI,SAAS,UAAU,QAAQ,OAAO,SAAS,GAAG;AAChD,UAAM,SAAS,CAAC,QAAQ,OAAO,KAAK,GAAG,CAAC;AAAA,EAC1C;AAEA,SAAO;AAAA,IACL;AAAA,IACA,iCAAiC,UAAU,IAAI,QAAQ;AAAA,IACvD;AAAA,MACE,OAAO,OAAO,KAAK,KAAK,EAAE,SAAS,IAAI,QAAQ;AAAA,MAC/C,WAAW,SAAS;AAAA,IACtB;AAAA,EACF;AACF;AAQO,SAAS,mCACd,YACA,MACA,SACsB;AACtB,SAAO;AAAA,IACL;AAAA,IACA,iCAAiC,UAAU;AAAA,IAC3C;AAAA,MACE,MAAM,EAAE,MAAM,QAAQ,OAAO,KAAK;AAAA,MAClC,WAAW,SAAS;AAAA,IACtB;AAAA,EACF;AACF;AASO,SAAS,mCACd,YACA,UACA,MACA,SACsB;AACtB,SAAO;AAAA,IACL;AAAA,IACA,iCAAiC,UAAU,IAAI,QAAQ;AAAA,IACvD;AAAA,MACE,MAAM,EAAE,MAAM,QAAQ,OAAO,KAAK;AAAA,MAClC,WAAW,SAAS;AAAA,IACtB;AAAA,EACF;AACF;AAQO,SAAS,mCACd,YACA,UACA,SACsB;AACtB,SAAO;AAAA,IACL;AAAA,IACA,iCAAiC,UAAU,IAAI,QAAQ;AAAA,IACvD;AAAA,MACE,WAAW,SAAS;AAAA,IACtB;AAAA,EACF;AACF;AAOO,SAAS,qCACd,YACA,SACsB;AACtB,SAAO;AAAA,IACL;AAAA,IACA,iCAAiC,UAAU;AAAA,IAC3C;AAAA,MACE,WAAW,SAAS;AAAA,IACtB;AAAA,EACF;AACF;;;ACrGO,IAAM,2BAAN,cAAuC,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU/D,MAAM,OACJ,QACA,MACA,eACA,UAII,CAAC,GACuB;AAC5B,UAAM,UAAU,6BAA6B,QAAQ,MAAM,OAAO;AAClE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,MAAM,MACJ,OACA,eACA,UAAkC,CAAC,GACP;AAC5B,WAAO,KAAK,OAAO,OAAO,8BAA8B,eAAe;AAAA,MACrE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE;AAAA,MACpB,WAAW,QAAQ;AAAA,IACrB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,UACJ,YACA,UACA,eACA,UAAqD,CAAC,GAC1B;AAC5B,UAAM,QAAqB,CAAC;AAC5B,QAAI,QAAQ,UAAU,QAAQ,OAAO,SAAS,GAAG;AAC/C,YAAM,SAAS,CAAC,QAAQ,OAAO,KAAK,GAAG,CAAC;AAAA,IAC1C;AAEA,WAAO,KAAK;AAAA,MACV;AAAA,MACA,iCAAiC,UAAU,IAAI,QAAQ;AAAA,MACvD;AAAA,MACA,EAAE,OAAO,OAAO,KAAK,KAAK,EAAE,SAAS,IAAI,QAAQ,QAAW,WAAW,QAAQ,UAAU;AAAA,IAC3F;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,aACJ,YACA,MACA,eACA,UAAkC,CAAC,GACP;AAC5B,WAAO,KAAK;AAAA,MACV;AAAA,MACA,iCAAiC,UAAU;AAAA,MAC3C;AAAA,MACA,EAAE,MAAM,EAAE,MAAM,QAAQ,OAAO,KAAK,GAAG,WAAW,QAAQ,UAAU;AAAA,IACtE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,aACJ,YACA,UACA,MACA,eACA,UAAkC,CAAC,GACP;AAC5B,WAAO,KAAK;AAAA,MACV;AAAA,MACA,iCAAiC,UAAU,IAAI,QAAQ;AAAA,MACvD;AAAA,MACA,EAAE,MAAM,EAAE,MAAM,QAAQ,OAAO,KAAK,GAAG,WAAW,QAAQ,UAAU;AAAA,IACtE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,aACJ,YACA,UACA,eACA,UAAkC,CAAC,GACP;AAC5B,WAAO,KAAK;AAAA,MACV;AAAA,MACA,iCAAiC,UAAU,IAAI,QAAQ;AAAA,MACvD;AAAA,MACA,EAAE,WAAW,QAAQ,UAAU;AAAA,IACjC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,eACJ,YACA,eACA,UAAkC,CAAC,GACP;AAC5B,WAAO,KAAK;AAAA,MACV;AAAA,MACA,iCAAiC,UAAU;AAAA,MAC3C;AAAA,MACA,EAAE,WAAW,QAAQ,UAAU;AAAA,IACjC;AAAA,EACF;AACF;;;AClNO,SAAS,+BACd,QACA,MACA,SAKwB;AACxB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,MAAM,SAAS;AAAA,IACf,WAAW,SAAS,aAAa;AAAA,EACnC;AACF;AAOO,SAAS,kCACd,OACA,SACwB;AACxB,SAAO,+BAA+B,OAAO,WAAW,KAAK,IAAI;AAAA,IAC/D,WAAW,SAAS;AAAA,EACtB,CAAC;AACH;AASO,SAAS,qCACd,OACA,QACA,mBAA2C,gBAC3C,SACwB;AACxB,SAAO,+BAA+B,OAAO,WAAW,KAAK,IAAI;AAAA,IAC/D,OAAO,EAAE,kBAAkB,CAAC,gBAAgB,EAAE;AAAA,IAC9C,MAAM,EAAE,MAAM,QAAQ,OAAO,EAAE,OAAO,EAAE;AAAA,IACxC,WAAW,SAAS;AAAA,EACtB,CAAC;AACH;AASO,SAAS,qCACd,OACA,QACA,mBAA2C,gBAC3C,SACwB;AACxB,SAAO,+BAA+B,QAAQ,WAAW,KAAK,WAAW;AAAA,IACvE,OAAO,EAAE,kBAAkB,CAAC,gBAAgB,EAAE;AAAA,IAC9C,MAAM,EAAE,MAAM,QAAQ,OAAO,EAAE,OAAO,EAAE;AAAA,IACxC,WAAW,SAAS;AAAA,EACtB,CAAC;AACH;AAOO,SAAS,oCACd,OACA,SACwB;AACxB,SAAO,+BAA+B,QAAQ,WAAW,KAAK,UAAU;AAAA,IACtE,WAAW,SAAS;AAAA,EACtB,CAAC;AACH;AAOO,SAAS,uCACd,QACA,SACwB;AACxB,SAAO,+BAA+B,OAAO,oBAAoB;AAAA,IAC/D,OAAO,EAAE,OAAO;AAAA,IAChB,WAAW,SAAS;AAAA,EACtB,CAAC;AACH;AAQO,SAAS,0CACd,MACA,mBAA2C,gBAC3C,SACwB;AACxB,SAAO,+BAA+B,QAAQ,uBAAuB;AAAA,IACnE,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,QACL;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,SAAS;AAAA,EACtB,CAAC;AACH;AAMO,SAAS,uCACd,SACwB;AACxB,SAAO,+BAA+B,OAAO,KAAK;AAAA,IAChD,WAAW,SAAS;AAAA,EACtB,CAAC;AACH;AAOO,SAAS,oCACd,UACA,SACwB;AACxB,SAAO,+BAA+B,QAAQ,iBAAiB;AAAA,IAC7D,MAAM,EAAE,MAAM,QAAQ,OAAO,EAAE,SAAS,EAAE;AAAA,IAC1C,WAAW,SAAS;AAAA,EACtB,CAAC;AACH;;;ACvJO,IAAM,6BAAN,cAAyC,mBAAmB;AAAA,EACjE,MAAM,OACJ,QACA,MACA,eACA,UAII,CAAC,GACuB;AAC5B,UAAM,UAAU,+BAA+B,QAAQ,MAAM,OAAO;AACpE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,UACJ,OACA,eAC4B;AAC5B,WAAO,KAAK,OAAO,OAAO,WAAW,KAAK,IAAI,aAAa;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,aACJ,OACA,QACA,eACA,mBAA2C,gBACf;AAC5B,WAAO,KAAK;AAAA,MACV;AAAA,MACA,WAAW,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,QACE,OAAO,EAAE,iBAAiB;AAAA,QAC1B,MAAM,EAAE,MAAM,QAAQ,OAAO,EAAE,OAAO,EAAE;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,aACJ,OACA,QACA,eACA,mBAA2C,gBACf;AAC5B,WAAO,KAAK;AAAA,MACV;AAAA,MACA,WAAW,KAAK;AAAA,MAChB;AAAA,MACA;AAAA,QACE,OAAO,EAAE,iBAAiB;AAAA,QAC1B,MAAM,EAAE,MAAM,QAAQ,OAAO,EAAE,OAAO,EAAE;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,YACJ,OACA,eAC4B;AAC5B,WAAO,KAAK,OAAO,QAAQ,WAAW,KAAK,UAAU,aAAa;AAAA,EACpE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eACJ,QACA,eAC4B;AAC5B,WAAO,KAAK,OAAO,OAAO,oBAAoB,eAAe;AAAA,MAC3D,OAAO,EAAE,OAAO;AAAA,IAClB,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,kBACJ,MACA,eACA,mBAA2C,gBACf;AAC5B,WAAO,KAAK,OAAO,QAAQ,uBAAuB,eAAe;AAAA,MAC/D,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,OAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,eAAe,eAAmD;AACtE,WAAO,KAAK,OAAO,OAAO,KAAK,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,YACJ,UACA,eAC4B;AAC5B,WAAO,KAAK,OAAO,QAAQ,iBAAiB,eAAe;AAAA,MACzD,MAAM,EAAE,MAAM,QAAQ,OAAO,EAAE,SAAS,EAAE;AAAA,IAC5C,CAAC;AAAA,EACH;AACF;;;AChJO,SAAS,qBACd,SACA,QACA,SACkB;AAClB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,WAAW,SAAS;AAAA,EACtB;AACF;;;ACbO,IAAM,mBAAN,cAA+B,mBAAmB;AAAA,EACvD,MAAM,OACJ,SACA,QACA,eACA,UAEI,CAAC,GAC2B;AAChC,UAAM,UAAU,qBAAqB,SAAS,QAAQ,OAAO;AAC7D,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AACF;;;ACKO,SAAS,yBACd,cACA,SACA,SACkB;AAClB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,cAAc;AAAA,IACd,SAAS;AAAA,IACT,GAAG;AAAA,EACL;AACF;;;ACiBO,IAAM,uBAAN,cAAmC,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8C3D,MAAM,OACJ,cACA,SACA,eACA,UAA+B,CAAC,GAC6B;AAC7D,UAAM,gBAAgB,yBAAyB,cAAc,SAAS,OAAO;AAC7E,WAAO,KAAK,UAAU,eAAe,aAAa;AAAA,EAGpD;AACF;;;ACtGO,SAAS,0BACd,KACA,QACA,SACmB;AACnB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA,WAAW,SAAS;AAAA,IACpB,YAAY,SAAS;AAAA,EACvB;AACF;AAMO,SAAS,iCACd,SACmB;AACnB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,YAAY,SAAS;AAAA,EACvB;AACF;AAOO,SAAS,+BACd,WACA,SACmB;AACnB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA,YAAY,SAAS;AAAA,EACvB;AACF;AAOO,SAAS,6BACd,WACA,SACmB;AACnB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,EACF;AACF;AAQO,SAAS,+BACd,WACA,SACA,MACmB;AACnB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AASO,SAAS,gCACd,WACA,SACA,QACA,SACmB;AACnB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,SAAS;AAAA,EACtB;AACF;AAMO,SAAS,2BACd,SACmB;AACnB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,GAAG;AAAA,EACL;AACF;;;AC/GO,IAAM,yBAAN,cAAqC,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ7D,MAAM,MACJ,KACA,QACA,eACA,SACiC;AACjC,UAAM,UAAU,0BAA0B,KAAK,QAAQ,OAAO;AAC9D,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aACJ,eACA,SACiC;AACjC,UAAM,UAAU,iCAAiC,OAAO;AACxD,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,WACJ,WACA,eACA,SACiC;AACjC,UAAM,UAAU,+BAA+B,WAAW,OAAO;AACjE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,SACJ,WACA,SACA,eACiC;AACjC,UAAM,UAAU,6BAA6B,WAAW,OAAO;AAC/D,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,WACJ,WACA,SACA,MACA,eACiC;AACjC,UAAM,UAAU,+BAA+B,WAAW,SAAS,IAAI;AACvE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,YACJ,WACA,SACA,QACA,eACA,SACiC;AACjC,UAAM,UAAU,gCAAgC,WAAW,SAAS,QAAQ,OAAO;AACnF,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,OACJ,SACA,eACiC;AACjC,UAAM,cAAc,2BAA2B,OAAO;AACtD,WAAO,KAAK,UAAU,aAAa,aAAa;AAAA,EAClD;AACF;;;AC1HO,IAAM,yBAAN,cAAqC,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS7D,MAAM,OACJ,QACA,MACA,eACA,UAII,CAAC,GAC4B;AACjC,UAAM,UAA8B;AAAA,MAClC,MAAM;AAAA,MACN,SAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,MAAM,QAAQ;AAAA,MACd,WAAW,QAAQ,aAAa;AAAA,IAClC;AAEA,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AACF;;;AC/BO,SAAS,wBACd,QACA,QACA,WACgB;AAChB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;ACdO,IAAM,sBAAN,cAAkC,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsB1D,MAAM,OACJ,QACA,QACA,eACA,WAC8B;AAC9B,UAAM,UAAU,wBAAwB,QAAQ,QAAQ,SAAS;AACjE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AACF;;;AC9BO,SAAS,wBACd,QACA,SAIiB;AACjB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA,MAAM,SAAS;AAAA,IACf,WAAW,SAAS,aAAa;AAAA,EACnC;AACF;AAEO,SAAS,8BACd,UACA,QACA,SACiB;AACjB,SAAO,wBAAwB,8BAA8B;AAAA,IAC3D,MAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA,SAAS,SAAS;AAAA,MAClB,cAAc,SAAS;AAAA,IACzB;AAAA,EACF,CAAC;AACH;AAEO,SAAS,gCACd,OACA,WACA,SACiB;AACjB,SAAO,wBAAwB,gCAAgC;AAAA,IAC7D,MAAM;AAAA,MACJ;AAAA,MACA,YAAY;AAAA,MACZ,iBAAiB,SAAS;AAAA,MAC1B,WAAW,SAAS;AAAA,IACtB;AAAA,EACF,CAAC;AACH;;;AC/CO,IAAM,sBAAN,cAAkC,mBAAmB;AAAA,EAC1D,MAAM,OACJ,QACA,eACA,UAGI,CAAC,GACuB;AAC5B,UAAM,UAAU,wBAAwB,QAAQ,OAAO;AACvD,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aACJ,UACA,QACA,eACA,SAI4B;AAC5B,WAAO,KAAK,OAAO,8BAA8B,eAAe;AAAA,MAC9D,MAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA,SAAS,SAAS;AAAA,QAClB,cAAc,SAAS;AAAA,MACzB;AAAA,IACF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,eACJ,OACA,WACA,eACA,SAI4B;AAC5B,WAAO,KAAK,OAAO,gCAAgC,eAAe;AAAA,MAChE,MAAM;AAAA,QACJ;AAAA,QACA,YAAY;AAAA,QACZ,iBAAiB,SAAS;AAAA,QAC1B,WAAW,SAAS;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AC9DO,SAAS,6BACd,QACA,MACA,SAKsB;AACtB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,OAAO,SAAS;AAAA,IAChB,MAAM,SAAS;AAAA,IACf,WAAW,SAAS,aAAa;AAAA,EACnC;AACF;AAEO,SAAS,4BACd,OACA,SACsB;AACtB,SAAO,6BAA6B,OAAO,UAAU;AAAA,IACnD,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE;AAAA,IACxB,WAAW,SAAS;AAAA,EACtB,CAAC;AACH;;;ACtBO,IAAM,2BAAN,cAAuC,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU/D,MAAM,OACJ,QACA,MACA,eACA,UAII,CAAC,GACuB;AAC5B,UAAM,UAAU,6BAA6B,QAAQ,MAAM,OAAO;AAClE,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,MAAM,MACJ,OACA,eACA,UAAkC,CAAC,GACP;AAC5B,UAAM,UAAU,4BAA4B,OAAO,OAAO;AAC1D,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AACF;;;AClDO,SAAS,4BAA4B,OAA4B;AACtE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,EACF;AACF;AAMO,SAAS,6BAA6B,OAA4B;AACvE,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,IACR;AAAA,EACF;AACF;;;ACtBO,IAAM,0BAAN,cAAsC,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM9D,MAAM,YACJ,OACA,eAC6B;AAC7B,UAAM,UAAU,4BAA4B,KAAK;AACjD,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aACJ,OACA,eAC6B;AAC7B,UAAM,UAAU,6BAA6B,KAAK;AAClD,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AACF;;;AClBO,SAAS,qCACd,YACA,SACA,YACA,SAC2B;AAC3B,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB,SAAS;AAAA,IAC1B,cAAc,SAAS;AAAA,IACvB,UAAU,SAAS;AAAA,IACnB,OAAO,SAAS;AAAA,IAChB,QAAQ,SAAS;AAAA,EACnB;AACF;AAKO,SAAS,yCAAoE;AAClF,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,EACb;AACF;AAKO,SAAS,6CACd,SACA,YACA,OAC2B;AAC3B,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAKO,SAAS,wCACd,SAC2B;AAC3B,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX,UAAU,SAAS;AAAA,IACnB,WAAW,SAAS;AAAA,EACtB;AACF;AAKO,SAAS,0CACd,WACA,SAC2B;AAC3B,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA,UAAU,SAAS;AAAA,IACnB,WAAW,SAAS;AAAA,EACtB;AACF;AAKO,SAAS,2CACd,YACA,SAC2B;AAC3B,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW;AAAA,IACX;AAAA,IACA,UAAU,SAAS;AAAA,IACnB,WAAW,SAAS;AAAA,EACtB;AACF;AAKO,SAAS,kCACd,SAC2B;AAC3B,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT,GAAG;AAAA,EACL;AACF;;;ACvGO,IAAM,gCAAN,cAA4C,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASpE,MAAM,UACJ,YACA,SACA,YACA,eACA,SACwC;AACxC,UAAM,UAAU,qCAAqC,YAAY,SAAS,YAAY,OAAO;AAC7F,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,YACJ,eACwC;AACxC,UAAM,UAAU,uCAAuC;AACvD,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,kBACJ,SACA,eACA,YACA,OACwC;AACxC,UAAM,UAAU,6CAA6C,SAAS,YAAY,KAAK;AACvF,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,aACJ,eACA,SACwC;AACxC,UAAM,UAAU,wCAAwC,OAAO;AAC/D,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,eACJ,eACA,WACA,SACwC;AACxC,UAAM,UAAU,0CAA0C,WAAW,OAAO;AAC5E,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,gBACJ,eACA,YACA,SACwC;AACxC,UAAM,UAAU,2CAA2C,YAAY,OAAO;AAC9E,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,OACJ,SACA,eACwC;AACxC,UAAM,IAAI,kCAAkC,OAAO;AACnD,WAAO,KAAK,UAAU,GAAG,aAAa;AAAA,EACxC;AACF;;;AClHO,SAAS,0BACd,OACA,SAMmB;AACnB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA,WAAW,SAAS;AAAA,IACpB,eAAe,SAAS;AAAA,IACxB,SAAS,SAAS;AAAA,IAClB,WAAW,SAAS,aAAa;AAAA,EACnC;AACF;;;ACrBO,IAAM,wBAAN,cAAoC,mBAAmB;AAAA,EAC5D,MAAM,MACJ,OACA,eACA,UAKI,CAAC,GACuB;AAC5B,UAAM,UAAU,0BAA0B,OAAO,OAAO;AACxD,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AAAA,EAEA,MAAM,OACJ,UACA,eACA,UAKI,CAAC,GACuB;AAC5B,UAAM,UAAU,0BAA0B,UAAU,OAAO;AAC3D,WAAO,KAAK,UAAU,SAAS,aAAa;AAAA,EAC9C;AACF;;;ACxBO,SAAS,2BACd,QACA,MACA,SAKoB;AACpB,SAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,aAAa,SAAS;AAAA,IACtB,MAAM,SAAS;AAAA,IACf,WAAW,SAAS,aAAa;AAAA,EACnC;AACF;;;AC0DA,SAAS,iBAAiB,OAAgC;AACxD,SAAO,MAAM,UAAU,SAAS,MAAM,eAAe;AACvD;AAKA,SAAS,gBAAgB,OAAe,WAA4B;AAClE,MAAI,cAAc,YAAY,cAAc,QAAQ;AAClD,QAAI;AACF,aAAO,KAAK,MAAM,KAAK;AAAA,IACzB,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,cAAc,UAAU;AAC1B,UAAM,MAAM,OAAO,KAAK;AACxB,WAAO,MAAM,GAAG,IAAI,QAAQ;AAAA,EAC9B;AACA,MAAI,cAAc,WAAW;AAC3B,WAAO,UAAU;AAAA,EACnB;AACA,SAAO;AACT;AAMA,SAAS,UAAU,QAA0B,MAAuB;AAClE,QAAM,QAAQ,OAAO,KAAK,CAAC,MAAM,EAAE,KAAK,YAAY,MAAM,KAAK,YAAY,CAAC;AAC5E,MAAI,CAAC,MAAO,QAAO;AAEnB,MAAI,iBAAiB,KAAK,EAAG,QAAO;AACpC,SAAO,gBAAgB,MAAM,OAAO,MAAM,SAAS;AACrD;AAWO,SAAS,gCACd,SACA,YACA,iBACuB;AACvB,UAAQ,SAAS;AAAA;AAAA;AAAA;AAAA,IAIf,KAAK,cAAc;AACjB,YAAM,MAAM,UAAU,iBAAiB,KAAK;AAC5C,YAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,YAAM,YAAY,UAAU,iBAAiB,SAAS;AACtD,aAAO,2BAA2B,KAAK,QAAgD,SAAS;AAAA,IAClG;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,YAAY;AACf,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,YAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,aAAO,2BAA2B,SAAoB,MAAe;AAAA,IACvE;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,YAAY;AACf,UAAI,eAAe,UAAU;AAE3B,cAAMA,WAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,2BAA2BA,QAAgB;AAAA,MACpD;AACA,UAAI,eAAe,SAAS;AAC1B,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAM,QAAQ,UAAU,iBAAiB,OAAO;AAChD,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,0BAA0B,WAAW,OAAO,OAAO;AAAA,MAC5D;AACA,UAAI,eAAe,QAAQ;AACzB,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAM,KAAK,UAAU,iBAAiB,IAAI;AAC1C,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,yBAAyB,WAAW,IAAI,OAAO;AAAA,MACxD;AACA,UAAI,eAAe,UAAU;AAC3B,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAM,OAAO,UAAU,iBAAiB,MAAM;AAC9C,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,2BAA2B,WAAW,MAAM,OAAO;AAAA,MAC5D;AACA,UAAI,eAAe,WAAW;AAC5B,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAM,KAAK,UAAU,iBAAiB,IAAI;AAC1C,cAAM,OAAO,UAAU,iBAAiB,MAAM;AAC9C,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,4BAA4B,WAAW,IAAI,MAAM,OAAO;AAAA,MACjE;AACA,UAAI,eAAe,UAAU;AAC3B,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAM,OAAO,UAAU,iBAAiB,MAAM;AAC9C,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,2BAA2B,WAAW,MAAM,OAAO;AAAA,MAC5D;AACA,UAAI,eAAe,UAAU;AAC3B,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAM,KAAK,UAAU,iBAAiB,IAAI;AAC1C,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,2BAA2B,WAAW,IAAI,OAAO;AAAA,MAC1D;AACA,UAAI,eAAe,SAAS;AAC1B,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAM,KAAK,UAAU,iBAAiB,IAAI;AAC1C,cAAM,kBAAkB,UAAU,iBAAiB,iBAAiB;AACpE,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,0BAA0B,WAAW,IAAI,iBAAiB,OAAO;AAAA,MAC1E;AAEA,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,2BAA2B,OAAgB;AAAA,IACpD;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,SAAS;AACZ,YAAM,MAAM,UAAU,iBAAiB,KAAK;AAC5C,YAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,YAAM,YAAY,UAAU,iBAAiB,SAAS;AACtD,aAAO,wBAAwB,KAAK,QAAiB,SAAS;AAAA,IAChE;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,aAAa;AAChB,UAAI,eAAe,UAAU;AAC3B,cAAMA,WAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,4BAA4BA,QAAgB;AAAA,MACrD;AACA,UAAI,eAAe,WAAW;AAC5B,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,6BAA6B,WAAW,OAAO;AAAA,MACxD;AACA,UAAI,eAAe,UAAU;AAC3B,cAAM,kBAAkB,UAAU,iBAAiB,iBAAiB;AACpE,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,4BAA4B,iBAAiB,OAAO;AAAA,MAC7D;AACA,UAAI,eAAe,UAAU;AAC3B,cAAM,kBAAkB,UAAU,iBAAiB,iBAAiB;AACpE,eAAO,4BAA4B,eAAe;AAAA,MACpD;AAEA,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,4BAA4B,OAAgB;AAAA,IACrD;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,MAAM;AACT,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,YAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,qBAAqB,SAAkB,QAAQ,OAAO;AAAA,IAC/D;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,UAAU;AACb,YAAM,eAAe,UAAU,iBAAiB,cAAc;AAC9D,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,yBAAyB,cAAc,SAAS,OAAO;AAAA,IAChE;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,gBAAgB;AACnB,UAAI,eAAe,aAAa;AAC9B,cAAM,QAAQ,UAAU,iBAAiB,OAAO;AAChD,eAAO,kCAAkC,KAAK;AAAA,MAChD;AACA,UAAI,eAAe,gBAAgB;AACjC,cAAM,QAAQ,UAAU,iBAAiB,OAAO;AAChD,cAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,cAAM,mBAAoB,UAAU,iBAAiB,kBAAkB,KAAgC;AACvG,eAAO,qCAAqC,OAAO,QAAQ,gBAAgB;AAAA,MAC7E;AACA,UAAI,eAAe,gBAAgB;AACjC,cAAM,QAAQ,UAAU,iBAAiB,OAAO;AAChD,cAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,cAAM,mBAAoB,UAAU,iBAAiB,kBAAkB,KAAgC;AACvG,eAAO,qCAAqC,OAAO,QAAQ,gBAAgB;AAAA,MAC7E;AACA,UAAI,eAAe,eAAe;AAChC,cAAM,QAAQ,UAAU,iBAAiB,OAAO;AAChD,eAAO,oCAAoC,KAAK;AAAA,MAClD;AACA,UAAI,eAAe,kBAAkB;AACnC,cAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,eAAO,uCAAuC,MAAM;AAAA,MACtD;AACA,UAAI,eAAe,qBAAqB;AACtC,cAAM,OAAO,UAAU,iBAAiB,MAAM;AAC9C,cAAM,mBAAoB,UAAU,iBAAiB,kBAAkB,KAAgC;AACvG,eAAO,0CAA0C,MAAM,gBAAgB;AAAA,MACzE;AACA,UAAI,eAAe,kBAAkB;AACnC,eAAO,uCAAuC;AAAA,MAChD;AACA,UAAI,eAAe,eAAe;AAChC,cAAM,WAAW,UAAU,iBAAiB,UAAU;AACtD,eAAO,oCAAoC,QAAQ;AAAA,MACrD;AAEA,YAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,YAAM,OAAO,UAAU,iBAAiB,MAAM;AAC9C,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,+BAA+B,QAAQ,MAAM,OAAO;AAAA,IAC7D;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,WAAW;AACd,YAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,YAAM,OAAO,UAAU,iBAAiB,MAAM;AAC9C,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,0BAA0B,QAAQ,MAAM,OAAO;AAAA,IACxD;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,cAAc;AACjB,UAAI,eAAe,SAAS;AAC1B,cAAM,QAAQ,UAAU,iBAAiB,OAAO;AAChD,eAAO,4BAA4B,KAAK;AAAA,MAC1C;AACA,UAAI,eAAe,aAAa;AAC9B,cAAM,aAAa,UAAU,iBAAiB,YAAY;AAC1D,cAAM,WAAW,UAAU,iBAAiB,UAAU;AACtD,eAAO,gCAAgC,YAAY,QAAQ;AAAA,MAC7D;AACA,UAAI,eAAe,gBAAgB;AACjC,cAAM,aAAa,UAAU,iBAAiB,YAAY;AAC1D,cAAM,OAAO,UAAU,iBAAiB,MAAM;AAC9C,eAAO,mCAAmC,YAAY,IAAI;AAAA,MAC5D;AACA,UAAI,eAAe,gBAAgB;AACjC,cAAM,aAAa,UAAU,iBAAiB,YAAY;AAC1D,cAAM,WAAW,UAAU,iBAAiB,UAAU;AACtD,cAAM,OAAO,UAAU,iBAAiB,MAAM;AAC9C,eAAO,mCAAmC,YAAY,UAAU,IAAI;AAAA,MACtE;AACA,UAAI,eAAe,gBAAgB;AACjC,cAAM,aAAa,UAAU,iBAAiB,YAAY;AAC1D,cAAM,WAAW,UAAU,iBAAiB,UAAU;AACtD,eAAO,mCAAmC,YAAY,QAAQ;AAAA,MAChE;AACA,UAAI,eAAe,kBAAkB;AACnC,cAAM,aAAa,UAAU,iBAAiB,YAAY;AAC1D,eAAO,qCAAqC,UAAU;AAAA,MACxD;AAEA,YAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,YAAM,OAAO,UAAU,iBAAiB,MAAM;AAC9C,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,6BAA6B,QAAQ,MAAM,OAAO;AAAA,IAC3D;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,UAAU;AACb,YAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,YAAM,OAAO,UAAU,iBAAiB,MAAM;AAC9C,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,4BAA4B,QAAQ,MAAM,OAAO;AAAA,IAC1D;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,YAAY;AACf,UAAI,eAAe,SAAS;AAC1B,cAAM,MAAM,UAAU,iBAAiB,KAAK;AAC5C,cAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,0BAA0B,KAAK,QAAQ,OAAO;AAAA,MACvD;AACA,UAAI,eAAe,gBAAgB;AACjC,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,iCAAiC,OAAO;AAAA,MACjD;AACA,UAAI,eAAe,cAAc;AAC/B,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,+BAA+B,WAAW,OAAO;AAAA,MAC1D;AACA,UAAI,eAAe,YAAY;AAC7B,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,6BAA6B,WAAW,OAAO;AAAA,MACxD;AACA,UAAI,eAAe,cAAc;AAC/B,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,cAAM,OAAO,UAAU,iBAAiB,MAAM;AAC9C,eAAO,+BAA+B,WAAW,SAAS,IAAI;AAAA,MAChE;AACA,UAAI,eAAe,eAAe;AAChC,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,cAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,gCAAgC,WAAW,SAAS,QAAQ,OAAO;AAAA,MAC5E;AAEA,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,2BAA2B,OAAgB;AAAA,IACpD;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,YAAY;AACf,YAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,YAAM,OAAO,UAAU,iBAAiB,MAAM;AAC9C,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,2BAA2B,QAAQ,MAAM,OAAO;AAAA,IACzD;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,SAAS;AACZ,YAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,YAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,YAAM,YAAY,UAAU,iBAAiB,SAAS;AACtD,aAAO,wBAAwB,QAAQ,QAAQ,SAAS;AAAA,IAC1D;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,SAAS;AACZ,UAAI,eAAe,gBAAgB;AACjC,cAAM,WAAW,UAAU,iBAAiB,UAAU;AACtD,cAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,cAAMC,WAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,8BAA8B,UAAU,QAAQA,QAAO;AAAA,MAChE;AAEA,UAAI,eAAe,kBAAkB;AACnC,cAAM,QAAQ,UAAU,iBAAiB,OAAO;AAChD,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAMA,WAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,gCAAgC,OAAO,WAAWA,QAAO;AAAA,MAClE;AAGA,YAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,wBAAwB,QAAQ,OAAO;AAAA,IAChD;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,cAAc;AACjB,UAAI,eAAe,SAAS;AAC1B,cAAM,QAAQ,UAAU,iBAAiB,OAAO;AAChD,eAAO,4BAA4B,KAAK;AAAA,MAC1C;AAEA,YAAM,SAAS,UAAU,iBAAiB,QAAQ;AAClD,YAAM,OAAO,UAAU,iBAAiB,MAAM;AAC9C,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,6BAA6B,QAAQ,MAAM,OAAO;AAAA,IAC3D;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,aAAa;AAChB,YAAM,QAAQ,UAAU,iBAAiB,OAAO;AAChD,UAAI,eAAe,gBAAgB;AACjC,eAAO,6BAA6B,KAAK;AAAA,MAC3C;AACA,aAAO,4BAA4B,KAAK;AAAA,IAC1C;AAAA;AAAA;AAAA;AAAA,IAKA,KAAK,mBAAmB;AACtB,UAAI,eAAe,aAAa;AAC9B,cAAM,aAAa,UAAU,iBAAiB,YAAY;AAC1D,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,cAAM,aAAa,UAAU,iBAAiB,YAAY;AAC1D,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO;AAAA,UACL,cAAc,CAAC;AAAA,UACf,WAAW,CAAC;AAAA,UACZ,cAAc,CAAC;AAAA,UACf;AAAA,QACF;AAAA,MACF;AACA,UAAI,eAAe,eAAe;AAChC,eAAO,uCAAuC;AAAA,MAChD;AACA,UAAI,eAAe,gBAAgB;AACjC,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,wCAAwC,OAAgB;AAAA,MACjE;AACA,UAAI,eAAe,kBAAkB;AACnC,cAAM,YAAY,UAAU,iBAAiB,WAAW;AACxD,cAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,eAAO,0CAA0C,WAAW,OAAgB;AAAA,MAC9E;AAEA,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,kCAAkC,OAAgB;AAAA,IAC3D;AAAA;AAAA;AAAA;AAAA,IAIA,KAAK,WAAW;AACd,YAAM,QAAQ,UAAU,iBAAiB,OAAO;AAChD,YAAM,UAAU,UAAU,iBAAiB,SAAS;AACpD,aAAO,0BAA0B,OAAO,OAAO;AAAA,IACjD;AAAA,IAEA;AACE,YAAM,IAAI,MAAM,iCAAiC,OAAO,EAAE;AAAA,EAC9D;AACF;",
|
|
6
|
+
"names": ["payload", "options"]
|
|
7
|
+
}
|
package/package.json
CHANGED
package/dist/base.cjs
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
-
var base_exports = {};
|
|
21
|
-
__export(base_exports, {
|
|
22
|
-
BaseResourceClient: () => BaseResourceClient
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(base_exports);
|
|
25
|
-
var import_errors = require("./errors");
|
|
26
|
-
class BaseResourceClient {
|
|
27
|
-
static {
|
|
28
|
-
__name(this, "BaseResourceClient");
|
|
29
|
-
}
|
|
30
|
-
config;
|
|
31
|
-
constructor(config) {
|
|
32
|
-
if (!config.applicationId && !config.toolId) {
|
|
33
|
-
throw new Error("BaseResourceClient requires either applicationId or toolId");
|
|
34
|
-
}
|
|
35
|
-
this.config = {
|
|
36
|
-
baseUrl: config.baseUrl.replace(/\/$/, ""),
|
|
37
|
-
majorJwtToken: config.majorJwtToken,
|
|
38
|
-
applicationId: config.applicationId,
|
|
39
|
-
toolId: config.toolId,
|
|
40
|
-
resourceId: config.resourceId,
|
|
41
|
-
fetch: config.fetch || globalThis.fetch,
|
|
42
|
-
getHeaders: config.getHeaders
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
async invokeRaw(payload, invocationKey) {
|
|
46
|
-
const entityType = this.config.toolId ? "tools" : "apps";
|
|
47
|
-
const entityId = this.config.toolId || this.config.applicationId;
|
|
48
|
-
const url = `${this.config.baseUrl}/internal/${entityType}/v1/${entityId}/resource/${this.config.resourceId}/invoke`;
|
|
49
|
-
const body = {
|
|
50
|
-
payload,
|
|
51
|
-
invocationKey
|
|
52
|
-
};
|
|
53
|
-
let headers = {
|
|
54
|
-
"Content-Type": "application/json"
|
|
55
|
-
};
|
|
56
|
-
if (this.config.majorJwtToken) {
|
|
57
|
-
headers["x-major-jwt"] = this.config.majorJwtToken;
|
|
58
|
-
}
|
|
59
|
-
if (this.config.getHeaders) {
|
|
60
|
-
const extraHeaders = await this.config.getHeaders();
|
|
61
|
-
headers = { ...headers, ...extraHeaders };
|
|
62
|
-
}
|
|
63
|
-
try {
|
|
64
|
-
const response = await this.config.fetch(url, {
|
|
65
|
-
method: "POST",
|
|
66
|
-
headers,
|
|
67
|
-
credentials: "include",
|
|
68
|
-
body: JSON.stringify(body)
|
|
69
|
-
});
|
|
70
|
-
const data = await response.json();
|
|
71
|
-
return data;
|
|
72
|
-
} catch (error) {
|
|
73
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
74
|
-
throw new import_errors.ResourceInvokeError(`Failed to invoke resource: ${message}`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=base.cjs.map
|
package/dist/base.cjs.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/base.ts"],
|
|
4
|
-
"sourcesContent": ["import type {\n ResourceInvokePayload,\n InvokeResponse,\n InvokeRequest,\n} from \"./schemas\";\nimport { ResourceInvokeError } from \"./errors\";\n\nexport interface BaseClientConfig {\n baseUrl: string;\n majorJwtToken?: string;\n applicationId?: string; // For app mode\n toolId?: string; // For tool mode \u2014 mutually exclusive with applicationId\n resourceId: string;\n fetch?: typeof fetch;\n /**\n * Optional function to get additional headers (e.g. for auth)\n * Useful for Next.js Server Components where headers() must be called dynamically\n */\n getHeaders?: () => Promise<Record<string, string>> | Record<string, string>;\n}\n\nexport abstract class BaseResourceClient {\n protected readonly config: {\n baseUrl: string;\n majorJwtToken?: string;\n applicationId?: string;\n toolId?: string;\n resourceId: string;\n fetch: typeof fetch;\n getHeaders?: () => Promise<Record<string, string>> | Record<string, string>;\n };\n\n constructor(config: BaseClientConfig) {\n if (!config.applicationId && !config.toolId) {\n throw new Error(\"BaseResourceClient requires either applicationId or toolId\");\n }\n\n this.config = {\n baseUrl: config.baseUrl.replace(/\\/$/, \"\"),\n majorJwtToken: config.majorJwtToken,\n applicationId: config.applicationId,\n toolId: config.toolId,\n resourceId: config.resourceId,\n fetch: config.fetch || globalThis.fetch,\n getHeaders: config.getHeaders,\n };\n }\n\n protected async invokeRaw(\n payload: ResourceInvokePayload,\n invocationKey: string,\n ): Promise<InvokeResponse> {\n const entityType = this.config.toolId ? \"tools\" : \"apps\";\n const entityId = this.config.toolId || this.config.applicationId;\n const url = `${this.config.baseUrl}/internal/${entityType}/v1/${entityId}/resource/${this.config.resourceId}/invoke`;\n \n const body: InvokeRequest = {\n payload,\n invocationKey,\n };\n\n let headers: Record<string, string> = {\n \"Content-Type\": \"application/json\",\n };\n\n if (this.config.majorJwtToken) {\n headers[\"x-major-jwt\"] = this.config.majorJwtToken;\n }\n\n if (this.config.getHeaders) {\n const extraHeaders = await this.config.getHeaders();\n headers = { ...headers, ...extraHeaders };\n }\n\n try {\n const response = await this.config.fetch(url, {\n method: \"POST\",\n headers,\n credentials: \"include\",\n body: JSON.stringify(body),\n });\n\n const data = await response.json();\n return data as InvokeResponse;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new ResourceInvokeError(`Failed to invoke resource: ${message}`);\n }\n }\n}\n\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAKA;;;;;AAAA,oBAAoC;AAgB9B,MAAgB,mBAAkB;EAhBxC,OAgBwC;;;EACnB;EAUnB,YAAY,QAAwB;AAClC,QAAI,CAAC,OAAO,iBAAiB,CAAC,OAAO,QAAQ;AAC3C,YAAM,IAAI,MAAM,4DAA4D;IAC9E;AAEA,SAAK,SAAS;MACZ,SAAS,OAAO,QAAQ,QAAQ,OAAO,EAAE;MACzC,eAAe,OAAO;MACtB,eAAe,OAAO;MACtB,QAAQ,OAAO;MACf,YAAY,OAAO;MACnB,OAAO,OAAO,SAAS,WAAW;MAClC,YAAY,OAAO;;EAEvB;EAEU,MAAM,UACd,SACA,eAAqB;AAErB,UAAM,aAAa,KAAK,OAAO,SAAS,UAAU;AAClD,UAAM,WAAW,KAAK,OAAO,UAAU,KAAK,OAAO;AACnD,UAAM,MAAM,GAAG,KAAK,OAAO,OAAO,aAAa,UAAU,OAAO,QAAQ,aAAa,KAAK,OAAO,UAAU;AAE3G,UAAM,OAAsB;MAC1B;MACA;;AAGF,QAAI,UAAkC;MACpC,gBAAgB;;AAGlB,QAAI,KAAK,OAAO,eAAe;AAC7B,cAAQ,aAAa,IAAI,KAAK,OAAO;IACvC;AAEA,QAAI,KAAK,OAAO,YAAY;AAC1B,YAAM,eAAe,MAAM,KAAK,OAAO,WAAU;AACjD,gBAAU,EAAE,GAAG,SAAS,GAAG,aAAY;IACzC;AAEA,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,OAAO,MAAM,KAAK;QAC5C,QAAQ;QACR;QACA,aAAa;QACb,MAAM,KAAK,UAAU,IAAI;OAC1B;AAED,YAAM,OAAO,MAAM,SAAS,KAAI;AAChC,aAAO;IACT,SAAS,OAAO;AACd,YAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,YAAM,IAAI,kCAAoB,8BAA8B,OAAO,EAAE;IACvE;EACF;;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/base.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { ResourceInvokeError } from "./errors";
|
|
2
|
-
export class BaseResourceClient {
|
|
3
|
-
config;
|
|
4
|
-
constructor(config) {
|
|
5
|
-
if (!config.applicationId && !config.toolId) {
|
|
6
|
-
throw new Error("BaseResourceClient requires either applicationId or toolId");
|
|
7
|
-
}
|
|
8
|
-
this.config = {
|
|
9
|
-
baseUrl: config.baseUrl.replace(/\/$/, ""),
|
|
10
|
-
majorJwtToken: config.majorJwtToken,
|
|
11
|
-
applicationId: config.applicationId,
|
|
12
|
-
toolId: config.toolId,
|
|
13
|
-
resourceId: config.resourceId,
|
|
14
|
-
fetch: config.fetch || globalThis.fetch,
|
|
15
|
-
getHeaders: config.getHeaders,
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
async invokeRaw(payload, invocationKey) {
|
|
19
|
-
const entityType = this.config.toolId ? "tools" : "apps";
|
|
20
|
-
const entityId = this.config.toolId || this.config.applicationId;
|
|
21
|
-
const url = `${this.config.baseUrl}/internal/${entityType}/v1/${entityId}/resource/${this.config.resourceId}/invoke`;
|
|
22
|
-
const body = {
|
|
23
|
-
payload,
|
|
24
|
-
invocationKey,
|
|
25
|
-
};
|
|
26
|
-
let headers = {
|
|
27
|
-
"Content-Type": "application/json",
|
|
28
|
-
};
|
|
29
|
-
if (this.config.majorJwtToken) {
|
|
30
|
-
headers["x-major-jwt"] = this.config.majorJwtToken;
|
|
31
|
-
}
|
|
32
|
-
if (this.config.getHeaders) {
|
|
33
|
-
const extraHeaders = await this.config.getHeaders();
|
|
34
|
-
headers = { ...headers, ...extraHeaders };
|
|
35
|
-
}
|
|
36
|
-
try {
|
|
37
|
-
const response = await this.config.fetch(url, {
|
|
38
|
-
method: "POST",
|
|
39
|
-
headers,
|
|
40
|
-
credentials: "include",
|
|
41
|
-
body: JSON.stringify(body),
|
|
42
|
-
});
|
|
43
|
-
const data = await response.json();
|
|
44
|
-
return data;
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
48
|
-
throw new ResourceInvokeError(`Failed to invoke resource: ${message}`);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=base.js.map
|
package/dist/base.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../src/base.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAgB/C,MAAM,OAAgB,kBAAkB;IACnB,MAAM,CAQvB;IAEF,YAAY,MAAwB;QAClC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,CAAC,MAAM,GAAG;YACZ,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1C,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK;YACvC,UAAU,EAAE,MAAM,CAAC,UAAU;SAC9B,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,SAAS,CACvB,OAA8B,EAC9B,aAAqB;QAErB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QACjE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,aAAa,UAAU,OAAO,QAAQ,aAAa,IAAI,CAAC,MAAM,CAAC,UAAU,SAAS,CAAC;QAErH,MAAM,IAAI,GAAkB;YAC1B,OAAO;YACP,aAAa;SACd,CAAC;QAEF,IAAI,OAAO,GAA2B;YACpC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC9B,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QACrD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC3B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACpD,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC5C,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAsB,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,mBAAmB,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
-
var api_custom_exports = {};
|
|
21
|
-
__export(api_custom_exports, {
|
|
22
|
-
CustomApiResourceClient: () => CustomApiResourceClient
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(api_custom_exports);
|
|
25
|
-
var import_base = require("../base");
|
|
26
|
-
var import_custom = require("../payload-builders/custom");
|
|
27
|
-
class CustomApiResourceClient extends import_base.BaseResourceClient {
|
|
28
|
-
static {
|
|
29
|
-
__name(this, "CustomApiResourceClient");
|
|
30
|
-
}
|
|
31
|
-
async invoke(method, path, invocationKey, options = {}) {
|
|
32
|
-
const payload = (0, import_custom.buildCustomApiInvokePayload)(method, path, options);
|
|
33
|
-
return this.invokeRaw(payload, invocationKey);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
//# sourceMappingURL=api-custom.cjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/clients/api-custom.ts"],
|
|
4
|
-
"sourcesContent": ["import type {\n HttpMethod,\n QueryParams,\n BodyPayload,\n ApiInvokeResponse,\n} from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\nimport { buildCustomApiInvokePayload } from \"../payload-builders/custom\";\n\nexport class CustomApiResourceClient extends BaseResourceClient {\n async invoke(\n method: HttpMethod,\n path: string,\n invocationKey: string,\n options: {\n query?: QueryParams;\n headers?: Record<string, string>;\n body?: BodyPayload;\n timeoutMs?: number;\n } = {}\n ): Promise<ApiInvokeResponse> {\n const payload = buildCustomApiInvokePayload(method, path, options);\n return this.invokeRaw(payload, invocationKey) as Promise<ApiInvokeResponse>;\n }\n}\n\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;AAMA;;;;;AAAA,kBAAmC;AACnC,oBAA4C;AAEtC,MAAO,gCAAgC,+BAAkB;EAH/D,OAG+D;;;EAC7D,MAAM,OACJ,QACA,MACA,eACA,UAKI,CAAA,GAAE;AAEN,UAAM,cAAU,2CAA4B,QAAQ,MAAM,OAAO;AACjE,WAAO,KAAK,UAAU,SAAS,aAAa;EAC9C;;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { BaseResourceClient } from "../base";
|
|
2
|
-
import { buildCustomApiInvokePayload } from "../payload-builders/custom";
|
|
3
|
-
export class CustomApiResourceClient extends BaseResourceClient {
|
|
4
|
-
async invoke(method, path, invocationKey, options = {}) {
|
|
5
|
-
const payload = buildCustomApiInvokePayload(method, path, options);
|
|
6
|
-
return this.invokeRaw(payload, invocationKey);
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=api-custom.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-custom.js","sourceRoot":"","sources":["../../src/clients/api-custom.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAEzE,MAAM,OAAO,uBAAwB,SAAQ,kBAAkB;IAC7D,KAAK,CAAC,MAAM,CACV,MAAkB,EAClB,IAAY,EACZ,aAAqB,EACrB,UAKI,EAAE;QAEN,MAAM,OAAO,GAAG,2BAA2B,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAA+B,CAAC;IAC9E,CAAC;CACF"}
|