@tableau/mcp-server 1.8.6 → 1.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/build/index.js +28 -28
- package/build/index.js.map +4 -4
- package/package.json +5 -2
package/build/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var
|
|
2
|
+
var Ys=Object.defineProperty;var Xs=(t,e)=>{for(var r in e)Ys(t,r,{get:e[r],enumerable:!0})};import{StdioServerTransport as Lu}from"@modelcontextprotocol/sdk/server/stdio.js";import Du from"dotenv";var cr=["list-datasources","list-workbooks","list-views","query-datasource","get-datasource-metadata","get-workbook","get-view-data","get-view-image","list-all-pulse-metric-definitions","list-pulse-metric-definitions-from-definition-ids","list-pulse-metrics-from-metric-definition-id","list-pulse-metrics-from-metric-ids","list-pulse-metric-subscriptions","generate-pulse-metric-value-insight-bundle","search-content"],en=["datasource","workbook","view","pulse","content-exploration"],ur={datasource:["list-datasources","get-datasource-metadata","query-datasource"],workbook:["list-workbooks","get-workbook"],view:["list-views","get-view-data","get-view-image"],pulse:["list-all-pulse-metric-definitions","list-pulse-metric-definitions-from-definition-ids","list-pulse-metrics-from-metric-definition-id","list-pulse-metrics-from-metric-ids","list-pulse-metric-subscriptions","generate-pulse-metric-value-insight-bundle"],"content-exploration":["search-content"]};function dr(t){return!!cr.find(e=>e===t)}function pr(t){return!!en.find(e=>e===t)}var tn=["stdio","http"];function go(t){return!!tn.find(e=>e===t)}function fe(t,e){if(!t)throw new Error(e||"Invariant Violation")}var rn=["pat","direct-trust"],mr=class{auth;server;transport;sslKey;sslCert;httpPort;corsOriginConfig;siteName;patName;patValue;jwtSubClaim;connectedAppClientId;connectedAppSecretId;connectedAppSecretValue;jwtAdditionalPayload;datasourceCredentials;defaultLogLevel;disableLogMasking;includeTools;excludeTools;maxResultLimit;disableQueryDatasourceFilterValidation;disableMetadataApiRequests;constructor(){let e=nn(process.env),{AUTH:r,SERVER:o,SITE_NAME:i,TRANSPORT:n,SSL_KEY:s,SSL_CERT:l,HTTP_PORT_ENV_VAR_NAME:u,CORS_ORIGIN_CONFIG:p,PAT_NAME:c,PAT_VALUE:h,JWT_SUB_CLAIM:b,CONNECTED_APP_CLIENT_ID:E,CONNECTED_APP_SECRET_ID:m,CONNECTED_APP_SECRET_VALUE:y,JWT_ADDITIONAL_PAYLOAD:T,DATASOURCE_CREDENTIALS:_,DEFAULT_LOG_LEVEL:F,DISABLE_LOG_MASKING:S,INCLUDE_TOOLS:x,EXCLUDE_TOOLS:L,MAX_RESULT_LIMIT:U,DISABLE_QUERY_DATASOURCE_FILTER_VALIDATION:j,DISABLE_METADATA_API_REQUESTS:le}=e,te=3927,pe=e[u?.trim()||"PORT"]||te.toString(),me=parseInt(pe,10);this.siteName=i??"",this.auth=rn.find(H=>H===r)??"pat",this.transport=go(n)?n:"stdio",this.sslKey=s?.trim()??"",this.sslCert=l?.trim()??"",this.httpPort=isNaN(me)?te:me,this.corsOriginConfig=sn(p?.trim()??""),this.datasourceCredentials=_??"",this.defaultLogLevel=F??"debug",this.disableLogMasking=S==="true",this.disableQueryDatasourceFilterValidation=j==="true",this.disableMetadataApiRequests=le==="true";let Q=U?parseInt(U):NaN;if(this.maxResultLimit=isNaN(Q)||Q<=0?null:Q,this.includeTools=x?x.split(",").flatMap(H=>{let N=H.trim();return dr(N)?N:pr(N)?ur[N]:[]}):[],this.excludeTools=L?L.split(",").flatMap(H=>{let N=H.trim();return dr(N)?N:pr(N)?ur[N]:[]}):[],this.includeTools.length>0&&this.excludeTools.length>0)throw new Error("Cannot include and exclude tools simultaneously");fe(o,"The environment variable SERVER is not set"),on(o),this.auth==="pat"?(fe(c,"The environment variable PAT_NAME is not set"),fe(h,"The environment variable PAT_VALUE is not set")):this.auth==="direct-trust"&&(fe(b,"The environment variable JWT_SUB_CLAIM is not set"),fe(E,"The environment variable CONNECTED_APP_CLIENT_ID is not set"),fe(m,"The environment variable CONNECTED_APP_SECRET_ID is not set"),fe(y,"The environment variable CONNECTED_APP_SECRET_VALUE is not set")),this.server=o,this.patName=c??"",this.patValue=h??"",this.jwtSubClaim=b??"",this.connectedAppClientId=E??"",this.connectedAppSecretId=m??"",this.connectedAppSecretValue=y??"",this.jwtAdditionalPayload=T||"{}"}};function on(t){if(!t.startsWith("https://"))throw new Error(`The environment variable SERVER must start with "https://": ${t}`);try{let e=new URL(t)}catch(e){let r=e instanceof Error?e.message:String(e);throw new Error(`The environment variable SERVER is not a valid URL: ${t} -- ${r}`)}}function sn(t){if(!t)return!0;if(t.match(/^true|false$/i))return t.toLowerCase()==="true";if(t==="*")return"*";if(t.startsWith("[")&&t.endsWith("]"))try{return JSON.parse(t).map(r=>new URL(r).origin)}catch{throw new Error(`The environment variable CORS_ORIGIN_CONFIG is not a valid array of URLs: ${t}`)}try{return new URL(t).origin}catch{throw new Error(`The environment variable CORS_ORIGIN_CONFIG is not a valid URL: ${t}`)}}function nn(t){return Object.entries(t).reduce((e,[r,o])=>(o?.startsWith("${user_config.")?e[r]="":e[r]=o,e),{})}var R=()=>new mr;var fr=["debug","info","notice","warning","error","critical","alert","emergency"],it="debug";function yo(t){return!!fr.find(e=>e===t)}var Ne=(t,e,{silent:r=!1}={})=>{it!==e&&(it=e,r||ie.notice(t,`Logging level set to: ${e}`))},ie={debug:be("debug"),info:be("info"),notice:be("notice"),warning:be("warning"),error:be("error"),critical:be("critical"),alert:be("alert"),emergency:be("emergency")},Ee=(t=it)=>fr.indexOf(t)>=fr.indexOf(it),st=t=>{process.env.TABLEAU_MCP_TEST!=="true"&&(t=t.endsWith(`
|
|
3
3
|
`)?t:`${t}
|
|
4
|
-
`,process.stderr.write(t))},fo=({requestId:t,toolName:e,args:r})=>({type:"tool",requestId:t,tool:{name:e,...r!==void 0?{args:r}:{}}});function ye(t){return async(e,r,{logger:o,requestId:i}={logger:e.name})=>{if(Te(t))return e.server.notification({method:"notifications/message",params:{level:t,logger:o,message:JSON.stringify({timestamp:new Date().toISOString(),currentLogLevel:rt,message:r},null,2)}},{relatedRequestId:i})}}import{McpServer as Yc}from"@modelcontextprotocol/sdk/server/mcp.js";import{SetLevelRequestSchema as Xc}from"@modelcontextprotocol/sdk/types.js";var ho={name:"@tableau/mcp-server",description:"An MCP server for Tableau, providing a suite of tools that will make it easier for developers to build AI-applications that integrate with Tableau.",version:"1.8.6",repository:{type:"git",url:"git+https://github.com/tableau/tableau-mcp.git"},homepage:"https://github.com/tableau/tableau-mcp",bugs:"https://github.com/tableau/tableau-mcp/issues",author:"Tableau",type:"module",license:"Apache-2.0",keywords:["tableau","mcp"],bin:{"tableau-mcp-server":"./build/index.js"},scripts:{":build":"npx rimraf ./build && esbuild src/index.ts --bundle --packages=external --platform=node --format=esm --minify --outdir=build --sourcemap",build:"run-s :build exec-perms","build:watch":"npm run :build -- --watch","build:docker":"docker build -t tableau-mcp .",":build:mcpb":"npx -y @anthropic-ai/mcpb pack . tableau-mcp.mcpb","build:mcpb":"run-s build:manifest:script build:manifest :build:mcpb","build:manifest":"node build/scripts/createClaudeMcpBundleManifest.mjs","build:manifest:script":"esbuild src/scripts/createClaudeMcpBundleManifest.ts --bundle --platform=node --format=esm --outdir=build/scripts --sourcemap=inline --out-extension:.js=.mjs","start:http":"node build/index.js","start:http:docker":"docker run -p 3927:3927 -i --rm --env-file env.list tableau-mcp",lint:"npm exec eslint",inspect:"npx @modelcontextprotocol/inspector --config config.json --server tableau",":inspect:http":"npx @modelcontextprotocol/inspector --config config.http.json --server tableau","inspect:http":"run-p start:http :inspect:http","inspect:docker":"npx @modelcontextprotocol/inspector --config config.docker.json --server tableau","inspect:docker:http":"run-p start:http:docker :inspect:http","build:inspect":"run-s build inspect","build:inspect:docker":"run-s build:docker inspect:docker","build:inspect:docker:http":"run-s build:docker inspect:docker:http","exec-perms":"shx chmod +x build/*.js",test:"vitest --config ./vitest.config.ts","test:e2e":"vitest --config ./vitest.config.e2e.ts",coverage:"vitest run --config ./vitest.config.ts --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version"},dependencies:{"@modelcontextprotocol/sdk":"^1.12.1","@zodios/core":"^10.9.6",cors:"^2.8.5",dotenv:"^16.5.0",express:"^5.1.0","fast-levenshtein":"^3.0.0",jose:"^6.0.12","ts-results-es":"^5.0.1",zod:"^3.24.3","zod-validation-error":"^4.0.1"},devDependencies:{"@anthropic-ai/mcpb":"^1.0.0","@eslint/eslintrc":"^3.3.1","@eslint/js":"^9.25.1","@modelcontextprotocol/inspector":"^0.16.6","@types/cors":"^2.8.19","@types/eslint__js":"^8.42.3","@types/express":"^5.0.3","@types/fast-levenshtein":"^0.0.1","@types/node":"^22.15.3","@typescript-eslint/eslint-plugin":"^8.31.1","@typescript-eslint/parser":"^8.31.1","@vitest/coverage-v8":"^3.1.3",esbuild:"^0.25.5",eslint:"^9.25.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.2.6","eslint-plugin-simple-import-sort":"^12.1.1","npm-run-all":"^4.1.5",prettier:"^3.5.3",rimraf:"^6.0.1",shx:"^0.4.0",typescript:"^5.8.3","typescript-eslint":"^8.31.1",vitest:"^3.1.3"},engines:{node:">=20"}};import{Err as cc,Ok as Yr}from"ts-results-es";import{z as uc}from"zod";import{Err as go,Ok as Gs}from"ts-results-es";function fe(t){if(t instanceof Error)return t.message;try{return JSON.stringify(t)??"undefined"}catch{return`${t}`}}var yo=t=>{let e=Eo(t);if(e.isErr())return t;let r=e.value;return Te("debug")?(r.data?.credentials&&(r.data.credentials="<redacted>"),Array.isArray(r?.data?.datasource?.connections)&&r.data.datasource.connections.forEach(i=>{i.connectionUsername="<redacted>",i.connectionPassword="<redacted>"}),r.headers?.["X-Tableau-Auth"]&&(r.headers["X-Tableau-Auth"]="<redacted>"),r.params?.user_id&&(r.params.user_id="<redacted>")):(delete r.data,delete r.headers,delete r.params),r},bo=t=>{let e=Eo(t);if(e.isErr())return t;let r=e.value;return Te("debug")?r.data?.credentials&&(r.data.credentials="<redacted>"):(delete r.data,delete r.headers),r};function Eo(t){try{return Gs(structuredClone(t))}catch(e){if(e instanceof Error)return go(e);let r=fe(e);return ot(`Could not clone object, notification may not be sanitized! Error: ${r}`),go(new Error(r))}}function Lt(t){return{method:t.method??"UNKNOWN METHOD",url:t.url??"UNKNOWN URL",headers:t.headers,data:t.data,params:t.params}}function Dt(t){return{url:t.config.url??"UNKNOWN URL",status:t.status,headers:t.headers,data:t.data}}import{Zodios as So}from"@zodios/core";import{randomUUID as Qs}from"node:crypto";import{SignJWT as $s}from"jose";async function To({username:t,connectedApp:e,scopes:r,additionalPayload:o}){let i={alg:"HS256",typ:"JWT",kid:e.secretId},n={jti:Qs(),iss:e.clientId,aud:"tableau",sub:t,scp:[...r],iat:Math.floor(Date.now()/1e3)-5,exp:Math.floor(Date.now()/1e3)+5*60,...o};return await new $s(n).setProtectedHeader(i).sign(new TextEncoder().encode(e.secretValue))}import{makeApi as Zs,makeEndpoint as Ao}from"@zodios/core";import{z as le}from"zod";import{z as we}from"zod";var wo=we.object({credentials:we.object({site:we.object({id:we.string()}),user:we.object({id:we.string()}),token:we.string()})});var Js=le.object({credentials:le.object({site:le.object({contentUrl:le.string()})}).and(le.object({personalAccessTokenName:le.string(),personalAccessTokenSecret:le.string()}).or(le.object({jwt:le.string()})))}),Ks=Ao({method:"post",path:"/auth/signin",alias:"signIn",description:"Signs in with Tableau credentials.",response:wo,parameters:[{name:"credentials",type:"Body",schema:Js}]}),Ys=Ao({method:"post",path:"/auth/signout",alias:"signOut",description:"Signs you out of the current session. This call invalidates the authentication token that is created by a call to Sign In.",response:le.void()}),Xs=Zs([Ks,Ys]),pr=[...Xs];var Ae=class{_apiClient;constructor(e){this._apiClient=e}get interceptors(){return this._apiClient.axios.interceptors}};var V=class extends Ae{_creds;get authHeader(){if(!this._creds)throw new Error("Authenticate by calling signIn() first");return{headers:{"X-Tableau-Auth":this._creds.token}}}get userId(){if(!this._creds)throw new Error("Authenticate by calling signIn() first");return this._creds.user.id}constructor(e,r){super(e),this._creds=r}};var it=class extends Ae{constructor(e){super(new So(e,pr))}signIn=async e=>(await this._apiClient.signIn({credentials:{site:{contentUrl:e.siteName},...await(async()=>{switch(e.type){case"pat":return{personalAccessTokenName:e.patName,personalAccessTokenSecret:e.patValue};case"direct-trust":return{jwt:await To({username:e.username,connectedApp:{clientId:e.clientId,secretId:e.secretId,secretValue:e.secretValue},scopes:e.scopes,additionalPayload:e.additionalPayload})}}})()}})).credentials},It=class extends V{constructor(e,r){super(new So(e,pr),r)}signOut=async()=>{await this._apiClient.signOut(void 0,{...this.authHeader})}};import{Zodios as sn}from"@zodios/core";import{makeApi as en,makeEndpoint as tn}from"@zodios/core";import{z as ke}from"zod";import{z as Pt}from"zod";import{z as mr}from"zod";var Ot=mr.object({name:mr.string(),id:mr.string()});var _o=Pt.object({id:Pt.string(),name:Pt.string(),description:Pt.string().optional(),project:Ot});import{z as Ft}from"zod";var Ne=Ft.object({pageNumber:Ft.coerce.number(),pageSize:Ft.coerce.number(),totalAvailable:Ft.coerce.number()});import{z as Ro}from"zod";var Me=[{name:"pageSize",type:"Query",schema:Ro.number().optional(),description:"The number of items to return in one response. The minimum is 1. The maximum is 1000. The default is 100."},{name:"pageNumber",type:"Query",schema:Ro.number().optional(),description:"The offset for paging. The default is 1."}];var rn=tn({method:"get",path:"/sites/:siteId/datasources",alias:"listDatasources",description:"Returns a list of published data sources on the specified site. Supports a filter string as a query parameter in the format field:operator:value.",parameters:[...Me,{name:"siteId",type:"Path",schema:ke.string()},{name:"filter",type:"Query",schema:ke.string().optional(),description:"Filter string in the format field:operator:value (e.g., name:eq:Project Views)"}],response:ke.object({pagination:Ne,datasources:ke.object({datasource:ke.optional(ke.array(_o))})})}),on=en([rn]),Co=[...on];var st=class extends V{constructor(e,r){super(new sn(e,Co),r)}listDatasources=async({siteId:e,filter:r,pageSize:o,pageNumber:i})=>{let n=await this._apiClient.listDatasources({params:{siteId:e},queries:{filter:r,pageSize:o,pageNumber:i},...this.authHeader});return{pagination:n.pagination,datasources:n.datasources.datasource??[]}}};import{Zodios as dn}from"@zodios/core";import{makeApi as nn,makeEndpoint as an}from"@zodios/core";import{z as T}from"zod";var ln=T.object({data:T.object({publishedDatasources:T.array(T.object({name:T.string().or(T.null()),description:T.string().or(T.null()),owner:T.object({name:T.string().or(T.null())}),fields:T.array(T.object({name:T.string(),isHidden:T.boolean().or(T.null()),description:T.string().or(T.null()),descriptionInherited:T.array(T.object({attribute:T.string(),value:T.string().or(T.null())}).or(T.null())).or(T.null()),fullyQualifiedName:T.string(),__typename:T.string(),dataCategory:T.string().or(T.null()).optional(),role:T.string().or(T.null()).optional(),dataType:T.string().or(T.null()).optional(),defaultFormat:T.string().or(T.null()).optional(),semanticRole:T.string().or(T.null()).optional(),aggregation:T.string().or(T.null()).optional(),aggregationParam:T.string().or(T.null()).optional(),formula:T.string().or(T.null()).optional(),isAutoGenerated:T.boolean().or(T.null()).optional(),hasUserReference:T.boolean().or(T.null()).optional(),binSize:T.number().or(T.null()).optional(),hasOther:T.boolean().or(T.null()).optional(),delimiter:T.string().or(T.null()).optional(),combinationType:T.string().or(T.null()).optional()}))}))})}),cn=an({method:"post",path:"/graphql",alias:"graphql",response:ln,parameters:[{name:"query",type:"Body",schema:T.object({query:T.string()})}]}),un=nn([cn]),xo=[...un];var nt=class extends V{constructor(e,r){super(new dn(e,xo),r)}graphql=async e=>await this._apiClient.graphql({query:e},{...this.authHeader})};import{Zodios as yl}from"@zodios/core";import{Err as Ni,Ok as bl}from"ts-results-es";function at(t,e){return function(){return t.apply(e,arguments)}}var{toString:pn}=Object.prototype,{getPrototypeOf:hr}=Object,{iterator:Mt,toStringTag:Lo}=Symbol,kt=(t=>e=>{let r=pn.call(e);return t[r]||(t[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),se=t=>(t=t.toLowerCase(),e=>kt(e)===t),qt=t=>e=>typeof e===t,{isArray:Ue}=Array,qe=qt("undefined");function lt(t){return t!==null&&!qe(t)&&t.constructor!==null&&!qe(t.constructor)&&J(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}var Do=se("ArrayBuffer");function mn(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&Do(t.buffer),e}var fn=qt("string"),J=qt("function"),Io=qt("number"),ct=t=>t!==null&&typeof t=="object",hn=t=>t===!0||t===!1,Nt=t=>{if(kt(t)!=="object")return!1;let e=hr(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Lo in t)&&!(Mt in t)},gn=t=>{if(!ct(t)||lt(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},yn=se("Date"),bn=se("File"),En=se("Blob"),Tn=se("FileList"),wn=t=>ct(t)&&J(t.pipe),An=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||J(t.append)&&((e=kt(t))==="formdata"||e==="object"&&J(t.toString)&&t.toString()==="[object FormData]"))},Sn=se("URLSearchParams"),[_n,Rn,Cn,xn]=["ReadableStream","Request","Response","Headers"].map(se),vn=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function ut(t,e,{allOwnKeys:r=!1}={}){if(t===null||typeof t>"u")return;let o,i;if(typeof t!="object"&&(t=[t]),Ue(t))for(o=0,i=t.length;o<i;o++)e.call(null,t[o],o,t);else{if(lt(t))return;let n=r?Object.getOwnPropertyNames(t):Object.keys(t),s=n.length,l;for(o=0;o<s;o++)l=n[o],e.call(null,t[l],l,t)}}function Oo(t,e){if(lt(t))return null;e=e.toLowerCase();let r=Object.keys(t),o=r.length,i;for(;o-- >0;)if(i=r[o],e===i.toLowerCase())return i;return null}var Se=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Po=t=>!qe(t)&&t!==Se;function fr(){let{caseless:t,skipUndefined:e}=Po(this)&&this||{},r={},o=(i,n)=>{let s=t&&Oo(r,n)||n;Nt(r[s])&&Nt(i)?r[s]=fr(r[s],i):Nt(i)?r[s]=fr({},i):Ue(i)?r[s]=i.slice():(!e||!qe(i))&&(r[s]=i)};for(let i=0,n=arguments.length;i<n;i++)arguments[i]&&ut(arguments[i],o);return r}var Ln=(t,e,r,{allOwnKeys:o}={})=>(ut(e,(i,n)=>{r&&J(i)?t[n]=at(i,r):t[n]=i},{allOwnKeys:o}),t),Dn=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),In=(t,e,r,o)=>{t.prototype=Object.create(e.prototype,o),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),r&&Object.assign(t.prototype,r)},On=(t,e,r,o)=>{let i,n,s,l={};if(e=e||{},t==null)return e;do{for(i=Object.getOwnPropertyNames(t),n=i.length;n-- >0;)s=i[n],(!o||o(s,t,e))&&!l[s]&&(e[s]=t[s],l[s]=!0);t=r!==!1&&hr(t)}while(t&&(!r||r(t,e))&&t!==Object.prototype);return e},Pn=(t,e,r)=>{t=String(t),(r===void 0||r>t.length)&&(r=t.length),r-=e.length;let o=t.indexOf(e,r);return o!==-1&&o===r},Fn=t=>{if(!t)return null;if(Ue(t))return t;let e=t.length;if(!Io(e))return null;let r=new Array(e);for(;e-- >0;)r[e]=t[e];return r},Nn=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&hr(Uint8Array)),Mn=(t,e)=>{let o=(t&&t[Mt]).call(t),i;for(;(i=o.next())&&!i.done;){let n=i.value;e.call(t,n[0],n[1])}},kn=(t,e)=>{let r,o=[];for(;(r=t.exec(e))!==null;)o.push(r);return o},qn=se("HTMLFormElement"),Un=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,o,i){return o.toUpperCase()+i}),vo=(({hasOwnProperty:t})=>(e,r)=>t.call(e,r))(Object.prototype),jn=se("RegExp"),Fo=(t,e)=>{let r=Object.getOwnPropertyDescriptors(t),o={};ut(r,(i,n)=>{let s;(s=e(i,n,t))!==!1&&(o[n]=s||i)}),Object.defineProperties(t,o)},Bn=t=>{Fo(t,(e,r)=>{if(J(t)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;let o=t[r];if(J(o)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},Vn=(t,e)=>{let r={},o=i=>{i.forEach(n=>{r[n]=!0})};return Ue(t)?o(t):o(String(t).split(e)),r},zn=()=>{},Hn=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function Wn(t){return!!(t&&J(t.append)&&t[Lo]==="FormData"&&t[Mt])}var Gn=t=>{let e=new Array(10),r=(o,i)=>{if(ct(o)){if(e.indexOf(o)>=0)return;if(lt(o))return o;if(!("toJSON"in o)){e[i]=o;let n=Ue(o)?[]:{};return ut(o,(s,l)=>{let u=r(s,i+1);!qe(u)&&(n[l]=u)}),e[i]=void 0,n}}return o};return r(t,0)},Qn=se("AsyncFunction"),$n=t=>t&&(ct(t)||J(t))&&J(t.then)&&J(t.catch),No=((t,e)=>t?setImmediate:e?((r,o)=>(Se.addEventListener("message",({source:i,data:n})=>{i===Se&&n===r&&o.length&&o.shift()()},!1),i=>{o.push(i),Se.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",J(Se.postMessage)),Zn=typeof queueMicrotask<"u"?queueMicrotask.bind(Se):typeof process<"u"&&process.nextTick||No,Jn=t=>t!=null&&J(t[Mt]),a={isArray:Ue,isArrayBuffer:Do,isBuffer:lt,isFormData:An,isArrayBufferView:mn,isString:fn,isNumber:Io,isBoolean:hn,isObject:ct,isPlainObject:Nt,isEmptyObject:gn,isReadableStream:_n,isRequest:Rn,isResponse:Cn,isHeaders:xn,isUndefined:qe,isDate:yn,isFile:bn,isBlob:En,isRegExp:jn,isFunction:J,isStream:wn,isURLSearchParams:Sn,isTypedArray:Nn,isFileList:Tn,forEach:ut,merge:fr,extend:Ln,trim:vn,stripBOM:Dn,inherits:In,toFlatObject:On,kindOf:kt,kindOfTest:se,endsWith:Pn,toArray:Fn,forEachEntry:Mn,matchAll:kn,isHTMLForm:qn,hasOwnProperty:vo,hasOwnProp:vo,reduceDescriptors:Fo,freezeMethods:Bn,toObjectSet:Vn,toCamelCase:Un,noop:zn,toFiniteNumber:Hn,findKey:Oo,global:Se,isContextDefined:Po,isSpecCompliantForm:Wn,toJSONObject:Gn,isAsyncFn:Qn,isThenable:$n,setImmediate:No,asap:Zn,isIterable:Jn};function je(t,e,r,o,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),r&&(this.config=r),o&&(this.request=o),i&&(this.response=i,this.status=i.status?i.status:null)}a.inherits(je,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});var Mo=je.prototype,ko={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{ko[t]={value:t}});Object.defineProperties(je,ko);Object.defineProperty(Mo,"isAxiosError",{value:!0});je.from=(t,e,r,o,i,n)=>{let s=Object.create(Mo);a.toFlatObject(t,s,function(c){return c!==Error.prototype},p=>p!=="isAxiosError");let l=t&&t.message?t.message:"Error",u=e==null&&t?t.code:e;return je.call(s,l,u,r,o,i),t&&s.cause==null&&Object.defineProperty(s,"cause",{value:t,configurable:!0}),s.name=t&&t.name||"Error",n&&Object.assign(s,n),s};var g=je;import Kn from"form-data";var Ut=Kn;function gr(t){return a.isPlainObject(t)||a.isArray(t)}function Uo(t){return a.endsWith(t,"[]")?t.slice(0,-2):t}function qo(t,e,r){return t?t.concat(e).map(function(i,n){return i=Uo(i),!r&&n?"["+i+"]":i}).join(r?".":""):e}function Yn(t){return a.isArray(t)&&!t.some(gr)}var Xn=a.toFlatObject(a,{},null,function(e){return/^is[A-Z]/.test(e)});function ea(t,e,r){if(!a.isObject(t))throw new TypeError("target must be an object");e=e||new(Ut||FormData),r=a.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,E){return!a.isUndefined(E[y])});let o=r.metaTokens,i=r.visitor||c,n=r.dots,s=r.indexes,u=(r.Blob||typeof Blob<"u"&&Blob)&&a.isSpecCompliantForm(e);if(!a.isFunction(i))throw new TypeError("visitor must be a function");function p(m){if(m===null)return"";if(a.isDate(m))return m.toISOString();if(a.isBoolean(m))return m.toString();if(!u&&a.isBlob(m))throw new g("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(m)||a.isTypedArray(m)?u&&typeof Blob=="function"?new Blob([m]):Buffer.from(m):m}function c(m,y,E){let R=m;if(m&&!E&&typeof m=="object"){if(a.endsWith(y,"{}"))y=o?y:y.slice(0,-2),m=JSON.stringify(m);else if(a.isArray(m)&&Yn(m)||(a.isFileList(m)||a.endsWith(y,"[]"))&&(R=a.toArray(m)))return y=Uo(y),R.forEach(function(S,C){!(a.isUndefined(S)||S===null)&&e.append(s===!0?qo([y],C,n):s===null?y:y+"[]",p(S))}),!1}return gr(m)?!0:(e.append(qo(E,y,n),p(m)),!1)}let h=[],b=Object.assign(Xn,{defaultVisitor:c,convertValue:p,isVisitable:gr});function w(m,y){if(!a.isUndefined(m)){if(h.indexOf(m)!==-1)throw Error("Circular reference detected in "+y.join("."));h.push(m),a.forEach(m,function(R,P){(!(a.isUndefined(R)||R===null)&&i.call(e,R,a.isString(P)?P.trim():P,y,b))===!0&&w(R,y?y.concat(P):[P])}),h.pop()}}if(!a.isObject(t))throw new TypeError("data must be an object");return w(t),e}var be=ea;function jo(t){let e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(o){return e[o]})}function Bo(t,e){this._pairs=[],t&&be(t,this,e)}var Vo=Bo.prototype;Vo.append=function(e,r){this._pairs.push([e,r])};Vo.toString=function(e){let r=e?function(o){return e.call(this,o,jo)}:jo;return this._pairs.map(function(i){return r(i[0])+"="+r(i[1])},"").join("&")};var zo=Bo;function ta(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function _e(t,e,r){if(!e)return t;let o=r&&r.encode||ta;a.isFunction(r)&&(r={serialize:r});let i=r&&r.serialize,n;if(i?n=i(e,r):n=a.isURLSearchParams(e)?e.toString():new zo(e,r).toString(o),n){let s=t.indexOf("#");s!==-1&&(t=t.slice(0,s)),t+=(t.indexOf("?")===-1?"?":"&")+n}return t}var yr=class{constructor(){this.handlers=[]}use(e,r,o){return this.handlers.push({fulfilled:e,rejected:r,synchronous:o?o.synchronous:!1,runWhen:o?o.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){a.forEach(this.handlers,function(o){o!==null&&e(o)})}},br=yr;var Be={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1};import oa from"crypto";import ra from"url";var Ho=ra.URLSearchParams;var Er="abcdefghijklmnopqrstuvwxyz",Wo="0123456789",Go={DIGIT:Wo,ALPHA:Er,ALPHA_DIGIT:Er+Er.toUpperCase()+Wo},ia=(t=16,e=Go.ALPHA_DIGIT)=>{let r="",{length:o}=e,i=new Uint32Array(t);oa.randomFillSync(i);for(let n=0;n<t;n++)r+=e[i[n]%o];return r},Qo={isNode:!0,classes:{URLSearchParams:Ho,FormData:Ut,Blob:typeof Blob<"u"&&Blob||null},ALPHABET:Go,generateString:ia,protocols:["http","https","file","data"]};var Ar={};qs(Ar,{hasBrowserEnv:()=>wr,hasStandardBrowserEnv:()=>sa,hasStandardBrowserWebWorkerEnv:()=>na,navigator:()=>Tr,origin:()=>aa});var wr=typeof window<"u"&&typeof document<"u",Tr=typeof navigator=="object"&&navigator||void 0,sa=wr&&(!Tr||["ReactNative","NativeScript","NS"].indexOf(Tr.product)<0),na=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",aa=wr&&window.location.href||"http://localhost";var D={...Ar,...Qo};function Sr(t,e){return be(t,new D.classes.URLSearchParams,{visitor:function(r,o,i,n){return D.isNode&&a.isBuffer(r)?(this.append(o,r.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)},...e})}function la(t){return a.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function ca(t){let e={},r=Object.keys(t),o,i=r.length,n;for(o=0;o<i;o++)n=r[o],e[n]=t[n];return e}function ua(t){function e(r,o,i,n){let s=r[n++];if(s==="__proto__")return!0;let l=Number.isFinite(+s),u=n>=r.length;return s=!s&&a.isArray(i)?i.length:s,u?(a.hasOwnProp(i,s)?i[s]=[i[s],o]:i[s]=o,!l):((!i[s]||!a.isObject(i[s]))&&(i[s]=[]),e(r,o,i[s],n)&&a.isArray(i[s])&&(i[s]=ca(i[s])),!l)}if(a.isFormData(t)&&a.isFunction(t.entries)){let r={};return a.forEachEntry(t,(o,i)=>{e(la(o),i,r,0)}),r}return null}var jt=ua;function da(t,e,r){if(a.isString(t))try{return(e||JSON.parse)(t),a.trim(t)}catch(o){if(o.name!=="SyntaxError")throw o}return(r||JSON.stringify)(t)}var _r={transitional:Be,adapter:["xhr","http","fetch"],transformRequest:[function(e,r){let o=r.getContentType()||"",i=o.indexOf("application/json")>-1,n=a.isObject(e);if(n&&a.isHTMLForm(e)&&(e=new FormData(e)),a.isFormData(e))return i?JSON.stringify(jt(e)):e;if(a.isArrayBuffer(e)||a.isBuffer(e)||a.isStream(e)||a.isFile(e)||a.isBlob(e)||a.isReadableStream(e))return e;if(a.isArrayBufferView(e))return e.buffer;if(a.isURLSearchParams(e))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let l;if(n){if(o.indexOf("application/x-www-form-urlencoded")>-1)return Sr(e,this.formSerializer).toString();if((l=a.isFileList(e))||o.indexOf("multipart/form-data")>-1){let u=this.env&&this.env.FormData;return be(l?{"files[]":e}:e,u&&new u,this.formSerializer)}}return n||i?(r.setContentType("application/json",!1),da(e)):e}],transformResponse:[function(e){let r=this.transitional||_r.transitional,o=r&&r.forcedJSONParsing,i=this.responseType==="json";if(a.isResponse(e)||a.isReadableStream(e))return e;if(e&&a.isString(e)&&(o&&!this.responseType||i)){let s=!(r&&r.silentJSONParsing)&&i;try{return JSON.parse(e,this.parseReviver)}catch(l){if(s)throw l.name==="SyntaxError"?g.from(l,g.ERR_BAD_RESPONSE,this,null,this.response):l}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:D.classes.FormData,Blob:D.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],t=>{_r.headers[t]={}});var Ve=_r;var pa=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),$o=t=>{let e={},r,o,i;return t&&t.split(`
|
|
5
|
-
`).forEach(function(s){i=s.indexOf(":"),r=s.substring(0,i).trim().toLowerCase(),o=s.substring(i+1).trim(),!(!r||e[r]&&
|
|
6
|
-
`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...r){let o=new this(e);return r.forEach(i=>o.set(i)),o}static accessor(e){let o=(this[
|
|
7
|
-
`,Sa=ht.encode(xe),_a=2,Or=class{constructor(e,r){let{escapeName:o}=this.constructor,i=a.isString(r),n=`Content-Disposition: form-data; name="${o(e)}"${!i&&r.name?`; filename="${o(r.name)}"`:""}${xe}`;i?r=ht.encode(String(r).replace(/\r?\n|\r\n?/g,xe)):n+=`Content-Type: ${r.type||"application/octet-stream"}${xe}`,this.headers=ht.encode(n+xe),this.contentLength=i?r.byteLength:r.size,this.size=this.headers.byteLength+this.contentLength+_a,this.name=e,this.value=r}async*encode(){yield this.headers;let{value:e}=this;a.isTypedArray(e)?yield e:yield*Vt(e),yield Sa}static escapeName(e){return String(e).replace(/[\r\n"]/g,r=>({"\r":"%0D","\n":"%0A",'"':"%22"})[r])}},Ra=(t,e,r)=>{let{tag:o="form-data-boundary",size:i=25,boundary:n=o+"-"+D.generateString(i,Aa)}=r||{};if(!a.isFormData(t))throw TypeError("FormData instance required");if(n.length<1||n.length>70)throw Error("boundary must be 10-70 characters long");let s=ht.encode("--"+n+xe),l=ht.encode("--"+n+"--"+xe),u=l.byteLength,p=Array.from(t.entries()).map(([h,b])=>{let w=new Or(h,b);return u+=w.size,w});u+=s.byteLength*p.length,u=a.toFiniteNumber(u);let c={"Content-Type":`multipart/form-data; boundary=${n}`};return Number.isFinite(u)&&(c["Content-Length"]=u),e&&e(c),wa.from(async function*(){for(let h of p)yield s,yield*h.encode();yield l}())},Yo=Ra;import Ca from"stream";var Pr=class extends Ca.Transform{__transform(e,r,o){this.push(e),o()}_transform(e,r,o){if(e.length!==0&&(this._transform=this.__transform,e[0]!==120)){let i=Buffer.alloc(2);i[0]=120,i[1]=156,this.push(i,r)}this.__transform(e,r,o)}},Xo=Pr;var xa=(t,e)=>a.isAsyncFn(t)?function(...r){let o=r.pop();t.apply(this,r).then(i=>{try{e?o(null,...e(i)):o(null,i)}catch(n){o(n)}},o)}:t,ei=xa;function va(t,e){t=t||10;let r=new Array(t),o=new Array(t),i=0,n=0,s;return e=e!==void 0?e:1e3,function(u){let p=Date.now(),c=o[n];s||(s=p),r[i]=u,o[i]=p;let h=n,b=0;for(;h!==i;)b+=r[h++],h=h%t;if(i=(i+1)%t,i===n&&(n=(n+1)%t),p-s<e)return;let w=c&&p-c;return w?Math.round(b*1e3/w):void 0}}var ti=va;function La(t,e){let r=0,o=1e3/e,i,n,s=(p,c=Date.now())=>{r=c,i=null,n&&(clearTimeout(n),n=null),t(...p)};return[(...p)=>{let c=Date.now(),h=c-r;h>=o?s(p,c):(i=p,n||(n=setTimeout(()=>{n=null,s(i)},o-h)))},()=>i&&s(i)]}var ri=La;var he=(t,e,r=3)=>{let o=0,i=ti(50,250);return ri(n=>{let s=n.loaded,l=n.lengthComputable?n.total:void 0,u=s-o,p=i(u),c=s<=l;o=s;let h={loaded:s,total:l,progress:l?s/l:void 0,bytes:u,rate:p||void 0,estimated:p&&l&&c?(l-s)/p:void 0,event:n,lengthComputable:l!=null,[e?"download":"upload"]:!0};t(h)},r)},He=(t,e)=>{let r=t!=null;return[o=>e[0]({lengthComputable:r,total:t,loaded:o}),e[1]]},We=t=>(...e)=>a.asap(()=>t(...e));function Fr(t){if(!t||typeof t!="string"||!t.startsWith("data:"))return 0;let e=t.indexOf(",");if(e<0)return 0;let r=t.slice(5,e),o=t.slice(e+1);if(/;base64/i.test(r)){let n=o.length,s=o.length;for(let b=0;b<s;b++)if(o.charCodeAt(b)===37&&b+2<s){let w=o.charCodeAt(b+1),m=o.charCodeAt(b+2);(w>=48&&w<=57||w>=65&&w<=70||w>=97&&w<=102)&&(m>=48&&m<=57||m>=65&&m<=70||m>=97&&m<=102)&&(n-=2,b+=2)}let l=0,u=s-1,p=b=>b>=2&&o.charCodeAt(b-2)===37&&o.charCodeAt(b-1)===51&&(o.charCodeAt(b)===68||o.charCodeAt(b)===100);u>=0&&(o.charCodeAt(u)===61?(l++,u--):p(u)&&(l++,u-=3)),l===1&&u>=0&&(o.charCodeAt(u)===61||p(u))&&l++;let h=Math.floor(n/4)*3-(l||0);return h>0?h:0}return Buffer.byteLength(o,"utf8")}var oi={flush:Ee.constants.Z_SYNC_FLUSH,finishFlush:Ee.constants.Z_SYNC_FLUSH},Ma={flush:Ee.constants.BROTLI_OPERATION_FLUSH,finishFlush:Ee.constants.BROTLI_OPERATION_FLUSH},ii=a.isFunction(Ee.createBrotliDecompress),{http:ka,https:qa}=Fa,Ua=/https:?/,si=D.protocols.map(t=>t+":"),ni=(t,[e,r])=>(t.on("end",r).on("error",r),e);function ja(t,e){t.beforeRedirects.proxy&&t.beforeRedirects.proxy(t),t.beforeRedirects.config&&t.beforeRedirects.config(t,e)}function li(t,e,r){let o=e;if(!o&&o!==!1){let i=Da.getProxyForUrl(r);i&&(o=new URL(i))}if(o){if(o.username&&(o.auth=(o.username||"")+":"+(o.password||"")),o.auth){(o.auth.username||o.auth.password)&&(o.auth=(o.auth.username||"")+":"+(o.auth.password||""));let n=Buffer.from(o.auth,"utf8").toString("base64");t.headers["Proxy-Authorization"]="Basic "+n}t.headers.host=t.hostname+(t.port?":"+t.port:"");let i=o.hostname||o.host;t.hostname=i,t.host=i,t.port=o.port,t.path=r,o.protocol&&(t.protocol=o.protocol.includes(":")?o.protocol:`${o.protocol}:`)}t.beforeRedirects.proxy=function(n){li(n,e,n.href)}}var Ba=typeof process<"u"&&a.kindOf(process)==="process",Va=t=>new Promise((e,r)=>{let o,i,n=(u,p)=>{i||(i=!0,o&&o(u,p))},s=u=>{n(u),e(u)},l=u=>{n(u,!0),r(u)};t(s,l,u=>o=u).catch(l)}),za=({address:t,family:e})=>{if(!a.isString(t))throw TypeError("address must be a string");return{address:t,family:e||(t.indexOf(".")<0?6:4)}},ai=(t,e)=>za(a.isObject(t)?t:{address:t,family:e}),ci=Ba&&function(e){return Va(async function(o,i,n){let{data:s,lookup:l,family:u}=e,{responseType:p,responseEncoding:c}=e,h=e.method.toUpperCase(),b,w=!1,m;if(l){let A=ei(l,_=>a.isArray(_)?_:[_]);l=(_,B,W)=>{A(_,B,(N,te,ge)=>{if(N)return W(N);let Y=a.isArray(te)?te.map(re=>ai(re)):[ai(te,ge)];B.all?W(N,Y):W(N,Y[0].address,Y[0].family)})}}let y=new Na,E=()=>{e.cancelToken&&e.cancelToken.unsubscribe(R),e.signal&&e.signal.removeEventListener("abort",R),y.removeAllListeners()};n((A,_)=>{b=!0,_&&(w=!0,E())});function R(A){y.emit("abort",!A||A.type?new X(null,e,m):A)}y.once("abort",i),(e.cancelToken||e.signal)&&(e.cancelToken&&e.cancelToken.subscribe(R),e.signal&&(e.signal.aborted?R():e.signal.addEventListener("abort",R)));let P=Re(e.baseURL,e.url,e.allowAbsoluteUrls),S=new URL(P,D.hasBrowserEnv?D.origin:void 0),C=S.protocol||si[0];if(C==="data:"){if(e.maxContentLength>-1){let _=String(e.url||P||"");if(Fr(_)>e.maxContentLength)return i(new g("maxContentLength size of "+e.maxContentLength+" exceeded",g.ERR_BAD_RESPONSE,e))}let A;if(h!=="GET")return ce(o,i,{status:405,statusText:"method not allowed",headers:{},config:e});try{A=vr(e.url,p==="blob",{Blob:e.env&&e.env.Blob})}catch(_){throw g.from(_,g.ERR_BAD_REQUEST,e)}return p==="text"?(A=A.toString(c),(!c||c==="utf8")&&(A=a.stripBOM(A))):p==="stream"&&(A=Ge.Readable.from(A)),ce(o,i,{data:A,status:200,statusText:"OK",headers:new k,config:e})}if(si.indexOf(C)===-1)return i(new g("Unsupported protocol "+C,g.ERR_BAD_REQUEST,e));let L=k.from(e.headers).normalize();L.set("User-Agent","axios/"+Ce,!1);let{onUploadProgress:q,onDownloadProgress:U}=e,ae=e.maxRate,ee,de;if(a.isSpecCompliantForm(s)){let A=L.getContentType(/boundary=([-_\w\d]{10,70})/i);s=Yo(s,_=>{L.set(_)},{tag:`axios-${Ce}-boundary`,boundary:A&&A[1]||void 0})}else if(a.isFormData(s)&&a.isFunction(s.getHeaders)){if(L.set(s.getHeaders()),!L.hasContentLength())try{let A=await Pa.promisify(s.getLength).call(s);Number.isFinite(A)&&A>=0&&L.setContentLength(A)}catch{}}else if(a.isBlob(s)||a.isFile(s))s.size&&L.setContentType(s.type||"application/octet-stream"),L.setContentLength(s.size||0),s=Ge.Readable.from(Vt(s));else if(s&&!a.isStream(s)){if(!Buffer.isBuffer(s))if(a.isArrayBuffer(s))s=Buffer.from(new Uint8Array(s));else if(a.isString(s))s=Buffer.from(s,"utf-8");else return i(new g("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",g.ERR_BAD_REQUEST,e));if(L.setContentLength(s.length,!1),e.maxBodyLength>-1&&s.length>e.maxBodyLength)return i(new g("Request body larger than maxBodyLength limit",g.ERR_BAD_REQUEST,e))}let pe=a.toFiniteNumber(L.getContentLength());a.isArray(ae)?(ee=ae[0],de=ae[1]):ee=de=ae,s&&(q||ee)&&(a.isStream(s)||(s=Ge.Readable.from(s,{objectMode:!1})),s=Ge.pipeline([s,new Ir({maxRate:a.toFiniteNumber(ee)})],a.noop),q&&s.on("progress",ni(s,He(pe,he(We(q),!1,3)))));let G;if(e.auth){let A=e.auth.username||"",_=e.auth.password||"";G=A+":"+_}if(!G&&S.username){let A=S.username,_=S.password;G=A+":"+_}G&&L.delete("authorization");let H;try{H=_e(S.pathname+S.search,e.params,e.paramsSerializer).replace(/^\?/,"")}catch(A){let _=new Error(A.message);return _.config=e,_.url=e.url,_.exists=!0,i(_)}L.set("Accept-Encoding","gzip, compress, deflate"+(ii?", br":""),!1);let F={path:H,method:h,headers:L.toJSON(),agents:{http:e.httpAgent,https:e.httpsAgent},auth:G,protocol:C,family:u,beforeRedirect:ja,beforeRedirects:{}};!a.isUndefined(l)&&(F.lookup=l),e.socketPath?F.socketPath=e.socketPath:(F.hostname=S.hostname.startsWith("[")?S.hostname.slice(1,-1):S.hostname,F.port=S.port,li(F,e.proxy,C+"//"+S.hostname+(S.port?":"+S.port:"")+F.path));let Q,Pe=Ua.test(F.protocol);if(F.agent=Pe?e.httpsAgent:e.httpAgent,e.transport?Q=e.transport:e.maxRedirects===0?Q=Pe?Oa:Ia:(e.maxRedirects&&(F.maxRedirects=e.maxRedirects),e.beforeRedirect&&(F.beforeRedirects.config=e.beforeRedirect),Q=Pe?qa:ka),e.maxBodyLength>-1?F.maxBodyLength=e.maxBodyLength:F.maxBodyLength=1/0,e.insecureHTTPParser&&(F.insecureHTTPParser=e.insecureHTTPParser),m=Q.request(F,function(_){if(m.destroyed)return;let B=[_],W=+_.headers["content-length"];if(U||de){let re=new Ir({maxRate:a.toFiniteNumber(de)});U&&re.on("progress",ni(re,He(W,he(We(U),!0,3)))),B.push(re)}let N=_,te=_.req||m;if(e.decompress!==!1&&_.headers["content-encoding"])switch((h==="HEAD"||_.statusCode===204)&&delete _.headers["content-encoding"],(_.headers["content-encoding"]||"").toLowerCase()){case"gzip":case"x-gzip":case"compress":case"x-compress":B.push(Ee.createUnzip(oi)),delete _.headers["content-encoding"];break;case"deflate":B.push(new Xo),B.push(Ee.createUnzip(oi)),delete _.headers["content-encoding"];break;case"br":ii&&(B.push(Ee.createBrotliDecompress(Ma)),delete _.headers["content-encoding"])}N=B.length>1?Ge.pipeline(B,a.noop):B[0];let ge=Ge.finished(N,()=>{ge(),E()}),Y={status:_.statusCode,statusText:_.statusMessage,headers:new k(_.headers),config:e,request:te};if(p==="stream")Y.data=N,ce(o,i,Y);else{let re=[],uo=0;N.on("data",function($){re.push($),uo+=$.length,e.maxContentLength>-1&&uo>e.maxContentLength&&(w=!0,N.destroy(),i(new g("maxContentLength size of "+e.maxContentLength+" exceeded",g.ERR_BAD_RESPONSE,e,te)))}),N.on("aborted",function(){if(w)return;let $=new g("stream has been aborted",g.ERR_BAD_RESPONSE,e,te);N.destroy($),i($)}),N.on("error",function($){m.destroyed||i(g.from($,null,e,te))}),N.on("end",function(){try{let $=re.length===1?re[0]:Buffer.concat(re);p!=="arraybuffer"&&($=$.toString(c),(!c||c==="utf8")&&($=a.stripBOM($))),Y.data=$}catch($){return i(g.from($,null,e,Y.request,Y))}ce(o,i,Y)})}y.once("abort",re=>{N.destroyed||(N.emit("error",re),N.destroy())})}),y.once("abort",A=>{i(A),m.destroy(A)}),m.on("error",function(_){i(g.from(_,null,e,m))}),m.on("socket",function(_){_.setKeepAlive(!0,1e3*60)}),e.timeout){let A=parseInt(e.timeout,10);if(Number.isNaN(A)){i(new g("error trying to parse `config.timeout` to int",g.ERR_BAD_OPTION_VALUE,e,m));return}m.setTimeout(A,function(){if(b)return;let B=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",W=e.transitional||Be;e.timeoutErrorMessage&&(B=e.timeoutErrorMessage),i(new g(B,W.clarifyTimeoutError?g.ETIMEDOUT:g.ECONNABORTED,e,m)),R()})}if(a.isStream(s)){let A=!1,_=!1;s.on("end",()=>{A=!0}),s.once("error",B=>{_=!0,m.destroy(B)}),s.on("close",()=>{!A&&!_&&R(new X("Request stream has been aborted",e,m))}),s.pipe(m)}else m.end(s)})};var ui=D.hasStandardBrowserEnv?((t,e)=>r=>(r=new URL(r,D.origin),t.protocol===r.protocol&&t.host===r.host&&(e||t.port===r.port)))(new URL(D.origin),D.navigator&&/(msie|trident)/i.test(D.navigator.userAgent)):()=>!0;var di=D.hasStandardBrowserEnv?{write(t,e,r,o,i,n){let s=[t+"="+encodeURIComponent(e)];a.isNumber(r)&&s.push("expires="+new Date(r).toGMTString()),a.isString(o)&&s.push("path="+o),a.isString(i)&&s.push("domain="+i),n===!0&&s.push("secure"),document.cookie=s.join("; ")},read(t){let e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(t){this.write(t,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};var pi=t=>t instanceof k?{...t}:t;function ne(t,e){e=e||{};let r={};function o(p,c,h,b){return a.isPlainObject(p)&&a.isPlainObject(c)?a.merge.call({caseless:b},p,c):a.isPlainObject(c)?a.merge({},c):a.isArray(c)?c.slice():c}function i(p,c,h,b){if(a.isUndefined(c)){if(!a.isUndefined(p))return o(void 0,p,h,b)}else return o(p,c,h,b)}function n(p,c){if(!a.isUndefined(c))return o(void 0,c)}function s(p,c){if(a.isUndefined(c)){if(!a.isUndefined(p))return o(void 0,p)}else return o(void 0,c)}function l(p,c,h){if(h in e)return o(p,c);if(h in t)return o(void 0,p)}let u={url:n,method:n,data:n,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:l,headers:(p,c,h)=>i(pi(p),pi(c),h,!0)};return a.forEach(Object.keys({...t,...e}),function(c){let h=u[c]||i,b=h(t[c],e[c],c);a.isUndefined(b)&&h!==l||(r[c]=b)}),r}var zt=t=>{let e=ne({},t),{data:r,withXSRFToken:o,xsrfHeaderName:i,xsrfCookieName:n,headers:s,auth:l}=e;if(e.headers=s=k.from(s),e.url=_e(Re(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),l&&s.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),a.isFormData(r)){if(D.hasStandardBrowserEnv||D.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(a.isFunction(r.getHeaders)){let u=r.getHeaders(),p=["content-type","content-length"];Object.entries(u).forEach(([c,h])=>{p.includes(c.toLowerCase())&&s.set(c,h)})}}if(D.hasStandardBrowserEnv&&(o&&a.isFunction(o)&&(o=o(e)),o||o!==!1&&ui(e.url))){let u=i&&n&&di.read(n);u&&s.set(i,u)}return e};var Ha=typeof XMLHttpRequest<"u",mi=Ha&&function(t){return new Promise(function(r,o){let i=zt(t),n=i.data,s=k.from(i.headers).normalize(),{responseType:l,onUploadProgress:u,onDownloadProgress:p}=i,c,h,b,w,m;function y(){w&&w(),m&&m(),i.cancelToken&&i.cancelToken.unsubscribe(c),i.signal&&i.signal.removeEventListener("abort",c)}let E=new XMLHttpRequest;E.open(i.method.toUpperCase(),i.url,!0),E.timeout=i.timeout;function R(){if(!E)return;let S=k.from("getAllResponseHeaders"in E&&E.getAllResponseHeaders()),L={data:!l||l==="text"||l==="json"?E.responseText:E.response,status:E.status,statusText:E.statusText,headers:S,config:t,request:E};ce(function(U){r(U),y()},function(U){o(U),y()},L),E=null}"onloadend"in E?E.onloadend=R:E.onreadystatechange=function(){!E||E.readyState!==4||E.status===0&&!(E.responseURL&&E.responseURL.indexOf("file:")===0)||setTimeout(R)},E.onabort=function(){E&&(o(new g("Request aborted",g.ECONNABORTED,t,E)),E=null)},E.onerror=function(C){let L=C&&C.message?C.message:"Network Error",q=new g(L,g.ERR_NETWORK,t,E);q.event=C||null,o(q),E=null},E.ontimeout=function(){let C=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded",L=i.transitional||Be;i.timeoutErrorMessage&&(C=i.timeoutErrorMessage),o(new g(C,L.clarifyTimeoutError?g.ETIMEDOUT:g.ECONNABORTED,t,E)),E=null},n===void 0&&s.setContentType(null),"setRequestHeader"in E&&a.forEach(s.toJSON(),function(C,L){E.setRequestHeader(L,C)}),a.isUndefined(i.withCredentials)||(E.withCredentials=!!i.withCredentials),l&&l!=="json"&&(E.responseType=i.responseType),p&&([b,m]=he(p,!0),E.addEventListener("progress",b)),u&&E.upload&&([h,w]=he(u),E.upload.addEventListener("progress",h),E.upload.addEventListener("loadend",w)),(i.cancelToken||i.signal)&&(c=S=>{E&&(o(!S||S.type?new X(null,t,E):S),E.abort(),E=null)},i.cancelToken&&i.cancelToken.subscribe(c),i.signal&&(i.signal.aborted?c():i.signal.addEventListener("abort",c)));let P=ft(i.url);if(P&&D.protocols.indexOf(P)===-1){o(new g("Unsupported protocol "+P+":",g.ERR_BAD_REQUEST,t));return}E.send(n||null)})};var Wa=(t,e)=>{let{length:r}=t=t?t.filter(Boolean):[];if(e||r){let o=new AbortController,i,n=function(p){if(!i){i=!0,l();let c=p instanceof Error?p:this.reason;o.abort(c instanceof g?c:new X(c instanceof Error?c.message:c))}},s=e&&setTimeout(()=>{s=null,n(new g(`timeout ${e} of ms exceeded`,g.ETIMEDOUT))},e),l=()=>{t&&(s&&clearTimeout(s),s=null,t.forEach(p=>{p.unsubscribe?p.unsubscribe(n):p.removeEventListener("abort",n)}),t=null)};t.forEach(p=>p.addEventListener("abort",n));let{signal:u}=o;return u.unsubscribe=()=>a.asap(l),u}},fi=Wa;var Ga=function*(t,e){let r=t.byteLength;if(!e||r<e){yield t;return}let o=0,i;for(;o<r;)i=o+e,yield t.slice(o,i),o=i},Qa=async function*(t,e){for await(let r of $a(t))yield*Ga(r,e)},$a=async function*(t){if(t[Symbol.asyncIterator]){yield*t;return}let e=t.getReader();try{for(;;){let{done:r,value:o}=await e.read();if(r)break;yield o}}finally{await e.cancel()}},Nr=(t,e,r,o)=>{let i=Qa(t,e),n=0,s,l=u=>{s||(s=!0,o&&o(u))};return new ReadableStream({async pull(u){try{let{done:p,value:c}=await i.next();if(p){l(),u.close();return}let h=c.byteLength;if(r){let b=n+=h;r(b)}u.enqueue(new Uint8Array(c))}catch(p){throw l(p),p}},cancel(u){return l(u),i.return()}},{highWaterMark:2})};var hi=64*1024,{isFunction:Ht}=a,Ei=(({fetch:t,Request:e,Response:r})=>({fetch:t,Request:e,Response:r}))(a.global),{ReadableStream:gi,TextEncoder:yi}=a.global,bi=(t,...e)=>{try{return!!t(...e)}catch{return!1}},Za=t=>{let{fetch:e,Request:r,Response:o}=Object.assign({},Ei,t),i=Ht(e),n=Ht(r),s=Ht(o);if(!i)return!1;let l=i&&Ht(gi),u=i&&(typeof yi=="function"?(m=>y=>m.encode(y))(new yi):async m=>new Uint8Array(await new r(m).arrayBuffer())),p=n&&l&&bi(()=>{let m=!1,y=new r(D.origin,{body:new gi,method:"POST",get duplex(){return m=!0,"half"}}).headers.has("Content-Type");return m&&!y}),c=s&&l&&bi(()=>a.isReadableStream(new o("").body)),h={stream:c&&(m=>m.body)};i&&["text","arrayBuffer","blob","formData","stream"].forEach(m=>{!h[m]&&(h[m]=(y,E)=>{let R=y&&y[m];if(R)return R.call(y);throw new g(`Response type '${m}' is not supported`,g.ERR_NOT_SUPPORT,E)})});let b=async m=>{if(m==null)return 0;if(a.isBlob(m))return m.size;if(a.isSpecCompliantForm(m))return(await new r(D.origin,{method:"POST",body:m}).arrayBuffer()).byteLength;if(a.isArrayBufferView(m)||a.isArrayBuffer(m))return m.byteLength;if(a.isURLSearchParams(m)&&(m=m+""),a.isString(m))return(await u(m)).byteLength},w=async(m,y)=>{let E=a.toFiniteNumber(m.getContentLength());return E??b(y)};return async m=>{let{url:y,method:E,data:R,signal:P,cancelToken:S,timeout:C,onDownloadProgress:L,onUploadProgress:q,responseType:U,headers:ae,withCredentials:ee="same-origin",fetchOptions:de}=zt(m);U=U?(U+"").toLowerCase():"text";let pe=fi([P,S&&S.toAbortSignal()],C),G=null,H=pe&&pe.unsubscribe&&(()=>{pe.unsubscribe()}),F;try{if(q&&p&&E!=="get"&&E!=="head"&&(F=await w(ae,R))!==0){let W=new r(y,{method:"POST",body:R,duplex:"half"}),N;if(a.isFormData(R)&&(N=W.headers.get("content-type"))&&ae.setContentType(N),W.body){let[te,ge]=He(F,he(We(q)));R=Nr(W.body,hi,te,ge)}}a.isString(ee)||(ee=ee?"include":"omit");let Q=n&&"credentials"in r.prototype,Pe={...de,signal:pe,method:E.toUpperCase(),headers:ae.normalize().toJSON(),body:R,duplex:"half",credentials:Q?ee:void 0};G=n&&new r(y,Pe);let A=await(n?e(G,de):e(y,Pe)),_=c&&(U==="stream"||U==="response");if(c&&(L||_&&H)){let W={};["status","statusText","headers"].forEach(Y=>{W[Y]=A[Y]});let N=a.toFiniteNumber(A.headers.get("content-length")),[te,ge]=L&&He(N,he(We(L),!0))||[];A=new o(Nr(A.body,hi,te,()=>{ge&&ge(),H&&H()}),W)}U=U||"text";let B=await h[a.findKey(h,U)||"text"](A,m);return!_&&H&&H(),await new Promise((W,N)=>{ce(W,N,{data:B,headers:k.from(A.headers),status:A.status,statusText:A.statusText,config:m,request:G})})}catch(Q){throw H&&H(),Q&&Q.name==="TypeError"&&/Load failed|fetch/i.test(Q.message)?Object.assign(new g("Network Error",g.ERR_NETWORK,m,G),{cause:Q.cause||Q}):g.from(Q,Q&&Q.code,m,G)}}},Ja=new Map,Mr=t=>{let e=a.merge.call({skipUndefined:!0},Ei,t?t.env:null),{fetch:r,Request:o,Response:i}=e,n=[o,i,r],s=n.length,l=s,u,p,c=Ja;for(;l--;)u=n[l],p=c.get(u),p===void 0&&c.set(u,p=l?new Map:Za(e)),c=p;return p},bf=Mr();var kr={http:ci,xhr:mi,fetch:{get:Mr}};a.forEach(kr,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});var Ti=t=>`- ${t}`,Ya=t=>a.isFunction(t)||t===null||t===!1,Wt={getAdapter:(t,e)=>{t=a.isArray(t)?t:[t];let{length:r}=t,o,i,n={};for(let s=0;s<r;s++){o=t[s];let l;if(i=o,!Ya(o)&&(i=kr[(l=String(o)).toLowerCase()],i===void 0))throw new g(`Unknown adapter '${l}'`);if(i&&(a.isFunction(i)||(i=i.get(e))))break;n[l||"#"+s]=i}if(!i){let s=Object.entries(n).map(([u,p])=>`adapter ${u} `+(p===!1?"is not supported by the environment":"is not available in the build")),l=r?s.length>1?`since :
|
|
8
|
-
`+s.map(
|
|
9
|
-
`):" "+
|
|
10
|
-
`+n):o.stack=n}catch{}}throw o}}_request(e,r){typeof e=="string"?(r=r||{},r.url=e):r=e||{},r=ne(this.defaults,r);let{transitional:o,paramsSerializer:i,headers:n}=r;o!==void 0&>.assertOptions(o,{silentJSONParsing:ue.transitional(ue.boolean),forcedJSONParsing:ue.transitional(ue.boolean),clarifyTimeoutError:ue.transitional(ue.boolean)},!1),i!=null&&(a.isFunction(i)?r.paramsSerializer={serialize:i}:gt.assertOptions(i,{encode:ue.function,serialize:ue.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),gt.assertOptions(r,{baseUrl:ue.spelling("baseURL"),withXsrfToken:ue.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let s=n&&a.merge(n.common,n[r.method]);n&&a.forEach(["delete","get","head","post","put","patch","common"],m=>{delete n[m]}),r.headers=k.concat(s,n);let l=[],u=!0;this.interceptors.request.forEach(function(y){typeof y.runWhen=="function"&&y.runWhen(r)===!1||(u=u&&y.synchronous,l.unshift(y.fulfilled,y.rejected))});let p=[];this.interceptors.response.forEach(function(y){p.push(y.fulfilled,y.rejected)});let c,h=0,b;if(!u){let m=[Gt.bind(this),void 0];for(m.unshift(...l),m.push(...p),b=m.length,c=Promise.resolve(r);h<b;)c=c.then(m[h++],m[h++]);return c}b=l.length;let w=r;for(h=0;h<b;){let m=l[h++],y=l[h++];try{w=m(w)}catch(E){y.call(this,E);break}}try{c=Gt.call(this,w)}catch(m){return Promise.reject(m)}for(h=0,b=p.length;h<b;)c=c.then(p[h++],p[h++]);return c}getUri(e){e=ne(this.defaults,e);let r=Re(e.baseURL,e.url,e.allowAbsoluteUrls);return _e(r,e.params,e.paramsSerializer)}};a.forEach(["delete","get","head","options"],function(e){Qe.prototype[e]=function(r,o){return this.request(ne(o||{},{method:e,url:r,data:(o||{}).data}))}});a.forEach(["post","put","patch"],function(e){function r(o){return function(n,s,l){return this.request(ne(l||{},{method:e,headers:o?{"Content-Type":"multipart/form-data"}:{},url:n,data:s}))}}Qe.prototype[e]=r(),Qe.prototype[e+"Form"]=r(!0)});var yt=Qe;var Ur=class t{constructor(e){if(typeof e!="function")throw new TypeError("executor must be a function.");let r;this.promise=new Promise(function(n){r=n});let o=this;this.promise.then(i=>{if(!o._listeners)return;let n=o._listeners.length;for(;n-- >0;)o._listeners[n](i);o._listeners=null}),this.promise.then=i=>{let n,s=new Promise(l=>{o.subscribe(l),n=l}).then(i);return s.cancel=function(){o.unsubscribe(n)},s},e(function(n,s,l){o.reason||(o.reason=new X(n,s,l),r(o.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let r=this._listeners.indexOf(e);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){let e=new AbortController,r=o=>{e.abort(o)};return this.subscribe(r),e.signal.unsubscribe=()=>this.unsubscribe(r),e.signal}static source(){let e;return{token:new t(function(i){e=i}),cancel:e}}},Ai=Ur;function jr(t){return function(r){return t.apply(null,r)}}function Br(t){return a.isObject(t)&&t.isAxiosError===!0}var Vr={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Vr).forEach(([t,e])=>{Vr[e]=t});var Si=Vr;function _i(t){let e=new yt(t),r=at(yt.prototype.request,e);return a.extend(r,yt.prototype,e,{allOwnKeys:!0}),a.extend(r,e,null,{allOwnKeys:!0}),r.create=function(i){return _i(ne(t,i))},r}var j=_i(Ve);j.Axios=yt;j.CanceledError=X;j.CancelToken=Ai;j.isCancel=mt;j.VERSION=Ce;j.toFormData=be;j.AxiosError=g;j.Cancel=j.CanceledError;j.all=function(e){return Promise.all(e)};j.spread=jr;j.isAxiosError=Br;j.mergeConfig=ne;j.AxiosHeaders=k;j.formToJSON=t=>jt(a.isHTMLForm(t)?new FormData(t):t);j.getAdapter=Wt.getAdapter;j.HttpStatusCode=Si;j.default=j;var Ri=j;var{Axios:fh,AxiosError:hh,CanceledError:gh,isCancel:yh,CancelToken:bh,VERSION:Eh,all:Th,Cancel:wh,isAxiosError:$e,spread:Ah,toFormData:Sh,AxiosHeaders:_h,HttpStatusCode:Rh,formToJSON:Ch,getAdapter:xh,mergeConfig:vh}=Ri;import{makeApi as cl,makeEndpoint as Ze}from"@zodios/core";import{z as M}from"zod";import{z as d}from"zod";var el=d.object({name:d.string(),description:d.string(),id:d.string(),schema_version:d.string(),metric_version:d.coerce.number(),definition_version:d.coerce.number(),last_updated_user:d.object({id:d.string()}).optional()}),tl=d.object({id:d.string()}),Ci=d.object({field:d.string(),operator:d.string(),categorical_values:d.array(d.object({string_value:d.string().optional(),bool_value:d.boolean().optional(),null_value:d.string().optional()}))}),zr=d.object({measure:d.object({field:d.string(),aggregation:d.string()}),time_dimension:d.object({field:d.string()}),filters:d.array(Ci)}),rl=d.object({datasource:tl,basic_specification:zr,viz_state_specification:d.object({viz_state_string:d.string()}).optional(),is_running_total:d.boolean()}),xi=d.object({allowed_dimensions:d.array(d.string()),allowed_granularities:d.array(d.string()),offset_from_today:d.number()}),vi=d.object({filters:d.array(Ci),measurement_period:d.object({granularity:d.string(),range:d.string()}),comparison:d.object({comparison:d.string()})}),Li=d.object({target:d.object({value:d.number()}).optional()}),$t=d.object({id:d.string(),specification:vi,definition_id:d.string(),is_default:d.boolean(),schema_version:d.string(),metric_version:d.coerce.number(),goals:Li.optional(),is_followed:d.boolean()}),Di=d.object({type:d.string(),number_units:d.object({singular_noun:d.string(),plural_noun:d.string()}),sentiment_type:d.string(),row_level_id_field:d.object({identifier_col:d.string()}),row_level_entity_names:d.object({entity_name_singular:d.string().optional(),entity_name_plural:d.string().optional()}),row_level_name_field:d.object({name_col:d.string()}),currency_code:d.string()}),Ii=d.object({settings:d.array(d.object({type:d.string(),disabled:d.boolean()}))}),ol=d.object({comparisons:d.array(d.object({compare_config:d.object({comparison:d.string()}),index:d.coerce.number()}))}),il=d.array(d.object({basic_specification:zr,viz_state_specification:d.object({viz_state_string:d.string()}).optional(),minimum_granularity:d.string()})),Hr=d.object({metadata:el,specification:rl,extension_options:xi,metrics:d.array($t),total_metrics:d.coerce.number(),representation_options:Di,insights_options:Ii,comparisons:ol,datasource_goals:il}),Oi=d.object({id:d.string(),metric_id:d.string()}),sl=d.enum(["LANGUAGE_UNSPECIFIED","LANGUAGE_DE_DE","LANGUAGE_EN_US","LANGUAGE_EN_GB","LANGUAGE_ES_ES","LANGUAGE_FR_FR","LANGUAGE_FR_CA","LANGUAGE_GA_IE","LANGUAGE_IT_IT","LANGUAGE_JA_JP","LANGUAGE_KO_KR","LANGUAGE_NL_NL","LANGUAGE_PT_BR","LANGUAGE_SV_SE","LANGUAGE_TH_TH","LANGUAGE_ZH_CN","LANGUAGE_ZH_TW"]),nl=d.enum(["LOCALE_UNSPECIFIED","LOCALE_AR_AE","LOCALE_AR_BH","LOCALE_AR_DZ","LOCALE_AR_EG","LOCALE_AR_IQ","LOCALE_AR_JO","LOCALE_AR_KW","LOCALE_AR_LB","LOCALE_AR_LY","LOCALE_AR_MA","LOCALE_AR_OM","LOCALE_AR_QA","LOCALE_AR_SA","LOCALE_AR_SD","LOCALE_AR_SY","LOCALE_AR_TN","LOCALE_AR_YE","LOCALE_BE_BY","LOCALE_BG_BG","LOCALE_CA_ES","LOCALE_CS_CZ","LOCALE_DA_DK","LOCALE_DE_AT","LOCALE_DE_CH","LOCALE_DE_DE","LOCALE_DE_LU","LOCALE_EL_CY","LOCALE_EL_GR","LOCALE_EN_AU","LOCALE_EN_CA","LOCALE_EN_GB","LOCALE_EN_IE","LOCALE_EN_IN","LOCALE_EN_MT","LOCALE_EN_NZ","LOCALE_EN_PH","LOCALE_EN_SG","LOCALE_EN_US","LOCALE_EN_ZA","LOCALE_ES_AR","LOCALE_ES_BO","LOCALE_ES_CL","LOCALE_ES_CO","LOCALE_ES_CR","LOCALE_ES_DO","LOCALE_ES_EC","LOCALE_ES_ES","LOCALE_ES_GT","LOCALE_ES_HN","LOCALE_ES_MX","LOCALE_ES_NI","LOCALE_ES_PA","LOCALE_ES_PE","LOCALE_ES_PR","LOCALE_ES_PY","LOCALE_ES_SV","LOCALE_ES_US","LOCALE_ES_UY","LOCALE_ES_VE","LOCALE_ET_EE","LOCALE_FI_FI","LOCALE_FR_BE","LOCALE_FR_CA","LOCALE_FR_CH","LOCALE_FR_FR","LOCALE_FR_LU","LOCALE_GA_IE","LOCALE_HE_IL","LOCALE_HI_IN","LOCALE_HR_HR","LOCALE_HU_HU","LOCALE_ID_ID","LOCALE_IN_ID","LOCALE_IS_IS","LOCALE_IT_CH","LOCALE_IT_IT","LOCALE_IW_IL","LOCALE_JA_JP","LOCALE_KO_KR","LOCALE_LT_LT","LOCALE_LV_LV","LOCALE_MK_MK","LOCALE_MS_MY","LOCALE_MT_MT","LOCALE_NL_BE","LOCALE_NL_NL","LOCALE_NB_NO","LOCALE_NO_NO","LOCALE_PL_PL","LOCALE_PT_BR","LOCALE_PT_PT","LOCALE_RO_RO","LOCALE_RU_RU","LOCALE_SK_SK","LOCALE_SL_SI","LOCALE_SQ_AL","LOCALE_SR_BA","LOCALE_SR_ME","LOCALE_SR_RS","LOCALE_SV_SE","LOCALE_TH_TH","LOCALE_TR_TR","LOCALE_UK_UA","LOCALE_VI_VN","LOCALE_ZH_CN","LOCALE_ZH_HK","LOCALE_ZH_SG","LOCALE_ZH_TW"]),al=d.enum(["OUTPUT_FORMAT_UNSPECIFIED","OUTPUT_FORMAT_HTML","OUTPUT_FORMAT_TEXT"]),Zt=d.object({bundle_request:d.object({version:d.number(),options:d.object({output_format:al,time_zone:d.string(),language:sl,locale:nl}),input:d.object({metadata:d.object({name:d.string().nonempty(),metric_id:d.string().nonempty(),definition_id:d.string().nonempty()}),metric:d.object({definition:d.object({datasource:d.object({id:d.string()}),basic_specification:zr,is_running_total:d.boolean()}),metric_specification:vi,extension_options:xi,representation_options:Di,insights_options:Ii,goals:Li.optional()})})})}),ll=d.object({type:d.string(),insights:d.array(d.object({result:d.object({type:d.string(),version:d.number(),content:d.string().optional(),markup:d.string().optional(),viz:d.any().optional(),facts:d.any().optional(),characterization:d.string().optional(),question:d.string(),score:d.number()}),insight_type:d.string()})),summaries:d.array(d.object({result:d.object({id:d.string(),markup:d.string().optional(),viz:d.any().optional(),generation_id:d.string(),timestamp:d.string().optional(),last_attempted_timestamp:d.string().optional()})}))}),Pi=d.object({bundle_response:d.object({result:d.object({insight_groups:d.array(ll),has_errors:d.boolean(),characterization:d.string()})})}),Jt=["ban","springboard","basic","detail"],ve=["DEFINITION_VIEW_BASIC","DEFINITION_VIEW_FULL","DEFINITION_VIEW_DEFAULT"];var ul=Ze({method:"get",path:"/pulse/definitions",alias:"listAllPulseMetricDefinitions",description:"Returns a list of all published Pulse Metric Definitions on the specified site.",parameters:[{name:"view",type:"Query",schema:M.optional(M.enum(ve)),description:`The range of metrics to return for a definition. The default is 'DEFINITION_VIEW_BASIC' if not specified.
|
|
4
|
+
`,process.stderr.write(t))},bo=({requestId:t,toolName:e,args:r})=>({type:"tool",requestId:t,tool:{name:e,...r!==void 0?{args:r}:{}}});function be(t){return async(e,r,{logger:o,requestId:i}={logger:e.name})=>{if(Ee(t))return e.server.notification({method:"notifications/message",params:{level:t,logger:o,message:JSON.stringify({timestamp:new Date().toISOString(),currentLogLevel:it,message:r},null,2)}},{relatedRequestId:i})}}import{McpServer as Su}from"@modelcontextprotocol/sdk/server/mcp.js";import{SetLevelRequestSchema as Cu}from"@modelcontextprotocol/sdk/types.js";var To={name:"@tableau/mcp-server",description:"An MCP server for Tableau, providing a suite of tools that will make it easier for developers to build AI applications that integrate with Tableau.",version:"1.9.3",repository:{type:"git",url:"git+https://github.com/tableau/tableau-mcp.git"},homepage:"https://github.com/tableau/tableau-mcp",bugs:"https://github.com/tableau/tableau-mcp/issues",author:"Tableau",type:"module",license:"Apache-2.0",keywords:["tableau","mcp"],bin:{"tableau-mcp-server":"./build/index.js"},scripts:{":build":"npx rimraf ./build && esbuild src/index.ts --bundle --packages=external --platform=node --format=esm --minify --outdir=build --sourcemap",build:"run-s :build exec-perms","build:watch":"npm run :build -- --watch","build:docker":"docker build -t tableau-mcp .",":build:mcpb":"npx -y @anthropic-ai/mcpb pack . tableau-mcp.mcpb","build:mcpb":"run-s build:manifest:script build:manifest :build:mcpb","build:manifest":"node build/scripts/createClaudeMcpBundleManifest.mjs","build:manifest:script":"esbuild src/scripts/createClaudeMcpBundleManifest.ts --bundle --platform=node --format=esm --outdir=build/scripts --sourcemap=inline --out-extension:.js=.mjs","start:http":"node build/index.js","start:http:docker":"docker run -p 3927:3927 -i --rm --env-file env.list tableau-mcp",lint:"npm exec eslint",inspect:"npx @modelcontextprotocol/inspector --config config.json --server tableau",":inspect:http":"npx @modelcontextprotocol/inspector --config config.http.json --server tableau","inspect:http":"run-p start:http :inspect:http","inspect:docker":"npx @modelcontextprotocol/inspector --config config.docker.json --server tableau","inspect:docker:http":"run-p start:http:docker :inspect:http","build:inspect":"run-s build inspect","build:inspect:docker":"run-s build:docker inspect:docker","build:inspect:docker:http":"run-s build:docker inspect:docker:http","exec-perms":"shx chmod +x build/*.js",test:"vitest --config ./vitest.config.ts","test:e2e":"vitest --config ./vitest.config.e2e.ts","test:eval":"vitest --config ./vitest.config.eval.ts",coverage:"vitest run --config ./vitest.config.ts --coverage","version:major":"npm version major --no-git-tag-version","version:minor":"npm version minor --no-git-tag-version","version:patch":"npm version patch --no-git-tag-version"},dependencies:{"@modelcontextprotocol/sdk":"^1.12.1","@zodios/core":"^10.9.6",cors:"^2.8.5",dotenv:"^16.5.0",express:"^5.1.0","fast-levenshtein":"^3.0.0",jose:"^6.0.12","ts-results-es":"^5.0.1",zod:"^3.24.3","zod-validation-error":"^4.0.1"},devDependencies:{"@anthropic-ai/mcpb":"^1.0.0","@eslint/eslintrc":"^3.3.1","@eslint/js":"^9.25.1","@modelcontextprotocol/inspector":"^0.16.6","@openai/agents":"^0.1.9","@types/cors":"^2.8.19","@types/eslint__js":"^8.42.3","@types/express":"^5.0.3","@types/fast-levenshtein":"^0.0.1","@types/node":"^22.15.3","@typescript-eslint/eslint-plugin":"^8.31.1","@typescript-eslint/parser":"^8.31.1","@vitest/coverage-v8":"^3.1.3",esbuild:"^0.25.5",eslint:"^9.25.1","eslint-config-prettier":"^10.1.2","eslint-plugin-prettier":"^5.2.6","eslint-plugin-simple-import-sort":"^12.1.1","npm-run-all":"^4.1.5",openai:"^5.23.2",prettier:"^3.5.3",rimraf:"^6.0.1",shx:"^0.4.0",typescript:"^5.8.3","typescript-eslint":"^8.31.1",vitest:"^3.1.3"},engines:{node:">=20"}};import{Ok as Ic}from"ts-results-es";import{z as as}from"zod";import{Err as wo,Ok as ln}from"ts-results-es";function he(t){if(t instanceof Error)return t.message;try{return JSON.stringify(t)??"undefined"}catch{return`${t}`}}var Eo=t=>{let e=So(t);if(e.isErr())return t;let r=e.value;return Ee("debug")?(r.data?.credentials&&(r.data.credentials="<redacted>"),Array.isArray(r?.data?.datasource?.connections)&&r.data.datasource.connections.forEach(i=>{i.connectionUsername="<redacted>",i.connectionPassword="<redacted>"}),r.headers?.["X-Tableau-Auth"]&&(r.headers["X-Tableau-Auth"]="<redacted>"),r.params?.user_id&&(r.params.user_id="<redacted>")):(delete r.data,delete r.headers,delete r.params),r},Ao=t=>{let e=So(t);if(e.isErr())return t;let r=e.value;return Ee("debug")?r.data?.credentials&&(r.data.credentials="<redacted>"):(delete r.data,delete r.headers),r};function So(t){try{return ln(structuredClone(t))}catch(e){if(e instanceof Error)return wo(e);let r=he(e);return st(`Could not clone object, notification may not be sanitized! Error: ${r}`),wo(new Error(r))}}function Ot(t){return{method:t.method??"UNKNOWN METHOD",url:t.url??"UNKNOWN URL",headers:t.headers,data:t.data,params:t.params}}function Pt(t){return{url:t.config.url??"UNKNOWN URL",status:t.status,headers:t.headers,data:t.data}}import{Zodios as xo}from"@zodios/core";import{randomUUID as cn}from"node:crypto";import{SignJWT as un}from"jose";async function Co({username:t,connectedApp:e,scopes:r,additionalPayload:o}){let i={alg:"HS256",typ:"JWT",kid:e.secretId},n={jti:cn(),iss:e.clientId,aud:"tableau",sub:t,scp:[...r],iat:Math.floor(Date.now()/1e3)-5,exp:Math.floor(Date.now()/1e3)+5*60,...o};return await new un(n).setProtectedHeader(i).sign(new TextEncoder().encode(e.secretValue))}import{makeApi as dn,makeEndpoint as Ro}from"@zodios/core";import{z as ce}from"zod";import{z as Ae}from"zod";var _o=Ae.object({credentials:Ae.object({site:Ae.object({id:Ae.string()}),user:Ae.object({id:Ae.string()}),token:Ae.string()})});var pn=ce.object({credentials:ce.object({site:ce.object({contentUrl:ce.string()})}).and(ce.object({personalAccessTokenName:ce.string(),personalAccessTokenSecret:ce.string()}).or(ce.object({jwt:ce.string()})))}),mn=Ro({method:"post",path:"/auth/signin",alias:"signIn",description:"Signs in with Tableau credentials.",response:_o,parameters:[{name:"credentials",type:"Body",schema:pn}]}),fn=Ro({method:"post",path:"/auth/signout",alias:"signOut",description:"Signs you out of the current session. This call invalidates the authentication token that is created by a call to Sign In.",response:ce.void()}),hn=dn([mn,fn]),hr=[...hn];var Se=class{_apiClient;constructor(e){this._apiClient=e}get interceptors(){return this._apiClient.axios.interceptors}};var z=class extends Se{_creds;get authHeader(){if(!this._creds)throw new Error("Authenticate by calling signIn() first");return{headers:{"X-Tableau-Auth":this._creds.token}}}get userId(){if(!this._creds)throw new Error("Authenticate by calling signIn() first");return this._creds.user.id}constructor(e,r){super(e),this._creds=r}};var nt=class extends Se{constructor(e){super(new xo(e,hr))}signIn=async e=>(await this._apiClient.signIn({credentials:{site:{contentUrl:e.siteName},...await(async()=>{switch(e.type){case"pat":return{personalAccessTokenName:e.patName,personalAccessTokenSecret:e.patValue};case"direct-trust":return{jwt:await Co({username:e.username,connectedApp:{clientId:e.clientId,secretId:e.secretId,secretValue:e.secretValue},scopes:e.scopes,additionalPayload:e.additionalPayload})}}})()}})).credentials},Ft=class extends z{constructor(e,r){super(new xo(e,hr),r)}signOut=async()=>{await this._apiClient.signOut(void 0,{...this.authHeader})}};import{Zodios as An}from"@zodios/core";import{makeApi as bn,makeEndpoint as Tn}from"@zodios/core";import{z as ke}from"zod";import{z as D}from"zod";var gn=D.enum(["hitsTotal","hitsSmallSpanTotal","hitsMediumSpanTotal","hitsLargeSpanTotal","downstreamWorkbookCount"]),vo=D.array(D.object({method:gn,sortDirection:D.enum(["asc","desc"]).default("asc").optional()})).nonempty(),Lo=D.enum(["lens","datasource","virtualconnection","collection","project","flow","datarole","table","database","view","workbook"]),Do=D.union([D.array(D.string().datetime()).nonempty(),D.object({startDate:D.string().datetime(),endDate:D.string().datetime().optional()}).strict(),D.object({startDate:D.string().datetime().optional(),endDate:D.string().datetime()}).strict()]),gr=D.object({contentTypes:D.array(Lo).nonempty(),ownerIds:D.array(D.number().int()).nonempty(),modifiedTime:Do}).partial(),Io=D.union([gr.extend({contentTypes:D.array(Lo).nonempty()}).strict(),gr.extend({ownerIds:D.array(D.number().int()).nonempty()}).strict(),gr.extend({modifiedTime:Do}).strict()]),yn=D.object({uri:D.string(),content:D.record(D.string(),D.unknown())}),Oo=D.object({next:D.string(),prev:D.string(),pageIndex:D.number().int(),startIndex:D.number().int(),total:D.number().int(),limit:D.number().int(),items:D.array(yn)}).partial();var wn=Tn({method:"get",path:"/search",alias:"searchContent",description:"Searches across all supported content types for objects relevant to the search expression specified in the querystring of the request URI.",parameters:[{name:"terms",type:"Query",schema:ke.string().optional()},{name:"page",type:"Query",schema:ke.number().int().optional()},{name:"limit",type:"Query",schema:ke.number().int().optional()},{name:"order_by",type:"Query",schema:ke.string().optional()},{name:"filter",type:"Query",schema:ke.string().optional()}],response:ke.object({hits:Oo})}),En=bn([wn]),Po=[...En];var at=class extends z{constructor(e,r){super(new An(e,Po),r)}searchContent=async e=>(Object.entries(e).forEach(([o,i])=>{i===void 0&&delete e[o]}),(await this._apiClient.searchContent({queries:e,...this.authHeader})).hits)};import{Zodios as xn}from"@zodios/core";import{makeApi as Sn,makeEndpoint as Cn}from"@zodios/core";import{z as Ue}from"zod";import{z as kt}from"zod";import{z as yr}from"zod";var Nt=yr.object({name:yr.string(),id:yr.string()});var Fo=kt.object({id:kt.string(),name:kt.string(),description:kt.string().optional(),project:Nt});import{z as Mt}from"zod";var Me=Mt.object({pageNumber:Mt.coerce.number(),pageSize:Mt.coerce.number(),totalAvailable:Mt.coerce.number()});import{z as No}from"zod";var qe=[{name:"pageSize",type:"Query",schema:No.number().optional(),description:"The number of items to return in one response. The minimum is 1. The maximum is 1000. The default is 100."},{name:"pageNumber",type:"Query",schema:No.number().optional(),description:"The offset for paging. The default is 1."}];var _n=Cn({method:"get",path:"/sites/:siteId/datasources",alias:"listDatasources",description:"Returns a list of published data sources on the specified site. Supports a filter string as a query parameter in the format field:operator:value.",parameters:[...qe,{name:"siteId",type:"Path",schema:Ue.string()},{name:"filter",type:"Query",schema:Ue.string().optional(),description:"Filter string in the format field:operator:value (e.g., name:eq:Project Views)"}],response:Ue.object({pagination:Me,datasources:Ue.object({datasource:Ue.optional(Ue.array(Fo))})})}),Rn=Sn([_n]),ko=[...Rn];var lt=class extends z{constructor(e,r){super(new xn(e,ko),r)}listDatasources=async({siteId:e,filter:r,pageSize:o,pageNumber:i})=>{let n=await this._apiClient.listDatasources({params:{siteId:e},queries:{filter:r,pageSize:o,pageNumber:i},...this.authHeader});return{pagination:n.pagination,datasources:n.datasources.datasource??[]}}};import{Zodios as Pn}from"@zodios/core";import{makeApi as vn,makeEndpoint as Ln}from"@zodios/core";import{z as w}from"zod";var Dn=w.object({data:w.object({publishedDatasources:w.array(w.object({name:w.string().or(w.null()),description:w.string().or(w.null()),owner:w.object({name:w.string().or(w.null())}),fields:w.array(w.object({name:w.string(),isHidden:w.boolean().or(w.null()),description:w.string().or(w.null()),descriptionInherited:w.array(w.object({attribute:w.string(),value:w.string().or(w.null())}).or(w.null())).or(w.null()),fullyQualifiedName:w.string(),__typename:w.string(),dataCategory:w.string().or(w.null()).optional(),role:w.string().or(w.null()).optional(),dataType:w.string().or(w.null()).optional(),defaultFormat:w.string().or(w.null()).optional(),semanticRole:w.string().or(w.null()).optional(),aggregation:w.string().or(w.null()).optional(),aggregationParam:w.string().or(w.null()).optional(),formula:w.string().or(w.null()).optional(),isAutoGenerated:w.boolean().or(w.null()).optional(),hasUserReference:w.boolean().or(w.null()).optional(),binSize:w.number().or(w.null()).optional(),hasOther:w.boolean().or(w.null()).optional(),delimiter:w.string().or(w.null()).optional(),combinationType:w.string().or(w.null()).optional()}))}))})}),In=Ln({method:"post",path:"/graphql",alias:"graphql",response:Dn,parameters:[{name:"query",type:"Body",schema:w.object({query:w.string()})}]}),On=vn([In]),Mo=[...On];var ct=class extends z{constructor(e,r){super(new Pn(e,Mo),r)}graphql=async e=>await this._apiClient.graphql({query:e},{...this.authHeader})};import{Zodios as Ul}from"@zodios/core";import{Err as Hi,Ok as jl}from"ts-results-es";function ut(t,e){return function(){return t.apply(e,arguments)}}var{toString:Fn}=Object.prototype,{getPrototypeOf:Tr}=Object,{iterator:Ut,toStringTag:Uo}=Symbol,jt=(t=>e=>{let r=Fn.call(e);return t[r]||(t[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),ne=t=>(t=t.toLowerCase(),e=>jt(e)===t),Bt=t=>e=>typeof e===t,{isArray:Be}=Array,je=Bt("undefined");function dt(t){return t!==null&&!je(t)&&t.constructor!==null&&!je(t.constructor)&&K(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}var jo=ne("ArrayBuffer");function Nn(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&jo(t.buffer),e}var kn=Bt("string"),K=Bt("function"),Bo=Bt("number"),pt=t=>t!==null&&typeof t=="object",Mn=t=>t===!0||t===!1,qt=t=>{if(jt(t)!=="object")return!1;let e=Tr(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Uo in t)&&!(Ut in t)},qn=t=>{if(!pt(t)||dt(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},Un=ne("Date"),jn=ne("File"),Bn=ne("Blob"),Vn=ne("FileList"),zn=t=>pt(t)&&K(t.pipe),Wn=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||K(t.append)&&((e=jt(t))==="formdata"||e==="object"&&K(t.toString)&&t.toString()==="[object FormData]"))},Hn=ne("URLSearchParams"),[Gn,Qn,$n,Zn]=["ReadableStream","Request","Response","Headers"].map(ne),Jn=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function mt(t,e,{allOwnKeys:r=!1}={}){if(t===null||typeof t>"u")return;let o,i;if(typeof t!="object"&&(t=[t]),Be(t))for(o=0,i=t.length;o<i;o++)e.call(null,t[o],o,t);else{if(dt(t))return;let n=r?Object.getOwnPropertyNames(t):Object.keys(t),s=n.length,l;for(o=0;o<s;o++)l=n[o],e.call(null,t[l],l,t)}}function Vo(t,e){if(dt(t))return null;e=e.toLowerCase();let r=Object.keys(t),o=r.length,i;for(;o-- >0;)if(i=r[o],e===i.toLowerCase())return i;return null}var Ce=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,zo=t=>!je(t)&&t!==Ce;function br(){let{caseless:t,skipUndefined:e}=zo(this)&&this||{},r={},o=(i,n)=>{let s=t&&Vo(r,n)||n;qt(r[s])&&qt(i)?r[s]=br(r[s],i):qt(i)?r[s]=br({},i):Be(i)?r[s]=i.slice():(!e||!je(i))&&(r[s]=i)};for(let i=0,n=arguments.length;i<n;i++)arguments[i]&&mt(arguments[i],o);return r}var Kn=(t,e,r,{allOwnKeys:o}={})=>(mt(e,(i,n)=>{r&&K(i)?t[n]=ut(i,r):t[n]=i},{allOwnKeys:o}),t),Yn=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),Xn=(t,e,r,o)=>{t.prototype=Object.create(e.prototype,o),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),r&&Object.assign(t.prototype,r)},ea=(t,e,r,o)=>{let i,n,s,l={};if(e=e||{},t==null)return e;do{for(i=Object.getOwnPropertyNames(t),n=i.length;n-- >0;)s=i[n],(!o||o(s,t,e))&&!l[s]&&(e[s]=t[s],l[s]=!0);t=r!==!1&&Tr(t)}while(t&&(!r||r(t,e))&&t!==Object.prototype);return e},ta=(t,e,r)=>{t=String(t),(r===void 0||r>t.length)&&(r=t.length),r-=e.length;let o=t.indexOf(e,r);return o!==-1&&o===r},ra=t=>{if(!t)return null;if(Be(t))return t;let e=t.length;if(!Bo(e))return null;let r=new Array(e);for(;e-- >0;)r[e]=t[e];return r},oa=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Tr(Uint8Array)),ia=(t,e)=>{let o=(t&&t[Ut]).call(t),i;for(;(i=o.next())&&!i.done;){let n=i.value;e.call(t,n[0],n[1])}},sa=(t,e)=>{let r,o=[];for(;(r=t.exec(e))!==null;)o.push(r);return o},na=ne("HTMLFormElement"),aa=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,o,i){return o.toUpperCase()+i}),qo=(({hasOwnProperty:t})=>(e,r)=>t.call(e,r))(Object.prototype),la=ne("RegExp"),Wo=(t,e)=>{let r=Object.getOwnPropertyDescriptors(t),o={};mt(r,(i,n)=>{let s;(s=e(i,n,t))!==!1&&(o[n]=s||i)}),Object.defineProperties(t,o)},ca=t=>{Wo(t,(e,r)=>{if(K(t)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;let o=t[r];if(K(o)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},ua=(t,e)=>{let r={},o=i=>{i.forEach(n=>{r[n]=!0})};return Be(t)?o(t):o(String(t).split(e)),r},da=()=>{},pa=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function ma(t){return!!(t&&K(t.append)&&t[Uo]==="FormData"&&t[Ut])}var fa=t=>{let e=new Array(10),r=(o,i)=>{if(pt(o)){if(e.indexOf(o)>=0)return;if(dt(o))return o;if(!("toJSON"in o)){e[i]=o;let n=Be(o)?[]:{};return mt(o,(s,l)=>{let u=r(s,i+1);!je(u)&&(n[l]=u)}),e[i]=void 0,n}}return o};return r(t,0)},ha=ne("AsyncFunction"),ga=t=>t&&(pt(t)||K(t))&&K(t.then)&&K(t.catch),Ho=((t,e)=>t?setImmediate:e?((r,o)=>(Ce.addEventListener("message",({source:i,data:n})=>{i===Ce&&n===r&&o.length&&o.shift()()},!1),i=>{o.push(i),Ce.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",K(Ce.postMessage)),ya=typeof queueMicrotask<"u"?queueMicrotask.bind(Ce):typeof process<"u"&&process.nextTick||Ho,ba=t=>t!=null&&K(t[Ut]),a={isArray:Be,isArrayBuffer:jo,isBuffer:dt,isFormData:Wn,isArrayBufferView:Nn,isString:kn,isNumber:Bo,isBoolean:Mn,isObject:pt,isPlainObject:qt,isEmptyObject:qn,isReadableStream:Gn,isRequest:Qn,isResponse:$n,isHeaders:Zn,isUndefined:je,isDate:Un,isFile:jn,isBlob:Bn,isRegExp:la,isFunction:K,isStream:zn,isURLSearchParams:Hn,isTypedArray:oa,isFileList:Vn,forEach:mt,merge:br,extend:Kn,trim:Jn,stripBOM:Yn,inherits:Xn,toFlatObject:ea,kindOf:jt,kindOfTest:ne,endsWith:ta,toArray:ra,forEachEntry:ia,matchAll:sa,isHTMLForm:na,hasOwnProperty:qo,hasOwnProp:qo,reduceDescriptors:Wo,freezeMethods:ca,toObjectSet:ua,toCamelCase:aa,noop:da,toFiniteNumber:pa,findKey:Vo,global:Ce,isContextDefined:zo,isSpecCompliantForm:ma,toJSONObject:fa,isAsyncFn:ha,isThenable:ga,setImmediate:Ho,asap:ya,isIterable:ba};function Ve(t,e,r,o,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),r&&(this.config=r),o&&(this.request=o),i&&(this.response=i,this.status=i.status?i.status:null)}a.inherits(Ve,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});var Go=Ve.prototype,Qo={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{Qo[t]={value:t}});Object.defineProperties(Ve,Qo);Object.defineProperty(Go,"isAxiosError",{value:!0});Ve.from=(t,e,r,o,i,n)=>{let s=Object.create(Go);a.toFlatObject(t,s,function(c){return c!==Error.prototype},p=>p!=="isAxiosError");let l=t&&t.message?t.message:"Error",u=e==null&&t?t.code:e;return Ve.call(s,l,u,r,o,i),t&&s.cause==null&&Object.defineProperty(s,"cause",{value:t,configurable:!0}),s.name=t&&t.name||"Error",n&&Object.assign(s,n),s};var g=Ve;import Ta from"form-data";var Vt=Ta;function wr(t){return a.isPlainObject(t)||a.isArray(t)}function Zo(t){return a.endsWith(t,"[]")?t.slice(0,-2):t}function $o(t,e,r){return t?t.concat(e).map(function(i,n){return i=Zo(i),!r&&n?"["+i+"]":i}).join(r?".":""):e}function wa(t){return a.isArray(t)&&!t.some(wr)}var Ea=a.toFlatObject(a,{},null,function(e){return/^is[A-Z]/.test(e)});function Aa(t,e,r){if(!a.isObject(t))throw new TypeError("target must be an object");e=e||new(Vt||FormData),r=a.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,T){return!a.isUndefined(T[y])});let o=r.metaTokens,i=r.visitor||c,n=r.dots,s=r.indexes,u=(r.Blob||typeof Blob<"u"&&Blob)&&a.isSpecCompliantForm(e);if(!a.isFunction(i))throw new TypeError("visitor must be a function");function p(m){if(m===null)return"";if(a.isDate(m))return m.toISOString();if(a.isBoolean(m))return m.toString();if(!u&&a.isBlob(m))throw new g("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(m)||a.isTypedArray(m)?u&&typeof Blob=="function"?new Blob([m]):Buffer.from(m):m}function c(m,y,T){let _=m;if(m&&!T&&typeof m=="object"){if(a.endsWith(y,"{}"))y=o?y:y.slice(0,-2),m=JSON.stringify(m);else if(a.isArray(m)&&wa(m)||(a.isFileList(m)||a.endsWith(y,"[]"))&&(_=a.toArray(m)))return y=Zo(y),_.forEach(function(S,x){!(a.isUndefined(S)||S===null)&&e.append(s===!0?$o([y],x,n):s===null?y:y+"[]",p(S))}),!1}return wr(m)?!0:(e.append($o(T,y,n),p(m)),!1)}let h=[],b=Object.assign(Ea,{defaultVisitor:c,convertValue:p,isVisitable:wr});function E(m,y){if(!a.isUndefined(m)){if(h.indexOf(m)!==-1)throw Error("Circular reference detected in "+y.join("."));h.push(m),a.forEach(m,function(_,F){(!(a.isUndefined(_)||_===null)&&i.call(e,_,a.isString(F)?F.trim():F,y,b))===!0&&E(_,y?y.concat(F):[F])}),h.pop()}}if(!a.isObject(t))throw new TypeError("data must be an object");return E(t),e}var Te=Aa;function Jo(t){let e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(o){return e[o]})}function Ko(t,e){this._pairs=[],t&&Te(t,this,e)}var Yo=Ko.prototype;Yo.append=function(e,r){this._pairs.push([e,r])};Yo.toString=function(e){let r=e?function(o){return e.call(this,o,Jo)}:Jo;return this._pairs.map(function(i){return r(i[0])+"="+r(i[1])},"").join("&")};var Xo=Ko;function Sa(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function _e(t,e,r){if(!e)return t;let o=r&&r.encode||Sa;a.isFunction(r)&&(r={serialize:r});let i=r&&r.serialize,n;if(i?n=i(e,r):n=a.isURLSearchParams(e)?e.toString():new Xo(e,r).toString(o),n){let s=t.indexOf("#");s!==-1&&(t=t.slice(0,s)),t+=(t.indexOf("?")===-1?"?":"&")+n}return t}var Er=class{constructor(){this.handlers=[]}use(e,r,o){return this.handlers.push({fulfilled:e,rejected:r,synchronous:o?o.synchronous:!1,runWhen:o?o.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){a.forEach(this.handlers,function(o){o!==null&&e(o)})}},Ar=Er;var ze={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1};import _a from"crypto";import Ca from"url";var ei=Ca.URLSearchParams;var Sr="abcdefghijklmnopqrstuvwxyz",ti="0123456789",ri={DIGIT:ti,ALPHA:Sr,ALPHA_DIGIT:Sr+Sr.toUpperCase()+ti},Ra=(t=16,e=ri.ALPHA_DIGIT)=>{let r="",{length:o}=e,i=new Uint32Array(t);_a.randomFillSync(i);for(let n=0;n<t;n++)r+=e[i[n]%o];return r},oi={isNode:!0,classes:{URLSearchParams:ei,FormData:Vt,Blob:typeof Blob<"u"&&Blob||null},ALPHABET:ri,generateString:Ra,protocols:["http","https","file","data"]};var Rr={};Xs(Rr,{hasBrowserEnv:()=>_r,hasStandardBrowserEnv:()=>xa,hasStandardBrowserWebWorkerEnv:()=>va,navigator:()=>Cr,origin:()=>La});var _r=typeof window<"u"&&typeof document<"u",Cr=typeof navigator=="object"&&navigator||void 0,xa=_r&&(!Cr||["ReactNative","NativeScript","NS"].indexOf(Cr.product)<0),va=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",La=_r&&window.location.href||"http://localhost";var I={...Rr,...oi};function xr(t,e){return Te(t,new I.classes.URLSearchParams,{visitor:function(r,o,i,n){return I.isNode&&a.isBuffer(r)?(this.append(o,r.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)},...e})}function Da(t){return a.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function Ia(t){let e={},r=Object.keys(t),o,i=r.length,n;for(o=0;o<i;o++)n=r[o],e[n]=t[n];return e}function Oa(t){function e(r,o,i,n){let s=r[n++];if(s==="__proto__")return!0;let l=Number.isFinite(+s),u=n>=r.length;return s=!s&&a.isArray(i)?i.length:s,u?(a.hasOwnProp(i,s)?i[s]=[i[s],o]:i[s]=o,!l):((!i[s]||!a.isObject(i[s]))&&(i[s]=[]),e(r,o,i[s],n)&&a.isArray(i[s])&&(i[s]=Ia(i[s])),!l)}if(a.isFormData(t)&&a.isFunction(t.entries)){let r={};return a.forEachEntry(t,(o,i)=>{e(Da(o),i,r,0)}),r}return null}var zt=Oa;function Pa(t,e,r){if(a.isString(t))try{return(e||JSON.parse)(t),a.trim(t)}catch(o){if(o.name!=="SyntaxError")throw o}return(r||JSON.stringify)(t)}var vr={transitional:ze,adapter:["xhr","http","fetch"],transformRequest:[function(e,r){let o=r.getContentType()||"",i=o.indexOf("application/json")>-1,n=a.isObject(e);if(n&&a.isHTMLForm(e)&&(e=new FormData(e)),a.isFormData(e))return i?JSON.stringify(zt(e)):e;if(a.isArrayBuffer(e)||a.isBuffer(e)||a.isStream(e)||a.isFile(e)||a.isBlob(e)||a.isReadableStream(e))return e;if(a.isArrayBufferView(e))return e.buffer;if(a.isURLSearchParams(e))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let l;if(n){if(o.indexOf("application/x-www-form-urlencoded")>-1)return xr(e,this.formSerializer).toString();if((l=a.isFileList(e))||o.indexOf("multipart/form-data")>-1){let u=this.env&&this.env.FormData;return Te(l?{"files[]":e}:e,u&&new u,this.formSerializer)}}return n||i?(r.setContentType("application/json",!1),Pa(e)):e}],transformResponse:[function(e){let r=this.transitional||vr.transitional,o=r&&r.forcedJSONParsing,i=this.responseType==="json";if(a.isResponse(e)||a.isReadableStream(e))return e;if(e&&a.isString(e)&&(o&&!this.responseType||i)){let s=!(r&&r.silentJSONParsing)&&i;try{return JSON.parse(e,this.parseReviver)}catch(l){if(s)throw l.name==="SyntaxError"?g.from(l,g.ERR_BAD_RESPONSE,this,null,this.response):l}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:I.classes.FormData,Blob:I.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],t=>{vr.headers[t]={}});var We=vr;var Fa=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),ii=t=>{let e={},r,o,i;return t&&t.split(`
|
|
5
|
+
`).forEach(function(s){i=s.indexOf(":"),r=s.substring(0,i).trim().toLowerCase(),o=s.substring(i+1).trim(),!(!r||e[r]&&Fa[r])&&(r==="set-cookie"?e[r]?e[r].push(o):e[r]=[o]:e[r]=e[r]?e[r]+", "+o:o)}),e};var si=Symbol("internals");function ft(t){return t&&String(t).trim().toLowerCase()}function Wt(t){return t===!1||t==null?t:a.isArray(t)?t.map(Wt):String(t)}function Na(t){let e=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g,o;for(;o=r.exec(t);)e[o[1]]=o[2];return e}var ka=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function Lr(t,e,r,o,i){if(a.isFunction(o))return o.call(this,e,r);if(i&&(e=r),!!a.isString(e)){if(a.isString(o))return e.indexOf(o)!==-1;if(a.isRegExp(o))return o.test(e)}}function Ma(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,r,o)=>r.toUpperCase()+o)}function qa(t,e){let r=a.toCamelCase(" "+e);["get","set","has"].forEach(o=>{Object.defineProperty(t,o+r,{value:function(i,n,s){return this[o].call(this,e,i,n,s)},configurable:!0})})}var He=class{constructor(e){e&&this.set(e)}set(e,r,o){let i=this;function n(l,u,p){let c=ft(u);if(!c)throw new Error("header name must be a non-empty string");let h=a.findKey(i,c);(!h||i[h]===void 0||p===!0||p===void 0&&i[h]!==!1)&&(i[h||u]=Wt(l))}let s=(l,u)=>a.forEach(l,(p,c)=>n(p,c,u));if(a.isPlainObject(e)||e instanceof this.constructor)s(e,r);else if(a.isString(e)&&(e=e.trim())&&!ka(e))s(ii(e),r);else if(a.isObject(e)&&a.isIterable(e)){let l={},u,p;for(let c of e){if(!a.isArray(c))throw TypeError("Object iterator must return a key-value pair");l[p=c[0]]=(u=l[p])?a.isArray(u)?[...u,c[1]]:[u,c[1]]:c[1]}s(l,r)}else e!=null&&n(r,e,o);return this}get(e,r){if(e=ft(e),e){let o=a.findKey(this,e);if(o){let i=this[o];if(!r)return i;if(r===!0)return Na(i);if(a.isFunction(r))return r.call(this,i,o);if(a.isRegExp(r))return r.exec(i);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,r){if(e=ft(e),e){let o=a.findKey(this,e);return!!(o&&this[o]!==void 0&&(!r||Lr(this,this[o],o,r)))}return!1}delete(e,r){let o=this,i=!1;function n(s){if(s=ft(s),s){let l=a.findKey(o,s);l&&(!r||Lr(o,o[l],l,r))&&(delete o[l],i=!0)}}return a.isArray(e)?e.forEach(n):n(e),i}clear(e){let r=Object.keys(this),o=r.length,i=!1;for(;o--;){let n=r[o];(!e||Lr(this,this[n],n,e,!0))&&(delete this[n],i=!0)}return i}normalize(e){let r=this,o={};return a.forEach(this,(i,n)=>{let s=a.findKey(o,n);if(s){r[s]=Wt(i),delete r[n];return}let l=e?Ma(n):String(n).trim();l!==n&&delete r[n],r[l]=Wt(i),o[l]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){let r=Object.create(null);return a.forEach(this,(o,i)=>{o!=null&&o!==!1&&(r[i]=e&&a.isArray(o)?o.join(", "):o)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,r])=>e+": "+r).join(`
|
|
6
|
+
`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...r){let o=new this(e);return r.forEach(i=>o.set(i)),o}static accessor(e){let o=(this[si]=this[si]={accessors:{}}).accessors,i=this.prototype;function n(s){let l=ft(s);o[l]||(qa(i,s),o[l]=!0)}return a.isArray(e)?e.forEach(n):n(e),this}};He.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);a.reduceDescriptors(He.prototype,({value:t},e)=>{let r=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(o){this[r]=o}}});a.freezeMethods(He);var q=He;function ht(t,e){let r=this||We,o=e||r,i=q.from(o.headers),n=o.data;return a.forEach(t,function(l){n=l.call(r,n,i.normalize(),e?e.status:void 0)}),i.normalize(),n}function gt(t){return!!(t&&t.__CANCEL__)}function ni(t,e,r){g.call(this,t??"canceled",g.ERR_CANCELED,e,r),this.name="CanceledError"}a.inherits(ni,g,{__CANCEL__:!0});var ee=ni;function ue(t,e,r){let o=r.config.validateStatus;!r.status||!o||o(r.status)?t(r):e(new g("Request failed with status code "+r.status,[g.ERR_BAD_REQUEST,g.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function Dr(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Ir(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function Re(t,e,r){let o=!Dr(e);return t&&(o||r==!1)?Ir(t,e):e}import Ya from"proxy-from-env";import Xa from"http";import el from"https";import tl from"util";import rl from"follow-redirects";import we from"zlib";var xe="1.12.1";function yt(t){let e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}var Ua=/^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\s\S]*)$/;function Or(t,e,r){let o=r&&r.Blob||I.classes.Blob,i=yt(t);if(e===void 0&&o&&(e=!0),i==="data"){t=i.length?t.slice(i.length+1):t;let n=Ua.exec(t);if(!n)throw new g("Invalid URL",g.ERR_INVALID_URL);let s=n[1],l=n[2],u=n[3],p=Buffer.from(decodeURIComponent(u),l?"base64":"utf8");if(e){if(!o)throw new g("Blob is not supported",g.ERR_NOT_SUPPORT);return new o([p],{type:s})}return p}throw new g("Unsupported protocol "+i,g.ERR_NOT_SUPPORT)}import $e from"stream";import ja from"stream";var Pr=Symbol("internals"),Fr=class extends ja.Transform{constructor(e){e=a.toFlatObject(e,{maxRate:0,chunkSize:64*1024,minChunkSize:100,timeWindow:500,ticksRate:2,samplesCount:15},null,(o,i)=>!a.isUndefined(i[o])),super({readableHighWaterMark:e.chunkSize});let r=this[Pr]={timeWindow:e.timeWindow,chunkSize:e.chunkSize,maxRate:e.maxRate,minChunkSize:e.minChunkSize,bytesSeen:0,isCaptured:!1,notifiedBytesLoaded:0,ts:Date.now(),bytes:0,onReadCallback:null};this.on("newListener",o=>{o==="progress"&&(r.isCaptured||(r.isCaptured=!0))})}_read(e){let r=this[Pr];return r.onReadCallback&&r.onReadCallback(),super._read(e)}_transform(e,r,o){let i=this[Pr],n=i.maxRate,s=this.readableHighWaterMark,l=i.timeWindow,u=1e3/l,p=n/u,c=i.minChunkSize!==!1?Math.max(i.minChunkSize,p*.01):0,h=(E,m)=>{let y=Buffer.byteLength(E);i.bytesSeen+=y,i.bytes+=y,i.isCaptured&&this.emit("progress",i.bytesSeen),this.push(E)?process.nextTick(m):i.onReadCallback=()=>{i.onReadCallback=null,process.nextTick(m)}},b=(E,m)=>{let y=Buffer.byteLength(E),T=null,_=s,F,S=0;if(n){let x=Date.now();(!i.ts||(S=x-i.ts)>=l)&&(i.ts=x,F=p-i.bytes,i.bytes=F<0?-F:0,S=0),F=p-i.bytes}if(n){if(F<=0)return setTimeout(()=>{m(null,E)},l-S);F<_&&(_=F)}_&&y>_&&y-_>c&&(T=E.subarray(_),E=E.subarray(0,_)),h(E,T?()=>{process.nextTick(m,null,T)}:m)};b(e,function E(m,y){if(m)return o(m);y?b(y,E):o(null)})}},Nr=Fr;import{EventEmitter as ol}from"events";import Va from"util";import{Readable as za}from"stream";var{asyncIterator:ai}=Symbol,Ba=async function*(t){t.stream?yield*t.stream():t.arrayBuffer?yield await t.arrayBuffer():t[ai]?yield*t[ai]():yield t},Ht=Ba;var Wa=I.ALPHABET.ALPHA_DIGIT+"-_",bt=typeof TextEncoder=="function"?new TextEncoder:new Va.TextEncoder,ve=`\r
|
|
7
|
+
`,Ha=bt.encode(ve),Ga=2,kr=class{constructor(e,r){let{escapeName:o}=this.constructor,i=a.isString(r),n=`Content-Disposition: form-data; name="${o(e)}"${!i&&r.name?`; filename="${o(r.name)}"`:""}${ve}`;i?r=bt.encode(String(r).replace(/\r?\n|\r\n?/g,ve)):n+=`Content-Type: ${r.type||"application/octet-stream"}${ve}`,this.headers=bt.encode(n+ve),this.contentLength=i?r.byteLength:r.size,this.size=this.headers.byteLength+this.contentLength+Ga,this.name=e,this.value=r}async*encode(){yield this.headers;let{value:e}=this;a.isTypedArray(e)?yield e:yield*Ht(e),yield Ha}static escapeName(e){return String(e).replace(/[\r\n"]/g,r=>({"\r":"%0D","\n":"%0A",'"':"%22"})[r])}},Qa=(t,e,r)=>{let{tag:o="form-data-boundary",size:i=25,boundary:n=o+"-"+I.generateString(i,Wa)}=r||{};if(!a.isFormData(t))throw TypeError("FormData instance required");if(n.length<1||n.length>70)throw Error("boundary must be 10-70 characters long");let s=bt.encode("--"+n+ve),l=bt.encode("--"+n+"--"+ve),u=l.byteLength,p=Array.from(t.entries()).map(([h,b])=>{let E=new kr(h,b);return u+=E.size,E});u+=s.byteLength*p.length,u=a.toFiniteNumber(u);let c={"Content-Type":`multipart/form-data; boundary=${n}`};return Number.isFinite(u)&&(c["Content-Length"]=u),e&&e(c),za.from(async function*(){for(let h of p)yield s,yield*h.encode();yield l}())},li=Qa;import $a from"stream";var Mr=class extends $a.Transform{__transform(e,r,o){this.push(e),o()}_transform(e,r,o){if(e.length!==0&&(this._transform=this.__transform,e[0]!==120)){let i=Buffer.alloc(2);i[0]=120,i[1]=156,this.push(i,r)}this.__transform(e,r,o)}},ci=Mr;var Za=(t,e)=>a.isAsyncFn(t)?function(...r){let o=r.pop();t.apply(this,r).then(i=>{try{e?o(null,...e(i)):o(null,i)}catch(n){o(n)}},o)}:t,ui=Za;function Ja(t,e){t=t||10;let r=new Array(t),o=new Array(t),i=0,n=0,s;return e=e!==void 0?e:1e3,function(u){let p=Date.now(),c=o[n];s||(s=p),r[i]=u,o[i]=p;let h=n,b=0;for(;h!==i;)b+=r[h++],h=h%t;if(i=(i+1)%t,i===n&&(n=(n+1)%t),p-s<e)return;let E=c&&p-c;return E?Math.round(b*1e3/E):void 0}}var di=Ja;function Ka(t,e){let r=0,o=1e3/e,i,n,s=(p,c=Date.now())=>{r=c,i=null,n&&(clearTimeout(n),n=null),t(...p)};return[(...p)=>{let c=Date.now(),h=c-r;h>=o?s(p,c):(i=p,n||(n=setTimeout(()=>{n=null,s(i)},o-h)))},()=>i&&s(i)]}var pi=Ka;var ge=(t,e,r=3)=>{let o=0,i=di(50,250);return pi(n=>{let s=n.loaded,l=n.lengthComputable?n.total:void 0,u=s-o,p=i(u),c=s<=l;o=s;let h={loaded:s,total:l,progress:l?s/l:void 0,bytes:u,rate:p||void 0,estimated:p&&l&&c?(l-s)/p:void 0,event:n,lengthComputable:l!=null,[e?"download":"upload"]:!0};t(h)},r)},Ge=(t,e)=>{let r=t!=null;return[o=>e[0]({lengthComputable:r,total:t,loaded:o}),e[1]]},Qe=t=>(...e)=>a.asap(()=>t(...e));function qr(t){if(!t||typeof t!="string"||!t.startsWith("data:"))return 0;let e=t.indexOf(",");if(e<0)return 0;let r=t.slice(5,e),o=t.slice(e+1);if(/;base64/i.test(r)){let n=o.length,s=o.length;for(let b=0;b<s;b++)if(o.charCodeAt(b)===37&&b+2<s){let E=o.charCodeAt(b+1),m=o.charCodeAt(b+2);(E>=48&&E<=57||E>=65&&E<=70||E>=97&&E<=102)&&(m>=48&&m<=57||m>=65&&m<=70||m>=97&&m<=102)&&(n-=2,b+=2)}let l=0,u=s-1,p=b=>b>=2&&o.charCodeAt(b-2)===37&&o.charCodeAt(b-1)===51&&(o.charCodeAt(b)===68||o.charCodeAt(b)===100);u>=0&&(o.charCodeAt(u)===61?(l++,u--):p(u)&&(l++,u-=3)),l===1&&u>=0&&(o.charCodeAt(u)===61||p(u))&&l++;let h=Math.floor(n/4)*3-(l||0);return h>0?h:0}return Buffer.byteLength(o,"utf8")}var mi={flush:we.constants.Z_SYNC_FLUSH,finishFlush:we.constants.Z_SYNC_FLUSH},il={flush:we.constants.BROTLI_OPERATION_FLUSH,finishFlush:we.constants.BROTLI_OPERATION_FLUSH},fi=a.isFunction(we.createBrotliDecompress),{http:sl,https:nl}=rl,al=/https:?/,hi=I.protocols.map(t=>t+":"),gi=(t,[e,r])=>(t.on("end",r).on("error",r),e);function ll(t,e){t.beforeRedirects.proxy&&t.beforeRedirects.proxy(t),t.beforeRedirects.config&&t.beforeRedirects.config(t,e)}function bi(t,e,r){let o=e;if(!o&&o!==!1){let i=Ya.getProxyForUrl(r);i&&(o=new URL(i))}if(o){if(o.username&&(o.auth=(o.username||"")+":"+(o.password||"")),o.auth){(o.auth.username||o.auth.password)&&(o.auth=(o.auth.username||"")+":"+(o.auth.password||""));let n=Buffer.from(o.auth,"utf8").toString("base64");t.headers["Proxy-Authorization"]="Basic "+n}t.headers.host=t.hostname+(t.port?":"+t.port:"");let i=o.hostname||o.host;t.hostname=i,t.host=i,t.port=o.port,t.path=r,o.protocol&&(t.protocol=o.protocol.includes(":")?o.protocol:`${o.protocol}:`)}t.beforeRedirects.proxy=function(n){bi(n,e,n.href)}}var cl=typeof process<"u"&&a.kindOf(process)==="process",ul=t=>new Promise((e,r)=>{let o,i,n=(u,p)=>{i||(i=!0,o&&o(u,p))},s=u=>{n(u),e(u)},l=u=>{n(u,!0),r(u)};t(s,l,u=>o=u).catch(l)}),dl=({address:t,family:e})=>{if(!a.isString(t))throw TypeError("address must be a string");return{address:t,family:e||(t.indexOf(".")<0?6:4)}},yi=(t,e)=>dl(a.isObject(t)?t:{address:t,family:e}),Ti=cl&&function(e){return ul(async function(o,i,n){let{data:s,lookup:l,family:u}=e,{responseType:p,responseEncoding:c}=e,h=e.method.toUpperCase(),b,E=!1,m;if(l){let A=ui(l,C=>a.isArray(C)?C:[C]);l=(C,V,G)=>{A(C,V,(k,re,ye)=>{if(k)return G(k);let X=a.isArray(re)?re.map(oe=>yi(oe)):[yi(re,ye)];V.all?G(k,X):G(k,X[0].address,X[0].family)})}}let y=new ol,T=()=>{e.cancelToken&&e.cancelToken.unsubscribe(_),e.signal&&e.signal.removeEventListener("abort",_),y.removeAllListeners()};n((A,C)=>{b=!0,C&&(E=!0,T())});function _(A){y.emit("abort",!A||A.type?new ee(null,e,m):A)}y.once("abort",i),(e.cancelToken||e.signal)&&(e.cancelToken&&e.cancelToken.subscribe(_),e.signal&&(e.signal.aborted?_():e.signal.addEventListener("abort",_)));let F=Re(e.baseURL,e.url,e.allowAbsoluteUrls),S=new URL(F,I.hasBrowserEnv?I.origin:void 0),x=S.protocol||hi[0];if(x==="data:"){if(e.maxContentLength>-1){let C=String(e.url||F||"");if(qr(C)>e.maxContentLength)return i(new g("maxContentLength size of "+e.maxContentLength+" exceeded",g.ERR_BAD_RESPONSE,e))}let A;if(h!=="GET")return ue(o,i,{status:405,statusText:"method not allowed",headers:{},config:e});try{A=Or(e.url,p==="blob",{Blob:e.env&&e.env.Blob})}catch(C){throw g.from(C,g.ERR_BAD_REQUEST,e)}return p==="text"?(A=A.toString(c),(!c||c==="utf8")&&(A=a.stripBOM(A))):p==="stream"&&(A=$e.Readable.from(A)),ue(o,i,{data:A,status:200,statusText:"OK",headers:new q,config:e})}if(hi.indexOf(x)===-1)return i(new g("Unsupported protocol "+x,g.ERR_BAD_REQUEST,e));let L=q.from(e.headers).normalize();L.set("User-Agent","axios/"+xe,!1);let{onUploadProgress:U,onDownloadProgress:j}=e,le=e.maxRate,te,pe;if(a.isSpecCompliantForm(s)){let A=L.getContentType(/boundary=([-_\w\d]{10,70})/i);s=li(s,C=>{L.set(C)},{tag:`axios-${xe}-boundary`,boundary:A&&A[1]||void 0})}else if(a.isFormData(s)&&a.isFunction(s.getHeaders)){if(L.set(s.getHeaders()),!L.hasContentLength())try{let A=await tl.promisify(s.getLength).call(s);Number.isFinite(A)&&A>=0&&L.setContentLength(A)}catch{}}else if(a.isBlob(s)||a.isFile(s))s.size&&L.setContentType(s.type||"application/octet-stream"),L.setContentLength(s.size||0),s=$e.Readable.from(Ht(s));else if(s&&!a.isStream(s)){if(!Buffer.isBuffer(s))if(a.isArrayBuffer(s))s=Buffer.from(new Uint8Array(s));else if(a.isString(s))s=Buffer.from(s,"utf-8");else return i(new g("Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream",g.ERR_BAD_REQUEST,e));if(L.setContentLength(s.length,!1),e.maxBodyLength>-1&&s.length>e.maxBodyLength)return i(new g("Request body larger than maxBodyLength limit",g.ERR_BAD_REQUEST,e))}let me=a.toFiniteNumber(L.getContentLength());a.isArray(le)?(te=le[0],pe=le[1]):te=pe=le,s&&(U||te)&&(a.isStream(s)||(s=$e.Readable.from(s,{objectMode:!1})),s=$e.pipeline([s,new Nr({maxRate:a.toFiniteNumber(te)})],a.noop),U&&s.on("progress",gi(s,Ge(me,ge(Qe(U),!1,3)))));let Q;if(e.auth){let A=e.auth.username||"",C=e.auth.password||"";Q=A+":"+C}if(!Q&&S.username){let A=S.username,C=S.password;Q=A+":"+C}Q&&L.delete("authorization");let H;try{H=_e(S.pathname+S.search,e.params,e.paramsSerializer).replace(/^\?/,"")}catch(A){let C=new Error(A.message);return C.config=e,C.url=e.url,C.exists=!0,i(C)}L.set("Accept-Encoding","gzip, compress, deflate"+(fi?", br":""),!1);let N={path:H,method:h,headers:L.toJSON(),agents:{http:e.httpAgent,https:e.httpsAgent},auth:Q,protocol:x,family:u,beforeRedirect:ll,beforeRedirects:{}};!a.isUndefined(l)&&(N.lookup=l),e.socketPath?N.socketPath=e.socketPath:(N.hostname=S.hostname.startsWith("[")?S.hostname.slice(1,-1):S.hostname,N.port=S.port,bi(N,e.proxy,x+"//"+S.hostname+(S.port?":"+S.port:"")+N.path));let $,Fe=al.test(N.protocol);if(N.agent=Fe?e.httpsAgent:e.httpAgent,e.transport?$=e.transport:e.maxRedirects===0?$=Fe?el:Xa:(e.maxRedirects&&(N.maxRedirects=e.maxRedirects),e.beforeRedirect&&(N.beforeRedirects.config=e.beforeRedirect),$=Fe?nl:sl),e.maxBodyLength>-1?N.maxBodyLength=e.maxBodyLength:N.maxBodyLength=1/0,e.insecureHTTPParser&&(N.insecureHTTPParser=e.insecureHTTPParser),m=$.request(N,function(C){if(m.destroyed)return;let V=[C],G=+C.headers["content-length"];if(j||pe){let oe=new Nr({maxRate:a.toFiniteNumber(pe)});j&&oe.on("progress",gi(oe,Ge(G,ge(Qe(j),!0,3)))),V.push(oe)}let k=C,re=C.req||m;if(e.decompress!==!1&&C.headers["content-encoding"])switch((h==="HEAD"||C.statusCode===204)&&delete C.headers["content-encoding"],(C.headers["content-encoding"]||"").toLowerCase()){case"gzip":case"x-gzip":case"compress":case"x-compress":V.push(we.createUnzip(mi)),delete C.headers["content-encoding"];break;case"deflate":V.push(new ci),V.push(we.createUnzip(mi)),delete C.headers["content-encoding"];break;case"br":fi&&(V.push(we.createBrotliDecompress(il)),delete C.headers["content-encoding"])}k=V.length>1?$e.pipeline(V,a.noop):V[0];let ye=$e.finished(k,()=>{ye(),T()}),X={status:C.statusCode,statusText:C.statusMessage,headers:new q(C.headers),config:e,request:re};if(p==="stream")X.data=k,ue(o,i,X);else{let oe=[],ho=0;k.on("data",function(Z){oe.push(Z),ho+=Z.length,e.maxContentLength>-1&&ho>e.maxContentLength&&(E=!0,k.destroy(),i(new g("maxContentLength size of "+e.maxContentLength+" exceeded",g.ERR_BAD_RESPONSE,e,re)))}),k.on("aborted",function(){if(E)return;let Z=new g("stream has been aborted",g.ERR_BAD_RESPONSE,e,re);k.destroy(Z),i(Z)}),k.on("error",function(Z){m.destroyed||i(g.from(Z,null,e,re))}),k.on("end",function(){try{let Z=oe.length===1?oe[0]:Buffer.concat(oe);p!=="arraybuffer"&&(Z=Z.toString(c),(!c||c==="utf8")&&(Z=a.stripBOM(Z))),X.data=Z}catch(Z){return i(g.from(Z,null,e,X.request,X))}ue(o,i,X)})}y.once("abort",oe=>{k.destroyed||(k.emit("error",oe),k.destroy())})}),y.once("abort",A=>{i(A),m.destroy(A)}),m.on("error",function(C){i(g.from(C,null,e,m))}),m.on("socket",function(C){C.setKeepAlive(!0,1e3*60)}),e.timeout){let A=parseInt(e.timeout,10);if(Number.isNaN(A)){i(new g("error trying to parse `config.timeout` to int",g.ERR_BAD_OPTION_VALUE,e,m));return}m.setTimeout(A,function(){if(b)return;let V=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded",G=e.transitional||ze;e.timeoutErrorMessage&&(V=e.timeoutErrorMessage),i(new g(V,G.clarifyTimeoutError?g.ETIMEDOUT:g.ECONNABORTED,e,m)),_()})}if(a.isStream(s)){let A=!1,C=!1;s.on("end",()=>{A=!0}),s.once("error",V=>{C=!0,m.destroy(V)}),s.on("close",()=>{!A&&!C&&_(new ee("Request stream has been aborted",e,m))}),s.pipe(m)}else m.end(s)})};var wi=I.hasStandardBrowserEnv?((t,e)=>r=>(r=new URL(r,I.origin),t.protocol===r.protocol&&t.host===r.host&&(e||t.port===r.port)))(new URL(I.origin),I.navigator&&/(msie|trident)/i.test(I.navigator.userAgent)):()=>!0;var Ei=I.hasStandardBrowserEnv?{write(t,e,r,o,i,n){let s=[t+"="+encodeURIComponent(e)];a.isNumber(r)&&s.push("expires="+new Date(r).toGMTString()),a.isString(o)&&s.push("path="+o),a.isString(i)&&s.push("domain="+i),n===!0&&s.push("secure"),document.cookie=s.join("; ")},read(t){let e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(t){this.write(t,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};var Ai=t=>t instanceof q?{...t}:t;function ae(t,e){e=e||{};let r={};function o(p,c,h,b){return a.isPlainObject(p)&&a.isPlainObject(c)?a.merge.call({caseless:b},p,c):a.isPlainObject(c)?a.merge({},c):a.isArray(c)?c.slice():c}function i(p,c,h,b){if(a.isUndefined(c)){if(!a.isUndefined(p))return o(void 0,p,h,b)}else return o(p,c,h,b)}function n(p,c){if(!a.isUndefined(c))return o(void 0,c)}function s(p,c){if(a.isUndefined(c)){if(!a.isUndefined(p))return o(void 0,p)}else return o(void 0,c)}function l(p,c,h){if(h in e)return o(p,c);if(h in t)return o(void 0,p)}let u={url:n,method:n,data:n,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:l,headers:(p,c,h)=>i(Ai(p),Ai(c),h,!0)};return a.forEach(Object.keys({...t,...e}),function(c){let h=u[c]||i,b=h(t[c],e[c],c);a.isUndefined(b)&&h!==l||(r[c]=b)}),r}var Gt=t=>{let e=ae({},t),{data:r,withXSRFToken:o,xsrfHeaderName:i,xsrfCookieName:n,headers:s,auth:l}=e;if(e.headers=s=q.from(s),e.url=_e(Re(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),l&&s.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),a.isFormData(r)){if(I.hasStandardBrowserEnv||I.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(a.isFunction(r.getHeaders)){let u=r.getHeaders(),p=["content-type","content-length"];Object.entries(u).forEach(([c,h])=>{p.includes(c.toLowerCase())&&s.set(c,h)})}}if(I.hasStandardBrowserEnv&&(o&&a.isFunction(o)&&(o=o(e)),o||o!==!1&&wi(e.url))){let u=i&&n&&Ei.read(n);u&&s.set(i,u)}return e};var pl=typeof XMLHttpRequest<"u",Si=pl&&function(t){return new Promise(function(r,o){let i=Gt(t),n=i.data,s=q.from(i.headers).normalize(),{responseType:l,onUploadProgress:u,onDownloadProgress:p}=i,c,h,b,E,m;function y(){E&&E(),m&&m(),i.cancelToken&&i.cancelToken.unsubscribe(c),i.signal&&i.signal.removeEventListener("abort",c)}let T=new XMLHttpRequest;T.open(i.method.toUpperCase(),i.url,!0),T.timeout=i.timeout;function _(){if(!T)return;let S=q.from("getAllResponseHeaders"in T&&T.getAllResponseHeaders()),L={data:!l||l==="text"||l==="json"?T.responseText:T.response,status:T.status,statusText:T.statusText,headers:S,config:t,request:T};ue(function(j){r(j),y()},function(j){o(j),y()},L),T=null}"onloadend"in T?T.onloadend=_:T.onreadystatechange=function(){!T||T.readyState!==4||T.status===0&&!(T.responseURL&&T.responseURL.indexOf("file:")===0)||setTimeout(_)},T.onabort=function(){T&&(o(new g("Request aborted",g.ECONNABORTED,t,T)),T=null)},T.onerror=function(x){let L=x&&x.message?x.message:"Network Error",U=new g(L,g.ERR_NETWORK,t,T);U.event=x||null,o(U),T=null},T.ontimeout=function(){let x=i.timeout?"timeout of "+i.timeout+"ms exceeded":"timeout exceeded",L=i.transitional||ze;i.timeoutErrorMessage&&(x=i.timeoutErrorMessage),o(new g(x,L.clarifyTimeoutError?g.ETIMEDOUT:g.ECONNABORTED,t,T)),T=null},n===void 0&&s.setContentType(null),"setRequestHeader"in T&&a.forEach(s.toJSON(),function(x,L){T.setRequestHeader(L,x)}),a.isUndefined(i.withCredentials)||(T.withCredentials=!!i.withCredentials),l&&l!=="json"&&(T.responseType=i.responseType),p&&([b,m]=ge(p,!0),T.addEventListener("progress",b)),u&&T.upload&&([h,E]=ge(u),T.upload.addEventListener("progress",h),T.upload.addEventListener("loadend",E)),(i.cancelToken||i.signal)&&(c=S=>{T&&(o(!S||S.type?new ee(null,t,T):S),T.abort(),T=null)},i.cancelToken&&i.cancelToken.subscribe(c),i.signal&&(i.signal.aborted?c():i.signal.addEventListener("abort",c)));let F=yt(i.url);if(F&&I.protocols.indexOf(F)===-1){o(new g("Unsupported protocol "+F+":",g.ERR_BAD_REQUEST,t));return}T.send(n||null)})};var ml=(t,e)=>{let{length:r}=t=t?t.filter(Boolean):[];if(e||r){let o=new AbortController,i,n=function(p){if(!i){i=!0,l();let c=p instanceof Error?p:this.reason;o.abort(c instanceof g?c:new ee(c instanceof Error?c.message:c))}},s=e&&setTimeout(()=>{s=null,n(new g(`timeout ${e} of ms exceeded`,g.ETIMEDOUT))},e),l=()=>{t&&(s&&clearTimeout(s),s=null,t.forEach(p=>{p.unsubscribe?p.unsubscribe(n):p.removeEventListener("abort",n)}),t=null)};t.forEach(p=>p.addEventListener("abort",n));let{signal:u}=o;return u.unsubscribe=()=>a.asap(l),u}},Ci=ml;var fl=function*(t,e){let r=t.byteLength;if(!e||r<e){yield t;return}let o=0,i;for(;o<r;)i=o+e,yield t.slice(o,i),o=i},hl=async function*(t,e){for await(let r of gl(t))yield*fl(r,e)},gl=async function*(t){if(t[Symbol.asyncIterator]){yield*t;return}let e=t.getReader();try{for(;;){let{done:r,value:o}=await e.read();if(r)break;yield o}}finally{await e.cancel()}},Ur=(t,e,r,o)=>{let i=hl(t,e),n=0,s,l=u=>{s||(s=!0,o&&o(u))};return new ReadableStream({async pull(u){try{let{done:p,value:c}=await i.next();if(p){l(),u.close();return}let h=c.byteLength;if(r){let b=n+=h;r(b)}u.enqueue(new Uint8Array(c))}catch(p){throw l(p),p}},cancel(u){return l(u),i.return()}},{highWaterMark:2})};var _i=64*1024,{isFunction:Qt}=a,Li=(({fetch:t,Request:e,Response:r})=>({fetch:t,Request:e,Response:r}))(a.global),{ReadableStream:Ri,TextEncoder:xi}=a.global,vi=(t,...e)=>{try{return!!t(...e)}catch{return!1}},yl=t=>{let{fetch:e,Request:r,Response:o}=Object.assign({},Li,t),i=Qt(e),n=Qt(r),s=Qt(o);if(!i)return!1;let l=i&&Qt(Ri),u=i&&(typeof xi=="function"?(m=>y=>m.encode(y))(new xi):async m=>new Uint8Array(await new r(m).arrayBuffer())),p=n&&l&&vi(()=>{let m=!1,y=new r(I.origin,{body:new Ri,method:"POST",get duplex(){return m=!0,"half"}}).headers.has("Content-Type");return m&&!y}),c=s&&l&&vi(()=>a.isReadableStream(new o("").body)),h={stream:c&&(m=>m.body)};i&&["text","arrayBuffer","blob","formData","stream"].forEach(m=>{!h[m]&&(h[m]=(y,T)=>{let _=y&&y[m];if(_)return _.call(y);throw new g(`Response type '${m}' is not supported`,g.ERR_NOT_SUPPORT,T)})});let b=async m=>{if(m==null)return 0;if(a.isBlob(m))return m.size;if(a.isSpecCompliantForm(m))return(await new r(I.origin,{method:"POST",body:m}).arrayBuffer()).byteLength;if(a.isArrayBufferView(m)||a.isArrayBuffer(m))return m.byteLength;if(a.isURLSearchParams(m)&&(m=m+""),a.isString(m))return(await u(m)).byteLength},E=async(m,y)=>{let T=a.toFiniteNumber(m.getContentLength());return T??b(y)};return async m=>{let{url:y,method:T,data:_,signal:F,cancelToken:S,timeout:x,onDownloadProgress:L,onUploadProgress:U,responseType:j,headers:le,withCredentials:te="same-origin",fetchOptions:pe}=Gt(m);j=j?(j+"").toLowerCase():"text";let me=Ci([F,S&&S.toAbortSignal()],x),Q=null,H=me&&me.unsubscribe&&(()=>{me.unsubscribe()}),N;try{if(U&&p&&T!=="get"&&T!=="head"&&(N=await E(le,_))!==0){let G=new r(y,{method:"POST",body:_,duplex:"half"}),k;if(a.isFormData(_)&&(k=G.headers.get("content-type"))&&le.setContentType(k),G.body){let[re,ye]=Ge(N,ge(Qe(U)));_=Ur(G.body,_i,re,ye)}}a.isString(te)||(te=te?"include":"omit");let $=n&&"credentials"in r.prototype,Fe={...pe,signal:me,method:T.toUpperCase(),headers:le.normalize().toJSON(),body:_,duplex:"half",credentials:$?te:void 0};Q=n&&new r(y,Fe);let A=await(n?e(Q,pe):e(y,Fe)),C=c&&(j==="stream"||j==="response");if(c&&(L||C&&H)){let G={};["status","statusText","headers"].forEach(X=>{G[X]=A[X]});let k=a.toFiniteNumber(A.headers.get("content-length")),[re,ye]=L&&Ge(k,ge(Qe(L),!0))||[];A=new o(Ur(A.body,_i,re,()=>{ye&&ye(),H&&H()}),G)}j=j||"text";let V=await h[a.findKey(h,j)||"text"](A,m);return!C&&H&&H(),await new Promise((G,k)=>{ue(G,k,{data:V,headers:q.from(A.headers),status:A.status,statusText:A.statusText,config:m,request:Q})})}catch($){throw H&&H(),$&&$.name==="TypeError"&&/Load failed|fetch/i.test($.message)?Object.assign(new g("Network Error",g.ERR_NETWORK,m,Q),{cause:$.cause||$}):g.from($,$&&$.code,m,Q)}}},bl=new Map,jr=t=>{let e=a.merge.call({skipUndefined:!0},Li,t?t.env:null),{fetch:r,Request:o,Response:i}=e,n=[o,i,r],s=n.length,l=s,u,p,c=bl;for(;l--;)u=n[l],p=c.get(u),p===void 0&&c.set(u,p=l?new Map:yl(e)),c=p;return p},eh=jr();var Br={http:Ti,xhr:Si,fetch:{get:jr}};a.forEach(Br,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});var Di=t=>`- ${t}`,wl=t=>a.isFunction(t)||t===null||t===!1,$t={getAdapter:(t,e)=>{t=a.isArray(t)?t:[t];let{length:r}=t,o,i,n={};for(let s=0;s<r;s++){o=t[s];let l;if(i=o,!wl(o)&&(i=Br[(l=String(o)).toLowerCase()],i===void 0))throw new g(`Unknown adapter '${l}'`);if(i&&(a.isFunction(i)||(i=i.get(e))))break;n[l||"#"+s]=i}if(!i){let s=Object.entries(n).map(([u,p])=>`adapter ${u} `+(p===!1?"is not supported by the environment":"is not available in the build")),l=r?s.length>1?`since :
|
|
8
|
+
`+s.map(Di).join(`
|
|
9
|
+
`):" "+Di(s[0]):"as no adapter specified";throw new g("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return i},adapters:Br};function Vr(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new ee(null,t)}function Zt(t){return Vr(t),t.headers=q.from(t.headers),t.data=ht.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),$t.getAdapter(t.adapter||We.adapter,t)(t).then(function(o){return Vr(t),o.data=ht.call(t,t.transformResponse,o),o.headers=q.from(o.headers),o},function(o){return gt(o)||(Vr(t),o&&o.response&&(o.response.data=ht.call(t,t.transformResponse,o.response),o.response.headers=q.from(o.response.headers))),Promise.reject(o)})}var Jt={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{Jt[t]=function(o){return typeof o===t||"a"+(e<1?"n ":" ")+t}});var Ii={};Jt.transitional=function(e,r,o){function i(n,s){return"[Axios v"+xe+"] Transitional option '"+n+"'"+s+(o?". "+o:"")}return(n,s,l)=>{if(e===!1)throw new g(i(s," has been removed"+(r?" in "+r:"")),g.ERR_DEPRECATED);return r&&!Ii[s]&&(Ii[s]=!0,console.warn(i(s," has been deprecated since v"+r+" and will be removed in the near future"))),e?e(n,s,l):!0}};Jt.spelling=function(e){return(r,o)=>(console.warn(`${o} is likely a misspelling of ${e}`),!0)};function El(t,e,r){if(typeof t!="object")throw new g("options must be an object",g.ERR_BAD_OPTION_VALUE);let o=Object.keys(t),i=o.length;for(;i-- >0;){let n=o[i],s=e[n];if(s){let l=t[n],u=l===void 0||s(l,n,t);if(u!==!0)throw new g("option "+n+" must be "+u,g.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new g("Unknown option "+n,g.ERR_BAD_OPTION)}}var Tt={assertOptions:El,validators:Jt};var de=Tt.validators,Ze=class{constructor(e){this.defaults=e||{},this.interceptors={request:new Ar,response:new Ar}}async request(e,r){try{return await this._request(e,r)}catch(o){if(o instanceof Error){let i={};Error.captureStackTrace?Error.captureStackTrace(i):i=new Error;let n=i.stack?i.stack.replace(/^.+\n/,""):"";try{o.stack?n&&!String(o.stack).endsWith(n.replace(/^.+\n.+\n/,""))&&(o.stack+=`
|
|
10
|
+
`+n):o.stack=n}catch{}}throw o}}_request(e,r){typeof e=="string"?(r=r||{},r.url=e):r=e||{},r=ae(this.defaults,r);let{transitional:o,paramsSerializer:i,headers:n}=r;o!==void 0&&Tt.assertOptions(o,{silentJSONParsing:de.transitional(de.boolean),forcedJSONParsing:de.transitional(de.boolean),clarifyTimeoutError:de.transitional(de.boolean)},!1),i!=null&&(a.isFunction(i)?r.paramsSerializer={serialize:i}:Tt.assertOptions(i,{encode:de.function,serialize:de.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),Tt.assertOptions(r,{baseUrl:de.spelling("baseURL"),withXsrfToken:de.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let s=n&&a.merge(n.common,n[r.method]);n&&a.forEach(["delete","get","head","post","put","patch","common"],m=>{delete n[m]}),r.headers=q.concat(s,n);let l=[],u=!0;this.interceptors.request.forEach(function(y){typeof y.runWhen=="function"&&y.runWhen(r)===!1||(u=u&&y.synchronous,l.unshift(y.fulfilled,y.rejected))});let p=[];this.interceptors.response.forEach(function(y){p.push(y.fulfilled,y.rejected)});let c,h=0,b;if(!u){let m=[Zt.bind(this),void 0];for(m.unshift(...l),m.push(...p),b=m.length,c=Promise.resolve(r);h<b;)c=c.then(m[h++],m[h++]);return c}b=l.length;let E=r;for(h=0;h<b;){let m=l[h++],y=l[h++];try{E=m(E)}catch(T){y.call(this,T);break}}try{c=Zt.call(this,E)}catch(m){return Promise.reject(m)}for(h=0,b=p.length;h<b;)c=c.then(p[h++],p[h++]);return c}getUri(e){e=ae(this.defaults,e);let r=Re(e.baseURL,e.url,e.allowAbsoluteUrls);return _e(r,e.params,e.paramsSerializer)}};a.forEach(["delete","get","head","options"],function(e){Ze.prototype[e]=function(r,o){return this.request(ae(o||{},{method:e,url:r,data:(o||{}).data}))}});a.forEach(["post","put","patch"],function(e){function r(o){return function(n,s,l){return this.request(ae(l||{},{method:e,headers:o?{"Content-Type":"multipart/form-data"}:{},url:n,data:s}))}}Ze.prototype[e]=r(),Ze.prototype[e+"Form"]=r(!0)});var wt=Ze;var zr=class t{constructor(e){if(typeof e!="function")throw new TypeError("executor must be a function.");let r;this.promise=new Promise(function(n){r=n});let o=this;this.promise.then(i=>{if(!o._listeners)return;let n=o._listeners.length;for(;n-- >0;)o._listeners[n](i);o._listeners=null}),this.promise.then=i=>{let n,s=new Promise(l=>{o.subscribe(l),n=l}).then(i);return s.cancel=function(){o.unsubscribe(n)},s},e(function(n,s,l){o.reason||(o.reason=new ee(n,s,l),r(o.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let r=this._listeners.indexOf(e);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){let e=new AbortController,r=o=>{e.abort(o)};return this.subscribe(r),e.signal.unsubscribe=()=>this.unsubscribe(r),e.signal}static source(){let e;return{token:new t(function(i){e=i}),cancel:e}}},Oi=zr;function Wr(t){return function(r){return t.apply(null,r)}}function Hr(t){return a.isObject(t)&&t.isAxiosError===!0}var Gr={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Gr).forEach(([t,e])=>{Gr[e]=t});var Pi=Gr;function Fi(t){let e=new wt(t),r=ut(wt.prototype.request,e);return a.extend(r,wt.prototype,e,{allOwnKeys:!0}),a.extend(r,e,null,{allOwnKeys:!0}),r.create=function(i){return Fi(ae(t,i))},r}var B=Fi(We);B.Axios=wt;B.CanceledError=ee;B.CancelToken=Oi;B.isCancel=gt;B.VERSION=xe;B.toFormData=Te;B.AxiosError=g;B.Cancel=B.CanceledError;B.all=function(e){return Promise.all(e)};B.spread=Wr;B.isAxiosError=Hr;B.mergeConfig=ae;B.AxiosHeaders=q;B.formToJSON=t=>zt(a.isHTMLForm(t)?new FormData(t):t);B.getAdapter=$t.getAdapter;B.HttpStatusCode=Pi;B.default=B;var Ni=B;var{Axios:Jh,AxiosError:Kh,CanceledError:Yh,isCancel:Xh,CancelToken:eg,VERSION:tg,all:rg,Cancel:og,isAxiosError:Je,spread:ig,toFormData:sg,AxiosHeaders:ng,HttpStatusCode:ag,formToJSON:lg,getAdapter:cg,mergeConfig:ug}=Ni;import{makeApi as Il,makeEndpoint as Ke}from"@zodios/core";import{z as M}from"zod";import{z as d}from"zod";var Al=d.object({name:d.string(),description:d.string(),id:d.string(),schema_version:d.string(),metric_version:d.coerce.number(),definition_version:d.coerce.number(),last_updated_user:d.object({id:d.string()}).optional()}),Sl=d.object({id:d.string()}),ki=d.object({field:d.string(),operator:d.string(),categorical_values:d.array(d.object({string_value:d.string().optional(),bool_value:d.boolean().optional(),null_value:d.string().optional()}))}),Qr=d.object({measure:d.object({field:d.string(),aggregation:d.string()}),time_dimension:d.object({field:d.string()}),filters:d.array(ki)}),Cl=d.object({datasource:Sl,basic_specification:Qr,viz_state_specification:d.object({viz_state_string:d.string()}).optional(),is_running_total:d.boolean()}),Mi=d.object({allowed_dimensions:d.array(d.string()),allowed_granularities:d.array(d.string()),offset_from_today:d.number()}),qi=d.object({filters:d.array(ki),measurement_period:d.object({granularity:d.string(),range:d.string()}),comparison:d.object({comparison:d.string()})}),Ui=d.object({target:d.object({value:d.number()}).optional()}),Kt=d.object({id:d.string(),specification:qi,definition_id:d.string(),is_default:d.boolean(),schema_version:d.string(),metric_version:d.coerce.number(),goals:Ui.optional(),is_followed:d.boolean()}),ji=d.object({type:d.string(),number_units:d.object({singular_noun:d.string(),plural_noun:d.string()}),sentiment_type:d.string(),row_level_id_field:d.object({identifier_col:d.string()}),row_level_entity_names:d.object({entity_name_singular:d.string().optional(),entity_name_plural:d.string().optional()}),row_level_name_field:d.object({name_col:d.string()}),currency_code:d.string()}),Bi=d.object({settings:d.array(d.object({type:d.string(),disabled:d.boolean()}))}),_l=d.object({comparisons:d.array(d.object({compare_config:d.object({comparison:d.string()}),index:d.coerce.number()}))}),Rl=d.array(d.object({basic_specification:Qr,viz_state_specification:d.object({viz_state_string:d.string()}).optional(),minimum_granularity:d.string()})),$r=d.object({metadata:Al,specification:Cl,extension_options:Mi,metrics:d.array(Kt),total_metrics:d.coerce.number(),representation_options:ji,insights_options:Bi,comparisons:_l,datasource_goals:Rl}),Vi=d.object({id:d.string(),metric_id:d.string()}),xl=d.enum(["LANGUAGE_UNSPECIFIED","LANGUAGE_DE_DE","LANGUAGE_EN_US","LANGUAGE_EN_GB","LANGUAGE_ES_ES","LANGUAGE_FR_FR","LANGUAGE_FR_CA","LANGUAGE_GA_IE","LANGUAGE_IT_IT","LANGUAGE_JA_JP","LANGUAGE_KO_KR","LANGUAGE_NL_NL","LANGUAGE_PT_BR","LANGUAGE_SV_SE","LANGUAGE_TH_TH","LANGUAGE_ZH_CN","LANGUAGE_ZH_TW"]),vl=d.enum(["LOCALE_UNSPECIFIED","LOCALE_AR_AE","LOCALE_AR_BH","LOCALE_AR_DZ","LOCALE_AR_EG","LOCALE_AR_IQ","LOCALE_AR_JO","LOCALE_AR_KW","LOCALE_AR_LB","LOCALE_AR_LY","LOCALE_AR_MA","LOCALE_AR_OM","LOCALE_AR_QA","LOCALE_AR_SA","LOCALE_AR_SD","LOCALE_AR_SY","LOCALE_AR_TN","LOCALE_AR_YE","LOCALE_BE_BY","LOCALE_BG_BG","LOCALE_CA_ES","LOCALE_CS_CZ","LOCALE_DA_DK","LOCALE_DE_AT","LOCALE_DE_CH","LOCALE_DE_DE","LOCALE_DE_LU","LOCALE_EL_CY","LOCALE_EL_GR","LOCALE_EN_AU","LOCALE_EN_CA","LOCALE_EN_GB","LOCALE_EN_IE","LOCALE_EN_IN","LOCALE_EN_MT","LOCALE_EN_NZ","LOCALE_EN_PH","LOCALE_EN_SG","LOCALE_EN_US","LOCALE_EN_ZA","LOCALE_ES_AR","LOCALE_ES_BO","LOCALE_ES_CL","LOCALE_ES_CO","LOCALE_ES_CR","LOCALE_ES_DO","LOCALE_ES_EC","LOCALE_ES_ES","LOCALE_ES_GT","LOCALE_ES_HN","LOCALE_ES_MX","LOCALE_ES_NI","LOCALE_ES_PA","LOCALE_ES_PE","LOCALE_ES_PR","LOCALE_ES_PY","LOCALE_ES_SV","LOCALE_ES_US","LOCALE_ES_UY","LOCALE_ES_VE","LOCALE_ET_EE","LOCALE_FI_FI","LOCALE_FR_BE","LOCALE_FR_CA","LOCALE_FR_CH","LOCALE_FR_FR","LOCALE_FR_LU","LOCALE_GA_IE","LOCALE_HE_IL","LOCALE_HI_IN","LOCALE_HR_HR","LOCALE_HU_HU","LOCALE_ID_ID","LOCALE_IN_ID","LOCALE_IS_IS","LOCALE_IT_CH","LOCALE_IT_IT","LOCALE_IW_IL","LOCALE_JA_JP","LOCALE_KO_KR","LOCALE_LT_LT","LOCALE_LV_LV","LOCALE_MK_MK","LOCALE_MS_MY","LOCALE_MT_MT","LOCALE_NL_BE","LOCALE_NL_NL","LOCALE_NB_NO","LOCALE_NO_NO","LOCALE_PL_PL","LOCALE_PT_BR","LOCALE_PT_PT","LOCALE_RO_RO","LOCALE_RU_RU","LOCALE_SK_SK","LOCALE_SL_SI","LOCALE_SQ_AL","LOCALE_SR_BA","LOCALE_SR_ME","LOCALE_SR_RS","LOCALE_SV_SE","LOCALE_TH_TH","LOCALE_TR_TR","LOCALE_UK_UA","LOCALE_VI_VN","LOCALE_ZH_CN","LOCALE_ZH_HK","LOCALE_ZH_SG","LOCALE_ZH_TW"]),Ll=d.enum(["OUTPUT_FORMAT_UNSPECIFIED","OUTPUT_FORMAT_HTML","OUTPUT_FORMAT_TEXT"]),Yt=d.object({bundle_request:d.object({version:d.number(),options:d.object({output_format:Ll,time_zone:d.string(),language:xl,locale:vl}),input:d.object({metadata:d.object({name:d.string().nonempty(),metric_id:d.string().nonempty(),definition_id:d.string().nonempty()}),metric:d.object({definition:d.object({datasource:d.object({id:d.string()}),basic_specification:Qr,is_running_total:d.boolean()}),metric_specification:qi,extension_options:Mi,representation_options:ji,insights_options:Bi,goals:Ui.optional()})})})}),Dl=d.object({type:d.string(),insights:d.array(d.object({result:d.object({type:d.string(),version:d.number(),content:d.string().optional(),markup:d.string().optional(),viz:d.any().optional(),facts:d.any().optional(),characterization:d.string().optional(),question:d.string(),score:d.number()}),insight_type:d.string()})),summaries:d.array(d.object({result:d.object({id:d.string(),markup:d.string().optional(),viz:d.any().optional(),generation_id:d.string(),timestamp:d.string().optional(),last_attempted_timestamp:d.string().optional()})}))}),zi=d.object({bundle_response:d.object({result:d.object({insight_groups:d.array(Dl),has_errors:d.boolean(),characterization:d.string()})})}),Xt=["ban","springboard","basic","detail"],Le=["DEFINITION_VIEW_BASIC","DEFINITION_VIEW_FULL","DEFINITION_VIEW_DEFAULT"];var Ol=Ke({method:"get",path:"/pulse/definitions",alias:"listAllPulseMetricDefinitions",description:"Returns a list of all published Pulse Metric Definitions on the specified site.",parameters:[{name:"view",type:"Query",schema:M.optional(M.enum(Le)),description:`The range of metrics to return for a definition. The default is 'DEFINITION_VIEW_BASIC' if not specified.
|
|
11
11
|
- 'DEFINITION_VIEW_BASIC' - Return only the specified metric definition.
|
|
12
12
|
- 'DEFINITION_VIEW_FULL' - Return the metric definition and the specified number of metrics.
|
|
13
|
-
- 'DEFINITION_VIEW_DEFAULT' - Return the metric definition and the default metric.`}],response:M.object({definitions:M.array(
|
|
13
|
+
- 'DEFINITION_VIEW_DEFAULT' - Return the metric definition and the default metric.`}],response:M.object({definitions:M.array($r)})}),Pl=Ke({method:"post",path:"/pulse/definitions%3AbatchGet",alias:"listPulseMetricDefinitionsFromMetricDefinitionIds",description:"Returns a list of published Pulse Metric Definitions from a list of metric definition IDs.",parameters:[{name:"definition_ids",type:"Body",schema:M.object({definition_ids:M.array(M.string().nonempty()).min(1)}),description:"A list of metric definition IDs to retrieve."},{name:"view",type:"Query",schema:M.optional(M.enum(Le)),description:`The range of metrics to return for a definition. The default is 'DEFINITION_VIEW_BASIC' if not specified.
|
|
14
14
|
- 'DEFINITION_VIEW_BASIC' - Return only the specified metric definition.
|
|
15
15
|
- 'DEFINITION_VIEW_FULL' - Return the metric definition and the specified number of metrics.
|
|
16
|
-
- 'DEFINITION_VIEW_DEFAULT' - Return the metric definition and the default metric.`}],response:M.object({definitions:M.array(Hr)})}),pl=Ze({method:"get",path:"/pulse/definitions/:pulseMetricDefinitionID/metrics",alias:"listPulseMetricsFromMetricDefinitionId",description:"Returns a list of published Pulse Metrics for a specific Pulse Metric Definition.",parameters:[{name:"pulseMetricDefinitionID",type:"Path",schema:M.string().nonempty()}],response:M.object({metrics:M.array($t),total_available:M.number()})}),ml=Ze({method:"post",path:"/pulse/metrics%3AbatchGet",alias:"listPulseMetricsFromMetricIds",description:"Returns a list of Pulse Metrics for a list of metric IDs.",parameters:[{name:"metric_ids",type:"Body",schema:M.object({metric_ids:M.array(M.string().nonempty())})}],response:M.object({metrics:M.array($t)})}),fl=Ze({method:"get",path:"/pulse/subscriptions",alias:"listPulseMetricSubscriptionsForCurrentUser",description:"Returns a list of Pulse Subscriptions for the current user.",parameters:[{name:"user_id",type:"Query",schema:M.string().nonempty()}],response:M.object({subscriptions:M.array(Oi)})}),hl=Ze({method:"post",path:"/pulse/insights/:bundle_type",alias:"generatePulseMetricValueInsightBundle",description:"Generates a bundle for the current aggregated value for the Pulse metric.",parameters:[{name:"bundle_request",type:"Body",schema:Zt},{name:"bundle_type",type:"Path",schema:M.enum(Jt)}],response:Pi}),gl=cl([hl,ul,dl,pl,fl,ml]),Fi=[...gl];var bt=class extends V{constructor(e,r){super(new yl(e,Fi),r)}listAllPulseMetricDefinitions=async e=>await Je(async()=>(await this._apiClient.listAllPulseMetricDefinitions({queries:{view:e},...this.authHeader})).definitions??[]);listPulseMetricDefinitionsFromMetricDefinitionIds=async(e,r)=>await Je(async()=>(await this._apiClient.listPulseMetricDefinitionsFromMetricDefinitionIds({definition_ids:e},{queries:{view:r},...this.authHeader})).definitions??[]);listPulseMetricsFromMetricDefinitionId=async e=>await Je(async()=>(await this._apiClient.listPulseMetricsFromMetricDefinitionId({params:{pulseMetricDefinitionID:e},...this.authHeader})).metrics??[]);listPulseMetricsFromMetricIds=async e=>await Je(async()=>(await this._apiClient.listPulseMetricsFromMetricIds({metric_ids:e},{...this.authHeader})).metrics??[]);listPulseMetricSubscriptionsForCurrentUser=async()=>await Je(async()=>(await this._apiClient.listPulseMetricSubscriptionsForCurrentUser({queries:{user_id:this.userId},...this.authHeader})).subscriptions??[]);generatePulseMetricValueInsightBundle=async(e,r)=>await Je(async()=>await this._apiClient.generatePulseMetricValueInsightBundle({bundle_request:e.bundle_request},{params:{bundle_type:r},...this.authHeader})??{})};async function Je(t){try{return new bl(await t())}catch(e){if($e(e)){if(e.response?.status===404)return new Ni("tableau-server");if(e.response?.status===400&&e.response.headers.tableau_error_code==="0xd3408984"&&e.response.headers.validation_code==="400999")return new Ni("pulse-disabled")}throw e}}import{Zodios as Rl}from"@zodios/core";import{makeApi as El,makeEndpoint as Kt}from"@zodios/core";import{z as K}from"zod";import{z}from"zod";var Et=z.object({id:z.string(),name:z.string(),createdAt:z.string(),updatedAt:z.string(),workbook:z.object({id:z.string()}).optional(),owner:z.object({id:z.string()}).optional(),project:z.object({id:z.string()}).optional(),tags:z.object({tag:z.array(z.object({label:z.string()})).optional()}),usage:z.object({totalViewCount:z.coerce.number()}).optional()});var Tl=Kt({method:"get",path:"/sites/:siteId/views/:viewId/data",alias:"queryViewData",description:"Returns a specified view rendered as data in comma separated value (CSV) format.",response:K.string()}),wl=Kt({method:"get",path:"/sites/:siteId/views/:viewId/image",alias:"queryViewImage",description:"Returns an image of the specified view.",parameters:[{name:"vizWidth",type:"Query",schema:K.number().optional(),description:"The width of the rendered image in pixels that, along with the value of vizHeight determine its resolution and aspect ratio."},{name:"vizHeight",type:"Query",schema:K.number().optional(),description:"The height of the rendered image in pixels that, along with the value of vizWidth determine its resolution and aspect ratio."},{name:"resolution",type:"Query",schema:K.literal("high").optional(),description:"The resolution of the image. Image width and actual pixel density are determined by the display context of the image. Aspect ratio is always preserved. Set the value to high to ensure maximum pixel density."}],response:K.string()}),Al=Kt({method:"get",path:"/sites/:siteId/workbooks/:workbookId/views",alias:"queryViewsForWorkbook",description:"Returns all the views for the specified workbook, optionally including usage statistics.",parameters:[{name:"includeUsageStatistics",type:"Query",schema:K.boolean().optional(),description:"true to return usage statistics. The default is false."}],response:K.object({views:K.object({view:K.array(Et)})})}),Sl=Kt({method:"get",path:"/sites/:siteId/views",alias:"queryViewsForSite",description:"Returns all the views for the specified site, optionally including usage statistics.",parameters:[...Me,{name:"includeUsageStatistics",type:"Query",schema:K.boolean().optional(),description:"true to return usage statistics. The default is false."},{name:"filter",type:"Query",schema:K.string().optional(),description:"An expression that lets you specify a subset of views to return. You can filter on predefined fields such as name, tags, and createdAt. You can include multiple filter expressions."}],response:K.object({pagination:Ne,views:K.object({view:K.array(Et).optional()})})}),_l=El([Tl,wl,Al,Sl]),Mi=[..._l];var Tt=class extends V{constructor(e,r){super(new Rl(e,Mi),r)}queryViewData=async({viewId:e,siteId:r})=>await this._apiClient.queryViewData({params:{siteId:r,viewId:e},...this.authHeader});queryViewImage=async({viewId:e,siteId:r,width:o,height:i,resolution:n})=>await this._apiClient.queryViewImage({params:{siteId:r,viewId:e},queries:{vizWidth:o,vizHeight:i,resolution:n},...this.authHeader,responseType:"arraybuffer"});queryViewsForWorkbook=async({workbookId:e,siteId:r,includeUsageStatistics:o})=>(await this._apiClient.queryViewsForWorkbook({params:{siteId:r,workbookId:e},queries:{includeUsageStatistics:o},...this.authHeader})).views.view;queryViewsForSite=async({siteId:e,includeUsageStatistics:r,filter:o,pageSize:i,pageNumber:n})=>{let s=await this._apiClient.queryViewsForSite({params:{siteId:e},queries:{includeUsageStatistics:r,filter:o,pageSize:i,pageNumber:n},...this.authHeader});return{pagination:s.pagination,views:s.views.view??[]}}};import{isErrorFromAlias as Bi,Zodios as Gl,ZodiosError as Ql}from"@zodios/core";import{Err as Yt,Ok as Vi}from"ts-results-es";import{makeApi as Cl}from"@zodios/core";import{z as f}from"zod";var xl=f.object({connectionLuid:f.string().optional(),connectionUsername:f.string(),connectionPassword:f.string()}),ki=f.object({datasourceLuid:f.string().nonempty(),connections:f.array(xl).optional()}),vl=f.enum(["OBJECTS","ARRAYS"]),qi=f.object({returnFormat:vl,debug:f.boolean().default(!1)}).partial().passthrough(),Ll=f.object({datasource:ki,options:qi.optional()}).passthrough(),Qr=f.enum(["SUM","AVG","MEDIAN","COUNT","COUNTD","MIN","MAX","STDEV","VAR","COLLECT","YEAR","QUARTER","MONTH","WEEK","DAY","TRUNC_YEAR","TRUNC_QUARTER","TRUNC_MONTH","TRUNC_WEEK","TRUNC_DAY","AGG","NONE","UNSPECIFIED"]),Dl=f.object({fieldName:f.string(),fieldCaption:f.string(),dataType:f.enum(["INTEGER","REAL","STRING","DATETIME","BOOLEAN","DATE","SPATIAL","UNKNOWN"]),defaultAggregation:Qr,logicalTableId:f.string()}).partial().passthrough(),Il=f.object({data:f.array(Dl)}).partial().passthrough(),Ol=f.object({errorCode:f.string(),message:f.string(),datetime:f.string().datetime({offset:!0}),debug:f.object({}).partial().passthrough(),"tab-error-code":f.string()}).partial().passthrough(),Pl=f.enum(["ASC","DESC"]),Wr=f.object({fieldCaption:f.string(),fieldAlias:f.string().optional(),maxDecimalPlaces:f.number().int().optional(),sortDirection:Pl.optional(),sortPriority:f.number().int().optional()}),Fl=f.union([Wr.strict(),Wr.extend({function:Qr}).strict(),Wr.extend({calculation:f.string()}).strict()]),Ui=f.union([f.object({fieldCaption:f.string()}).strict(),f.object({fieldCaption:f.string(),function:Qr}).strict(),f.object({calculation:f.string()}).strict()]),$r=f.object({field:Ui,context:f.boolean().optional()}),Zr=f.object({field:f.object({fieldCaption:f.string()}).strict(),context:f.boolean().optional()}),Nl=Zr.extend({filterType:f.literal("SET"),values:f.union([f.array(f.string()),f.array(f.number()),f.array(f.boolean())]),exclude:f.boolean().optional()}),Ke=Zr.extend({filterType:f.literal("DATE"),periodType:f.enum(["MINUTES","HOURS","DAYS","WEEKS","MONTHS","QUARTERS","YEARS"]),anchorDate:f.string().optional(),includeNulls:f.boolean().optional()}),Ml=f.discriminatedUnion("dateRangeType",[Ke.extend({dateRangeType:f.literal("CURRENT")}).strict(),Ke.extend({dateRangeType:f.literal("LAST")}).strict(),Ke.extend({dateRangeType:f.literal("NEXT")}).strict(),Ke.extend({dateRangeType:f.literal("TODATE")}).strict(),Ke.extend({dateRangeType:f.literal("LASTN"),rangeN:f.number().int()}).strict(),Ke.extend({dateRangeType:f.literal("NEXTN"),rangeN:f.number().int()}).strict()]),Gr=Zr.extend({filterType:f.literal("MATCH"),startsWith:f.string().optional(),endsWith:f.string().optional(),contains:f.string().optional(),exclude:f.boolean().optional()}),kl=f.union([Gr.extend({startsWith:f.string()}).strict(),Gr.extend({endsWith:f.string()}).strict(),Gr.extend({contains:f.string()}).strict()]),wt=$r.extend({filterType:f.literal("QUANTITATIVE_NUMERICAL")}),ql=f.discriminatedUnion("quantitativeFilterType",[wt.extend({quantitativeFilterType:f.literal("RANGE"),min:f.number(),max:f.number(),includeNulls:f.boolean().optional()}).strict(),wt.extend({quantitativeFilterType:f.literal("MIN"),min:f.number(),includeNulls:f.boolean().optional()}).strict(),wt.extend({quantitativeFilterType:f.literal("MAX"),max:f.number(),includeNulls:f.boolean().optional()}).strict(),wt.extend({quantitativeFilterType:f.literal("ONLY_NULL")}).strict(),wt.extend({quantitativeFilterType:f.literal("ONLY_NON_NULL")}).strict()]),At=$r.extend({filterType:f.literal("QUANTITATIVE_DATE")}),Ul=f.discriminatedUnion("quantitativeFilterType",[At.extend({quantitativeFilterType:f.literal("RANGE"),minDate:f.string(),maxDate:f.string(),includeNulls:f.boolean().optional()}).strict(),At.extend({quantitativeFilterType:f.literal("MIN"),minDate:f.string(),includeNulls:f.boolean().optional()}).strict(),At.extend({quantitativeFilterType:f.literal("MAX"),maxDate:f.string(),includeNulls:f.boolean().optional()}).strict(),At.extend({quantitativeFilterType:f.literal("ONLY_NULL")}).strict(),At.extend({quantitativeFilterType:f.literal("ONLY_NON_NULL")}).strict()]),jl=$r.extend({filterType:f.literal("TOP"),howMany:f.number().int(),fieldToMeasure:Ui,direction:f.enum(["TOP","BOTTOM"]).optional().default("TOP")}),Bl=f.union([Nl.strict(),jl.strict(),...kl.options,...ql.options,...Ul.options,...Ml.options]),St=f.strictObject({fields:f.array(Fl),filters:f.array(Bl).optional()}),Vl=qi.and(f.object({disaggregate:f.boolean()}).partial().passthrough()),zl=f.object({datasource:ki,query:St,options:Vl.optional()}).passthrough(),Hl=f.object({data:f.array(f.unknown())}).partial().passthrough(),Wl=Cl([{method:"post",path:"/query-datasource",alias:"queryDatasource",description:"Queries a specific data source and returns the resulting data.",requestFormat:"json",parameters:[{name:"body",type:"Body",schema:zl}],response:Hl,errors:[{status:"default",schema:Ol},{status:404,schema:f.any()}]},{method:"post",path:"/read-metadata",alias:"readMetadata",description:"Requests metadata for a specific data source. The metadata provides information about the data fields, such as field names, data types, and descriptions.",requestFormat:"json",parameters:[{name:"body",type:"Body",schema:Ll}],response:Il,errors:[{status:404,schema:f.any()}]},{method:"get",path:"/simple-request",alias:"simpleRequest",description:"Sends a request that can be used for testing or doing a health check.",requestFormat:"json",response:f.string()}]),ji=[...Wl];var _t=class extends V{constructor(e,r){super(new Gl(e,ji),r)}queryDatasource=async e=>{try{return Vi(await this._apiClient.queryDatasource(e,{...this.authHeader}))}catch(r){if(Bi(this._apiClient.api,"queryDatasource",r))return r.response.status===404?Yt("feature-disabled"):Yt(r.response.data);if(r instanceof Ql)return Yt(r);throw r}};readMetadata=async e=>{try{return Vi(await this._apiClient.readMetadata(e,{...this.authHeader}))}catch(r){if(Bi(this._apiClient.api,"readMetadata",r)&&r.response.status===404)return Yt("feature-disabled");throw r}}};import{Zodios as Yl}from"@zodios/core";import{makeApi as $l,makeEndpoint as zi}from"@zodios/core";import{z as Le}from"zod";import{z as Z}from"zod";var Jr=Z.object({id:Z.string(),name:Z.string(),description:Z.string().optional(),webpageUrl:Z.string().optional(),contentUrl:Z.string(),project:Ot.optional(),showTabs:Z.coerce.boolean(),defaultViewId:Z.string().optional(),tags:Z.object({tag:Z.array(Z.object({label:Z.string()})).optional()}),views:Z.optional(Z.object({view:Z.array(Et)}))});var Zl=zi({method:"get",path:"/sites/:siteId/workbooks/:workbookId",alias:"getWorkbook",description:"Returns information about the specified workbook, including information about views and tags.",response:Le.object({workbook:Jr})}),Jl=zi({method:"get",path:"/sites/:siteId/workbooks",alias:"queryWorkbooksForSite",description:"Returns the workbooks on a site.",parameters:[...Me,{name:"siteId",type:"Path",schema:Le.string()},{name:"filter",type:"Query",schema:Le.string().optional(),description:"An expression that lets you specify a subset of workbooks to return. You can filter on predefined fields such as name, tags, and createdAt. You can include multiple filter expressions."}],response:Le.object({pagination:Ne,workbooks:Le.object({workbook:Le.optional(Le.array(Jr))})})}),Kl=$l([Jl,Zl]),Hi=[...Kl];var Rt=class extends V{constructor(e,r){super(new Yl(e,Hi),r)}getWorkbook=async({workbookId:e,siteId:r})=>(await this._apiClient.getWorkbook({params:{siteId:r,workbookId:e},...this.authHeader})).workbook;queryWorkbooksForSite=async({siteId:e,filter:r,pageSize:o,pageNumber:i})=>{let n=await this._apiClient.queryWorkbooksForSite({params:{siteId:e},queries:{filter:r,pageSize:o,pageNumber:i},...this.authHeader});return{pagination:n.pagination,workbooks:n.workbooks.workbook??[]}}};var Ct=class t{_creds;_host;_baseUrl;_baseUrlWithoutVersion;_authenticationMethods;_authenticatedAuthenticationMethods;_datasourcesMethods;_metadataMethods;_pulseMethods;_vizqlDataServiceMethods;_viewsMethods;_workbooksMethods;static _version="3.24";_requestInterceptor;_responseInterceptor;constructor(e,r){this._host=e,this._baseUrl=`${this._host}/api/${t._version}`,this._baseUrlWithoutVersion=`${this._host}/api/-`,this._requestInterceptor=r?.requestInterceptor,this._responseInterceptor=r?.responseInterceptor}get creds(){if(!this._creds)throw new Error("No credentials found. Authenticate by calling signIn() first.");return this._creds}get siteId(){return this.creds.site.id}get authenticationMethods(){return this._authenticationMethods||(this._authenticationMethods=new it(this._baseUrl),this._addInterceptors(this._baseUrl,this._authenticationMethods.interceptors)),this._authenticationMethods}get authenticatedAuthenticationMethods(){return this._authenticatedAuthenticationMethods||(this._authenticatedAuthenticationMethods=new It(this._baseUrl,this.creds),this._addInterceptors(this._baseUrl,this._authenticatedAuthenticationMethods.interceptors)),this._authenticatedAuthenticationMethods}get datasourcesMethods(){return this._datasourcesMethods||(this._datasourcesMethods=new st(this._baseUrl,this.creds),this._addInterceptors(this._baseUrl,this._datasourcesMethods.interceptors)),this._datasourcesMethods}get metadataMethods(){if(!this._metadataMethods){let e=`${this._host}/api/metadata`;this._metadataMethods=new nt(e,this.creds),this._addInterceptors(e,this._metadataMethods.interceptors)}return this._metadataMethods}get pulseMethods(){return this._pulseMethods||(this._pulseMethods=new bt(this._baseUrlWithoutVersion,this.creds),this._addInterceptors(this._baseUrlWithoutVersion,this._pulseMethods.interceptors)),this._pulseMethods}get vizqlDataServiceMethods(){if(!this._vizqlDataServiceMethods){let e=`${this._host}/api/v1/vizql-data-service`;this._vizqlDataServiceMethods=new _t(e,this.creds),this._addInterceptors(e,this._vizqlDataServiceMethods.interceptors)}return this._vizqlDataServiceMethods}get viewsMethods(){return this._viewsMethods||(this._viewsMethods=new Tt(this._baseUrl,this.creds),this._addInterceptors(this._baseUrl,this._viewsMethods.interceptors)),this._viewsMethods}get workbooksMethods(){return this._workbooksMethods||(this._workbooksMethods=new Rt(this._baseUrl,this.creds),this._addInterceptors(this._baseUrl,this._workbooksMethods.interceptors)),this._workbooksMethods}signIn=async e=>{this._creds=await this.authenticationMethods.signIn(e)};signOut=async()=>{await this.authenticatedAuthenticationMethods.signOut(),this._creds=void 0};_addInterceptors=(e,r)=>{r.request.use(o=>(this._requestInterceptor?.[0]({baseUrl:e,...Lt(o)}),o),o=>(this._requestInterceptor?.[1]?.(o,e),Promise.reject(o))),r.response.use(o=>(this._responseInterceptor?.[0]({baseUrl:e,...Dt(o)}),o),o=>(this._responseInterceptor?.[1]?.(o,e),Promise.reject(o)))}};var Xl=async(t,e,r,o)=>{let i=new Ct(t.server,{requestInterceptor:[ec(r,e),tc(r,e)],responseInterceptor:[rc(r,e),oc(r,e)]});return t.auth==="pat"?await i.signIn({type:"pat",patName:t.patName,patValue:t.patValue,siteName:t.siteName}):t.auth==="direct-trust"&&await i.signIn({type:"direct-trust",siteName:t.siteName,username:ic(t),clientId:t.connectedAppClientId,secretId:t.connectedAppSecretId,secretValue:t.connectedAppSecretValue,scopes:o,additionalPayload:sc(t)}),i},O=async({config:t,requestId:e,server:r,callback:o,jwtScopes:i})=>{let n=await Xl(t,e,r,new Set(i));try{return await o(n)}finally{await n.signOut()}},ec=(t,e)=>r=>(r.headers["User-Agent"]=`${t.name}/${t.version}`,Wi(t,r,e),r),tc=(t,e)=>(r,o)=>{if(!$e(r)||!r.request){oe.error(t,`Request ${e} failed with error: ${fe(r)}`,{logger:"rest-api",requestId:e});return}let{request:i}=r;Wi(t,{baseUrl:o,...Lt(i)},e)},rc=(t,e)=>r=>(Gi(t,r,e),r),oc=(t,e)=>(r,o)=>{if(!$e(r)||!r.response){oe.error(t,`Response from request ${e} failed with error: ${fe(r)}`,{logger:"rest-api",requestId:e});return}let{response:i}=r;Gi(t,{baseUrl:o,...Dt(i)},e)};function Wi(t,e,r){let i=x().disableLogMasking?e:yo(e),n=new URL(i.url??"",i.baseUrl);e.params&&Object.keys(e.params).length>0&&(n.search=new URLSearchParams(e.params).toString());let s={type:"request",requestId:r,method:i.method,url:n.toString(),...Te("debug")&&{headers:i.headers,data:i.data,params:i.params}};oe.info(t,s,{logger:"rest-api",requestId:r})}function Gi(t,e,r){let i=x().disableLogMasking?e:bo(e),n=new URL(i.url??"",i.baseUrl);e.request?.params&&Object.keys(e.request.params).length>0&&(n.search=new URLSearchParams(e.request.params).toString());let s={type:"response",requestId:r,url:n.toString(),status:i.status,...Te("debug")&&{headers:i.headers,data:i.data}};oe.info(t,s,{logger:"rest-api",requestId:r})}function ic(t){return t.jwtSubClaim}function sc(t){let e=t.jwtAdditionalPayload;return JSON.parse(e||"{}")}function Xt(){return["The VizQL Data Service is disabled on this Tableau Server.","To enable it, use TSM using the instructions at https://help.tableau.com/current/server-linux/en-us/cli_configuration-set_tsm.htm#featuresvizqldataservicedeploywithtsm."].join(" ")}import{ZodiosError as Qi}from"@zodios/core";import{fromError as nc,isZodErrorLike as ac}from"zod-validation-error";var I=class{server;name;description;paramsSchema;annotations;argsValidator;callback;constructor({server:e,name:r,description:o,paramsSchema:i,annotations:n,argsValidator:s,callback:l}){this.server=e,this.name=r,this.description=o,this.paramsSchema=i,this.annotations=n,this.argsValidator=s,this.callback=l}logInvocation({requestId:e,args:r}){oe.debug(this.server,fo({requestId:e,toolName:this.name,args:r}))}async logAndExecute({requestId:e,args:r,callback:o,getSuccessResult:i,getErrorText:n}){if(this.logInvocation({requestId:e,args:r}),r)try{this.argsValidator?.(r)}catch(s){return er(e,s)}try{let s=await o();return s.isOk()?i?i(s.value):{isError:!1,content:[{type:"text",text:JSON.stringify(s.value)}]}:s.error instanceof Qi?er(e,s.error):n?{isError:!0,content:[{type:"text",text:n(s.error)}]}:er(e,s.error)}catch(s){return er(e,s)}}};function er(t,e){if(e instanceof Qi&&ac(e.cause)){let r=nc(e.cause);return{isError:!1,content:[{type:"text",text:JSON.stringify({data:e.data,warning:r.toString()})}]}}return{isError:!0,content:[{type:"text",text:`requestId: ${t}, error: ${fe(e)}`}]}}function tr({datasourceLuid:t}){if(!t)throw new Error("datasourceLuid must be a non-empty string.")}import{z as v}from"zod";var lc=v.object({name:v.string(),dataType:v.string().or(v.null()),defaultAggregation:v.string().or(v.null()),description:v.string().or(v.null()),descriptionInherited:v.array(v.object({attribute:v.string(),value:v.string().or(v.null())}).or(v.null())).or(v.null()),dataCategory:v.string().or(v.null()),role:v.string().or(v.null()),defaultFormat:v.string().or(v.null()),semanticRole:v.string().or(v.null()),aggregation:v.string().or(v.null()),aggregationParam:v.string().or(v.null()),formula:v.string().or(v.null()),isAutoGenerated:v.boolean().or(v.null()),hasUserReference:v.boolean().or(v.null()),binSize:v.number().or(v.null())}).partial(),yy=v.object({fields:v.array(lc)});function Kr(t){let e={fields:[]};if(!t.data)return e;for(let r of t.data){let o={name:r.fieldCaption,dataType:r.dataType};r.defaultAggregation&&(o.defaultAggregation=r.defaultAggregation),e.fields.push(o)}return e}function Zi(t,e){let r={fields:[]};if(!t.data){if(e.data.publishedDatasources[0]?.fields.length)for(let o of e.data.publishedDatasources[0].fields){let i={name:o.name};o.dataType&&(i.dataType=o.dataType),o.aggregation&&(i.defaultAggregation=o.aggregation),$i(o,i),r.fields.push(i)}return r}for(let o of t.data){let i={name:o.fieldCaption,dataType:o.dataType};o.defaultAggregation&&(i.defaultAggregation=o.defaultAggregation),r.fields.push(i)}if(!e.data.publishedDatasources[0]?.fields.length)return r;for(let o of r.fields){let i=e.data.publishedDatasources[0].fields.find(n=>n.name===o.name);i&&$i(i,o)}return r}function $i(t,e){t.description&&(e.description=t.description),t.descriptionInherited?.length&&(e.descriptionInherited=t.descriptionInherited),t.dataCategory&&(e.dataCategory=t.dataCategory),t.role&&(e.role=t.role),t.defaultFormat&&(e.defaultFormat=t.defaultFormat),t.formula&&(e.formula=t.formula,t.isAutoGenerated!=null&&(e.isAutoGenerated=t.isAutoGenerated),t.hasUserReference!=null&&(e.hasUserReference=t.hasUserReference)),t.binSize!=null&&(e.binSize=t.binSize)}var dc=t=>`
|
|
16
|
+
- 'DEFINITION_VIEW_DEFAULT' - Return the metric definition and the default metric.`}],response:M.object({definitions:M.array($r)})}),Fl=Ke({method:"get",path:"/pulse/definitions/:pulseMetricDefinitionID/metrics",alias:"listPulseMetricsFromMetricDefinitionId",description:"Returns a list of published Pulse Metrics for a specific Pulse Metric Definition.",parameters:[{name:"pulseMetricDefinitionID",type:"Path",schema:M.string().nonempty()}],response:M.object({metrics:M.array(Kt),total_available:M.number()})}),Nl=Ke({method:"post",path:"/pulse/metrics%3AbatchGet",alias:"listPulseMetricsFromMetricIds",description:"Returns a list of Pulse Metrics for a list of metric IDs.",parameters:[{name:"metric_ids",type:"Body",schema:M.object({metric_ids:M.array(M.string().nonempty())})}],response:M.object({metrics:M.array(Kt)})}),kl=Ke({method:"get",path:"/pulse/subscriptions",alias:"listPulseMetricSubscriptionsForCurrentUser",description:"Returns a list of Pulse Subscriptions for the current user.",parameters:[{name:"user_id",type:"Query",schema:M.string().nonempty()}],response:M.object({subscriptions:M.array(Vi)})}),Ml=Ke({method:"post",path:"/pulse/insights/:bundle_type",alias:"generatePulseMetricValueInsightBundle",description:"Generates a bundle for the current aggregated value for the Pulse metric.",parameters:[{name:"bundle_request",type:"Body",schema:Yt},{name:"bundle_type",type:"Path",schema:M.enum(Xt)}],response:zi}),ql=Il([Ml,Ol,Pl,Fl,kl,Nl]),Wi=[...ql];var Et=class extends z{constructor(e,r){super(new Ul(e,Wi),r)}listAllPulseMetricDefinitions=async e=>await Ye(async()=>(await this._apiClient.listAllPulseMetricDefinitions({queries:{view:e},...this.authHeader})).definitions??[]);listPulseMetricDefinitionsFromMetricDefinitionIds=async(e,r)=>await Ye(async()=>(await this._apiClient.listPulseMetricDefinitionsFromMetricDefinitionIds({definition_ids:e},{queries:{view:r},...this.authHeader})).definitions??[]);listPulseMetricsFromMetricDefinitionId=async e=>await Ye(async()=>(await this._apiClient.listPulseMetricsFromMetricDefinitionId({params:{pulseMetricDefinitionID:e},...this.authHeader})).metrics??[]);listPulseMetricsFromMetricIds=async e=>await Ye(async()=>(await this._apiClient.listPulseMetricsFromMetricIds({metric_ids:e},{...this.authHeader})).metrics??[]);listPulseMetricSubscriptionsForCurrentUser=async()=>await Ye(async()=>(await this._apiClient.listPulseMetricSubscriptionsForCurrentUser({queries:{user_id:this.userId},...this.authHeader})).subscriptions??[]);generatePulseMetricValueInsightBundle=async(e,r)=>await Ye(async()=>await this._apiClient.generatePulseMetricValueInsightBundle({bundle_request:e.bundle_request},{params:{bundle_type:r},...this.authHeader})??{})};async function Ye(t){try{return new jl(await t())}catch(e){if(Je(e)){if(e.response?.status===404)return new Hi("tableau-server");if(e.response?.status===400&&e.response.headers.tableau_error_code==="0xd3408984"&&e.response.headers.validation_code==="400999")return new Hi("pulse-disabled")}throw e}}import{Zodios as Ql}from"@zodios/core";import{makeApi as Bl,makeEndpoint as er}from"@zodios/core";import{z as Y}from"zod";import{z as W}from"zod";var At=W.object({id:W.string(),name:W.string(),createdAt:W.string(),updatedAt:W.string(),workbook:W.object({id:W.string()}).optional(),owner:W.object({id:W.string()}).optional(),project:W.object({id:W.string()}).optional(),tags:W.object({tag:W.array(W.object({label:W.string()})).optional()}),usage:W.object({totalViewCount:W.coerce.number()}).optional()});var Vl=er({method:"get",path:"/sites/:siteId/views/:viewId/data",alias:"queryViewData",description:"Returns a specified view rendered as data in comma separated value (CSV) format.",response:Y.string()}),zl=er({method:"get",path:"/sites/:siteId/views/:viewId/image",alias:"queryViewImage",description:"Returns an image of the specified view.",parameters:[{name:"vizWidth",type:"Query",schema:Y.number().optional(),description:"The width of the rendered image in pixels that, along with the value of vizHeight determine its resolution and aspect ratio."},{name:"vizHeight",type:"Query",schema:Y.number().optional(),description:"The height of the rendered image in pixels that, along with the value of vizWidth determine its resolution and aspect ratio."},{name:"resolution",type:"Query",schema:Y.literal("high").optional(),description:"The resolution of the image. Image width and actual pixel density are determined by the display context of the image. Aspect ratio is always preserved. Set the value to high to ensure maximum pixel density."}],response:Y.string()}),Wl=er({method:"get",path:"/sites/:siteId/workbooks/:workbookId/views",alias:"queryViewsForWorkbook",description:"Returns all the views for the specified workbook, optionally including usage statistics.",parameters:[{name:"includeUsageStatistics",type:"Query",schema:Y.boolean().optional(),description:"true to return usage statistics. The default is false."}],response:Y.object({views:Y.object({view:Y.array(At)})})}),Hl=er({method:"get",path:"/sites/:siteId/views",alias:"queryViewsForSite",description:"Returns all the views for the specified site, optionally including usage statistics.",parameters:[...qe,{name:"includeUsageStatistics",type:"Query",schema:Y.boolean().optional(),description:"true to return usage statistics. The default is false."},{name:"filter",type:"Query",schema:Y.string().optional(),description:"An expression that lets you specify a subset of views to return. You can filter on predefined fields such as name, tags, and createdAt. You can include multiple filter expressions."}],response:Y.object({pagination:Me,views:Y.object({view:Y.array(At).optional()})})}),Gl=Bl([Vl,zl,Wl,Hl]),Gi=[...Gl];var St=class extends z{constructor(e,r){super(new Ql(e,Gi),r)}queryViewData=async({viewId:e,siteId:r})=>await this._apiClient.queryViewData({params:{siteId:r,viewId:e},...this.authHeader});queryViewImage=async({viewId:e,siteId:r,width:o,height:i,resolution:n})=>await this._apiClient.queryViewImage({params:{siteId:r,viewId:e},queries:{vizWidth:o,vizHeight:i,resolution:n},...this.authHeader,responseType:"arraybuffer"});queryViewsForWorkbook=async({workbookId:e,siteId:r,includeUsageStatistics:o})=>(await this._apiClient.queryViewsForWorkbook({params:{siteId:r,workbookId:e},queries:{includeUsageStatistics:o},...this.authHeader})).views.view;queryViewsForSite=async({siteId:e,includeUsageStatistics:r,filter:o,pageSize:i,pageNumber:n})=>{let s=await this._apiClient.queryViewsForSite({params:{siteId:e},queries:{includeUsageStatistics:r,filter:o,pageSize:i,pageNumber:n},...this.authHeader});return{pagination:s.pagination,views:s.views.view??[]}}};import{isErrorFromAlias as Ki,Zodios as fc,ZodiosError as hc}from"@zodios/core";import{Err as tr,Ok as Yi}from"ts-results-es";import{makeApi as $l}from"@zodios/core";import{z as f}from"zod";var Zl=f.object({connectionLuid:f.string().optional(),connectionUsername:f.string(),connectionPassword:f.string()}),Qi=f.object({datasourceLuid:f.string().nonempty(),connections:f.array(Zl).optional()}),Jl=f.enum(["OBJECTS","ARRAYS"]),$i=f.object({returnFormat:Jl,debug:f.boolean().default(!1)}).partial().passthrough(),Kl=f.object({datasource:Qi,options:$i.optional()}).passthrough(),Kr=f.enum(["SUM","AVG","MEDIAN","COUNT","COUNTD","MIN","MAX","STDEV","VAR","COLLECT","YEAR","QUARTER","MONTH","WEEK","DAY","TRUNC_YEAR","TRUNC_QUARTER","TRUNC_MONTH","TRUNC_WEEK","TRUNC_DAY","AGG","NONE","UNSPECIFIED"]),Yl=f.object({fieldName:f.string(),fieldCaption:f.string(),dataType:f.enum(["INTEGER","REAL","STRING","DATETIME","BOOLEAN","DATE","SPATIAL","UNKNOWN"]),defaultAggregation:Kr,logicalTableId:f.string()}).partial().passthrough(),Xl=f.object({data:f.array(Yl)}).partial().passthrough(),ec=f.object({errorCode:f.string(),message:f.string(),datetime:f.string().datetime({offset:!0}),debug:f.object({}).partial().passthrough(),"tab-error-code":f.string()}).partial().passthrough(),tc=f.enum(["ASC","DESC"]),Zr=f.object({fieldCaption:f.string(),fieldAlias:f.string().optional(),maxDecimalPlaces:f.number().int().optional(),sortDirection:tc.optional(),sortPriority:f.number().int().optional()}),rc=f.union([Zr.strict(),Zr.extend({function:Kr}).strict(),Zr.extend({calculation:f.string()}).strict()]),Zi=f.union([f.object({fieldCaption:f.string()}).strict(),f.object({fieldCaption:f.string(),function:Kr}).strict(),f.object({calculation:f.string()}).strict()]),Yr=f.object({field:Zi,context:f.boolean().optional()}),Xr=f.object({field:f.object({fieldCaption:f.string()}).strict(),context:f.boolean().optional()}),oc=Xr.extend({filterType:f.literal("SET"),values:f.union([f.array(f.string()),f.array(f.number()),f.array(f.boolean())]),exclude:f.boolean().optional()}),Xe=Xr.extend({filterType:f.literal("DATE"),periodType:f.enum(["MINUTES","HOURS","DAYS","WEEKS","MONTHS","QUARTERS","YEARS"]),anchorDate:f.string().optional(),includeNulls:f.boolean().optional()}),ic=f.discriminatedUnion("dateRangeType",[Xe.extend({dateRangeType:f.literal("CURRENT")}).strict(),Xe.extend({dateRangeType:f.literal("LAST")}).strict(),Xe.extend({dateRangeType:f.literal("NEXT")}).strict(),Xe.extend({dateRangeType:f.literal("TODATE")}).strict(),Xe.extend({dateRangeType:f.literal("LASTN"),rangeN:f.number().int()}).strict(),Xe.extend({dateRangeType:f.literal("NEXTN"),rangeN:f.number().int()}).strict()]),Jr=Xr.extend({filterType:f.literal("MATCH"),startsWith:f.string().optional(),endsWith:f.string().optional(),contains:f.string().optional(),exclude:f.boolean().optional()}),sc=f.union([Jr.extend({startsWith:f.string()}).strict(),Jr.extend({endsWith:f.string()}).strict(),Jr.extend({contains:f.string()}).strict()]),Ct=Yr.extend({filterType:f.literal("QUANTITATIVE_NUMERICAL")}),nc=f.discriminatedUnion("quantitativeFilterType",[Ct.extend({quantitativeFilterType:f.literal("RANGE"),min:f.number(),max:f.number(),includeNulls:f.boolean().optional()}).strict(),Ct.extend({quantitativeFilterType:f.literal("MIN"),min:f.number(),includeNulls:f.boolean().optional()}).strict(),Ct.extend({quantitativeFilterType:f.literal("MAX"),max:f.number(),includeNulls:f.boolean().optional()}).strict(),Ct.extend({quantitativeFilterType:f.literal("ONLY_NULL")}).strict(),Ct.extend({quantitativeFilterType:f.literal("ONLY_NON_NULL")}).strict()]),_t=Yr.extend({filterType:f.literal("QUANTITATIVE_DATE")}),ac=f.discriminatedUnion("quantitativeFilterType",[_t.extend({quantitativeFilterType:f.literal("RANGE"),minDate:f.string(),maxDate:f.string(),includeNulls:f.boolean().optional()}).strict(),_t.extend({quantitativeFilterType:f.literal("MIN"),minDate:f.string(),includeNulls:f.boolean().optional()}).strict(),_t.extend({quantitativeFilterType:f.literal("MAX"),maxDate:f.string(),includeNulls:f.boolean().optional()}).strict(),_t.extend({quantitativeFilterType:f.literal("ONLY_NULL")}).strict(),_t.extend({quantitativeFilterType:f.literal("ONLY_NON_NULL")}).strict()]),lc=Yr.extend({filterType:f.literal("TOP"),howMany:f.number().int(),fieldToMeasure:Zi,direction:f.enum(["TOP","BOTTOM"]).optional().default("TOP")}),cc=f.union([oc.strict(),lc.strict(),...sc.options,...nc.options,...ac.options,...ic.options]),Rt=f.strictObject({fields:f.array(rc),filters:f.array(cc).optional()}),uc=$i.and(f.object({disaggregate:f.boolean()}).partial().passthrough()),dc=f.object({datasource:Qi,query:Rt,options:uc.optional()}).passthrough(),pc=f.object({data:f.array(f.unknown())}).partial().passthrough(),mc=$l([{method:"post",path:"/query-datasource",alias:"queryDatasource",description:"Queries a specific data source and returns the resulting data.",requestFormat:"json",parameters:[{name:"body",type:"Body",schema:dc}],response:pc,errors:[{status:"default",schema:ec},{status:404,schema:f.any()}]},{method:"post",path:"/read-metadata",alias:"readMetadata",description:"Requests metadata for a specific data source. The metadata provides information about the data fields, such as field names, data types, and descriptions.",requestFormat:"json",parameters:[{name:"body",type:"Body",schema:Kl}],response:Xl,errors:[{status:404,schema:f.any()}]},{method:"get",path:"/simple-request",alias:"simpleRequest",description:"Sends a request that can be used for testing or doing a health check.",requestFormat:"json",response:f.string()}]),Ji=[...mc];var xt=class extends z{constructor(e,r){super(new fc(e,Ji),r)}queryDatasource=async e=>{try{return Yi(await this._apiClient.queryDatasource(e,{...this.authHeader}))}catch(r){if(Ki(this._apiClient.api,"queryDatasource",r))return r.response.status===404?tr("feature-disabled"):tr(r.response.data);if(r instanceof hc)return tr(r);throw r}};readMetadata=async e=>{try{return Yi(await this._apiClient.readMetadata(e,{...this.authHeader}))}catch(r){if(Ki(this._apiClient.api,"readMetadata",r)&&r.response.status===404)return tr("feature-disabled");throw r}}};import{Zodios as wc}from"@zodios/core";import{makeApi as gc,makeEndpoint as Xi}from"@zodios/core";import{z as De}from"zod";import{z as J}from"zod";var eo=J.object({id:J.string(),name:J.string(),description:J.string().optional(),webpageUrl:J.string().optional(),contentUrl:J.string(),project:Nt.optional(),showTabs:J.coerce.boolean(),defaultViewId:J.string().optional(),tags:J.object({tag:J.array(J.object({label:J.string()})).optional()}),views:J.optional(J.object({view:J.array(At)}))});var yc=Xi({method:"get",path:"/sites/:siteId/workbooks/:workbookId",alias:"getWorkbook",description:"Returns information about the specified workbook, including information about views and tags.",response:De.object({workbook:eo})}),bc=Xi({method:"get",path:"/sites/:siteId/workbooks",alias:"queryWorkbooksForSite",description:"Returns the workbooks on a site.",parameters:[...qe,{name:"siteId",type:"Path",schema:De.string()},{name:"filter",type:"Query",schema:De.string().optional(),description:"An expression that lets you specify a subset of workbooks to return. You can filter on predefined fields such as name, tags, and createdAt. You can include multiple filter expressions."}],response:De.object({pagination:Me,workbooks:De.object({workbook:De.optional(De.array(eo))})})}),Tc=gc([bc,yc]),es=[...Tc];var vt=class extends z{constructor(e,r){super(new wc(e,es),r)}getWorkbook=async({workbookId:e,siteId:r})=>(await this._apiClient.getWorkbook({params:{siteId:r,workbookId:e},...this.authHeader})).workbook;queryWorkbooksForSite=async({siteId:e,filter:r,pageSize:o,pageNumber:i})=>{let n=await this._apiClient.queryWorkbooksForSite({params:{siteId:e},queries:{filter:r,pageSize:o,pageNumber:i},...this.authHeader});return{pagination:n.pagination,workbooks:n.workbooks.workbook??[]}}};var Lt=class t{_creds;_host;_baseUrl;_baseUrlWithoutVersion;_authenticationMethods;_authenticatedAuthenticationMethods;_contentExplorationMethods;_datasourcesMethods;_metadataMethods;_pulseMethods;_vizqlDataServiceMethods;_viewsMethods;_workbooksMethods;static _version="3.24";_requestInterceptor;_responseInterceptor;constructor(e,r){this._host=e,this._baseUrl=`${this._host}/api/${t._version}`,this._baseUrlWithoutVersion=`${this._host}/api/-`,this._requestInterceptor=r?.requestInterceptor,this._responseInterceptor=r?.responseInterceptor}get creds(){if(!this._creds)throw new Error("No credentials found. Authenticate by calling signIn() first.");return this._creds}get siteId(){return this.creds.site.id}get authenticationMethods(){return this._authenticationMethods||(this._authenticationMethods=new nt(this._baseUrl),this._addInterceptors(this._baseUrl,this._authenticationMethods.interceptors)),this._authenticationMethods}get authenticatedAuthenticationMethods(){return this._authenticatedAuthenticationMethods||(this._authenticatedAuthenticationMethods=new Ft(this._baseUrl,this.creds),this._addInterceptors(this._baseUrl,this._authenticatedAuthenticationMethods.interceptors)),this._authenticatedAuthenticationMethods}get contentExplorationMethods(){return this._contentExplorationMethods||(this._contentExplorationMethods=new at(this._baseUrlWithoutVersion,this.creds),this._addInterceptors(this._baseUrlWithoutVersion,this._contentExplorationMethods.interceptors)),this._contentExplorationMethods}get datasourcesMethods(){return this._datasourcesMethods||(this._datasourcesMethods=new lt(this._baseUrl,this.creds),this._addInterceptors(this._baseUrl,this._datasourcesMethods.interceptors)),this._datasourcesMethods}get metadataMethods(){if(!this._metadataMethods){let e=`${this._host}/api/metadata`;this._metadataMethods=new ct(e,this.creds),this._addInterceptors(e,this._metadataMethods.interceptors)}return this._metadataMethods}get pulseMethods(){return this._pulseMethods||(this._pulseMethods=new Et(this._baseUrlWithoutVersion,this.creds),this._addInterceptors(this._baseUrlWithoutVersion,this._pulseMethods.interceptors)),this._pulseMethods}get vizqlDataServiceMethods(){if(!this._vizqlDataServiceMethods){let e=`${this._host}/api/v1/vizql-data-service`;this._vizqlDataServiceMethods=new xt(e,this.creds),this._addInterceptors(e,this._vizqlDataServiceMethods.interceptors)}return this._vizqlDataServiceMethods}get viewsMethods(){return this._viewsMethods||(this._viewsMethods=new St(this._baseUrl,this.creds),this._addInterceptors(this._baseUrl,this._viewsMethods.interceptors)),this._viewsMethods}get workbooksMethods(){return this._workbooksMethods||(this._workbooksMethods=new vt(this._baseUrl,this.creds),this._addInterceptors(this._baseUrl,this._workbooksMethods.interceptors)),this._workbooksMethods}signIn=async e=>{this._creds=await this.authenticationMethods.signIn(e)};signOut=async()=>{await this.authenticatedAuthenticationMethods.signOut(),this._creds=void 0};_addInterceptors=(e,r)=>{r.request.use(o=>(this._requestInterceptor?.[0]({baseUrl:e,...Ot(o)}),o),o=>(this._requestInterceptor?.[1]?.(o,e),Promise.reject(o))),r.response.use(o=>(this._responseInterceptor?.[0]({baseUrl:e,...Pt(o)}),o),o=>(this._responseInterceptor?.[1]?.(o,e),Promise.reject(o)))}};var Ec=async(t,e,r,o)=>{let i=new Lt(t.server,{requestInterceptor:[Ac(r,e),Sc(r,e)],responseInterceptor:[Cc(r,e),_c(r,e)]});return t.auth==="pat"?await i.signIn({type:"pat",patName:t.patName,patValue:t.patValue,siteName:t.siteName}):t.auth==="direct-trust"&&await i.signIn({type:"direct-trust",siteName:t.siteName,username:Rc(t),clientId:t.connectedAppClientId,secretId:t.connectedAppSecretId,secretValue:t.connectedAppSecretValue,scopes:o,additionalPayload:xc(t)}),i},P=async({config:t,requestId:e,server:r,callback:o,jwtScopes:i})=>{let n=await Ec(t,e,r,new Set(i));try{return await o(n)}finally{await n.signOut()}},Ac=(t,e)=>r=>(r.headers["User-Agent"]=`${t.name}/${t.version}`,ts(t,r,e),r),Sc=(t,e)=>(r,o)=>{if(!Je(r)||!r.request){ie.error(t,`Request ${e} failed with error: ${he(r)}`,{logger:"rest-api",requestId:e});return}let{request:i}=r;ts(t,{baseUrl:o,...Ot(i)},e)},Cc=(t,e)=>r=>(rs(t,r,e),r),_c=(t,e)=>(r,o)=>{if(!Je(r)||!r.response){ie.error(t,`Response from request ${e} failed with error: ${he(r)}`,{logger:"rest-api",requestId:e});return}let{response:i}=r;rs(t,{baseUrl:o,...Pt(i)},e)};function ts(t,e,r){let i=R().disableLogMasking?e:Eo(e),n=new URL(i.url??"",i.baseUrl);e.params&&Object.keys(e.params).length>0&&(n.search=new URLSearchParams(e.params).toString());let s={type:"request",requestId:r,method:i.method,url:n.toString(),...Ee("debug")&&{headers:i.headers,data:i.data,params:i.params}};ie.info(t,s,{logger:"rest-api",requestId:r})}function rs(t,e,r){let i=R().disableLogMasking?e:Ao(e),n=new URL(i.url??"",i.baseUrl);e.request?.params&&Object.keys(e.request.params).length>0&&(n.search=new URLSearchParams(e.request.params).toString());let s={type:"response",requestId:r,url:n.toString(),status:i.status,...Ee("debug")&&{headers:i.headers,data:i.data}};ie.info(t,s,{logger:"rest-api",requestId:r})}function Rc(t){return t.jwtSubClaim}function xc(t){let e=t.jwtAdditionalPayload;return JSON.parse(e||"{}")}import{ZodiosError as os}from"@zodios/core";import{fromError as vc,isZodErrorLike as Lc}from"zod-validation-error";var O=class{server;name;description;paramsSchema;annotations;argsValidator;callback;constructor({server:e,name:r,description:o,paramsSchema:i,annotations:n,argsValidator:s,callback:l}){this.server=e,this.name=r,this.description=o,this.paramsSchema=i,this.annotations=n,this.argsValidator=s,this.callback=l}logInvocation({requestId:e,args:r}){ie.debug(this.server,bo({requestId:e,toolName:this.name,args:r}))}async logAndExecute({requestId:e,args:r,callback:o,getSuccessResult:i,getErrorText:n}){if(this.logInvocation({requestId:e,args:r}),r)try{this.argsValidator?.(r)}catch(s){return rr(e,s)}try{let s=await o();return s.isOk()?i?i(s.value):{isError:!1,content:[{type:"text",text:JSON.stringify(s.value)}]}:s.error instanceof os?rr(e,s.error):n?{isError:!0,content:[{type:"text",text:n(s.error)}]}:rr(e,s.error)}catch(s){return rr(e,s)}}};function rr(t,e){if(e instanceof os&&Lc(e.cause)){let r=vc(e.cause);return{isError:!1,content:[{type:"text",text:JSON.stringify({data:e.data,warning:r.toString()})}]}}return{isError:!0,content:[{type:"text",text:`requestId: ${t}, error: ${he(e)}`}]}}function is(t){let e=new Set;return t.flatMap(r=>e.has(r.method)?[]:(e.add(r.method),r.method+(r.sortDirection?`:${r.sortDirection}`:""))).join(",")}function ss(t){let e=[];if(t.contentTypes)if(t.contentTypes.length===1)e.push(`type:eq:${t.contentTypes[0]}`);else{let r=new Set;for(let o of t.contentTypes)r.add(o);e.push(`type:in:[${Array.from(r).join(",")}]`)}if(t.ownerIds)if(t.ownerIds.length===1)e.push(`ownerId:eq:${t.ownerIds[0]}`);else{let r=new Set;for(let o of t.ownerIds)r.add(o);e.push(`ownerId:in:[${Array.from(r).join(",")}]`)}if(t.modifiedTime)if(Array.isArray(t.modifiedTime))if(t.modifiedTime.length===1)e.push(`modifiedTime:eq:${t.modifiedTime[0]}`);else{let r=new Set;for(let o of t.modifiedTime)r.add(o);e.push(`modifiedTime:in:[${Array.from(r).join(",")}]`)}else if(t.modifiedTime.startDate&&t.modifiedTime.endDate){let r=t.modifiedTime.startDate,o=t.modifiedTime.endDate;r>o&&(r=t.modifiedTime.endDate,o=t.modifiedTime.startDate),e.push(`modifiedTime:gte:${r}`),e.push(`modifiedTime:lte:${o}`)}else t.modifiedTime.startDate?e.push(`modifiedTime:gte:${t.modifiedTime.startDate}`):t.modifiedTime.endDate&&e.push(`modifiedTime:lte:${t.modifiedTime.endDate}`);return e.join(",")}function ns(t){let e=[];if(t.items)for(let r of t.items)e.push(Dc(r.content));return e}function Dc(t){let e={};return t.modifiedTime&&(e.modifiedTime=t.modifiedTime),t.sheetType&&(e.sheetType=t.sheetType),t.caption&&(e.caption=t.caption),t.workbookDescription&&(e.workbookDescription=t.workbookDescription),t.type&&(e.type=t.type),t.ownerId&&(e.ownerId=t.ownerId),t.title&&(e.title=t.title),t.ownerName&&(e.ownerName=t.ownerName),t.containerName&&(t.type==="view"?e.parentWorkbookName=t.containerName:e.containerName=t.containerName),t.luid&&(e.luid=t.luid),t.locationName&&(e.locationName=t.locationName),t.comments?.length&&(e.comments=t.comments),t.hitsTotal!=null&&(e.totalViewCount=t.hitsTotal),t.favoritesTotal!=null&&(e.favoritesTotal=t.favoritesTotal),t.tags?.length&&(e.tags=t.tags),t.projectName&&(e.projectName=t.projectName),t.hitsSmallSpanTotal!=null&&(e.viewCountLastMonth=t.hitsSmallSpanTotal),t.downstreamWorkbookCount!=null&&(e.downstreamWorkbookCount=t.downstreamWorkbookCount),t.isConnectable!=null&&(e.isConnectable=t.isConnectable),t.datasourceIsPublished!=null&&(e.datasourceIsPublished=t.datasourceIsPublished),t.connectionType&&(e.connectionType=t.connectionType),t.isCertified!=null&&(e.isCertified=t.isCertified),t.hasExtracts!=null&&(e.hasExtracts=t.hasExtracts),t.extractRefreshedAt&&(e.extractRefreshedAt=t.extractRefreshedAt),t.extractUpdatedAt&&(e.extractUpdatedAt=t.extractUpdatedAt),t.connectedWorkbooksCount!=null&&(e.connectedWorkbooksCount=t.connectedWorkbooksCount),t.extractCreationPending!=null&&(e.extractCreationPending=t.extractCreationPending),t.hasSevereDataQualityWarning!=null&&(e.hasSevereDataQualityWarning=t.hasSevereDataQualityWarning),t.datasourceLuid&&(e.datasourceLuid=t.datasourceLuid),t.hasActiveDataQualityWarning!=null&&(e.hasActiveDataQualityWarning=t.hasActiveDataQualityWarning),e}var Oc={terms:as.string().trim().nonempty().optional(),limit:as.number().int().min(1).max(2e3).default(100).optional(),orderBy:vo.optional(),filter:Io.optional()},ls=t=>{let e=new O({server:t,name:"search-content",description:"\nThis tool searches across all supported content types for objects relevant to the search expression specified by search terms and filters.\n\n**Parameters:**\n\n- `terms` (optional): A string containing one or more search terms that the search uses as the basis for determining which items are relevant to return. If the terms parameter is not provided, it searches for everything bound by the specified filters.\n\n- `filter` (optional): Allows you to limit search results based on:\n - `contentTypes`: Filter by content types. Supported types are: 'lens', 'datasource', 'virtualconnection', 'collection', 'project', 'flow', 'datarole', 'table', 'database', 'view', 'workbook'\n - `ownerIds`: Filter by specific owner IDs (array of integers)\n - `modifiedTime`: Filter by last modified times using ISO 8601 date-time strings. Can be either a range (with startDate/endDate) or an array of specific date-times to include\n\n- `limit` (optional): The number of items to return in the search response (default: 100, max: 2000)\n\n- `orderBy` (optional): Determines the sorting method for returned items. Available sorting methods:\n - `hitsTotal`: Number of times a content item has been viewed since it was created\n - `hitsSmallSpanTotal`: Number of times a content item was viewed in the last month\n - `hitsMediumSpanTotal`: Number of times a content item was viewed in the last 3 months\n - `hitsLargeSpanTotal`: Number of times a content item was viewed in the last year\n - `downstreamWorkbookCount`: Number of workbooks in a given project. This value is only available when the content type filter includes 'database' or 'table'\n \n For each sort method, you can specify a sort direction: 'asc' for ascending or 'desc' for descending (default: 'asc'). The orderBy parameter is an array of objects containing the sorting method and direction. The first element determines primary sorting, with subsequent elements used as tiebreakers.\n\n**Important Notes:**\n- If `orderBy` is omitted, the search will sort items by their \"relevance score\" in descending order, which is Tableau's internal algorithm for providing the most relevant results",paramsSchema:Oc,annotations:{title:"Search Content",readOnlyHint:!0,openWorldHint:!1},callback:async({terms:r,limit:o,orderBy:i,filter:n},{requestId:s})=>{let l=R(),u=i?is(i):void 0,p=n?ss(n):void 0;return await e.logAndExecute({requestId:s,args:{},callback:async()=>new Ic(await P({config:l,requestId:s,server:t,jwtScopes:["tableau:content:read"],callback:async c=>{let h=await c.contentExplorationMethods.searchContent({terms:r,page:0,limit:l.maxResultLimit?Math.min(l.maxResultLimit,o??100):o??100,orderBy:u,filter:p});return ns(h)}}))})}});return e};import{Err as Fc,Ok as ro}from"ts-results-es";import{z as Nc}from"zod";function or(){return["The VizQL Data Service is disabled on this Tableau Server.","To enable it, use TSM using the instructions at https://help.tableau.com/current/server-linux/en-us/cli_configuration-set_tsm.htm#featuresvizqldataservicedeploywithtsm."].join(" ")}function ir({datasourceLuid:t}){if(!t)throw new Error("datasourceLuid must be a non-empty string.")}import{z as v}from"zod";var Pc=v.object({name:v.string(),dataType:v.string().or(v.null()),defaultAggregation:v.string().or(v.null()),description:v.string().or(v.null()),descriptionInherited:v.array(v.object({attribute:v.string(),value:v.string().or(v.null())}).or(v.null())).or(v.null()),dataCategory:v.string().or(v.null()),role:v.string().or(v.null()),defaultFormat:v.string().or(v.null()),semanticRole:v.string().or(v.null()),aggregation:v.string().or(v.null()),aggregationParam:v.string().or(v.null()),formula:v.string().or(v.null()),isAutoGenerated:v.boolean().or(v.null()),hasUserReference:v.boolean().or(v.null()),binSize:v.number().or(v.null())}).partial(),cb=v.object({fields:v.array(Pc)});function to(t){let e={fields:[]};if(!t.data)return e;for(let r of t.data){let o={name:r.fieldCaption,dataType:r.dataType};r.defaultAggregation&&(o.defaultAggregation=r.defaultAggregation),e.fields.push(o)}return e}function us(t,e){let r={fields:[]};if(!t.data){if(e.data.publishedDatasources[0]?.fields.length)for(let o of e.data.publishedDatasources[0].fields){let i={name:o.name};o.dataType&&(i.dataType=o.dataType),o.aggregation&&(i.defaultAggregation=o.aggregation),cs(o,i),r.fields.push(i)}return r}for(let o of t.data){let i={name:o.fieldCaption,dataType:o.dataType};o.defaultAggregation&&(i.defaultAggregation=o.defaultAggregation),r.fields.push(i)}if(!e.data.publishedDatasources[0]?.fields.length)return r;for(let o of r.fields){let i=e.data.publishedDatasources[0].fields.find(n=>n.name===o.name);i&&cs(i,o)}return r}function cs(t,e){t.description&&(e.description=t.description),t.descriptionInherited?.length&&(e.descriptionInherited=t.descriptionInherited),t.dataCategory&&(e.dataCategory=t.dataCategory),t.role&&(e.role=t.role),t.defaultFormat&&(e.defaultFormat=t.defaultFormat),t.formula&&(e.formula=t.formula,t.isAutoGenerated!=null&&(e.isAutoGenerated=t.isAutoGenerated),t.hasUserReference!=null&&(e.hasUserReference=t.hasUserReference)),t.binSize!=null&&(e.binSize=t.binSize)}var kc=t=>`
|
|
17
17
|
query datasourceFieldInfo {
|
|
18
18
|
publishedDatasources(filter: { luid: "${t}" }) {
|
|
19
19
|
name
|
|
@@ -74,11 +74,11 @@ var ks=Object.defineProperty;var qs=(t,e)=>{for(var r in e)ks(t,r,{get:e[r],enum
|
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
}`,
|
|
77
|
+
}`,Mc={datasourceLuid:Nc.string().nonempty()},ds=t=>{let e=new O({server:t,name:"get-datasource-metadata",description:`
|
|
78
78
|
This tool retrieves field metadata for a specified datasource by taking the basic, high level, metadata results from Tableau's VizQL Data Service and enriches them with additional context provided by Tableau's Metadata API.
|
|
79
79
|
The fields provided by this tool will contain properties such as name and dataType, but may also expose richer context such as descriptions, dataCategories, roles, etc.
|
|
80
80
|
This tool should be used for getting the metadata to ground the use of a tool that queries Tableau published data sources.
|
|
81
|
-
`,paramsSchema:
|
|
81
|
+
`,paramsSchema:Mc,annotations:{title:"Get Datasource Metadata",readOnlyHint:!0,openWorldHint:!1},argsValidator:ir,callback:async({datasourceLuid:r},{requestId:o})=>{let i=R(),n=kc(r);return await e.logAndExecute({requestId:o,args:{datasourceLuid:r},callback:async()=>await P({config:i,requestId:o,server:t,jwtScopes:["tableau:content:read","tableau:viz_data_service:read"],callback:async s=>{let l=await s.vizqlDataServiceMethods.readMetadata({datasource:{datasourceLuid:r}});if(l.isErr())return Fc({type:"feature-disabled"});if(i.disableMetadataApiRequests)return ro(to(l.value));let u;try{u=await s.metadataMethods.graphql(n)}catch{return ro(to(l.value))}return ro(us(l.value,u))}}),getErrorText:s=>{switch(s.type){case"feature-disabled":return or()}}})}});return e};import{Ok as zc}from"ts-results-es";import{z as io}from"zod";import{z as sr}from"zod";var qc=sr.object({pageSize:sr.coerce.number().gt(0),pageNumber:sr.coerce.number().gt(0),limit:sr.coerce.number().gt(0)}).partial();async function et({pageConfig:t,getDataFn:e}){let{pageSize:r,limit:o}=qc.parse(t),{pagination:i,data:n}=await e(t),s=[...n],{totalAvailable:l,pageNumber:u}=i;for(;l>s.length&&(!o||o>s.length);){let{pagination:p,data:c}=await e({pageSize:r,pageNumber:u+1,limit:o});if(c.length===0)throw new Error(`No more data available. Last fetched page number: ${u}, Total available: ${l}, Total fetched: ${s.length}`);({totalAvailable:l,pageNumber:u}=p),s.push(...c)}return o&&o<s.length&&(s.length=o),s}var tt="**Supported Operators**\n - `eq`: equals\n - `gt`: greater than\n - `gte`: greater than or equal\n - `in`: any of [list] (for searching tags)\n - `lt`: less than\n - `lte`: less than or equal\n \n **Filter Expression Notes**\n - Filter expressions can't contain ampersand (&) or comma (,) characters even if those characters are encoded.\n - Operators are delimited with colons (:). For example: `filter=name:eq:Project Views`\n - Field names, operator names, and values are case-sensitive.\n - To filter on multiple fields, combine expressions using a comma: `filter=lastLogin:gte:2016-01-01T00:00:00Z,siteRole:eq:Publisher`\n - Multiple expressions are combined using a logical AND.\n - If you include the same field multiple times, only the last reference is used.\n - For date-time values, use ISO 8601 format (e.g., `2016-05-04T21:24:49Z`).\n - Wildcard searches (starts with, ends with, contains) are supported in recent Tableau versions:\n - Starts with: `?filter=name:eq:mark*`\n - Ends with: `?filter=name:eq:*-ample`\n - Contains: `?filter=name:eq:mark*ex*`";import{z as oo}from"zod";import Uc from"zod";var Ie=Uc.enum(["eq","in","gt","gte","lt","lte"]);function jc(t){return/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$/.test(t)}var Bc=["createdAt","updatedAt"];function rt({filterString:t,allowedOperatorsByField:e,filterFieldSchema:r}){function o(s,l){return e[s].includes(l)}let i=t.split(",").map(s=>s.trim()).filter(Boolean),n={};for(let s of i){let[l,u,...p]=s.split(":");if(!l||!u||p.length===0)throw new Error(`Invalid filter expression format: "${s}"`);let c=p.join(":"),h=r.parse(l),b=Ie.parse(u);if(!o(h,b))throw new Error(`Operator '${b}' is not allowed for field '${h}'. Allowed operators: ${e[h].join(", ")}`);if(Bc.includes(h)&&!jc(c))throw new Error(`Value for field '${h}' must be a valid ISO 8601 date-time string (e.g., 2016-05-04T21:24:49Z)`);n[h]={field:h,operator:b,value:c}}return Object.values(n).map(s=>`${s.field}:${s.operator}:${s.value}`).join(",")}var ps=oo.enum(["authenticationType","connectedWorkbookType","connectionTo","connectionType","contentUrl","createdAt","databaseName","databaseUserName","description","favoritesTotal","hasAlert","hasEmbeddedPassword","hasExtracts","isCertified","isConnectable","isDefaultPort","isHierarchical","isPublished","name","ownerDomain","ownerEmail","ownerName","projectName","serverName","serverPort","size","tableName","tags","type","updatedAt"]),Vc={authenticationType:["eq","in"],connectedWorkbookType:["eq","gt","gte","lt","lte"],connectionTo:["eq","in"],connectionType:["eq","in"],contentUrl:["eq","in"],createdAt:["eq","gt","gte","lt","lte"],databaseName:["eq","in"],databaseUserName:["eq","in"],description:["eq","in"],favoritesTotal:["eq","gt","gte","lt","lte"],hasAlert:["eq"],hasEmbeddedPassword:["eq"],hasExtracts:["eq"],isCertified:["eq"],isConnectable:["eq"],isDefaultPort:["eq"],isHierarchical:["eq"],isPublished:["eq"],name:["eq","in"],ownerDomain:["eq","in"],ownerEmail:["eq"],ownerName:["eq","in"],projectName:["eq","in"],serverName:["eq","in"],serverPort:["eq"],size:["eq","gt","gte","lt","lte"],tableName:["eq","in"],tags:["eq","in"],type:["eq"],updatedAt:["eq","gt","gte","lt","lte"]},Lb=oo.object({field:ps,operator:Ie,value:oo.string()});function ms(t){return rt({filterString:t,allowedOperatorsByField:Vc,filterFieldSchema:ps})}var Wc={filter:io.string().optional(),pageSize:io.number().gt(0).optional(),limit:io.number().gt(0).optional()},fs=t=>{let e=new O({server:t,name:"list-datasources",description:`
|
|
82
82
|
Retrieves a list of published data sources from a specified Tableau site using the Tableau REST API. Supports optional filtering via field:operator:value expressions (e.g., name:eq:Views) for precise and flexible data source discovery. Use this tool when a user requests to list, search, or filter Tableau data sources on a site.
|
|
83
83
|
|
|
84
84
|
**Supported Filter Fields and Operators**
|
|
@@ -115,7 +115,7 @@ var ks=Object.defineProperty;var qs=(t,e)=>{for(var r in e)ks(t,r,{get:e[r],enum
|
|
|
115
115
|
| type | eq |
|
|
116
116
|
| updatedAt | eq, gt, gte, lt, lte |
|
|
117
117
|
|
|
118
|
-
${
|
|
118
|
+
${tt}
|
|
119
119
|
|
|
120
120
|
**Example Usage:**
|
|
121
121
|
- List all data sources on a site
|
|
@@ -127,7 +127,7 @@ var ks=Object.defineProperty;var qs=(t,e)=>{for(var r in e)ks(t,r,{get:e[r],enum
|
|
|
127
127
|
filter: "createdAt:gt:2023-01-01T00:00:00Z"
|
|
128
128
|
- List data sources with the name "Project Views" in the "Finance" project and created after January 1, 2023:
|
|
129
129
|
filter: "name:eq:Project Views,projectName:eq:Finance,createdAt:gt:2023-01-01T00:00:00Z"
|
|
130
|
-
`,paramsSchema:
|
|
130
|
+
`,paramsSchema:Wc,annotations:{title:"List Datasources",readOnlyHint:!0,openWorldHint:!1},callback:async({filter:r,pageSize:o,limit:i},{requestId:n})=>{let s=R(),l=r?ms(r):void 0;return await e.logAndExecute({requestId:n,args:{filter:r,pageSize:o,limit:i},callback:async()=>{let u=await P({config:s,requestId:n,server:t,jwtScopes:["tableau:content:read"],callback:async p=>await et({pageConfig:{pageSize:o,limit:s.maxResultLimit?Math.min(s.maxResultLimit,i??Number.MAX_SAFE_INTEGER):i},getDataFn:async h=>{let{pagination:b,datasources:E}=await p.datasourcesMethods.listDatasources({siteId:p.siteId,filter:l??"",pageSize:h.pageSize,pageNumber:h.pageNumber});return{pagination:b,data:E}}})});return new zc(u)}})}});return e};import hs from"zod";function se(t){switch(t){case"tableau-server":return["Pulse is not available on Tableau Server.","Consider disabling the Pulse MCP tools in your client or removing them using the EXCLUDE_TOOLS environment variable.","To enable Pulse on your Tableau Cloud site, please see the instructions at https://help.tableau.com/current/online/en-us/pulse_set_up.htm."].join(" ");case"pulse-disabled":return["Pulse is disabled on this Tableau Cloud site.","To enable Pulse, please see the instructions at https://help.tableau.com/current/online/en-us/pulse_set_up.htm."].join(" ")}}var Hc={bundleRequest:Yt,bundleType:hs.optional(hs.enum(Xt))},gs=t=>{let e=new O({server:t,name:"generate-pulse-metric-value-insight-bundle",description:`
|
|
131
131
|
Generate an insight bundle for the current aggregated value for Pulse Metric using Tableau REST API. You need the full information of the Pulse Metric and Pulse Metric Definition to use this tool.
|
|
132
132
|
|
|
133
133
|
**Parameters:**
|
|
@@ -234,7 +234,7 @@ Generate an insight bundle for the current aggregated value for Pulse Metric usi
|
|
|
234
234
|
- Generate the detail insight bundle for the Pulse metric:
|
|
235
235
|
bundleType: 'detail',
|
|
236
236
|
bundleRequest: (See default example above)
|
|
237
|
-
`,paramsSchema:
|
|
237
|
+
`,paramsSchema:Hc,annotations:{title:"Generate Pulse Metric Value Insight Bundle",readOnlyHint:!0,openWorldHint:!1},callback:async({bundleRequest:r,bundleType:o},{requestId:i})=>{let n=R();return await e.logAndExecute({requestId:i,args:{bundleRequest:r,bundleType:o},callback:async()=>await P({config:n,requestId:i,server:t,jwtScopes:["tableau:insights:read"],callback:async s=>await s.pulseMethods.generatePulseMetricValueInsightBundle(r,o??"ban")}),getErrorText:se})}});return e};import{z as ys}from"zod";var Gc={view:ys.optional(ys.enum(Le))},bs=t=>{let e=new O({server:t,name:"list-all-pulse-metric-definitions",description:`
|
|
238
238
|
Retrieves a list of all published Pulse Metric Definitions using the Tableau REST API. Use this tool when a user requests to list all Tableau Pulse Metric Definitions on the current site.
|
|
239
239
|
|
|
240
240
|
**Parameters:**
|
|
@@ -255,7 +255,7 @@ Retrieves a list of all published Pulse Metric Definitions using the Tableau RES
|
|
|
255
255
|
- See all metrics for my Pulse Metric Definitions:
|
|
256
256
|
view: 'DEFINITION_VIEW_FULL'
|
|
257
257
|
In the response you will only get up to 5 metrics, so if you want to see more you need to retrieve all the Pulse Metrics from another tool.
|
|
258
|
-
`,paramsSchema:
|
|
258
|
+
`,paramsSchema:Gc,annotations:{title:"List All Pulse Metric Definitions",readOnlyHint:!0,openWorldHint:!1},callback:async({view:r},{requestId:o})=>{let i=R();return await e.logAndExecute({requestId:o,args:{view:r},callback:async()=>await P({config:i,requestId:o,server:t,jwtScopes:["tableau:insight_definitions_metrics:read"],callback:async n=>await n.pulseMethods.listAllPulseMetricDefinitions(r)}),getErrorText:se})}});return e};import{z as nr}from"zod";var Qc={metricDefinitionIds:nr.array(nr.string().length(36)).min(1),view:nr.optional(nr.enum(Le))},Ts=t=>{let e=new O({server:t,name:"list-pulse-metric-definitions-from-definition-ids",description:`
|
|
259
259
|
Retrieves a list of specific Pulse Metric Definitions using the Tableau REST API from a list of metric definition IDs. Use this tool when a user requests information about specific Pulse Metric Definitions on the current site.
|
|
260
260
|
|
|
261
261
|
**Parameters:**
|
|
@@ -284,7 +284,7 @@ Retrieves a list of specific Pulse Metric Definitions using the Tableau REST API
|
|
|
284
284
|
metricDefinitionIds: ['BBC908D8-29ED-48AB-A78E-ACF8A424C8C3', 'BBC908D8-29ED-48AB-A78E-ACF8A424C8C4'],
|
|
285
285
|
view: 'DEFINITION_VIEW_FULL'
|
|
286
286
|
In the response you will only get up to 5 metrics, so if you want to see more you need to retrieve all the Pulse Metrics from another tool.
|
|
287
|
-
`,paramsSchema:
|
|
287
|
+
`,paramsSchema:Qc,annotations:{title:"List Pulse Metric Definitions from Metric Definition IDs",readOnlyHint:!0,openWorldHint:!1},callback:async({view:r,metricDefinitionIds:o},{requestId:i})=>{let n=R();return await e.logAndExecute({requestId:i,args:{metricDefinitionIds:o,view:r},callback:async()=>await P({config:n,requestId:i,server:t,jwtScopes:["tableau:insight_definitions_metrics:read"],callback:async s=>await s.pulseMethods.listPulseMetricDefinitionsFromMetricDefinitionIds(o,r)}),getErrorText:se})}});return e};import{z as $c}from"zod";var Zc={pulseMetricDefinitionID:$c.string().length(36)},ws=t=>{let e=new O({server:t,name:"list-pulse-metrics-from-metric-definition-id",description:`
|
|
288
288
|
Retrieves a list of published Pulse Metrics from a Pulse Metric Definition using the Tableau REST API. Use this tool when a user requests to list Tableau Pulse Metrics for a specific Pulse Metric Definition on the current site.
|
|
289
289
|
|
|
290
290
|
**Parameters:**
|
|
@@ -292,7 +292,7 @@ Retrieves a list of published Pulse Metrics from a Pulse Metric Definition using
|
|
|
292
292
|
|
|
293
293
|
**Example Usage:**
|
|
294
294
|
- List all Pulse Metrics for this Pulse Metric Definition
|
|
295
|
-
`,paramsSchema:
|
|
295
|
+
`,paramsSchema:Zc,annotations:{title:"List Pulse Metrics from Metric Definition ID",readOnlyHint:!0,openWorldHint:!1},callback:async({pulseMetricDefinitionID:r},{requestId:o})=>{let i=R();return await e.logAndExecute({requestId:o,args:{pulseMetricDefinitionID:r},callback:async()=>await P({config:i,requestId:o,server:t,jwtScopes:["tableau:insight_definitions_metrics:read"],callback:async n=>await n.pulseMethods.listPulseMetricsFromMetricDefinitionId(r)}),getErrorText:se})}});return e};import{z as Es}from"zod";var Jc={metricIds:Es.array(Es.string().length(36))},As=t=>{let e=new O({server:t,name:"list-pulse-metrics-from-metric-ids",description:`
|
|
296
296
|
Retrieves a list of published Pulse Metrics from a list of metric IDs using the Tableau REST API. Use this tool when a user requests to list Tableau Pulse Metrics for a list of metric IDs on the current site.
|
|
297
297
|
|
|
298
298
|
**Parameters:**
|
|
@@ -306,7 +306,7 @@ Retrieves a list of published Pulse Metrics from a list of metric IDs using the
|
|
|
306
306
|
- This tool is recommended for use with data in Pulse Metric Subscriptions.
|
|
307
307
|
- 00000000-0000-0000-0000-000000000000 is not a valid datasource id.
|
|
308
308
|
- If you need a valid datasource id, you may need to retrieve the Pulse Metric Definition for the Pulse Metric which should have a valid datasource information.
|
|
309
|
-
`,paramsSchema:
|
|
309
|
+
`,paramsSchema:Jc,annotations:{title:"List Pulse Metrics from Metric IDs",readOnlyHint:!0,openWorldHint:!1},callback:async({metricIds:r},{requestId:o})=>{let i=R();return await e.logAndExecute({requestId:o,args:{metricIds:r},callback:async()=>await P({config:i,requestId:o,server:t,jwtScopes:["tableau:insight_metrics:read"],callback:async n=>await n.pulseMethods.listPulseMetricsFromMetricIds(r)}),getErrorText:se})}});return e};var Kc={},Ss=t=>{let e=new O({server:t,name:"list-pulse-metric-subscriptions",description:`
|
|
310
310
|
Retrieves a list of published Pulse Metric Subscriptions for the current user using the Tableau REST API. Use this tool when a user requests to list Tableau Pulse Metric Subscriptions for the current user.
|
|
311
311
|
|
|
312
312
|
**Example Usage:**
|
|
@@ -317,7 +317,7 @@ Retrieves a list of published Pulse Metric Subscriptions for the current user us
|
|
|
317
317
|
- This tool does not directly provide information about Pulse Metric Definitions. If you need to know information about Pulse Metric Defintiions associated with your subscriptions you need to:
|
|
318
318
|
1. Retrieve Pulse Metrics from the metric ids returned in the Pulse Metric Subscriptions.
|
|
319
319
|
2. Retrieve Pulse Metric Definitions from the metric definition id returned in the Pulse Metrics.
|
|
320
|
-
`,paramsSchema:
|
|
320
|
+
`,paramsSchema:Kc,annotations:{title:"List Pulse Metric Subscriptions for Current User",readOnlyHint:!0,openWorldHint:!1},callback:async(r,{requestId:o})=>{let i=R();return await e.logAndExecute({requestId:o,args:{},callback:async()=>await P({config:i,requestId:o,server:t,jwtScopes:["tableau:metric_subscriptions:read"],callback:async n=>await n.pulseMethods.listPulseMetricSubscriptionsForCurrentUser()}),getErrorText:se})}});return e};import{ZodiosError as nu}from"@zodios/core";import{Err as Ns}from"ts-results-es";import{z as au}from"zod";import{z as Oe}from"zod";var Yc=Oe.record(Oe.string().nonempty(),Oe.array(Oe.object({luid:Oe.string().optional(),u:Oe.string().nonempty(),p:Oe.string().nonempty()}).transform(({luid:t,u:e,p:r})=>({connectionLuid:t,connectionUsername:e,connectionPassword:r})))),Cs,_s=!1,Rs=t=>{if(!_s){_s=!0;let{datasourceCredentials:e}=R();if(!e)return;let r;try{r=JSON.parse(e)}catch(i){throw new Error(`Invalid datasource credentials format. Could not parse JSON string: ${e}`,{cause:i})}let o=Yc.parse(r);Cs=new Map(Object.entries(o))}return Cs?.get(t)};function xs(t){let e={...t};switch(t.errorCode){case"400000":e.condition="Bad request",e.details="The content of the request body is invalid. Check for missing or incomplete JSON.";break;case"400800":e.condition="Invalid formula for calculation",e.details="Invalid custom calculation syntax. For help, see https://help.tableau.com/current/pro/desktop/en-us/functions_operators.htm";break;case"400802":e.condition="Invalid API request",e.details="The incoming request isn't valid per the OpenAPI specification.";break;case"400803":e.condition="Validation failed",e.details="The incoming request isn't valid per the validation rules.";break;case"400804":e.condition="Response too large",e.details="The response value exceeds the limit. You must apply a filter in your request.";break;case"401001":e.condition="Login error",e.details="The login failed for the given user.";break;case"401002":e.condition="Invalid authorization credentials",e.details="The provided auth token is formatted incorrectly.";break;case"403157":e.condition="Feature disabled",e.details="The feature is disabled.";break;case"403800":e.condition="API access permission denied",e.details="The user doesn't have API Access granted on the given data source. Set the API Access capability for the given data source to Allowed. For help, see https://help.tableau.com/current/online/en-us/permissions_capabilities.htm";break;case"404934":e.condition="Unknown field",e.details="The requested field doesn't exist.";break;case"404950":e.condition="API endpoint not found",e.details="The request endpoint doesn't exist.";break;case"408000":e.condition="Request timeout",e.details="The request timed out.";break;case"409000":e.condition="User already on site",e.details="HTTP status conflict.";break;case"429000":e.condition="Too many requests",e.details="Too many requests in the allotted amount of time. For help, see https://help.tableau.com/current/api/vizql-data-service/en-us/docs/vds_limitations.html#licensing-and-data-transfer";break;case"500000":e.condition="Internal server error",e.details="The request could not be completed.";break;case"500810":e.condition="VDS empty table response",e.details="The underlying data engine returned empty data value response.";break;case"500811":e.condition="VDS missing table",e.details="The underlying data engine returned empty metadata associated with response.";break;case"500812":e.condition="Error while processing an error",e.details="Internal processing error.";break;case"501000":e.condition="Not implemented",e.details="Can't find response from upstream server.";break;case"503800":e.condition="VDS unavailable",e.details="The underlying data engine is unavailable.";break;case"503801":e.condition="VDS discovery error",e.details="The upstream service can't be found.";break;case"504000":e.condition="Gateway timeout",e.details="The upstream service response timed out.";break}return e}function vs(t){if(t.length===0)throw new Error("The query must include at least one field. The fields property cannot be an empty array.");if(t.some(Xc))throw new Error("The query must not include any fields with an empty fieldCaption.");{let e=t.reduce((o,i)=>(o[i.fieldCaption]||(o[i.fieldCaption]=0),o[i.fieldCaption]++,o),{}),r=Object.entries(e).filter(([o,i])=>i>1);if(r.length>0)throw new Error(`The query must not include duplicate fields. The following fields are duplicated: ${r.map(([o])=>o).join(", ")}.`)}{let e=t.reduce((o,i)=>(i.sortPriority===void 0||(o[i.sortPriority]||(o[i.sortPriority]=[]),o[i.sortPriority].push(i.fieldCaption)),o),{}),r=Object.entries(e).filter(([o,i])=>i.length>1);if(r.length>0){let o=r.reduce((i,[n,s])=>(i.push(`${s.map(l=>`"${l}"`).join(", ")} with a sort priority of ${n}`),i),[]);throw new Error(`The query must not include duplicate sort priorities. The following fields have sort priorities that are duplicated: ${o.join(". ")}.`)}}{let e=t.filter(so).map(r=>r.fieldCaption);if(e.length>0)throw new Error(`The query must not include fields that contain both a function and a calculation. The following fields contain both a function and a calculation: ${e.join(", ")}.`)}{let e=t.filter(eu).map(r=>r.fieldCaption);if(e.length>0)throw new Error(`The query must not include fields that have a maxDecimalPlaces value that is less than 0. The following fields have a maxDecimalPlaces value that is less than 0: ${e.join(", ")}.`)}}function Xc(t){return!t.fieldCaption}function so(t){return!!("function"in t&&t.function&&"calculation"in t&&t.calculation)}function Ls(t){return!!("fieldCaption"in t&&t.fieldCaption&&"calculation"in t&&t.calculation)}function eu(t){return t.maxDecimalPlaces!==void 0&&t.maxDecimalPlaces<0}import{Err as no,Ok as tu}from"ts-results-es";function Is(t){if(t){if(t.some(e=>!("field"in e)))throw new Error("The query must not include filters with invalid fields. The following field errors occurred: The filter must include a field property.");{let e=t.reduce((o,i)=>("fieldCaption"in i.field&&(o[i.field.fieldCaption]||(o[i.field.fieldCaption]=0),o[i.field.fieldCaption]++),o),{}),r=Object.entries(e).filter(([o,i])=>i>1);if(r.length>0)throw new Error(`The query must not include multiple filters for the following fields: ${r.map(([o])=>o).join(", ")}.`)}{let e=t.reduce((r,o)=>{if(!("field"in o))return r;let i=Ds(o.field);return i.isErr()&&r.push(i.error),r},[]);if(e.length>0)throw new Error(`The query must not include filters with invalid fields. The following field errors occurred: ${e.join(", ")}.`)}if(t.filter(r=>["SET","MATCH","DATE"].includes(r.filterType)&&("function"in r.field&&r.field.function||"calculation"in r.field&&r.field.calculation)).length>0)throw new Error("The query must not include Set Filters, Match Filters, or Relative Date Filters with functions or calculations.");if(t.filter(r=>r.filterType==="SET"&&r.values.length===0).length>0)throw new Error("The query must not include Set Filters with an empty values array.");if(t.filter(r=>{if(r.filterType!=="QUANTITATIVE_DATE")return!1;switch(r.quantitativeFilterType){case"RANGE":return isNaN(Date.parse(r.minDate))||isNaN(Date.parse(r.maxDate));case"MIN":return isNaN(Date.parse(r.minDate));case"MAX":return isNaN(Date.parse(r.maxDate))}}).length>0)throw new Error("The query must not include Quantitative Date Filters with invalid dates. Dates must use the RFC 3339 standard. Example: 2025-03-14");if(t.filter(r=>r.filterType==="DATE"&&r.anchorDate&&isNaN(Date.parse(r.anchorDate))).length>0)throw new Error("The query must not include Relative Date Filters with invalid anchor dates. Anchor dates must use the RFC 3339 standard. Example: 2025-03-14");{let e=t.reduce((r,o)=>{if(o.filterType!=="TOP")return r;let i=Ds(o.fieldToMeasure);return i.isErr()&&r.push(i.error),r},[]);if(e.length>0)throw new Error(`The query must not include Top N filters with invalid fields. The following field errors occurred: ${e.join(", ")}`)}{let e=t.reduce((r,o)=>(o.filterType!=="MATCH"||!o.startsWith&&!o.endsWith&&!o.contains&&r.push(`The match filter for field "${o.field.fieldCaption}" must include at least one of the following properties: startsWith, endsWith, or contains`),r),[]);if(e.length>0)throw new Error(`The query must not include Match Filters with invalid fields. The following field errors occurred: ${e.join(", ")}.`)}}}function Ds(t){if(ru(t))return new no("The fieldCaption property must be a non-empty string.");if(Ls(t)){let e="fieldCaption"in t?`"${t.fieldCaption}" `:"";return new no(`The field ${e} must not contain both a fieldCaption and a calculation.`.replace(" "," "))}if(so(t)){let e="fieldCaption"in t?`"${t.fieldCaption}" `:"";return new no(`The field ${e} must not contain both a function and a calculation.`.replace(" "," "))}return tu.EMPTY}function ru(t){return"fieldCaption"in t&&!t.fieldCaption}function Os({datasourceLuid:t,query:e}){ir({datasourceLuid:t});let{fields:r,filters:o}=e;if(vs(r),Is(o),!Rt.safeParse(e).success)throw new Error("The query does not match the expected schema.")}var Ps=`# Query Tableau Data Source Tool
|
|
321
321
|
|
|
322
322
|
Executes VizQL queries against Tableau data sources to answer business questions from published data. This tool allows you to retrieve aggregated and filtered data with proper sorting and grouping.
|
|
323
323
|
|
|
@@ -626,9 +626,9 @@ Filter relative date periods:
|
|
|
626
626
|
**Instead:**
|
|
627
627
|
- Use metadata tools to understand available fields
|
|
628
628
|
- Suggest alternative questions that can be answered with available data
|
|
629
|
-
- Recommend appropriate aggregation levels for the business question`;import
|
|
629
|
+
- Recommend appropriate aggregation levels for the business question`;import Dt from"fast-levenshtein";import{Err as ao,Ok as Pe}from"ts-results-es";async function Fs(t,e,r,o){if(!e.filters)return Pe.EMPTY;let i=[],n=e.filters.filter(s=>(s.filterType==="SET"||s.filterType==="MATCH")&&"fieldCaption"in s.field&&s.field.fieldCaption);if(n.length===0)return Pe.EMPTY;for(let s of n){let l=s.field.fieldCaption;try{if(s.filterType==="SET"){let u=await ou(s,r,o);u.isErr()&&i.push(u.error)}else if(s.filterType==="MATCH"){let u=await iu(s,r,o);u.isErr()&&i.push(u.error)}}catch(u){ie.warning(t,`Filter value validation failed for field ${l}: ${u}`)}}return i.length>0?new ao(i):Pe.EMPTY}async function ou(t,e,r){let o=t.field.fieldCaption,i=t.values.map(h=>String(h)),s={datasource:r,query:{fields:[{fieldCaption:o,fieldAlias:"DistinctValues"}]},options:{returnFormat:"OBJECTS",debug:!0,disaggregate:!1}},l=await e.queryDatasource(s);if(l.isErr())return Pe.EMPTY;let u=l.value.data||[],p=new Set(u.map(h=>String(h.DistinctValues||h[o]||""))),c=i.filter(h=>!p.has(h));if(c.length>0){let h=su(c,Array.from(p),3,5),b=`Filter validation failed for field "${o}". The following values were not found: ${c.join(", ")}.`;return h.length>0&&(b+=` Did you mean: ${h.join(", ")}?`),b+=" Please evaluate whether you included the wrong filter value or if you are trying to filter on the wrong field entirely.",new ao({field:o,invalidValues:c,sampleValues:h,message:b})}return Pe.EMPTY}async function iu(t,e,r){let o=t.field.fieldCaption,n={datasource:r,query:{fields:[{fieldCaption:o,fieldAlias:"SampleValues"}]},options:{returnFormat:"OBJECTS",debug:!0,disaggregate:!1}},s=await e.queryDatasource(n);if(s.isErr())return Pe.EMPTY;let u=(s.value.data||[]).map(c=>String(c.SampleValues||c[o]||""));if(!u.some(c=>!(t.startsWith&&!c.startsWith(t.startsWith)||t.endsWith&&!c.endsWith(t.endsWith)||t.contains&&!c.includes(t.contains)))){let c=new Set;for(let m of u){if(c.size>=5)break;let y=m.toLowerCase(),T=t.startsWith?(()=>{let S=t.startsWith.toLowerCase(),x=S.length,L=Math.min(2,Math.floor(x/2)),U=y.slice(0,x);return Dt.get(S,U)<=L})():!0,_=t.endsWith?(()=>{let S=t.endsWith.toLowerCase(),x=S.length,L=Math.min(2,Math.floor(x/2)),U=y.slice(-x);return Dt.get(S,U)<=L})():!0,F=t.contains?(()=>{let S=t.contains.toLowerCase(),x=S.length,L=Math.min(2,Math.floor(x/2));return y.length>=x?Array.from({length:y.length-x+1},(U,j)=>Dt.get(S,y.slice(j,j+x))).some(U=>U<=L):Dt.get(S,y)<=L})():!0;T&&_&&F&&c.add(m)}let h=[];t.startsWith&&h.push(`starts with "${t.startsWith}"`),t.endsWith&&h.push(`ends with "${t.endsWith}"`),t.contains&&h.push(`contains "${t.contains}"`);let b=c.size>0?`Similar values in this field: ${Array.from(c).join(", ")}.`:"",E=`Filter validation failed for field "${o}". No values found that ${h.join(" and ")}. ${b} Please evaluate whether you included the wrong filter value or if you are trying to filter on the wrong field entirely.`;return new ao({field:o,invalidValues:h,sampleValues:Array.from(c),message:E})}return Pe.EMPTY}function su(t,e,r=3,o=5){let i=[];for(let u of e){let p=t.map(c=>({value:c,distance:Dt.get(c.toLowerCase(),u.toLowerCase())})).filter(c=>c.distance<=r).sort((c,h)=>c.distance-h.distance);if(p.length>0){let c=p[0];i.push({invalidValue:c.value,suggestionForInvalidValue:u,distance:c.distance})}}i.sort((u,p)=>u.distance-p.distance);let n=[],s=Math.ceil(o/t.length),l=new Map;for(let u of t)l.set(u,0);for(let{invalidValue:u,suggestionForInvalidValue:p}of i){if(n.length===o)break;l.get(u)!==s&&(n.push(p),l.set(u,l.get(u)+1))}for(let{suggestionForInvalidValue:u}of i){if(n.length===o)break;if(n.includes(u))continue;n.push(u)}return n}var lu={datasourceLuid:au.string().nonempty(),query:Rt},ks=t=>{let e=new O({server:t,name:"query-datasource",description:Ps,paramsSchema:lu,annotations:{title:"Query Datasource",readOnlyHint:!0,openWorldHint:!1},argsValidator:Os,callback:async({datasourceLuid:r,query:o},{requestId:i})=>{let n=R();return await e.logAndExecute({requestId:i,args:{datasourceLuid:r,query:o},callback:async()=>{let s={datasourceLuid:r},l={returnFormat:"OBJECTS",debug:!0,disaggregate:!1},u=Rs(r);u&&(s.connections=u);let p={datasource:s,query:o,options:l};return await P({config:n,requestId:i,server:t,jwtScopes:["tableau:viz_data_service:read"],callback:async c=>{if(!n.disableQueryDatasourceFilterValidation){let b=await Fs(t,o,c.vizqlDataServiceMethods,s);if(b.isErr()){let m=b.error.map(y=>y.message).join(`
|
|
630
630
|
|
|
631
|
-
`);return new
|
|
631
|
+
`);return new Ns({type:"filter-validation",message:m})}}let h=await c.vizqlDataServiceMethods.queryDatasource(p);return h.isErr()?new Ns(h.error instanceof nu?h.error:h.error==="feature-disabled"?{type:"feature-disabled"}:{type:"tableau-error",error:h.error}):h}})},getErrorText:s=>{switch(s.type){case"feature-disabled":return or();case"filter-validation":return JSON.stringify({requestId:i,errorType:"validation",message:s.message});case"tableau-error":return JSON.stringify({requestId:i,...xs(s.error)})}}})}});return e};import{Ok as cu}from"ts-results-es";import{z as uu}from"zod";var du={viewId:uu.string()},Ms=t=>{let e=new O({server:t,name:"get-view-data",description:"Retrieves data in comma separated value (CSV) format for the specified view in a Tableau workbook.",paramsSchema:du,annotations:{title:"Get View Data",readOnlyHint:!0,openWorldHint:!1},callback:async({viewId:r},{requestId:o})=>{let i=R();return await e.logAndExecute({requestId:o,args:{viewId:r},callback:async()=>new cu(await P({config:i,requestId:o,server:t,jwtScopes:["tableau:views:download"],callback:async n=>await n.viewsMethods.queryViewData({viewId:r,siteId:n.siteId})}))})}});return e};import{Ok as pu}from"ts-results-es";import{z as lo}from"zod";function qs(t){return{isError:!1,content:[{type:"image",data:Buffer.from(t).toString("base64"),mimeType:"image/png"}]}}var mu={viewId:lo.string(),width:lo.number().gt(0).optional(),height:lo.number().gt(0).optional()},Us=t=>{let e=new O({server:t,name:"get-view-image",description:"Retrieves an image of the specified view in a Tableau workbook. The width and height in pixels can be provided. The default width and height are both 800 pixels.",paramsSchema:mu,annotations:{title:"Get View Image",readOnlyHint:!0,openWorldHint:!1},callback:async({viewId:r,width:o,height:i},{requestId:n})=>{let s=R();return await e.logAndExecute({requestId:n,args:{viewId:r},callback:async()=>new pu(await P({config:s,requestId:n,server:t,jwtScopes:["tableau:views:download"],callback:async l=>await l.viewsMethods.queryViewImage({viewId:r,siteId:l.siteId,width:o,height:i,resolution:"high"})})),getSuccessResult:qs})}});return e};import{Ok as hu}from"ts-results-es";import{z as uo}from"zod";import{z as co}from"zod";var js=co.enum(["caption","contentUrl","createdAt","favoritesTotal","fields","hitsTotal","name","ownerDomain","ownerEmail","ownerName","projectName","sheetNumber","sheetType","tags","title","updatedAt","viewUrlname","workbookDescription","workbookName"]),fu={caption:["eq","in"],contentUrl:["eq","in"],createdAt:["eq","gt","gte","lt","lte"],favoritesTotal:["eq","gt","gte","lt","lte"],fields:["eq","in"],hitsTotal:["eq","gt","gte","lt","lte"],name:["eq","in"],ownerDomain:["eq","in"],ownerEmail:["eq","in"],ownerName:["eq","in"],projectName:["eq","in"],sheetNumber:["eq","gt","gte","lt","lte"],sheetType:["eq","in"],tags:["eq","in"],title:["eq","in"],updatedAt:["eq","gt","gte","lt","lte"],viewUrlname:["eq","in"],workbookDescription:["eq","in"],workbookName:["eq","in"]},Rw=co.object({field:js,operator:Ie,value:co.string()});function Bs(t){return rt({filterString:t,allowedOperatorsByField:fu,filterFieldSchema:js})}var gu={filter:uo.string().optional(),pageSize:uo.number().gt(0).optional(),limit:uo.number().gt(0).optional()},Vs=t=>{let e=new O({server:t,name:"list-views",description:`
|
|
632
632
|
Retrieves a list of views on a Tableau site including their metadata such as name, owner, and the workbook they are found in. Supports optional filtering via field:operator:value expressions (e.g., name:eq:Overview) for precise and flexible view discovery. Use this tool when a user requests to list, search, or filter Tableau views on a site.
|
|
633
633
|
|
|
634
634
|
**Supported Filter Fields and Operators**
|
|
@@ -654,7 +654,7 @@ Filter relative date periods:
|
|
|
654
654
|
| workbookDescription | eq, in |
|
|
655
655
|
| workbookName | eq, in |
|
|
656
656
|
|
|
657
|
-
${
|
|
657
|
+
${tt}
|
|
658
658
|
|
|
659
659
|
**Example Usage:**
|
|
660
660
|
- List all views on a site
|
|
@@ -665,7 +665,7 @@ Filter relative date periods:
|
|
|
665
665
|
- List views created after January 1, 2023:
|
|
666
666
|
filter: "createdAt:gt:2023-01-01T00:00:00Z"
|
|
667
667
|
- List views with the name "Overview" in the "Finance" project and created after January 1, 2023:
|
|
668
|
-
filter: "name:eq:Overview,projectName:eq:Finance,createdAt:gt:2023-01-01T00:00:00Z"`,paramsSchema:
|
|
668
|
+
filter: "name:eq:Overview,projectName:eq:Finance,createdAt:gt:2023-01-01T00:00:00Z"`,paramsSchema:gu,annotations:{title:"List Views",readOnlyHint:!0,openWorldHint:!1},callback:async({filter:r,pageSize:o,limit:i},{requestId:n})=>{let s=R(),l=r?Bs(r):void 0;return await e.logAndExecute({requestId:n,args:{},callback:async()=>new hu(await P({config:s,requestId:n,server:t,jwtScopes:["tableau:content:read"],callback:async u=>await et({pageConfig:{pageSize:o,limit:s.maxResultLimit?Math.min(s.maxResultLimit,i??Number.MAX_SAFE_INTEGER):i},getDataFn:async c=>{let{pagination:h,views:b}=await u.viewsMethods.queryViewsForSite({siteId:u.siteId,filter:l??"",includeUsageStatistics:!0,pageSize:c.pageSize,pageNumber:c.pageNumber});return{pagination:h,data:b}}})}))})}});return e};import{Ok as yu}from"ts-results-es";import{z as bu}from"zod";var Tu={workbookId:bu.string()},zs=t=>{let e=new O({server:t,name:"get-workbook",description:"Retrieves information about the specified workbook, including information about the views contained in the workbook.",paramsSchema:Tu,annotations:{title:"Get Workbook",readOnlyHint:!0,openWorldHint:!1},callback:async({workbookId:r},{requestId:o})=>{let i=R();return await e.logAndExecute({requestId:o,args:{workbookId:r},callback:async()=>new yu(await P({config:i,requestId:o,server:t,jwtScopes:["tableau:content:read"],callback:async n=>{let s=await n.workbooksMethods.getWorkbook({workbookId:r,siteId:n.siteId});if(s.views){let l=await n.viewsMethods.queryViewsForWorkbook({workbookId:r,siteId:n.siteId,includeUsageStatistics:!0});s.views.view=l}return s}}))})}});return e};import{Ok as Eu}from"ts-results-es";import{z as mo}from"zod";import{z as po}from"zod";var Ws=po.enum(["createdAt","contentUrl","displayTabs","favoritesTotal","hasAlerts","hasExtracts","name","ownerDomain","ownerEmail","ownerName","projectName","sheetCount","size","subscriptionTotal","tags","updatedAt"]),wu={createdAt:["eq","gt","gte","lt","lte"],contentUrl:["eq","in"],displayTabs:["eq"],favoritesTotal:["eq","gt","gte","lt","lte"],hasAlerts:["eq"],hasExtracts:["eq"],name:["eq","in"],ownerDomain:["eq","in"],ownerEmail:["eq","in"],ownerName:["eq","in"],projectName:["eq","in"],sheetCount:["eq","gt","gte","lt","lte"],size:["eq","gt","gte","lt","lte"],subscriptionTotal:["eq","gt","gte","lt","lte"],tags:["eq","in"],updatedAt:["eq","gt","gte","lt","lte"]},Gw=po.object({field:Ws,operator:Ie,value:po.string()});function Hs(t){return rt({filterString:t,allowedOperatorsByField:wu,filterFieldSchema:Ws})}var Au={filter:mo.string().optional(),pageSize:mo.number().gt(0).optional(),limit:mo.number().gt(0).optional()},Gs=t=>{let e=new O({server:t,name:"list-workbooks",description:`
|
|
669
669
|
Retrieves a list of workbooks on a Tableau site including their metadata such as name, description, and information about the views contained in the workbook. Supports optional filtering via field:operator:value expressions (e.g., name:eq:Superstore) for precise and flexible workbook discovery. Use this tool when a user requests to list, search, or filter Tableau workbooks on a site.
|
|
670
670
|
|
|
671
671
|
**Supported Filter Fields and Operators**
|
|
@@ -688,7 +688,7 @@ Filter relative date periods:
|
|
|
688
688
|
| tags | eq, in |
|
|
689
689
|
| updatedAt | eq, gt, gte, lt, lte |
|
|
690
690
|
|
|
691
|
-
${
|
|
691
|
+
${tt}
|
|
692
692
|
|
|
693
693
|
**Example Usage:**
|
|
694
694
|
- List all workbooks on a site
|
|
@@ -699,10 +699,10 @@ Filter relative date periods:
|
|
|
699
699
|
- List workbooks created after January 1, 2023:
|
|
700
700
|
filter: "createdAt:gt:2023-01-01T00:00:00Z"
|
|
701
701
|
- List workbooks with the name "Superstore" in the "Finance" project and created after January 1, 2023:
|
|
702
|
-
filter: "name:eq:Superstore,projectName:eq:Finance,createdAt:gt:2023-01-01T00:00:00Z"`,paramsSchema:
|
|
702
|
+
filter: "name:eq:Superstore,projectName:eq:Finance,createdAt:gt:2023-01-01T00:00:00Z"`,paramsSchema:Au,annotations:{title:"List Workbooks",readOnlyHint:!0,openWorldHint:!1},callback:async({filter:r,pageSize:o,limit:i},{requestId:n})=>{let s=R(),l=r?Hs(r):void 0;return await e.logAndExecute({requestId:n,args:{},callback:async()=>new Eu(await P({config:s,requestId:n,server:t,jwtScopes:["tableau:content:read"],callback:async u=>await et({pageConfig:{pageSize:o,limit:s.maxResultLimit?Math.min(s.maxResultLimit,i??Number.MAX_SAFE_INTEGER):i},getDataFn:async c=>{let{pagination:h,workbooks:b}=await u.workbooksMethods.queryWorkbooksForSite({siteId:u.siteId,filter:l??"",pageSize:c.pageSize,pageNumber:c.pageNumber});return{pagination:h,data:b}}})}))})}});return e};var Qs=[ds,fs,ks,bs,Ts,ws,As,Ss,gs,zs,Ms,Us,Gs,Vs,ls];var It="tableau-mcp",ar=To.version,ot=class extends Su{name;version;constructor(){super({name:It,version:ar},{capabilities:{logging:{},tools:{}}}),this.name=It,this.version=ar}registerTools=()=>{for(let{name:e,description:r,paramsSchema:o,annotations:i,callback:n}of this._getToolsToRegister())this.tool(e,r,o,i,n)};registerRequestHandlers=()=>{this.server.setRequestHandler(Cu,async e=>(Ne(this,e.params.level),{}))};_getToolsToRegister=()=>{let{includeTools:e,excludeTools:r}=R(),i=Qs.map(n=>n(this)).filter(n=>e.length>0?e.includes(n.name):r.length>0?!r.includes(n.name):!0);if(i.length===0)throw new Error(`
|
|
703
703
|
No tools to register.
|
|
704
|
-
Tools available = [${
|
|
704
|
+
Tools available = [${cr.join(", ")}].
|
|
705
705
|
EXCLUDE_TOOLS = [${r.join(", ")}].
|
|
706
706
|
INCLUDE_TOOLS = [${e.join(", ")}]
|
|
707
|
-
`);return i}};import{StreamableHTTPServerTransport as
|
|
707
|
+
`);return i}};import{StreamableHTTPServerTransport as _u}from"@modelcontextprotocol/sdk/server/streamableHttp.js";import Ru from"cors";import fo from"express";import $s,{existsSync as Zs}from"fs";import xu from"http";import vu from"https";async function Ks({basePath:t,config:e,logLevel:r}){let o=fo();o.use(fo.json()),o.use(fo.urlencoded()),o.use(Ru({origin:e.corsOriginConfig,credentials:!0,allowedHeaders:["Content-Type","Authorization","Cache-Control","Accept","MCP-Protocol-Version"],exposedHeaders:["mcp-session-id","x-session-id"]}));let i=`/${t}`;if(o.post(i,l),o.get(i,Js),o.delete(i,Js),!!!(e.sslKey&&e.sslCert))return new Promise(u=>{xu.createServer(o).listen(e.httpPort,()=>u({url:`http://localhost:${e.httpPort}/${t}`}))});if(!Zs(e.sslKey))throw new Error("SSL key file does not exist");if(!Zs(e.sslCert))throw new Error("SSL cert file does not exist");let s={key:$s.readFileSync(e.sslKey),cert:$s.readFileSync(e.sslCert)};return new Promise(u=>{vu.createServer(s,o).listen(e.httpPort,()=>u({url:`https://localhost:${e.httpPort}/${t}`}))});async function l(u,p){try{let c=new ot,h=new _u({sessionIdGenerator:void 0});p.on("close",()=>{h.close(),c.close()}),c.registerTools(),c.registerRequestHandlers(),await c.connect(h),Ne(c,r),await h.handleRequest(u,p,u.body)}catch(c){console.error("Error handling MCP request:",c),p.headersSent||p.status(500).json({jsonrpc:"2.0",error:{code:-32603,message:"Internal server error"},id:null})}}}async function Js(t,e){e.writeHead(405).end(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}))}async function Iu(){Du.config();let t=R(),e=yo(t.defaultLogLevel)?t.defaultLogLevel:"debug";switch(t.transport){case"stdio":{let r=new ot;r.registerTools(),r.registerRequestHandlers();let o=new Lu;await r.connect(o),Ne(r,e),ie.info(r,`${r.name} v${r.version} running on stdio`);break}case"http":{let{url:r}=await Ks({basePath:It,config:t,logLevel:e});console.log(`${It} v${ar} stateless streamable HTTP server available at ${r}`);break}}t.disableLogMasking&&st("Log masking is disabled!")}try{await Iu()}catch(t){st(`Fatal error when starting the server: ${he(t)}`),process.exit(1)}
|
|
708
708
|
//# sourceMappingURL=index.js.map
|