drizzle-cube 0.4.31 → 0.4.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/express/index.cjs +1 -1
- package/dist/adapters/express/index.d.ts +1 -1
- package/dist/adapters/express/index.js +3 -3
- package/dist/adapters/fastify/index.cjs +1 -1
- package/dist/adapters/fastify/index.d.ts +1 -1
- package/dist/adapters/fastify/index.js +3 -3
- package/dist/adapters/{handler-GLMhjuwG.cjs → handler-ClgB__a-.cjs} +2 -2
- package/dist/adapters/{handler-BiVT5Sa4.js → handler-rPpxuopb.js} +2 -2
- package/dist/adapters/hono/index.cjs +1 -1
- package/dist/adapters/hono/index.d.ts +1 -1
- package/dist/adapters/hono/index.js +3 -3
- package/dist/adapters/mcp-transport-DPpei63d.cjs +255 -0
- package/dist/adapters/{mcp-transport-Cs6gEFCi.js → mcp-transport-DWSNkwUY.js} +581 -261
- package/dist/adapters/nextjs/index.cjs +1 -1
- package/dist/adapters/nextjs/index.d.ts +1 -1
- package/dist/adapters/nextjs/index.js +3 -3
- package/dist/adapters/{openai-C5Brybjm.cjs → openai-Bc8qwEKW.cjs} +1 -1
- package/dist/{server/openai-CucrxPHM.cjs → adapters/openai-C96O8M75.cjs} +1 -1
- package/dist/adapters/{openai-DPuFtYsB.js → openai-Ckpe7iU7.js} +1 -1
- package/dist/adapters/{openai-wU05wYGL.js → openai-DxeVtl8X.js} +1 -1
- package/dist/adapters/{utils-Dj1adfDc.js → utils-B7VkyzMv.js} +2 -1
- package/dist/adapters/{utils-cb6OWP7J.cjs → utils-BLFzzCI9.cjs} +1 -1
- package/dist/adapters/utils.cjs +1 -1
- package/dist/adapters/utils.d.ts +1 -1
- package/dist/adapters/utils.js +1 -1
- package/dist/server/index.cjs +42 -41
- package/dist/server/index.d.ts +43 -9
- package/dist/server/index.js +1452 -1131
- package/dist/server/{openai-DiyuZ3ds.cjs → openai-0HbLlZq6.cjs} +1 -1
- package/dist/{adapters/openai-D1zCEi6A.cjs → server/openai-DKpZPCay.cjs} +1 -1
- package/dist/server/{openai-owPdq1yN.js → openai-DnGeU9PT.js} +1 -1
- package/dist/server/{openai-nZJcAzON.js → openai-DqCEogm0.js} +1 -1
- package/package.json +11 -1
- package/dist/adapters/mcp-transport-nyTtswLM.cjs +0 -254
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../utils-cb6OWP7J.cjs`),t=require(`../mcp-transport-nyTtswLM.cjs`);let n=require(`next/server`);function r(e){let{cubes:n,drizzle:r,schema:i,engineType:a,cache:o}=e;if(!n||n.length===0)throw Error(`At least one cube must be provided in the cubes array`);let s=new t.h({drizzle:r,schema:i,engineType:a,cache:o});return n.forEach(e=>{s.registerCube(e)}),s}function i(e,t){let n=e.headers.get(`origin`),r={};return t.origin&&(typeof t.origin==`string`?r[`Access-Control-Allow-Origin`]=t.origin:Array.isArray(t.origin)?n&&t.origin.includes(n)&&(r[`Access-Control-Allow-Origin`]=n):typeof t.origin==`function`&&n&&t.origin(n)&&(r[`Access-Control-Allow-Origin`]=n)),t.methods&&(r[`Access-Control-Allow-Methods`]=t.methods.join(`, `)),t.allowedHeaders&&(r[`Access-Control-Allow-Headers`]=t.allowedHeaders.join(`, `)),t.credentials&&(r[`Access-Control-Allow-Credentials`]=`true`),r}function a(e){return async function(t){let n=i(t,e);return new Response(null,{status:200,headers:n})}}function o(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let r=t.nextUrl.searchParams.get(`query`);if(!r)return n.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{c=JSON.parse(r)}catch{return n.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return n.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await a(t,r),u=s.validateQuery(c);if(!u.isValid)return n.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=t.headers.get(`x-cache-control`)===`no-cache`,f=await s.executeMultiCubeQuery(c,l,{skipCache:d}),p=e.r(c,f,s);return n.NextResponse.json(p,{headers:o?i(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js load handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function s(t){let{cors:a}=t,o=r(t);return async function(t,r){try{let r=e.a(o.getMetadata());return n.NextResponse.json(r,{headers:a?i(t,a):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js meta handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Failed to fetch metadata`,500),{status:500})}}}function c(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let r=t.nextUrl.searchParams.get(`query`);if(!r)return n.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{c=JSON.parse(r)}catch{return n.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return n.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await a(t,r),u=s.validateQuery(c);if(!u.isValid)return n.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=c.measures?.[0]||c.dimensions?.[0];if(!d)return n.NextResponse.json(e.i(`No measures or dimensions specified`,400),{status:400});let f=d.split(`.`)[0],p=await s.generateSQL(f,c,l),m=e.o(c,p);return n.NextResponse.json(m,{headers:o?i(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js SQL handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`SQL generation failed`,500),{status:500})}}}function l(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let e=t.nextUrl.searchParams.get(`query`);if(!e)return n.NextResponse.json({error:`Query parameter is required`,valid:!1},{status:400});try{c=JSON.parse(e)}catch{return n.NextResponse.json({error:`Invalid JSON in query parameter`,valid:!1},{status:400})}}else return n.NextResponse.json({error:`Method not allowed`,valid:!1},{status:405});let l=await a(t,r),u=await e.f(c,l,s);return n.NextResponse.json(u,{headers:o?i(t,o):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js dry-run handler error:`,e),n.NextResponse.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},{status:400})}}}function u(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let{queries:c}=await t.json();if(!c||!Array.isArray(c))return n.NextResponse.json(e.i(`Request body must contain a "queries" array`,400),{status:400});if(c.length===0)return n.NextResponse.json(e.i(`Queries array cannot be empty`,400),{status:400});let l=await e.u(c,await a(t,r),s,{skipCache:t.headers.get(`x-cache-control`)===`no-cache`});return n.NextResponse.json(l,{headers:o?i(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js batch handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Batch execution failed`,500),{status:500})}}}function d(e){let{extractSecurityContext:t,cors:a}=e,o=r(e);return async function(e,r){try{if(e.method!==`POST`)return n.NextResponse.json({error:`Method not allowed`},{status:405});let s=await e.json(),c=s.query||s,l=s.options||{},u=await t(e,r),d=o.validateQuery(c);if(!d.isValid)return n.NextResponse.json({error:`Query validation failed: ${d.errors.join(`, `)}`},{status:400});let f=await o.explainQuery(c,u,l);return n.NextResponse.json(f,{headers:a?i(e,a):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js explain handler error:`,e),n.NextResponse.json({error:e instanceof Error?e.message:`Explain query failed`},{status:500})}}}function f(t){let{cors:a}=t,o=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let r=await e.d(o,await t.json());return n.NextResponse.json(r,{headers:a?i(t,a):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js discover handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Discovery failed`,500),{status:500})}}}function p(t){let{cors:a}=t,o=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let r=await t.json();if(!r.naturalLanguage)return n.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let s=await e.m(o,r);return n.NextResponse.json(s,{headers:a?i(t,a):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js suggest handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Query suggestion failed`,500),{status:500})}}}function m(t){let{cors:a}=t,o=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let r=await t.json();if(!r.query)return n.NextResponse.json(e.i(`query field is required`,400),{status:400});let s=await e.h(o,r);return n.NextResponse.json(s,{headers:a?i(t,a):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js validate handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Query validation failed`,500),{status:500})}}}function h(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let c=await t.json();if(!c.query)return n.NextResponse.json(e.i(`query field is required`,400),{status:400});let l=await e.p(s,await a(t,r),c);return n.NextResponse.json(l,{headers:o?i(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP load handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function g(a){let{extractSecurityContext:o,cors:s,mcp:c={enabled:!0}}=a,l=r(a);return async function(r){if(r.method===`DELETE`)return n.NextResponse.json({error:`Session termination not supported`},{status:405});if(r.method===`GET`){let e=new TextEncoder,a=t.u(),o=new ReadableStream({start(n){n.enqueue(e.encode(t.d({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},a,15e3)))}}),c=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(s){let e=i(r,s);Object.entries(e).forEach(([e,t])=>c.set(e,t))}return new n.NextResponse(o,{status:200,headers:c})}if(r.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=t.p(r.headers.get(`origin`),c.allowedOrigins?{allowedOrigins:c.allowedOrigins}:{});if(!a.valid)return n.NextResponse.json(t.n(null,-32600,a.reason),{status:403});let u=r.headers.get(`accept`);if(!t.f(u))return n.NextResponse.json(t.n(null,-32600,`Accept header must include both application/json and text/event-stream`),{status:400});let d=t.c(Object.fromEntries(r.headers.entries()));if(!d.ok)return n.NextResponse.json({error:`Unsupported MCP protocol version`,supported:d.supported},{status:426});let f;try{f=await r.json()}catch{f=null}let p=t.l(f);if(!p)return n.NextResponse.json(t.n(null,-32600,`Invalid JSON-RPC 2.0 request`),{status:400});let m=t.m(u),h=p.method===`initialize`,g=(e,t=200,a={})=>n.NextResponse.json(e,{status:t,headers:{...s?i(r,s):{},...a}});try{let e=await t.i(p.method,p.params,{semanticLayer:l,extractSecurityContext:e=>o(e),rawRequest:r,rawResponse:null});if(t.s(p))return new n.NextResponse(null,{status:202});let a=h&&e&&typeof e==`object`&&`sessionId`in e?e.sessionId:void 0,c={};a&&(c[t.t]=a);let u=t.r(p.id??null,e);if(m){let e=new TextEncoder,a=t.u(),o=new ReadableStream({start(n){n.enqueue(e.encode(`id: ${a}\n\n`)),n.enqueue(e.encode(t.d(u,a))),n.close()}}),l=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...c});if(s){let e=i(r,s);Object.entries(e).forEach(([e,t])=>l.set(e,t))}return new n.NextResponse(o,{status:200,headers:l})}return g(u,200,c)}catch(e){if(t.s(p))return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP notification processing error:`,e),new n.NextResponse(null,{status:202});process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP RPC handler error:`,e);let a=e?.code??-32603,o=e?.data,c=e.message||`MCP request failed`,l=t.n(p.id??null,a,c,o);if(m){let e=new TextEncoder,a=t.u(),o=new ReadableStream({start(n){n.enqueue(e.encode(`id: ${a}\n\n`)),n.enqueue(e.encode(t.d(l,a))),n.close()}}),c=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(s){let e=i(r,s);Object.entries(e).forEach(([e,t])=>c.set(e,t))}return new n.NextResponse(o,{status:200,headers:c})}return g(l,200)}}}function _(e){let{extractSecurityContext:t,cors:a,agent:o}=e;if(!o)throw Error(`agent config is required for createAgentChatHandler`);let s=r(e);return async function(e,r){try{if(e.method!==`POST`)return n.NextResponse.json({error:`Method not allowed - use POST`},{status:405});let{handleAgentChat:c}=await Promise.resolve().then(()=>require(`../handler-GLMhjuwG.cjs`)),{message:l,sessionId:u,history:d}=await e.json();if(!l||typeof l!=`string`)return n.NextResponse.json({error:`message is required and must be a string`},{status:400});let f=(o.apiKey||``).trim();if(o.allowClientApiKey){let t=e.headers.get(`x-agent-api-key`);t&&(f=t.trim())}if(!f)return n.NextResponse.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},{status:401});let p=o.allowClientApiKey&&e.headers.get(`x-agent-provider`)||void 0,m=o.allowClientApiKey&&e.headers.get(`x-agent-model`)||void 0,h=o.allowClientApiKey&&e.headers.get(`x-agent-provider-endpoint`)||void 0,g=await t(e,r),_=o.buildSystemContext?.(g),v=new TextEncoder,y=new ReadableStream({async start(e){try{let t=c({message:l,sessionId:u,history:d,semanticLayer:s,securityContext:g,agentConfig:o,apiKey:f,systemContext:_,providerOverride:p,modelOverride:m,baseURLOverride:h});for await(let n of t){let t=`data: ${JSON.stringify(n)}\n\n`;e.enqueue(v.encode(t))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(v.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}}),b=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(a){let t=i(e,a);Object.entries(t).forEach(([e,t])=>b.set(e,t))}return new Response(y,{status:200,headers:b})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js agent chat handler error:`,e),n.NextResponse.json({error:e instanceof Error?e.message:`Agent chat failed`},{status:500})}}}function v(e){let{mcp:t={enabled:!0}}=e,n={load:o(e),meta:s(e),sql:c(e),dryRun:l(e),batch:u(e),explain:d(e)};return t.enabled!==!1&&(n.mcpRpc=g(e)),e.agent&&(n.agentChat=_(e)),n}exports.createAgentChatHandler=_,exports.createBatchHandler=u,exports.createCubeHandlers=v,exports.createDiscoverHandler=f,exports.createDryRunHandler=l,exports.createExplainHandler=d,exports.createLoadHandler=o,exports.createMcpLoadHandler=h,exports.createMcpRpcHandler=g,exports.createMetaHandler=s,exports.createOptionsHandler=a,exports.createSqlHandler=c,exports.createSuggestHandler=p,exports.createValidateHandler=m;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../utils-BLFzzCI9.cjs`),t=require(`../mcp-transport-DPpei63d.cjs`);let n=require(`next/server`);function r(e){let{cubes:n,drizzle:r,schema:i,engineType:a,cache:o}=e;if(!n||n.length===0)throw Error(`At least one cube must be provided in the cubes array`);let s=new t.h({drizzle:r,schema:i,engineType:a,cache:o});return n.forEach(e=>{s.registerCube(e)}),s}function i(e,t){let n=e.headers.get(`origin`),r={};return t.origin&&(typeof t.origin==`string`?r[`Access-Control-Allow-Origin`]=t.origin:Array.isArray(t.origin)?n&&t.origin.includes(n)&&(r[`Access-Control-Allow-Origin`]=n):typeof t.origin==`function`&&n&&t.origin(n)&&(r[`Access-Control-Allow-Origin`]=n)),t.methods&&(r[`Access-Control-Allow-Methods`]=t.methods.join(`, `)),t.allowedHeaders&&(r[`Access-Control-Allow-Headers`]=t.allowedHeaders.join(`, `)),t.credentials&&(r[`Access-Control-Allow-Credentials`]=`true`),r}function a(e){return async function(t){let n=i(t,e);return new Response(null,{status:200,headers:n})}}function o(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let r=t.nextUrl.searchParams.get(`query`);if(!r)return n.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{c=JSON.parse(r)}catch{return n.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return n.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await a(t,r),u=s.validateQuery(c);if(!u.isValid)return n.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=t.headers.get(`x-cache-control`)===`no-cache`,f=await s.executeMultiCubeQuery(c,l,{skipCache:d}),p=e.r(c,f,s);return n.NextResponse.json(p,{headers:o?i(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js load handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function s(t){let{cors:a}=t,o=r(t);return async function(t,r){try{let r=e.a(o.getMetadata());return n.NextResponse.json(r,{headers:a?i(t,a):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js meta handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Failed to fetch metadata`,500),{status:500})}}}function c(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let r=t.nextUrl.searchParams.get(`query`);if(!r)return n.NextResponse.json(e.i(`Query parameter is required`,400),{status:400});try{c=JSON.parse(r)}catch{return n.NextResponse.json(e.i(`Invalid JSON in query parameter`,400),{status:400})}}else return n.NextResponse.json(e.i(`Method not allowed`,405),{status:405});let l=await a(t,r),u=s.validateQuery(c);if(!u.isValid)return n.NextResponse.json(e.i(`Query validation failed: ${u.errors.join(`, `)}`,400),{status:400});let d=c.measures?.[0]||c.dimensions?.[0];if(!d)return n.NextResponse.json(e.i(`No measures or dimensions specified`,400),{status:400});let f=d.split(`.`)[0],p=await s.generateSQL(f,c,l),m=e.o(c,p);return n.NextResponse.json(m,{headers:o?i(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js SQL handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`SQL generation failed`,500),{status:500})}}}function l(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{let c;if(t.method===`POST`){let e=await t.json();c=e.query||e}else if(t.method===`GET`){let e=t.nextUrl.searchParams.get(`query`);if(!e)return n.NextResponse.json({error:`Query parameter is required`,valid:!1},{status:400});try{c=JSON.parse(e)}catch{return n.NextResponse.json({error:`Invalid JSON in query parameter`,valid:!1},{status:400})}}else return n.NextResponse.json({error:`Method not allowed`,valid:!1},{status:405});let l=await a(t,r),u=await e.f(c,l,s);return n.NextResponse.json(u,{headers:o?i(t,o):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js dry-run handler error:`,e),n.NextResponse.json({error:e instanceof Error?e.message:`Dry-run validation failed`,valid:!1},{status:400})}}}function u(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let{queries:c}=await t.json();if(!c||!Array.isArray(c))return n.NextResponse.json(e.i(`Request body must contain a "queries" array`,400),{status:400});if(c.length===0)return n.NextResponse.json(e.i(`Queries array cannot be empty`,400),{status:400});let l=await e.u(c,await a(t,r),s,{skipCache:t.headers.get(`x-cache-control`)===`no-cache`});return n.NextResponse.json(l,{headers:o?i(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js batch handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Batch execution failed`,500),{status:500})}}}function d(e){let{extractSecurityContext:t,cors:a}=e,o=r(e);return async function(e,r){try{if(e.method!==`POST`)return n.NextResponse.json({error:`Method not allowed`},{status:405});let s=await e.json(),c=s.query||s,l=s.options||{},u=await t(e,r),d=o.validateQuery(c);if(!d.isValid)return n.NextResponse.json({error:`Query validation failed: ${d.errors.join(`, `)}`},{status:400});let f=await o.explainQuery(c,u,l);return n.NextResponse.json(f,{headers:a?i(e,a):{}})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js explain handler error:`,e),n.NextResponse.json({error:e instanceof Error?e.message:`Explain query failed`},{status:500})}}}function f(t){let{cors:a}=t,o=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let r=await e.d(o,await t.json());return n.NextResponse.json(r,{headers:a?i(t,a):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js discover handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Discovery failed`,500),{status:500})}}}function p(t){let{cors:a}=t,o=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let r=await t.json();if(!r.naturalLanguage)return n.NextResponse.json(e.i(`naturalLanguage field is required`,400),{status:400});let s=await e.m(o,r);return n.NextResponse.json(s,{headers:a?i(t,a):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js suggest handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Query suggestion failed`,500),{status:500})}}}function m(t){let{cors:a}=t,o=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let r=await t.json();if(!r.query)return n.NextResponse.json(e.i(`query field is required`,400),{status:400});let s=await e.h(o,r);return n.NextResponse.json(s,{headers:a?i(t,a):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js validate handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Query validation failed`,500),{status:500})}}}function h(t){let{extractSecurityContext:a,cors:o}=t,s=r(t);return async function(t,r){try{if(t.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let c=await t.json();if(!c.query)return n.NextResponse.json(e.i(`query field is required`,400),{status:400});let l=await e.p(s,await a(t,r),c);return n.NextResponse.json(l,{headers:o?i(t,o):{}})}catch(t){return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP load handler error:`,t),n.NextResponse.json(e.i(t instanceof Error?t.message:`Query execution failed`,500),{status:500})}}}function g(a){let{extractSecurityContext:o,cors:s,mcp:c={enabled:!0}}=a,l=r(a);return async function(r){if(r.method===`DELETE`)return n.NextResponse.json({error:`Session termination not supported`},{status:405});if(r.method===`GET`){let e=new TextEncoder,a=t.u(),o=new ReadableStream({start(n){n.enqueue(e.encode(t.d({jsonrpc:`2.0`,method:`mcp/ready`,params:{protocol:`streamable-http`}},a,15e3)))}}),c=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(s){let e=i(r,s);Object.entries(e).forEach(([e,t])=>c.set(e,t))}return new n.NextResponse(o,{status:200,headers:c})}if(r.method!==`POST`)return n.NextResponse.json(e.i(`Method not allowed - use POST`,405),{status:405});let a=t.p(r.headers.get(`origin`),c.allowedOrigins?{allowedOrigins:c.allowedOrigins}:{});if(!a.valid)return n.NextResponse.json(t.n(null,-32600,a.reason),{status:403});let u=r.headers.get(`accept`);if(!t.f(u))return n.NextResponse.json(t.n(null,-32600,`Accept header must include both application/json and text/event-stream`),{status:400});let d=t.c(Object.fromEntries(r.headers.entries()));if(!d.ok)return n.NextResponse.json({error:`Unsupported MCP protocol version`,supported:d.supported},{status:426});let f;try{f=await r.json()}catch{f=null}let p=t.l(f);if(!p)return n.NextResponse.json(t.n(null,-32600,`Invalid JSON-RPC 2.0 request`),{status:400});let m=t.m(u),h=p.method===`initialize`,g=(e,t=200,a={})=>n.NextResponse.json(e,{status:t,headers:{...s?i(r,s):{},...a}});try{let e=await t.i(p.method,p.params,{semanticLayer:l,extractSecurityContext:e=>o(e),rawRequest:r,rawResponse:null});if(t.s(p))return new n.NextResponse(null,{status:202});let a=h&&e&&typeof e==`object`&&`sessionId`in e?e.sessionId:void 0,c={};a&&(c[t.t]=a);let u=t.r(p.id??null,e);if(m){let e=new TextEncoder,a=t.u(),o=new ReadableStream({start(n){n.enqueue(e.encode(`id: ${a}\n\n`)),n.enqueue(e.encode(t.d(u,a))),n.close()}}),l=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`,...c});if(s){let e=i(r,s);Object.entries(e).forEach(([e,t])=>l.set(e,t))}return new n.NextResponse(o,{status:200,headers:l})}return g(u,200,c)}catch(e){if(t.s(p))return process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP notification processing error:`,e),new n.NextResponse(null,{status:202});process.env.NODE_ENV!==`test`&&console.error(`Next.js MCP RPC handler error:`,e);let a=e?.code??-32603,o=e?.data,c=e.message||`MCP request failed`,l=t.n(p.id??null,a,c,o);if(m){let e=new TextEncoder,a=t.u(),o=new ReadableStream({start(n){n.enqueue(e.encode(`id: ${a}\n\n`)),n.enqueue(e.encode(t.d(l,a))),n.close()}}),c=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(s){let e=i(r,s);Object.entries(e).forEach(([e,t])=>c.set(e,t))}return new n.NextResponse(o,{status:200,headers:c})}return g(l,200)}}}function _(e){let{extractSecurityContext:t,cors:a,agent:o}=e;if(!o)throw Error(`agent config is required for createAgentChatHandler`);let s=r(e);return async function(e,r){try{if(e.method!==`POST`)return n.NextResponse.json({error:`Method not allowed - use POST`},{status:405});let{handleAgentChat:c}=await Promise.resolve().then(()=>require(`../handler-ClgB__a-.cjs`)),{message:l,sessionId:u,history:d}=await e.json();if(!l||typeof l!=`string`)return n.NextResponse.json({error:`message is required and must be a string`},{status:400});let f=(o.apiKey||``).trim();if(o.allowClientApiKey){let t=e.headers.get(`x-agent-api-key`);t&&(f=t.trim())}if(!f)return n.NextResponse.json({error:`No API key configured. Set agent.apiKey in server config or send X-Agent-Api-Key header.`},{status:401});let p=o.allowClientApiKey&&e.headers.get(`x-agent-provider`)||void 0,m=o.allowClientApiKey&&e.headers.get(`x-agent-model`)||void 0,h=o.allowClientApiKey&&e.headers.get(`x-agent-provider-endpoint`)||void 0,g=await t(e,r),_=o.buildSystemContext?.(g),v=new TextEncoder,y=new ReadableStream({async start(e){try{let t=c({message:l,sessionId:u,history:d,semanticLayer:s,securityContext:g,agentConfig:o,apiKey:f,systemContext:_,providerOverride:p,modelOverride:m,baseURLOverride:h});for await(let n of t){let t=`data: ${JSON.stringify(n)}\n\n`;e.enqueue(v.encode(t))}}catch(t){let n={type:`error`,data:{message:t instanceof Error?t.message:`Stream failed`}};e.enqueue(v.encode(`data: ${JSON.stringify(n)}\n\n`))}finally{e.close()}}}),b=new Headers({"Content-Type":`text/event-stream`,"Cache-Control":`no-cache`,Connection:`keep-alive`});if(a){let t=i(e,a);Object.entries(t).forEach(([e,t])=>b.set(e,t))}return new Response(y,{status:200,headers:b})}catch(e){return process.env.NODE_ENV!==`test`&&console.error(`Next.js agent chat handler error:`,e),n.NextResponse.json({error:e instanceof Error?e.message:`Agent chat failed`},{status:500})}}}function v(e){let{mcp:t={enabled:!0}}=e,n={load:o(e),meta:s(e),sql:c(e),dryRun:l(e),batch:u(e),explain:d(e)};return t.enabled!==!1&&(n.mcpRpc=g(e)),e.agent&&(n.agentChat=_(e)),n}exports.createAgentChatHandler=_,exports.createBatchHandler=u,exports.createCubeHandlers=v,exports.createDiscoverHandler=f,exports.createDryRunHandler=l,exports.createExplainHandler=d,exports.createLoadHandler=o,exports.createMcpLoadHandler=h,exports.createMcpRpcHandler=g,exports.createMetaHandler=s,exports.createOptionsHandler=a,exports.createSqlHandler=c,exports.createSuggestHandler=p,exports.createValidateHandler=m;
|
|
@@ -67,7 +67,7 @@ export interface NextAdapterOptions {
|
|
|
67
67
|
/**
|
|
68
68
|
* Database engine type (optional - auto-detected if not provided)
|
|
69
69
|
*/
|
|
70
|
-
engineType?: 'postgres' | 'mysql' | 'sqlite' | 'singlestore' | 'duckdb' | 'databend';
|
|
70
|
+
engineType?: 'postgres' | 'mysql' | 'sqlite' | 'singlestore' | 'duckdb' | 'databend' | 'snowflake';
|
|
71
71
|
/**
|
|
72
72
|
* CORS configuration (optional)
|
|
73
73
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as e, d as t, f as n, h as r, i, m as a, o, p as s, r as c, u as l } from "../utils-
|
|
2
|
-
import { c as u, d, f, h as p, i as m, l as h, m as g, n as _, p as v, r as y, s as b, t as x, u as S } from "../mcp-transport-
|
|
1
|
+
import { a as e, d as t, f as n, h as r, i, m as a, o, p as s, r as c, u as l } from "../utils-B7VkyzMv.js";
|
|
2
|
+
import { c as u, d, f, h as p, i as m, l as h, m as g, n as _, p as v, r as y, s as b, t as x, u as S } from "../mcp-transport-DWSNkwUY.js";
|
|
3
3
|
import { NextResponse as C } from "next/server";
|
|
4
4
|
//#region src/adapters/nextjs/index.ts
|
|
5
5
|
function w(e) {
|
|
@@ -324,7 +324,7 @@ function R(e) {
|
|
|
324
324
|
return async function(e, a) {
|
|
325
325
|
try {
|
|
326
326
|
if (e.method !== "POST") return C.json({ error: "Method not allowed - use POST" }, { status: 405 });
|
|
327
|
-
let { handleAgentChat: o } = await import("../handler-
|
|
327
|
+
let { handleAgentChat: o } = await import("../handler-rPpxuopb.js"), { message: s, sessionId: c, history: l } = await e.json();
|
|
328
328
|
if (!s || typeof s != "string") return C.json({ error: "message is required and must be a string" }, { status: 400 });
|
|
329
329
|
let u = (r.apiKey || "").trim();
|
|
330
330
|
if (r.allowClientApiKey) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var e=class{client;apiKey;baseURL;initialized=!1;constructor(e,t){this.apiKey=e,this.baseURL=t?.baseURL}async ensureClient(){if(this.initialized)return;let e;try{let t=await Promise.resolve().then(()=>require(`./openai-
|
|
1
|
+
var e=class{client;apiKey;baseURL;initialized=!1;constructor(e,t){this.apiKey=e,this.baseURL=t?.baseURL}async ensureClient(){if(this.initialized)return;let e;try{let t=await Promise.resolve().then(()=>require(`./openai-C96O8M75.cjs`));e=t.default||t.OpenAI||t}catch{throw Error(`openai is required for the OpenAI provider. Install it with: npm install openai`)}let t={apiKey:this.apiKey};this.baseURL&&(t.baseURL=this.baseURL),this.client=new e(t),this.initialized=!0}async createStream(e){await this.ensureClient();let{messages:t}=this.formatMessages(e.messages,e.system);return this.client.chat.completions.create({model:e.model,max_completion_tokens:e.maxTokens,tools:this.formatTools(e.tools),messages:t,stream:!0,stream_options:{include_usage:!0}})}async*parseStreamEvents(e){let t=new Map;for await(let n of e){let e=n;e.usage&&(yield{type:`message_meta`,inputTokens:e.usage.prompt_tokens,outputTokens:e.usage.completion_tokens,stopReason:``});let r=e.choices?.[0];if(!r)continue;let i=r.delta;if(i){if(i.content&&(yield{type:`text_delta`,text:i.content}),i.tool_calls)for(let e of i.tool_calls){let n=e.index??0;if(e.id&&(t.set(n,{id:e.id,name:e.function?.name||``,arguments:``}),yield{type:`tool_use_start`,id:e.id,name:e.function?.name||``}),e.function?.name&&t.has(n)){let r=t.get(n);r.name||=e.function.name}if(e.function?.arguments){let r=t.get(n);r&&(r.arguments+=e.function.arguments,yield{type:`tool_input_delta`,json:e.function.arguments})}}if(r.finish_reason){for(let[e,n]of t){let r={};try{n.arguments&&(r=JSON.parse(n.arguments))}catch{}yield{type:`tool_use_end`,id:n.id,input:r},t.delete(e)}yield{type:`message_meta`,stopReason:r.finish_reason}}}}}formatTools(e){return e.map(e=>({type:`function`,function:{name:e.name,description:e.description,parameters:e.parameters}}))}formatMessages(e,t){let n=[{role:`system`,content:t}];for(let t of e)if(t.role===`user`)n.push({role:`user`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)});else if(t.role===`assistant`)if(typeof t.content==`string`)n.push({role:`assistant`,content:t.content});else{let e=t.content,r=e.filter(e=>e.type===`text`).map(e=>e.text).join(``),i=e.filter(e=>e.type===`tool_use`).map(e=>({id:e.id,type:`function`,function:{name:e.name,arguments:JSON.stringify(e.input||{})}})),a={role:`assistant`};r&&(a.content=r),i.length>0&&(a.tool_calls=i),n.push(a)}else t.role===`tool`?n.push(t):t.role===`tool_result`&&n.push({role:`user`,content:typeof t.content==`string`?t.content:JSON.stringify(t.content)});return{messages:n}}formatToolResults(e){return e.map(e=>({role:`tool`,tool_call_id:e.toolUseId,content:e.content}))}shouldContinue(e){return e===`tool_calls`}formatError(e){if(!e||!(e instanceof Error))return`Something went wrong. Please try again.`;let t=e.message||``,n=e;return n.status===429?`Too many requests. Please wait a moment and try again.`:n.status===401?`Authentication failed. Please check your API key configuration.`:n.status===503||n.status===502?`The AI service is temporarily unavailable. Please try again in a moment.`:n.status===400?`There was a problem with the request. Please try again.`:t.startsWith(`{`)||t.startsWith(`Error: {`)?`The AI service encountered an error. Please try again.`:t}};exports.OpenAIProvider=e;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function e(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n}function t(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)}var n=function(){let{crypto:e}=globalThis;if(e?.randomUUID)return n=e.randomUUID.bind(e),e.randomUUID();let t=new Uint8Array(1),r=e?()=>e.getRandomValues(t)[0]:()=>Math.random()*255&255;return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(e^r()&15>>e/4).toString(16))};function r(e){return typeof e==`object`&&!!e&&(`name`in e&&e.name===`AbortError`||`message`in e&&String(e.message).includes(`FetchRequestCanceledException`))}var i=e=>{if(e instanceof Error)return e;if(typeof e==`object`&&e){try{if(Object.prototype.toString.call(e)===`[object Error]`){let t=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(t.stack=e.stack),e.cause&&!t.cause&&(t.cause=e.cause),e.name&&(t.name=e.name),t}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)},a=class extends Error{},o=class e extends a{constructor(t,n,r,i){super(`${e.makeMessage(t,n,r)}`),this.status=t,this.headers=i,this.requestID=i?.get(`x-request-id`),this.error=n;let a=n;this.code=a?.code,this.param=a?.param,this.type=a?.type}static makeMessage(e,t,n){let r=t?.message?typeof t.message==`string`?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||`(no status code or body)`}static generate(t,n,r,a){if(!t||!a)return new c({message:r,cause:i(n)});let o=n?.error;return t===400?new u(t,o,r,a):t===401?new d(t,o,r,a):t===403?new f(t,o,r,a):t===404?new p(t,o,r,a):t===409?new m(t,o,r,a):t===422?new h(t,o,r,a):t===429?new g(t,o,r,a):t>=500?new _(t,o,r,a):new e(t,o,r,a)}},s=class extends o{constructor({message:e}={}){super(void 0,void 0,e||`Request was aborted.`,void 0)}},c=class extends o{constructor({message:e,cause:t}){super(void 0,void 0,e||`Connection error.`,void 0),t&&(this.cause=t)}},l=class extends c{constructor({message:e}={}){super({message:e??`Request timed out.`})}},u=class extends o{},d=class extends o{},f=class extends o{},p=class extends o{},m=class extends o{},h=class extends o{},g=class extends o{},_=class extends o{},v=class extends a{constructor(){super(`Could not parse response content as the length limit was reached`)}},y=class extends a{constructor(){super(`Could not parse response content as the request was rejected by the content filter`)}},b=class extends Error{constructor(e){super(e)}},ee=/^[a-z][a-z0-9+.-]*:/i,te=e=>ee.test(e),x=e=>(x=Array.isArray,x(e)),S=x;function C(e){return typeof e==`object`?e??{}:{}}function w(e){if(!e)return!0;for(let t in e)return!1;return!0}function ne(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function T(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var re=(e,t)=>{if(typeof t!=`number`||!Number.isInteger(t))throw new a(`${e} must be an integer`);if(t<0)throw new a(`${e} must be a positive integer`);return t},ie=e=>{try{return JSON.parse(e)}catch{return}},ae=e=>new Promise(t=>setTimeout(t,e)),oe=`6.29.0`,se=()=>typeof window<`u`&&window.document!==void 0&&typeof navigator<`u`;function ce(){return typeof Deno<`u`&&Deno.build!=null?`deno`:typeof EdgeRuntime<`u`?`edge`:Object.prototype.toString.call(globalThis.process===void 0?0:globalThis.process)===`[object process]`?`node`:`unknown`}var le=()=>{let e=ce();if(e===`deno`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":oe,"X-Stainless-OS":fe(Deno.build.os),"X-Stainless-Arch":de(Deno.build.arch),"X-Stainless-Runtime":`deno`,"X-Stainless-Runtime-Version":typeof Deno.version==`string`?Deno.version:Deno.version?.deno??`unknown`};if(typeof EdgeRuntime<`u`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":oe,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":`edge`,"X-Stainless-Runtime-Version":globalThis.process.version};if(e===`node`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":oe,"X-Stainless-OS":fe(globalThis.process.platform??`unknown`),"X-Stainless-Arch":de(globalThis.process.arch??`unknown`),"X-Stainless-Runtime":`node`,"X-Stainless-Runtime-Version":globalThis.process.version??`unknown`};let t=ue();return t?{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":oe,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`browser:${t.browser}`,"X-Stainless-Runtime-Version":t.version}:{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":oe,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`unknown`,"X-Stainless-Runtime-Version":`unknown`}};function ue(){if(typeof navigator>`u`||!navigator)return null;for(let{key:e,pattern:t}of[{key:`edge`,pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`chrome`,pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`firefox`,pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`safari`,pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}]){let n=t.exec(navigator.userAgent);if(n)return{browser:e,version:`${n[1]||0}.${n[2]||0}.${n[3]||0}`}}return null}var de=e=>e===`x32`?`x32`:e===`x86_64`||e===`x64`?`x64`:e===`arm`?`arm`:e===`aarch64`||e===`arm64`?`arm64`:e?`other:${e}`:`unknown`,fe=e=>(e=e.toLowerCase(),e.includes(`ios`)?`iOS`:e===`android`?`Android`:e===`darwin`?`MacOS`:e===`win32`?`Windows`:e===`freebsd`?`FreeBSD`:e===`openbsd`?`OpenBSD`:e===`linux`?`Linux`:e?`Other:${e}`:`Unknown`),pe,me=()=>pe??=le();function he(){if(typeof fetch<`u`)return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function ge(...e){let t=globalThis.ReadableStream;if(t===void 0)throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new t(...e)}function _e(e){let t=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():e[Symbol.iterator]();return ge({start(){},async pull(e){let{done:n,value:r}=await t.next();n?e.close():e.enqueue(r)},async cancel(){await t.return?.()}})}function ve(e){if(e[Symbol.asyncIterator])return e;let t=e.getReader();return{async next(){try{let e=await t.read();return e?.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){let e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function ye(e){if(typeof e!=`object`||!e)return;if(e[Symbol.asyncIterator]){await e[Symbol.asyncIterator]().return?.();return}let t=e.getReader(),n=t.cancel();t.releaseLock(),await n}var be=({headers:e,body:t})=>({bodyHeaders:{"content-type":`application/json`},body:JSON.stringify(t)}),xe=`RFC3986`,Se=e=>String(e),Ce={RFC1738:e=>String(e).replace(/%20/g,`+`),RFC3986:Se},we=(e,t)=>(we=Object.hasOwn??Function.prototype.call.bind(Object.prototype.hasOwnProperty),we(e,t)),E=(()=>{let e=[];for(let t=0;t<256;++t)e.push(`%`+((t<16?`0`:``)+t.toString(16)).toUpperCase());return e})(),Te=1024,Ee=(e,t,n,r,i)=>{if(e.length===0)return e;let a=e;if(typeof e==`symbol`?a=Symbol.prototype.toString.call(e):typeof e!=`string`&&(a=String(e)),n===`iso-8859-1`)return escape(a).replace(/%u[0-9a-f]{4}/gi,function(e){return`%26%23`+parseInt(e.slice(2),16)+`%3B`});let o=``;for(let e=0;e<a.length;e+=Te){let t=a.length>=Te?a.slice(e,e+Te):a,n=[];for(let e=0;e<t.length;++e){let r=t.charCodeAt(e);if(r===45||r===46||r===95||r===126||r>=48&&r<=57||r>=65&&r<=90||r>=97&&r<=122||i===`RFC1738`&&(r===40||r===41)){n[n.length]=t.charAt(e);continue}if(r<128){n[n.length]=E[r];continue}if(r<2048){n[n.length]=E[192|r>>6]+E[128|r&63];continue}if(r<55296||r>=57344){n[n.length]=E[224|r>>12]+E[128|r>>6&63]+E[128|r&63];continue}e+=1,r=65536+((r&1023)<<10|t.charCodeAt(e)&1023),n[n.length]=E[240|r>>18]+E[128|r>>12&63]+E[128|r>>6&63]+E[128|r&63]}o+=n.join(``)}return o};function De(e){return!e||typeof e!=`object`?!1:!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))}function Oe(e,t){if(x(e)){let n=[];for(let r=0;r<e.length;r+=1)n.push(t(e[r]));return n}return t(e)}var ke={brackets(e){return String(e)+`[]`},comma:`comma`,indices(e,t){return String(e)+`[`+t+`]`},repeat(e){return String(e)}},Ae=function(e,t){Array.prototype.push.apply(e,x(t)?t:[t])},je,D={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:`indices`,charset:`utf-8`,charsetSentinel:!1,delimiter:`&`,encode:!0,encodeDotInKeys:!1,encoder:Ee,encodeValuesOnly:!1,format:xe,formatter:Se,indices:!1,serializeDate(e){return(je??=Function.prototype.call.bind(Date.prototype.toISOString))(e)},skipNulls:!1,strictNullHandling:!1};function Me(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||typeof e==`symbol`||typeof e==`bigint`}var Ne={};function Pe(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_){let v=e,y=_,b=0,ee=!1;for(;(y=y.get(Ne))!==void 0&&!ee;){let t=y.get(e);if(b+=1,t!==void 0){if(t===b)throw RangeError(`Cyclic object value`);ee=!0}y.get(Ne)===void 0&&(b=0)}if(typeof l==`function`?v=l(t,v):v instanceof Date?v=f?.(v):n===`comma`&&x(v)&&(v=Oe(v,function(e){return e instanceof Date?f?.(e):e})),v===null){if(a)return c&&!h?c(t,D.encoder,g,`key`,p):t;v=``}if(Me(v)||De(v)){if(c){let e=h?t:c(t,D.encoder,g,`key`,p);return[m?.(e)+`=`+m?.(c(v,D.encoder,g,`value`,p))]}return[m?.(t)+`=`+m?.(String(v))]}let te=[];if(v===void 0)return te;let S;if(n===`comma`&&x(v))h&&c&&(v=Oe(v,c)),S=[{value:v.length>0?v.join(`,`)||null:void 0}];else if(x(l))S=l;else{let e=Object.keys(v);S=u?e.sort(u):e}let C=s?String(t).replace(/\./g,`%2E`):String(t),w=r&&x(v)&&v.length===1?C+`[]`:C;if(i&&x(v)&&v.length===0)return w+`[]`;for(let t=0;t<S.length;++t){let y=S[t],ee=typeof y==`object`&&y.value!==void 0?y.value:v[y];if(o&&ee===null)continue;let C=d&&s?y.replace(/\./g,`%2E`):y,ne=x(v)?typeof n==`function`?n(w,C):w:w+(d?`.`+C:`[`+C+`]`);_.set(e,b);let T=new WeakMap;T.set(Ne,_),Ae(te,Pe(ee,ne,n,r,i,a,o,s,n===`comma`&&h&&x(v)?null:c,l,u,d,f,p,m,h,g,T))}return te}function Fe(e=D){if(e.allowEmptyArrays!==void 0&&typeof e.allowEmptyArrays!=`boolean`)throw TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(e.encodeDotInKeys!==void 0&&typeof e.encodeDotInKeys!=`boolean`)throw TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(e.encoder!==null&&e.encoder!==void 0&&typeof e.encoder!=`function`)throw TypeError(`Encoder has to be a function.`);let t=e.charset||D.charset;if(e.charset!==void 0&&e.charset!==`utf-8`&&e.charset!==`iso-8859-1`)throw TypeError(`The charset option must be either utf-8, iso-8859-1, or undefined`);let n=xe;if(e.format!==void 0){if(!we(Ce,e.format))throw TypeError(`Unknown format option provided.`);n=e.format}let r=Ce[n],i=D.filter;(typeof e.filter==`function`||x(e.filter))&&(i=e.filter);let a;if(a=e.arrayFormat&&e.arrayFormat in ke?e.arrayFormat:`indices`in e?e.indices?`indices`:`repeat`:D.arrayFormat,`commaRoundTrip`in e&&typeof e.commaRoundTrip!=`boolean`)throw TypeError("`commaRoundTrip` must be a boolean, or absent");let o=e.allowDots===void 0?e.encodeDotInKeys?!0:D.allowDots:!!e.allowDots;return{addQueryPrefix:typeof e.addQueryPrefix==`boolean`?e.addQueryPrefix:D.addQueryPrefix,allowDots:o,allowEmptyArrays:typeof e.allowEmptyArrays==`boolean`?!!e.allowEmptyArrays:D.allowEmptyArrays,arrayFormat:a,charset:t,charsetSentinel:typeof e.charsetSentinel==`boolean`?e.charsetSentinel:D.charsetSentinel,commaRoundTrip:!!e.commaRoundTrip,delimiter:e.delimiter===void 0?D.delimiter:e.delimiter,encode:typeof e.encode==`boolean`?e.encode:D.encode,encodeDotInKeys:typeof e.encodeDotInKeys==`boolean`?e.encodeDotInKeys:D.encodeDotInKeys,encoder:typeof e.encoder==`function`?e.encoder:D.encoder,encodeValuesOnly:typeof e.encodeValuesOnly==`boolean`?e.encodeValuesOnly:D.encodeValuesOnly,filter:i,format:n,formatter:r,serializeDate:typeof e.serializeDate==`function`?e.serializeDate:D.serializeDate,skipNulls:typeof e.skipNulls==`boolean`?e.skipNulls:D.skipNulls,sort:typeof e.sort==`function`?e.sort:null,strictNullHandling:typeof e.strictNullHandling==`boolean`?e.strictNullHandling:D.strictNullHandling}}function Ie(e,t={}){let n=e,r=Fe(t),i,a;typeof r.filter==`function`?(a=r.filter,n=a(``,n)):x(r.filter)&&(a=r.filter,i=a);let o=[];if(typeof n!=`object`||!n)return``;let s=ke[r.arrayFormat],c=s===`comma`&&r.commaRoundTrip;i||=Object.keys(n),r.sort&&i.sort(r.sort);let l=new WeakMap;for(let e=0;e<i.length;++e){let t=i[e];r.skipNulls&&n[t]===null||Ae(o,Pe(n[t],t,s,c,r.allowEmptyArrays,r.strictNullHandling,r.skipNulls,r.encodeDotInKeys,r.encode?r.encoder:null,r.filter,r.sort,r.allowDots,r.serializeDate,r.format,r.formatter,r.encodeValuesOnly,r.charset,l))}let u=o.join(r.delimiter),d=r.addQueryPrefix===!0?`?`:``;return r.charsetSentinel&&(r.charset===`iso-8859-1`?d+=`utf8=%26%2310003%3B&`:d+=`utf8=%E2%9C%93&`),u.length>0?d+u:``}function Le(e){return Ie(e,{arrayFormat:`brackets`})}function Re(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var ze;function Be(e){let t;return(ze??=(t=new globalThis.TextEncoder,t.encode.bind(t)))(e)}var Ve;function He(e){let t;return(Ve??=(t=new globalThis.TextDecoder,t.decode.bind(t)))(e)}var O,k,Ue=class{constructor(){O.set(this,void 0),k.set(this,void 0),e(this,O,new Uint8Array,`f`),e(this,k,null,`f`)}decode(n){if(n==null)return[];let r=n instanceof ArrayBuffer?new Uint8Array(n):typeof n==`string`?Be(n):n;e(this,O,Re([t(this,O,`f`),r]),`f`);let i=[],a;for(;(a=We(t(this,O,`f`),t(this,k,`f`)))!=null;){if(a.carriage&&t(this,k,`f`)==null){e(this,k,a.index,`f`);continue}if(t(this,k,`f`)!=null&&(a.index!==t(this,k,`f`)+1||a.carriage)){i.push(He(t(this,O,`f`).subarray(0,t(this,k,`f`)-1))),e(this,O,t(this,O,`f`).subarray(t(this,k,`f`)),`f`),e(this,k,null,`f`);continue}let n=t(this,k,`f`)===null?a.preceding:a.preceding-1,r=He(t(this,O,`f`).subarray(0,n));i.push(r),e(this,O,t(this,O,`f`).subarray(a.index),`f`),e(this,k,null,`f`)}return i}flush(){return t(this,O,`f`).length?this.decode(`
|
|
1
|
+
function e(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n}function t(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)}var n=function(){let{crypto:e}=globalThis;if(e?.randomUUID)return n=e.randomUUID.bind(e),e.randomUUID();let t=new Uint8Array(1),r=e?()=>e.getRandomValues(t)[0]:()=>Math.random()*255&255;return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(e^r()&15>>e/4).toString(16))};function r(e){return typeof e==`object`&&!!e&&(`name`in e&&e.name===`AbortError`||`message`in e&&String(e.message).includes(`FetchRequestCanceledException`))}var i=e=>{if(e instanceof Error)return e;if(typeof e==`object`&&e){try{if(Object.prototype.toString.call(e)===`[object Error]`){let t=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(t.stack=e.stack),e.cause&&!t.cause&&(t.cause=e.cause),e.name&&(t.name=e.name),t}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)},a=class extends Error{},o=class e extends a{constructor(t,n,r,i){super(`${e.makeMessage(t,n,r)}`),this.status=t,this.headers=i,this.requestID=i?.get(`x-request-id`),this.error=n;let a=n;this.code=a?.code,this.param=a?.param,this.type=a?.type}static makeMessage(e,t,n){let r=t?.message?typeof t.message==`string`?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||`(no status code or body)`}static generate(t,n,r,a){if(!t||!a)return new c({message:r,cause:i(n)});let o=n?.error;return t===400?new u(t,o,r,a):t===401?new d(t,o,r,a):t===403?new f(t,o,r,a):t===404?new p(t,o,r,a):t===409?new m(t,o,r,a):t===422?new h(t,o,r,a):t===429?new g(t,o,r,a):t>=500?new _(t,o,r,a):new e(t,o,r,a)}},s=class extends o{constructor({message:e}={}){super(void 0,void 0,e||`Request was aborted.`,void 0)}},c=class extends o{constructor({message:e,cause:t}){super(void 0,void 0,e||`Connection error.`,void 0),t&&(this.cause=t)}},l=class extends c{constructor({message:e}={}){super({message:e??`Request timed out.`})}},u=class extends o{},d=class extends o{},f=class extends o{},p=class extends o{},m=class extends o{},h=class extends o{},g=class extends o{},_=class extends o{},v=class extends a{constructor(){super(`Could not parse response content as the length limit was reached`)}},y=class extends a{constructor(){super(`Could not parse response content as the request was rejected by the content filter`)}},b=class extends Error{constructor(e){super(e)}},ee=/^[a-z][a-z0-9+.-]*:/i,te=e=>ee.test(e),x=e=>(x=Array.isArray,x(e)),S=x;function C(e){return typeof e==`object`?e??{}:{}}function w(e){if(!e)return!0;for(let t in e)return!1;return!0}function ne(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function T(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var re=(e,t)=>{if(typeof t!=`number`||!Number.isInteger(t))throw new a(`${e} must be an integer`);if(t<0)throw new a(`${e} must be a positive integer`);return t},ie=e=>{try{return JSON.parse(e)}catch{return}},ae=e=>new Promise(t=>setTimeout(t,e)),oe=`6.32.0`,se=()=>typeof window<`u`&&window.document!==void 0&&typeof navigator<`u`;function ce(){return typeof Deno<`u`&&Deno.build!=null?`deno`:typeof EdgeRuntime<`u`?`edge`:Object.prototype.toString.call(globalThis.process===void 0?0:globalThis.process)===`[object process]`?`node`:`unknown`}var le=()=>{let e=ce();if(e===`deno`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":oe,"X-Stainless-OS":fe(Deno.build.os),"X-Stainless-Arch":de(Deno.build.arch),"X-Stainless-Runtime":`deno`,"X-Stainless-Runtime-Version":typeof Deno.version==`string`?Deno.version:Deno.version?.deno??`unknown`};if(typeof EdgeRuntime<`u`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":oe,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":`edge`,"X-Stainless-Runtime-Version":globalThis.process.version};if(e===`node`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":oe,"X-Stainless-OS":fe(globalThis.process.platform??`unknown`),"X-Stainless-Arch":de(globalThis.process.arch??`unknown`),"X-Stainless-Runtime":`node`,"X-Stainless-Runtime-Version":globalThis.process.version??`unknown`};let t=ue();return t?{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":oe,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`browser:${t.browser}`,"X-Stainless-Runtime-Version":t.version}:{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":oe,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`unknown`,"X-Stainless-Runtime-Version":`unknown`}};function ue(){if(typeof navigator>`u`||!navigator)return null;for(let{key:e,pattern:t}of[{key:`edge`,pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`chrome`,pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`firefox`,pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`safari`,pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}]){let n=t.exec(navigator.userAgent);if(n)return{browser:e,version:`${n[1]||0}.${n[2]||0}.${n[3]||0}`}}return null}var de=e=>e===`x32`?`x32`:e===`x86_64`||e===`x64`?`x64`:e===`arm`?`arm`:e===`aarch64`||e===`arm64`?`arm64`:e?`other:${e}`:`unknown`,fe=e=>(e=e.toLowerCase(),e.includes(`ios`)?`iOS`:e===`android`?`Android`:e===`darwin`?`MacOS`:e===`win32`?`Windows`:e===`freebsd`?`FreeBSD`:e===`openbsd`?`OpenBSD`:e===`linux`?`Linux`:e?`Other:${e}`:`Unknown`),pe,me=()=>pe??=le();function he(){if(typeof fetch<`u`)return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function ge(...e){let t=globalThis.ReadableStream;if(t===void 0)throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new t(...e)}function _e(e){let t=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():e[Symbol.iterator]();return ge({start(){},async pull(e){let{done:n,value:r}=await t.next();n?e.close():e.enqueue(r)},async cancel(){await t.return?.()}})}function ve(e){if(e[Symbol.asyncIterator])return e;let t=e.getReader();return{async next(){try{let e=await t.read();return e?.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){let e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function ye(e){if(typeof e!=`object`||!e)return;if(e[Symbol.asyncIterator]){await e[Symbol.asyncIterator]().return?.();return}let t=e.getReader(),n=t.cancel();t.releaseLock(),await n}var be=({headers:e,body:t})=>({bodyHeaders:{"content-type":`application/json`},body:JSON.stringify(t)}),xe=`RFC3986`,Se=e=>String(e),Ce={RFC1738:e=>String(e).replace(/%20/g,`+`),RFC3986:Se},we=(e,t)=>(we=Object.hasOwn??Function.prototype.call.bind(Object.prototype.hasOwnProperty),we(e,t)),E=(()=>{let e=[];for(let t=0;t<256;++t)e.push(`%`+((t<16?`0`:``)+t.toString(16)).toUpperCase());return e})(),Te=1024,Ee=(e,t,n,r,i)=>{if(e.length===0)return e;let a=e;if(typeof e==`symbol`?a=Symbol.prototype.toString.call(e):typeof e!=`string`&&(a=String(e)),n===`iso-8859-1`)return escape(a).replace(/%u[0-9a-f]{4}/gi,function(e){return`%26%23`+parseInt(e.slice(2),16)+`%3B`});let o=``;for(let e=0;e<a.length;e+=Te){let t=a.length>=Te?a.slice(e,e+Te):a,n=[];for(let e=0;e<t.length;++e){let r=t.charCodeAt(e);if(r===45||r===46||r===95||r===126||r>=48&&r<=57||r>=65&&r<=90||r>=97&&r<=122||i===`RFC1738`&&(r===40||r===41)){n[n.length]=t.charAt(e);continue}if(r<128){n[n.length]=E[r];continue}if(r<2048){n[n.length]=E[192|r>>6]+E[128|r&63];continue}if(r<55296||r>=57344){n[n.length]=E[224|r>>12]+E[128|r>>6&63]+E[128|r&63];continue}e+=1,r=65536+((r&1023)<<10|t.charCodeAt(e)&1023),n[n.length]=E[240|r>>18]+E[128|r>>12&63]+E[128|r>>6&63]+E[128|r&63]}o+=n.join(``)}return o};function De(e){return!e||typeof e!=`object`?!1:!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))}function Oe(e,t){if(x(e)){let n=[];for(let r=0;r<e.length;r+=1)n.push(t(e[r]));return n}return t(e)}var ke={brackets(e){return String(e)+`[]`},comma:`comma`,indices(e,t){return String(e)+`[`+t+`]`},repeat(e){return String(e)}},Ae=function(e,t){Array.prototype.push.apply(e,x(t)?t:[t])},je,D={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:`indices`,charset:`utf-8`,charsetSentinel:!1,delimiter:`&`,encode:!0,encodeDotInKeys:!1,encoder:Ee,encodeValuesOnly:!1,format:xe,formatter:Se,indices:!1,serializeDate(e){return(je??=Function.prototype.call.bind(Date.prototype.toISOString))(e)},skipNulls:!1,strictNullHandling:!1};function Me(e){return typeof e==`string`||typeof e==`number`||typeof e==`boolean`||typeof e==`symbol`||typeof e==`bigint`}var Ne={};function Pe(e,t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_){let v=e,y=_,b=0,ee=!1;for(;(y=y.get(Ne))!==void 0&&!ee;){let t=y.get(e);if(b+=1,t!==void 0){if(t===b)throw RangeError(`Cyclic object value`);ee=!0}y.get(Ne)===void 0&&(b=0)}if(typeof l==`function`?v=l(t,v):v instanceof Date?v=f?.(v):n===`comma`&&x(v)&&(v=Oe(v,function(e){return e instanceof Date?f?.(e):e})),v===null){if(a)return c&&!h?c(t,D.encoder,g,`key`,p):t;v=``}if(Me(v)||De(v)){if(c){let e=h?t:c(t,D.encoder,g,`key`,p);return[m?.(e)+`=`+m?.(c(v,D.encoder,g,`value`,p))]}return[m?.(t)+`=`+m?.(String(v))]}let te=[];if(v===void 0)return te;let S;if(n===`comma`&&x(v))h&&c&&(v=Oe(v,c)),S=[{value:v.length>0?v.join(`,`)||null:void 0}];else if(x(l))S=l;else{let e=Object.keys(v);S=u?e.sort(u):e}let C=s?String(t).replace(/\./g,`%2E`):String(t),w=r&&x(v)&&v.length===1?C+`[]`:C;if(i&&x(v)&&v.length===0)return w+`[]`;for(let t=0;t<S.length;++t){let y=S[t],ee=typeof y==`object`&&y.value!==void 0?y.value:v[y];if(o&&ee===null)continue;let C=d&&s?y.replace(/\./g,`%2E`):y,ne=x(v)?typeof n==`function`?n(w,C):w:w+(d?`.`+C:`[`+C+`]`);_.set(e,b);let T=new WeakMap;T.set(Ne,_),Ae(te,Pe(ee,ne,n,r,i,a,o,s,n===`comma`&&h&&x(v)?null:c,l,u,d,f,p,m,h,g,T))}return te}function Fe(e=D){if(e.allowEmptyArrays!==void 0&&typeof e.allowEmptyArrays!=`boolean`)throw TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(e.encodeDotInKeys!==void 0&&typeof e.encodeDotInKeys!=`boolean`)throw TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(e.encoder!==null&&e.encoder!==void 0&&typeof e.encoder!=`function`)throw TypeError(`Encoder has to be a function.`);let t=e.charset||D.charset;if(e.charset!==void 0&&e.charset!==`utf-8`&&e.charset!==`iso-8859-1`)throw TypeError(`The charset option must be either utf-8, iso-8859-1, or undefined`);let n=xe;if(e.format!==void 0){if(!we(Ce,e.format))throw TypeError(`Unknown format option provided.`);n=e.format}let r=Ce[n],i=D.filter;(typeof e.filter==`function`||x(e.filter))&&(i=e.filter);let a;if(a=e.arrayFormat&&e.arrayFormat in ke?e.arrayFormat:`indices`in e?e.indices?`indices`:`repeat`:D.arrayFormat,`commaRoundTrip`in e&&typeof e.commaRoundTrip!=`boolean`)throw TypeError("`commaRoundTrip` must be a boolean, or absent");let o=e.allowDots===void 0?e.encodeDotInKeys?!0:D.allowDots:!!e.allowDots;return{addQueryPrefix:typeof e.addQueryPrefix==`boolean`?e.addQueryPrefix:D.addQueryPrefix,allowDots:o,allowEmptyArrays:typeof e.allowEmptyArrays==`boolean`?!!e.allowEmptyArrays:D.allowEmptyArrays,arrayFormat:a,charset:t,charsetSentinel:typeof e.charsetSentinel==`boolean`?e.charsetSentinel:D.charsetSentinel,commaRoundTrip:!!e.commaRoundTrip,delimiter:e.delimiter===void 0?D.delimiter:e.delimiter,encode:typeof e.encode==`boolean`?e.encode:D.encode,encodeDotInKeys:typeof e.encodeDotInKeys==`boolean`?e.encodeDotInKeys:D.encodeDotInKeys,encoder:typeof e.encoder==`function`?e.encoder:D.encoder,encodeValuesOnly:typeof e.encodeValuesOnly==`boolean`?e.encodeValuesOnly:D.encodeValuesOnly,filter:i,format:n,formatter:r,serializeDate:typeof e.serializeDate==`function`?e.serializeDate:D.serializeDate,skipNulls:typeof e.skipNulls==`boolean`?e.skipNulls:D.skipNulls,sort:typeof e.sort==`function`?e.sort:null,strictNullHandling:typeof e.strictNullHandling==`boolean`?e.strictNullHandling:D.strictNullHandling}}function Ie(e,t={}){let n=e,r=Fe(t),i,a;typeof r.filter==`function`?(a=r.filter,n=a(``,n)):x(r.filter)&&(a=r.filter,i=a);let o=[];if(typeof n!=`object`||!n)return``;let s=ke[r.arrayFormat],c=s===`comma`&&r.commaRoundTrip;i||=Object.keys(n),r.sort&&i.sort(r.sort);let l=new WeakMap;for(let e=0;e<i.length;++e){let t=i[e];r.skipNulls&&n[t]===null||Ae(o,Pe(n[t],t,s,c,r.allowEmptyArrays,r.strictNullHandling,r.skipNulls,r.encodeDotInKeys,r.encode?r.encoder:null,r.filter,r.sort,r.allowDots,r.serializeDate,r.format,r.formatter,r.encodeValuesOnly,r.charset,l))}let u=o.join(r.delimiter),d=r.addQueryPrefix===!0?`?`:``;return r.charsetSentinel&&(r.charset===`iso-8859-1`?d+=`utf8=%26%2310003%3B&`:d+=`utf8=%E2%9C%93&`),u.length>0?d+u:``}function Le(e){return Ie(e,{arrayFormat:`brackets`})}function Re(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var ze;function Be(e){let t;return(ze??=(t=new globalThis.TextEncoder,t.encode.bind(t)))(e)}var Ve;function He(e){let t;return(Ve??=(t=new globalThis.TextDecoder,t.decode.bind(t)))(e)}var O,k,Ue=class{constructor(){O.set(this,void 0),k.set(this,void 0),e(this,O,new Uint8Array,`f`),e(this,k,null,`f`)}decode(n){if(n==null)return[];let r=n instanceof ArrayBuffer?new Uint8Array(n):typeof n==`string`?Be(n):n;e(this,O,Re([t(this,O,`f`),r]),`f`);let i=[],a;for(;(a=We(t(this,O,`f`),t(this,k,`f`)))!=null;){if(a.carriage&&t(this,k,`f`)==null){e(this,k,a.index,`f`);continue}if(t(this,k,`f`)!=null&&(a.index!==t(this,k,`f`)+1||a.carriage)){i.push(He(t(this,O,`f`).subarray(0,t(this,k,`f`)-1))),e(this,O,t(this,O,`f`).subarray(t(this,k,`f`)),`f`),e(this,k,null,`f`);continue}let n=t(this,k,`f`)===null?a.preceding:a.preceding-1,r=He(t(this,O,`f`).subarray(0,n));i.push(r),e(this,O,t(this,O,`f`).subarray(a.index),`f`),e(this,k,null,`f`)}return i}flush(){return t(this,O,`f`).length?this.decode(`
|
|
2
2
|
`):[]}};O=new WeakMap,k=new WeakMap,Ue.NEWLINE_CHARS=new Set([`
|
|
3
3
|
`,`\r`]),Ue.NEWLINE_REGEXP=/\r\n|[\n\r]/g;function We(e,t){for(let n=t??0;n<e.length;n++){if(e[n]===10)return{preceding:n,index:n+1,carriage:!1};if(e[n]===13)return{preceding:n,index:n+1,carriage:!0}}return null}function Ge(e){for(let t=0;t<e.length-1;t++){if(e[t]===10&&e[t+1]===10||e[t]===13&&e[t+1]===13)return t+2;if(e[t]===13&&e[t+1]===10&&t+3<e.length&&e[t+2]===13&&e[t+3]===10)return t+4}return-1}var Ke={off:0,error:200,warn:300,info:400,debug:500},qe=(e,t,n)=>{if(e){if(ne(Ke,e))return e;A(n).warn(`${t} was set to ${JSON.stringify(e)}, expected one of ${JSON.stringify(Object.keys(Ke))}`)}};function Je(){}function Ye(e,t,n){return!t||Ke[e]>Ke[n]?Je:t[e].bind(t)}var Xe={error:Je,warn:Je,info:Je,debug:Je},Ze=new WeakMap;function A(e){let t=e.logger,n=e.logLevel??`off`;if(!t)return Xe;let r=Ze.get(t);if(r&&r[0]===n)return r[1];let i={error:Ye(`error`,t,n),warn:Ye(`warn`,t,n),info:Ye(`info`,t,n),debug:Ye(`debug`,t,n)};return Ze.set(t,[n,i]),i}var j=e=>(e.options&&(e.options={...e.options},delete e.options.headers),e.headers&&=Object.fromEntries((e.headers instanceof Headers?[...e.headers]:Object.entries(e.headers)).map(([e,t])=>[e,e.toLowerCase()===`authorization`||e.toLowerCase()===`cookie`||e.toLowerCase()===`set-cookie`?`***`:t])),`retryOfRequestLogID`in e&&(e.retryOfRequestLogID&&(e.retryOf=e.retryOfRequestLogID),delete e.retryOfRequestLogID),e),Qe,$e=class n{constructor(t,n,r){this.iterator=t,Qe.set(this,void 0),this.controller=n,e(this,Qe,r,`f`)}static fromSSEResponse(e,t,i,s){let c=!1,l=i?A(i):console;async function*u(){if(c)throw new a("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");c=!0;let n=!1;try{for await(let r of et(e,t))if(!n){if(r.data.startsWith(`[DONE]`)){n=!0;continue}if(r.event===null||!r.event.startsWith(`thread.`)){let t;try{t=JSON.parse(r.data)}catch(e){throw l.error(`Could not parse message into JSON:`,r.data),l.error(`From chunk:`,r.raw),e}if(t&&t.error)throw new o(void 0,t.error,void 0,e.headers);yield s?{event:r.event,data:t}:t}else{let e;try{e=JSON.parse(r.data)}catch(e){throw console.error(`Could not parse message into JSON:`,r.data),console.error(`From chunk:`,r.raw),e}if(r.event==`error`)throw new o(void 0,e.error,e.message,void 0);yield{event:r.event,data:e}}}n=!0}catch(e){if(r(e))return;throw e}finally{n||t.abort()}}return new n(u,t,i)}static fromReadableStream(e,t,i){let o=!1;async function*s(){let t=new Ue,n=ve(e);for await(let e of n)for(let n of t.decode(e))yield n;for(let e of t.flush())yield e}async function*c(){if(o)throw new a("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");o=!0;let e=!1;try{for await(let t of s())e||t&&(yield JSON.parse(t));e=!0}catch(e){if(r(e))return;throw e}finally{e||t.abort()}}return new n(c,t,i)}[(Qe=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let e=[],r=[],i=this.iterator(),a=t=>({next:()=>{if(t.length===0){let t=i.next();e.push(t),r.push(t)}return t.shift()}});return[new n(()=>a(e),this.controller,t(this,Qe,`f`)),new n(()=>a(r),this.controller,t(this,Qe,`f`))]}toReadableStream(){let e=this,t;return ge({async start(){t=e[Symbol.asyncIterator]()},async pull(e){try{let{value:n,done:r}=await t.next();if(r)return e.close();let i=Be(JSON.stringify(n)+`
|
|
4
4
|
`);e.enqueue(i)}catch(t){e.error(t)}},async cancel(){await t.return?.()}})}};async function*et(e,t){if(!e.body)throw t.abort(),globalThis.navigator!==void 0&&globalThis.navigator.product===`ReactNative`?new a(`The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`):new a(`Attempted to iterate over a response with no body`);let n=new nt,r=new Ue,i=ve(e.body);for await(let e of tt(i))for(let t of r.decode(e)){let e=n.decode(t);e&&(yield e)}for(let e of r.flush()){let t=n.decode(e);t&&(yield t)}}async function*tt(e){let t=new Uint8Array;for await(let n of e){if(n==null)continue;let e=n instanceof ArrayBuffer?new Uint8Array(n):typeof n==`string`?Be(n):n,r=new Uint8Array(t.length+e.length);r.set(t),r.set(e,t.length),t=r;let i;for(;(i=Ge(t))!==-1;)yield t.slice(0,i),t=t.slice(i)}t.length>0&&(yield t)}var nt=class{constructor(){this.event=null,this.data=[],this.chunks=[]}decode(e){if(e.endsWith(`\r`)&&(e=e.substring(0,e.length-1)),!e){if(!this.event&&!this.data.length)return null;let e={event:this.event,data:this.data.join(`
|
|
@@ -104,7 +104,7 @@ var re = (e, t) => {
|
|
|
104
104
|
} catch {
|
|
105
105
|
return;
|
|
106
106
|
}
|
|
107
|
-
}, ae = (e) => new Promise((t) => setTimeout(t, e)), oe = "6.
|
|
107
|
+
}, ae = (e) => new Promise((t) => setTimeout(t, e)), oe = "6.32.0", se = () => typeof window < "u" && window.document !== void 0 && typeof navigator < "u";
|
|
108
108
|
function ce() {
|
|
109
109
|
return typeof Deno < "u" && Deno.build != null ? "deno" : typeof EdgeRuntime < "u" ? "edge" : Object.prototype.toString.call(globalThis.process === void 0 ? 0 : globalThis.process) === "[object process]" ? "node" : "unknown";
|
|
110
110
|
}
|
|
@@ -12,4 +12,4 @@ If possible, please select a more specific dialect (like sqlite, postgresql, etc
|
|
|
12
12
|
`),a.map(function(e){return this.buildFirstStateStack(e,[])||[e]},this).forEach(function(e){var t=e[0],r=t.rule.symbols[t.dot],i=this.getSymbolDisplay(r);n.push(`A `+i+` based on:`),this.displayStateStack(e,n)},this)),n.push(``),n.join(`
|
|
13
13
|
`)},a.prototype.displayStateStack=function(e,t){for(var n,r=0,i=0;i<e.length;i++){var a=e[i],o=a.rule.toString(a.dot);o===n?r++:(r>0&&t.push(` ^ `+r+` more lines identical to this`),r=0,t.push(` `+o)),n=o}},a.prototype.getSymbolDisplay=function(e){return o(e)},a.prototype.buildFirstStateStack=function(e,t){if(t.indexOf(e)!==-1)return null;if(e.wantedBy.length===0)return[e];var n=e.wantedBy[0],r=[e].concat(t),i=this.buildFirstStateStack(n,r);return i===null?null:[e].concat(i)},a.prototype.save=function(){var e=this.table[this.current];return e.lexerState=this.lexerState,e},a.prototype.restore=function(e){var t=e.index;this.current=t,this.table[t]=e,this.table.splice(t+1),this.lexerState=e.lexerState,this.results=this.finish()},a.prototype.rewind=function(e){if(!this.options.keepHistory)throw Error("set option `keepHistory` to enable rewinding");this.restore(this.table[e])},a.prototype.finish=function(){var e=[],t=this.grammar.start;return this.table[this.table.length-1].states.forEach(function(n){n.rule.name===t&&n.dot===n.rule.symbols.length&&n.reference===0&&n.data!==a.fail&&e.push(n)}),e.map(function(e){return e.data})};function o(e){var t=typeof e;if(t===`string`)return e;if(t===`object`){if(e.literal)return JSON.stringify(e.literal);if(e instanceof RegExp)return`character matching `+e;if(e.type)return e.type+` token`;if(e.test)return`token matching `+String(e.test);throw Error(`Unknown symbol type: `+e)}}function s(e){var t=typeof e;if(t===`string`)return e;if(t===`object`){if(e.literal)return JSON.stringify(e.literal);if(e instanceof RegExp)return e.toString();if(e.type)return`%`+e.type;if(e.test)return`<`+String(e.test)+`>`;throw Error(`Unknown symbol type: `+e)}}return{Parser:a,Grammar:r,Rule:e}})}));function fa(e){return e.map(pa).map(ma).map(ha).map(ga).map(_a)}var pa=(e,t,n)=>{if(ae(e.type)){let r=va(n,t);if(r&&r.type===_.PROPERTY_ACCESS_OPERATOR)return Object.assign(Object.assign({},e),{type:_.IDENTIFIER,text:e.raw});let i=F(n,t);if(i&&i.type===_.PROPERTY_ACCESS_OPERATOR)return Object.assign(Object.assign({},e),{type:_.IDENTIFIER,text:e.raw})}return e},ma=(e,t,n)=>{if(e.type===_.RESERVED_FUNCTION_NAME){let r=F(n,t);if(!r||!ya(r))return Object.assign(Object.assign({},e),{type:_.IDENTIFIER,text:e.raw})}return e},ha=(e,t,n)=>{if(e.type===_.RESERVED_DATA_TYPE){let r=F(n,t);if(r&&ya(r))return Object.assign(Object.assign({},e),{type:_.RESERVED_PARAMETERIZED_DATA_TYPE})}return e},ga=(e,t,n)=>{if(e.type===_.IDENTIFIER){let r=F(n,t);if(r&&ba(r))return Object.assign(Object.assign({},e),{type:_.ARRAY_IDENTIFIER})}return e},_a=(e,t,n)=>{if(e.type===_.RESERVED_DATA_TYPE){let r=F(n,t);if(r&&ba(r))return Object.assign(Object.assign({},e),{type:_.ARRAY_KEYWORD})}return e},va=(e,t)=>F(e,t,-1),F=(e,t,n=1)=>{let r=1;for(;e[t+r*n]&&xa(e[t+r*n]);)r++;return e[t+r*n]},ya=e=>e.type===_.OPEN_PAREN&&e.text===`(`,ba=e=>e.type===_.OPEN_PAREN&&e.text===`[`,xa=e=>e.type===_.BLOCK_COMMENT||e.type===_.LINE_COMMENT,Sa=class{constructor(e){this.tokenize=e,this.index=0,this.tokens=[],this.input=``}reset(e,t){this.input=e,this.index=0,this.tokens=this.tokenize(e)}next(){return this.tokens[this.index++]}save(){}formatError(e){let{line:t,col:n}=Qi(this.input,e.start);return`Parse error at token: ${e.text} at line ${t} column ${n}`}has(e){return e in _}},I;(function(e){e.statement=`statement`,e.clause=`clause`,e.set_operation=`set_operation`,e.function_call=`function_call`,e.parameterized_data_type=`parameterized_data_type`,e.array_subscript=`array_subscript`,e.property_access=`property_access`,e.parenthesis=`parenthesis`,e.between_predicate=`between_predicate`,e.case_expression=`case_expression`,e.case_when=`case_when`,e.case_else=`case_else`,e.limit_clause=`limit_clause`,e.all_columns_asterisk=`all_columns_asterisk`,e.literal=`literal`,e.identifier=`identifier`,e.keyword=`keyword`,e.data_type=`data_type`,e.parameter=`parameter`,e.operator=`operator`,e.comma=`comma`,e.line_comment=`line_comment`,e.block_comment=`block_comment`,e.disable_comment=`disable_comment`})(I=I||={});function L(e){return e[0]}var R=new Sa(e=>[]),z=([[e]])=>e,B=e=>({type:I.keyword,tokenType:e.type,text:e.text,raw:e.raw}),Ca=e=>({type:I.data_type,text:e.text,raw:e.raw}),V=(e,{leading:t,trailing:n})=>(t?.length&&(e=Object.assign(Object.assign({},e),{leadingComments:t})),n?.length&&(e=Object.assign(Object.assign({},e),{trailingComments:n})),e),wa=(e,{leading:t,trailing:n})=>{if(t?.length){let[n,...r]=e;e=[V(n,{leading:t}),...r]}if(n?.length){let t=e.slice(0,-1),r=e[e.length-1];e=[...t,V(r,{trailing:n})]}return e},Ta={Lexer:R,ParserRules:[{name:`main$ebnf$1`,symbols:[]},{name:`main$ebnf$1`,symbols:[`main$ebnf$1`,`statement`],postprocess:e=>e[0].concat([e[1]])},{name:`main`,symbols:[`main$ebnf$1`],postprocess:([e])=>{let t=e[e.length-1];return t&&!t.hasSemicolon?t.children.length>0?e:e.slice(0,-1):e}},{name:`statement$subexpression$1`,symbols:[R.has(`DELIMITER`)?{type:`DELIMITER`}:DELIMITER]},{name:`statement$subexpression$1`,symbols:[R.has(`EOF`)?{type:`EOF`}:EOF]},{name:`statement`,symbols:[`expressions_or_clauses`,`statement$subexpression$1`],postprocess:([e,[t]])=>({type:I.statement,children:e,hasSemicolon:t.type===_.DELIMITER})},{name:`expressions_or_clauses$ebnf$1`,symbols:[]},{name:`expressions_or_clauses$ebnf$1`,symbols:[`expressions_or_clauses$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`expressions_or_clauses$ebnf$2`,symbols:[]},{name:`expressions_or_clauses$ebnf$2`,symbols:[`expressions_or_clauses$ebnf$2`,`clause`],postprocess:e=>e[0].concat([e[1]])},{name:`expressions_or_clauses`,symbols:[`expressions_or_clauses$ebnf$1`,`expressions_or_clauses$ebnf$2`],postprocess:([e,t])=>[...e,...t]},{name:`clause$subexpression$1`,symbols:[`limit_clause`]},{name:`clause$subexpression$1`,symbols:[`select_clause`]},{name:`clause$subexpression$1`,symbols:[`other_clause`]},{name:`clause$subexpression$1`,symbols:[`set_operation`]},{name:`clause`,symbols:[`clause$subexpression$1`],postprocess:z},{name:`limit_clause$ebnf$1$subexpression$1$ebnf$1`,symbols:[`free_form_sql`]},{name:`limit_clause$ebnf$1$subexpression$1$ebnf$1`,symbols:[`limit_clause$ebnf$1$subexpression$1$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`limit_clause$ebnf$1$subexpression$1`,symbols:[R.has(`COMMA`)?{type:`COMMA`}:COMMA,`limit_clause$ebnf$1$subexpression$1$ebnf$1`]},{name:`limit_clause$ebnf$1`,symbols:[`limit_clause$ebnf$1$subexpression$1`],postprocess:L},{name:`limit_clause$ebnf$1`,symbols:[],postprocess:()=>null},{name:`limit_clause`,symbols:[R.has(`LIMIT`)?{type:`LIMIT`}:LIMIT,`_`,`expression_chain_`,`limit_clause$ebnf$1`],postprocess:([e,t,n,r])=>{if(r){let[i,a]=r;return{type:I.limit_clause,limitKw:V(B(e),{trailing:t}),offset:n,count:a}}else return{type:I.limit_clause,limitKw:V(B(e),{trailing:t}),count:n}}},{name:`select_clause$subexpression$1$ebnf$1`,symbols:[]},{name:`select_clause$subexpression$1$ebnf$1`,symbols:[`select_clause$subexpression$1$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`select_clause$subexpression$1`,symbols:[`all_columns_asterisk`,`select_clause$subexpression$1$ebnf$1`]},{name:`select_clause$subexpression$1$ebnf$2`,symbols:[]},{name:`select_clause$subexpression$1$ebnf$2`,symbols:[`select_clause$subexpression$1$ebnf$2`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`select_clause$subexpression$1`,symbols:[`asteriskless_free_form_sql`,`select_clause$subexpression$1$ebnf$2`]},{name:`select_clause`,symbols:[R.has(`RESERVED_SELECT`)?{type:`RESERVED_SELECT`}:RESERVED_SELECT,`select_clause$subexpression$1`],postprocess:([e,[t,n]])=>({type:I.clause,nameKw:B(e),children:[t,...n]})},{name:`select_clause`,symbols:[R.has(`RESERVED_SELECT`)?{type:`RESERVED_SELECT`}:RESERVED_SELECT],postprocess:([e])=>({type:I.clause,nameKw:B(e),children:[]})},{name:`all_columns_asterisk`,symbols:[R.has(`ASTERISK`)?{type:`ASTERISK`}:ASTERISK],postprocess:()=>({type:I.all_columns_asterisk})},{name:`other_clause$ebnf$1`,symbols:[]},{name:`other_clause$ebnf$1`,symbols:[`other_clause$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`other_clause`,symbols:[R.has(`RESERVED_CLAUSE`)?{type:`RESERVED_CLAUSE`}:RESERVED_CLAUSE,`other_clause$ebnf$1`],postprocess:([e,t])=>({type:I.clause,nameKw:B(e),children:t})},{name:`set_operation$ebnf$1`,symbols:[]},{name:`set_operation$ebnf$1`,symbols:[`set_operation$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`set_operation`,symbols:[R.has(`RESERVED_SET_OPERATION`)?{type:`RESERVED_SET_OPERATION`}:RESERVED_SET_OPERATION,`set_operation$ebnf$1`],postprocess:([e,t])=>({type:I.set_operation,nameKw:B(e),children:t})},{name:`expression_chain_$ebnf$1`,symbols:[`expression_with_comments_`]},{name:`expression_chain_$ebnf$1`,symbols:[`expression_chain_$ebnf$1`,`expression_with_comments_`],postprocess:e=>e[0].concat([e[1]])},{name:`expression_chain_`,symbols:[`expression_chain_$ebnf$1`],postprocess:L},{name:`expression_chain$ebnf$1`,symbols:[]},{name:`expression_chain$ebnf$1`,symbols:[`expression_chain$ebnf$1`,`_expression_with_comments`],postprocess:e=>e[0].concat([e[1]])},{name:`expression_chain`,symbols:[`expression`,`expression_chain$ebnf$1`],postprocess:([e,t])=>[e,...t]},{name:`andless_expression_chain$ebnf$1`,symbols:[]},{name:`andless_expression_chain$ebnf$1`,symbols:[`andless_expression_chain$ebnf$1`,`_andless_expression_with_comments`],postprocess:e=>e[0].concat([e[1]])},{name:`andless_expression_chain`,symbols:[`andless_expression`,`andless_expression_chain$ebnf$1`],postprocess:([e,t])=>[e,...t]},{name:`expression_with_comments_`,symbols:[`expression`,`_`],postprocess:([e,t])=>V(e,{trailing:t})},{name:`_expression_with_comments`,symbols:[`_`,`expression`],postprocess:([e,t])=>V(t,{leading:e})},{name:`_andless_expression_with_comments`,symbols:[`_`,`andless_expression`],postprocess:([e,t])=>V(t,{leading:e})},{name:`free_form_sql$subexpression$1`,symbols:[`asteriskless_free_form_sql`]},{name:`free_form_sql$subexpression$1`,symbols:[`asterisk`]},{name:`free_form_sql`,symbols:[`free_form_sql$subexpression$1`],postprocess:z},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`asteriskless_andless_expression`]},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`logic_operator`]},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`comma`]},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`comment`]},{name:`asteriskless_free_form_sql$subexpression$1`,symbols:[`other_keyword`]},{name:`asteriskless_free_form_sql`,symbols:[`asteriskless_free_form_sql$subexpression$1`],postprocess:z},{name:`expression$subexpression$1`,symbols:[`andless_expression`]},{name:`expression$subexpression$1`,symbols:[`logic_operator`]},{name:`expression`,symbols:[`expression$subexpression$1`],postprocess:z},{name:`andless_expression$subexpression$1`,symbols:[`asteriskless_andless_expression`]},{name:`andless_expression$subexpression$1`,symbols:[`asterisk`]},{name:`andless_expression`,symbols:[`andless_expression$subexpression$1`],postprocess:z},{name:`asteriskless_andless_expression$subexpression$1`,symbols:[`atomic_expression`]},{name:`asteriskless_andless_expression$subexpression$1`,symbols:[`between_predicate`]},{name:`asteriskless_andless_expression$subexpression$1`,symbols:[`case_expression`]},{name:`asteriskless_andless_expression`,symbols:[`asteriskless_andless_expression$subexpression$1`],postprocess:z},{name:`atomic_expression$subexpression$1`,symbols:[`array_subscript`]},{name:`atomic_expression$subexpression$1`,symbols:[`function_call`]},{name:`atomic_expression$subexpression$1`,symbols:[`property_access`]},{name:`atomic_expression$subexpression$1`,symbols:[`parenthesis`]},{name:`atomic_expression$subexpression$1`,symbols:[`curly_braces`]},{name:`atomic_expression$subexpression$1`,symbols:[`square_brackets`]},{name:`atomic_expression$subexpression$1`,symbols:[`operator`]},{name:`atomic_expression$subexpression$1`,symbols:[`identifier`]},{name:`atomic_expression$subexpression$1`,symbols:[`parameter`]},{name:`atomic_expression$subexpression$1`,symbols:[`literal`]},{name:`atomic_expression$subexpression$1`,symbols:[`data_type`]},{name:`atomic_expression$subexpression$1`,symbols:[`keyword`]},{name:`atomic_expression`,symbols:[`atomic_expression$subexpression$1`],postprocess:z},{name:`array_subscript`,symbols:[R.has(`ARRAY_IDENTIFIER`)?{type:`ARRAY_IDENTIFIER`}:ARRAY_IDENTIFIER,`_`,`square_brackets`],postprocess:([e,t,n])=>({type:I.array_subscript,array:V({type:I.identifier,quoted:!1,text:e.text},{trailing:t}),parenthesis:n})},{name:`array_subscript`,symbols:[R.has(`ARRAY_KEYWORD`)?{type:`ARRAY_KEYWORD`}:ARRAY_KEYWORD,`_`,`square_brackets`],postprocess:([e,t,n])=>({type:I.array_subscript,array:V(B(e),{trailing:t}),parenthesis:n})},{name:`function_call`,symbols:[R.has(`RESERVED_FUNCTION_NAME`)?{type:`RESERVED_FUNCTION_NAME`}:RESERVED_FUNCTION_NAME,`_`,`parenthesis`],postprocess:([e,t,n])=>({type:I.function_call,nameKw:V(B(e),{trailing:t}),parenthesis:n})},{name:`parenthesis`,symbols:[{literal:`(`},`expressions_or_clauses`,{literal:`)`}],postprocess:([e,t,n])=>({type:I.parenthesis,children:t,openParen:`(`,closeParen:`)`})},{name:`curly_braces$ebnf$1`,symbols:[]},{name:`curly_braces$ebnf$1`,symbols:[`curly_braces$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`curly_braces`,symbols:[{literal:`{`},`curly_braces$ebnf$1`,{literal:`}`}],postprocess:([e,t,n])=>({type:I.parenthesis,children:t,openParen:`{`,closeParen:`}`})},{name:`square_brackets$ebnf$1`,symbols:[]},{name:`square_brackets$ebnf$1`,symbols:[`square_brackets$ebnf$1`,`free_form_sql`],postprocess:e=>e[0].concat([e[1]])},{name:`square_brackets`,symbols:[{literal:`[`},`square_brackets$ebnf$1`,{literal:`]`}],postprocess:([e,t,n])=>({type:I.parenthesis,children:t,openParen:`[`,closeParen:`]`})},{name:`property_access$subexpression$1`,symbols:[`identifier`]},{name:`property_access$subexpression$1`,symbols:[`array_subscript`]},{name:`property_access$subexpression$1`,symbols:[`all_columns_asterisk`]},{name:`property_access$subexpression$1`,symbols:[`parameter`]},{name:`property_access`,symbols:[`atomic_expression`,`_`,R.has(`PROPERTY_ACCESS_OPERATOR`)?{type:`PROPERTY_ACCESS_OPERATOR`}:PROPERTY_ACCESS_OPERATOR,`_`,`property_access$subexpression$1`],postprocess:([e,t,n,r,[i]])=>({type:I.property_access,object:V(e,{trailing:t}),operator:n.text,property:V(i,{leading:r})})},{name:`between_predicate`,symbols:[R.has(`BETWEEN`)?{type:`BETWEEN`}:BETWEEN,`_`,`andless_expression_chain`,`_`,R.has(`AND`)?{type:`AND`}:AND,`_`,`andless_expression`],postprocess:([e,t,n,r,i,a,o])=>({type:I.between_predicate,betweenKw:B(e),expr1:wa(n,{leading:t,trailing:r}),andKw:B(i),expr2:[V(o,{leading:a})]})},{name:`case_expression$ebnf$1`,symbols:[`expression_chain_`],postprocess:L},{name:`case_expression$ebnf$1`,symbols:[],postprocess:()=>null},{name:`case_expression$ebnf$2`,symbols:[]},{name:`case_expression$ebnf$2`,symbols:[`case_expression$ebnf$2`,`case_clause`],postprocess:e=>e[0].concat([e[1]])},{name:`case_expression`,symbols:[R.has(`CASE`)?{type:`CASE`}:CASE,`_`,`case_expression$ebnf$1`,`case_expression$ebnf$2`,R.has(`END`)?{type:`END`}:END],postprocess:([e,t,n,r,i])=>({type:I.case_expression,caseKw:V(B(e),{trailing:t}),endKw:B(i),expr:n||[],clauses:r})},{name:`case_clause`,symbols:[R.has(`WHEN`)?{type:`WHEN`}:WHEN,`_`,`expression_chain_`,R.has(`THEN`)?{type:`THEN`}:THEN,`_`,`expression_chain_`],postprocess:([e,t,n,r,i,a])=>({type:I.case_when,whenKw:V(B(e),{trailing:t}),thenKw:V(B(r),{trailing:i}),condition:n,result:a})},{name:`case_clause`,symbols:[R.has(`ELSE`)?{type:`ELSE`}:ELSE,`_`,`expression_chain_`],postprocess:([e,t,n])=>({type:I.case_else,elseKw:V(B(e),{trailing:t}),result:n})},{name:`comma$subexpression$1`,symbols:[R.has(`COMMA`)?{type:`COMMA`}:COMMA]},{name:`comma`,symbols:[`comma$subexpression$1`],postprocess:([[e]])=>({type:I.comma})},{name:`asterisk$subexpression$1`,symbols:[R.has(`ASTERISK`)?{type:`ASTERISK`}:ASTERISK]},{name:`asterisk`,symbols:[`asterisk$subexpression$1`],postprocess:([[e]])=>({type:I.operator,text:e.text})},{name:`operator$subexpression$1`,symbols:[R.has(`OPERATOR`)?{type:`OPERATOR`}:OPERATOR]},{name:`operator`,symbols:[`operator$subexpression$1`],postprocess:([[e]])=>({type:I.operator,text:e.text})},{name:`identifier$subexpression$1`,symbols:[R.has(`IDENTIFIER`)?{type:`IDENTIFIER`}:IDENTIFIER]},{name:`identifier$subexpression$1`,symbols:[R.has(`QUOTED_IDENTIFIER`)?{type:`QUOTED_IDENTIFIER`}:QUOTED_IDENTIFIER]},{name:`identifier$subexpression$1`,symbols:[R.has(`VARIABLE`)?{type:`VARIABLE`}:VARIABLE]},{name:`identifier`,symbols:[`identifier$subexpression$1`],postprocess:([[e]])=>({type:I.identifier,quoted:e.type!==`IDENTIFIER`,text:e.text})},{name:`parameter$subexpression$1`,symbols:[R.has(`NAMED_PARAMETER`)?{type:`NAMED_PARAMETER`}:NAMED_PARAMETER]},{name:`parameter$subexpression$1`,symbols:[R.has(`QUOTED_PARAMETER`)?{type:`QUOTED_PARAMETER`}:QUOTED_PARAMETER]},{name:`parameter$subexpression$1`,symbols:[R.has(`NUMBERED_PARAMETER`)?{type:`NUMBERED_PARAMETER`}:NUMBERED_PARAMETER]},{name:`parameter$subexpression$1`,symbols:[R.has(`POSITIONAL_PARAMETER`)?{type:`POSITIONAL_PARAMETER`}:POSITIONAL_PARAMETER]},{name:`parameter$subexpression$1`,symbols:[R.has(`CUSTOM_PARAMETER`)?{type:`CUSTOM_PARAMETER`}:CUSTOM_PARAMETER]},{name:`parameter`,symbols:[`parameter$subexpression$1`],postprocess:([[e]])=>({type:I.parameter,key:e.key,text:e.text})},{name:`literal$subexpression$1`,symbols:[R.has(`NUMBER`)?{type:`NUMBER`}:NUMBER]},{name:`literal$subexpression$1`,symbols:[R.has(`STRING`)?{type:`STRING`}:STRING]},{name:`literal`,symbols:[`literal$subexpression$1`],postprocess:([[e]])=>({type:I.literal,text:e.text})},{name:`keyword$subexpression$1`,symbols:[R.has(`RESERVED_KEYWORD`)?{type:`RESERVED_KEYWORD`}:RESERVED_KEYWORD]},{name:`keyword$subexpression$1`,symbols:[R.has(`RESERVED_KEYWORD_PHRASE`)?{type:`RESERVED_KEYWORD_PHRASE`}:RESERVED_KEYWORD_PHRASE]},{name:`keyword$subexpression$1`,symbols:[R.has(`RESERVED_JOIN`)?{type:`RESERVED_JOIN`}:RESERVED_JOIN]},{name:`keyword`,symbols:[`keyword$subexpression$1`],postprocess:([[e]])=>B(e)},{name:`data_type$subexpression$1`,symbols:[R.has(`RESERVED_DATA_TYPE`)?{type:`RESERVED_DATA_TYPE`}:RESERVED_DATA_TYPE]},{name:`data_type$subexpression$1`,symbols:[R.has(`RESERVED_DATA_TYPE_PHRASE`)?{type:`RESERVED_DATA_TYPE_PHRASE`}:RESERVED_DATA_TYPE_PHRASE]},{name:`data_type`,symbols:[`data_type$subexpression$1`],postprocess:([[e]])=>Ca(e)},{name:`data_type`,symbols:[R.has(`RESERVED_PARAMETERIZED_DATA_TYPE`)?{type:`RESERVED_PARAMETERIZED_DATA_TYPE`}:RESERVED_PARAMETERIZED_DATA_TYPE,`_`,`parenthesis`],postprocess:([e,t,n])=>({type:I.parameterized_data_type,dataType:V(Ca(e),{trailing:t}),parenthesis:n})},{name:`logic_operator$subexpression$1`,symbols:[R.has(`AND`)?{type:`AND`}:AND]},{name:`logic_operator$subexpression$1`,symbols:[R.has(`OR`)?{type:`OR`}:OR]},{name:`logic_operator$subexpression$1`,symbols:[R.has(`XOR`)?{type:`XOR`}:XOR]},{name:`logic_operator`,symbols:[`logic_operator$subexpression$1`],postprocess:([[e]])=>B(e)},{name:`other_keyword$subexpression$1`,symbols:[R.has(`WHEN`)?{type:`WHEN`}:WHEN]},{name:`other_keyword$subexpression$1`,symbols:[R.has(`THEN`)?{type:`THEN`}:THEN]},{name:`other_keyword$subexpression$1`,symbols:[R.has(`ELSE`)?{type:`ELSE`}:ELSE]},{name:`other_keyword$subexpression$1`,symbols:[R.has(`END`)?{type:`END`}:END]},{name:`other_keyword`,symbols:[`other_keyword$subexpression$1`],postprocess:([[e]])=>B(e)},{name:`_$ebnf$1`,symbols:[]},{name:`_$ebnf$1`,symbols:[`_$ebnf$1`,`comment`],postprocess:e=>e[0].concat([e[1]])},{name:`_`,symbols:[`_$ebnf$1`],postprocess:([e])=>e},{name:`comment`,symbols:[R.has(`LINE_COMMENT`)?{type:`LINE_COMMENT`}:LINE_COMMENT],postprocess:([e])=>({type:I.line_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})},{name:`comment`,symbols:[R.has(`BLOCK_COMMENT`)?{type:`BLOCK_COMMENT`}:BLOCK_COMMENT],postprocess:([e])=>({type:I.block_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})},{name:`comment`,symbols:[R.has(`DISABLE_COMMENT`)?{type:`DISABLE_COMMENT`}:DISABLE_COMMENT],postprocess:([e])=>({type:I.disable_comment,text:e.text,precedingWhitespace:e.precedingWhitespace})}],ParserStart:`main`},{Parser:Ea,Grammar:Da}=l(da(),1).default;function Oa(e){let t={},n=new Sa(n=>[...fa(e.tokenize(n,t)),ie(n.length)]),r=new Ea(Da.fromCompiled(Ta),{lexer:n});return{parse:(e,n)=>{t=n;let{results:i}=r.feed(e);if(i.length===1)return i[0];throw i.length===0?Error(`Parse error: Invalid SQL`):Error(`Parse error: Ambiguous grammar\n${JSON.stringify(i,void 0,2)}`)}}}var H;(function(e){e[e.SPACE=0]=`SPACE`,e[e.NO_SPACE=1]=`NO_SPACE`,e[e.NO_NEWLINE=2]=`NO_NEWLINE`,e[e.NEWLINE=3]=`NEWLINE`,e[e.MANDATORY_NEWLINE=4]=`MANDATORY_NEWLINE`,e[e.INDENT=5]=`INDENT`,e[e.SINGLE_INDENT=6]=`SINGLE_INDENT`})(H=H||={});var ka=class{constructor(e){this.indentation=e,this.items=[]}add(...e){for(let t of e)switch(t){case H.SPACE:this.items.push(H.SPACE);break;case H.NO_SPACE:this.trimHorizontalWhitespace();break;case H.NO_NEWLINE:this.trimWhitespace();break;case H.NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(H.NEWLINE);break;case H.MANDATORY_NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(H.MANDATORY_NEWLINE);break;case H.INDENT:this.addIndentation();break;case H.SINGLE_INDENT:this.items.push(H.SINGLE_INDENT);break;default:this.items.push(t)}}trimHorizontalWhitespace(){for(;Aa(O(this.items));)this.items.pop()}trimWhitespace(){for(;ja(O(this.items));)this.items.pop()}addNewline(e){if(this.items.length>0)switch(O(this.items)){case H.NEWLINE:this.items.pop(),this.items.push(e);break;case H.MANDATORY_NEWLINE:break;default:this.items.push(e);break}}addIndentation(){for(let e=0;e<this.indentation.getLevel();e++)this.items.push(H.SINGLE_INDENT)}toString(){return this.items.map(e=>this.itemToString(e)).join(``)}getLayoutItems(){return this.items}itemToString(e){switch(e){case H.SPACE:return` `;case H.NEWLINE:case H.MANDATORY_NEWLINE:return`
|
|
14
14
|
`;case H.SINGLE_INDENT:return this.indentation.getSingleIndent();default:return e}}},Aa=e=>e===H.SPACE||e===H.SINGLE_INDENT,ja=e=>e===H.SPACE||e===H.SINGLE_INDENT||e===H.NEWLINE;function Ma(e,t){if(t===`standard`)return e;let n=[];return e.length>=10&&e.includes(` `)&&([e,...n]=e.split(` `)),e=t===`tabularLeft`?e.padEnd(9,` `):e.padStart(9,` `),e+[``,...n].join(` `)}function Na(e){return oe(e)||e===_.RESERVED_CLAUSE||e===_.RESERVED_SELECT||e===_.RESERVED_SET_OPERATION||e===_.RESERVED_JOIN||e===_.LIMIT}var Pa=`top-level`,Fa=`block-level`,Ia=class{constructor(e){this.indent=e,this.indentTypes=[]}getSingleIndent(){return this.indent}getLevel(){return this.indentTypes.length}increaseTopLevel(){this.indentTypes.push(Pa)}increaseBlockLevel(){this.indentTypes.push(Fa)}decreaseTopLevel(){this.indentTypes.length>0&&O(this.indentTypes)===Pa&&this.indentTypes.pop()}decreaseBlockLevel(){for(;this.indentTypes.length>0&&this.indentTypes.pop()===Pa;);}},La=class extends ka{constructor(e){super(new Ia(``)),this.expressionWidth=e,this.length=0,this.trailingSpace=!1}add(...e){if(e.forEach(e=>this.addToLength(e)),this.length>this.expressionWidth)throw new Ra;super.add(...e)}addToLength(e){if(typeof e==`string`)this.length+=e.length,this.trailingSpace=!1;else if(e===H.MANDATORY_NEWLINE||e===H.NEWLINE)throw new Ra;else e===H.INDENT||e===H.SINGLE_INDENT||e===H.SPACE?this.trailingSpace||=(this.length++,!0):(e===H.NO_NEWLINE||e===H.NO_SPACE)&&this.trailingSpace&&(this.trailingSpace=!1,this.length--)}},Ra=class extends Error{},za=class e{constructor({cfg:e,dialectCfg:t,params:n,layout:r,inline:i=!1}){this.inline=!1,this.nodes=[],this.index=-1,this.cfg=e,this.dialectCfg=t,this.inline=i,this.params=n,this.layout=r}format(e){for(this.nodes=e,this.index=0;this.index<this.nodes.length;this.index++)this.formatNode(this.nodes[this.index]);return this.layout}formatNode(e){this.formatComments(e.leadingComments),this.formatNodeWithoutComments(e),this.formatComments(e.trailingComments)}formatNodeWithoutComments(e){switch(e.type){case I.function_call:return this.formatFunctionCall(e);case I.parameterized_data_type:return this.formatParameterizedDataType(e);case I.array_subscript:return this.formatArraySubscript(e);case I.property_access:return this.formatPropertyAccess(e);case I.parenthesis:return this.formatParenthesis(e);case I.between_predicate:return this.formatBetweenPredicate(e);case I.case_expression:return this.formatCaseExpression(e);case I.case_when:return this.formatCaseWhen(e);case I.case_else:return this.formatCaseElse(e);case I.clause:return this.formatClause(e);case I.set_operation:return this.formatSetOperation(e);case I.limit_clause:return this.formatLimitClause(e);case I.all_columns_asterisk:return this.formatAllColumnsAsterisk(e);case I.literal:return this.formatLiteral(e);case I.identifier:return this.formatIdentifier(e);case I.parameter:return this.formatParameter(e);case I.operator:return this.formatOperator(e);case I.comma:return this.formatComma(e);case I.line_comment:return this.formatLineComment(e);case I.block_comment:return this.formatBlockComment(e);case I.disable_comment:return this.formatBlockComment(e);case I.data_type:return this.formatDataType(e);case I.keyword:return this.formatKeywordNode(e)}}formatFunctionCall(e){this.withComments(e.nameKw,()=>{this.layout.add(this.showFunctionKw(e.nameKw))}),this.formatNode(e.parenthesis)}formatParameterizedDataType(e){this.withComments(e.dataType,()=>{this.layout.add(this.showDataType(e.dataType))}),this.formatNode(e.parenthesis)}formatArraySubscript(e){let t;switch(e.array.type){case I.data_type:t=this.showDataType(e.array);break;case I.keyword:t=this.showKw(e.array);break;default:t=this.showIdentifier(e.array);break}this.withComments(e.array,()=>{this.layout.add(t)}),this.formatNode(e.parenthesis)}formatPropertyAccess(e){this.formatNode(e.object),this.layout.add(H.NO_SPACE,e.operator),this.formatNode(e.property)}formatParenthesis(e){let t=this.formatInlineExpression(e.children);t?(this.layout.add(e.openParen),this.layout.add(...t.getLayoutItems()),this.layout.add(H.NO_SPACE,e.closeParen,H.SPACE)):(this.layout.add(e.openParen,H.NEWLINE),P(this.cfg)?(this.layout.add(H.INDENT),this.layout=this.formatSubExpression(e.children)):(this.layout.indentation.increaseBlockLevel(),this.layout.add(H.INDENT),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseBlockLevel()),this.layout.add(H.NEWLINE,H.INDENT,e.closeParen,H.SPACE))}formatBetweenPredicate(e){this.layout.add(this.showKw(e.betweenKw),H.SPACE),this.layout=this.formatSubExpression(e.expr1),this.layout.add(H.NO_SPACE,H.SPACE,this.showNonTabularKw(e.andKw),H.SPACE),this.layout=this.formatSubExpression(e.expr2),this.layout.add(H.SPACE)}formatCaseExpression(e){this.formatNode(e.caseKw),this.layout.indentation.increaseBlockLevel(),this.layout=this.formatSubExpression(e.expr),this.layout=this.formatSubExpression(e.clauses),this.layout.indentation.decreaseBlockLevel(),this.layout.add(H.NEWLINE,H.INDENT),this.formatNode(e.endKw)}formatCaseWhen(e){this.layout.add(H.NEWLINE,H.INDENT),this.formatNode(e.whenKw),this.layout=this.formatSubExpression(e.condition),this.formatNode(e.thenKw),this.layout=this.formatSubExpression(e.result)}formatCaseElse(e){this.layout.add(H.NEWLINE,H.INDENT),this.formatNode(e.elseKw),this.layout=this.formatSubExpression(e.result)}formatClause(e){this.isOnelineClause(e)?this.formatClauseInOnelineStyle(e):P(this.cfg)?this.formatClauseInTabularStyle(e):this.formatClauseInIndentedStyle(e)}isOnelineClause(e){return P(this.cfg)?this.dialectCfg.tabularOnelineClauses[e.nameKw.text]:this.dialectCfg.onelineClauses[e.nameKw.text]}formatClauseInIndentedStyle(e){this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e.nameKw),H.NEWLINE),this.layout.indentation.increaseTopLevel(),this.layout.add(H.INDENT),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseTopLevel()}formatClauseInOnelineStyle(e){this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e.nameKw),H.SPACE),this.layout=this.formatSubExpression(e.children)}formatClauseInTabularStyle(e){this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e.nameKw),H.SPACE),this.layout.indentation.increaseTopLevel(),this.layout=this.formatSubExpression(e.children),this.layout.indentation.decreaseTopLevel()}formatSetOperation(e){this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e.nameKw),H.NEWLINE),this.layout.add(H.INDENT),this.layout=this.formatSubExpression(e.children)}formatLimitClause(e){this.withComments(e.limitKw,()=>{this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e.limitKw))}),this.layout.indentation.increaseTopLevel(),P(this.cfg)?this.layout.add(H.SPACE):this.layout.add(H.NEWLINE,H.INDENT),e.offset?(this.layout=this.formatSubExpression(e.offset),this.layout.add(H.NO_SPACE,`,`,H.SPACE),this.layout=this.formatSubExpression(e.count)):this.layout=this.formatSubExpression(e.count),this.layout.indentation.decreaseTopLevel()}formatAllColumnsAsterisk(e){this.layout.add(`*`,H.SPACE)}formatLiteral(e){this.layout.add(e.text,H.SPACE)}formatIdentifier(e){this.layout.add(this.showIdentifier(e),H.SPACE)}formatParameter(e){this.layout.add(this.params.get(e),H.SPACE)}formatOperator({text:e}){this.cfg.denseOperators||this.dialectCfg.alwaysDenseOperators.includes(e)?this.layout.add(H.NO_SPACE,e):e===`:`?this.layout.add(H.NO_SPACE,e,H.SPACE):this.layout.add(e,H.SPACE)}formatComma(e){this.inline?this.layout.add(H.NO_SPACE,`,`,H.SPACE):this.layout.add(H.NO_SPACE,`,`,H.NEWLINE,H.INDENT)}withComments(e,t){this.formatComments(e.leadingComments),t(),this.formatComments(e.trailingComments)}formatComments(e){e&&e.forEach(e=>{e.type===I.line_comment?this.formatLineComment(e):this.formatBlockComment(e)})}formatLineComment(e){Pi(e.precedingWhitespace||``)?this.layout.add(H.NEWLINE,H.INDENT,e.text,H.MANDATORY_NEWLINE,H.INDENT):this.layout.getLayoutItems().length>0?this.layout.add(H.NO_NEWLINE,H.SPACE,e.text,H.MANDATORY_NEWLINE,H.INDENT):this.layout.add(e.text,H.MANDATORY_NEWLINE,H.INDENT)}formatBlockComment(e){e.type===I.block_comment&&this.isMultilineBlockComment(e)?(this.splitBlockComment(e.text).forEach(e=>{this.layout.add(H.NEWLINE,H.INDENT,e)}),this.layout.add(H.NEWLINE,H.INDENT)):this.layout.add(e.text,H.SPACE)}isMultilineBlockComment(e){return Pi(e.text)||Pi(e.precedingWhitespace||``)}isDocComment(e){let t=e.split(/\n/);return/^\/\*\*?$/.test(t[0])&&t.slice(1,t.length-1).every(e=>/^\s*\*/.test(e))&&/^\s*\*\/$/.test(O(t))}splitBlockComment(e){return this.isDocComment(e)?e.split(/\n/).map(e=>/^\s*\*/.test(e)?` `+e.replace(/^\s*/,``):e):e.split(/\n/).map(e=>e.replace(/^\s*/,``))}formatSubExpression(t){return new e({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:this.layout,inline:this.inline}).format(t)}formatInlineExpression(t){let n=this.params.getPositionalParameterIndex();try{return new e({cfg:this.cfg,dialectCfg:this.dialectCfg,params:this.params,layout:new La(this.cfg.expressionWidth),inline:!0}).format(t)}catch(e){if(e instanceof Ra){this.params.setPositionalParameterIndex(n);return}else throw e}}formatKeywordNode(e){switch(e.tokenType){case _.RESERVED_JOIN:return this.formatJoin(e);case _.AND:case _.OR:case _.XOR:return this.formatLogicalOperator(e);default:return this.formatKeyword(e)}}formatJoin(e){P(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e),H.SPACE),this.layout.indentation.increaseTopLevel()):this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e),H.SPACE)}formatKeyword(e){this.layout.add(this.showKw(e),H.SPACE)}formatLogicalOperator(e){this.cfg.logicalOperatorNewline===`before`?P(this.cfg)?(this.layout.indentation.decreaseTopLevel(),this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e),H.SPACE),this.layout.indentation.increaseTopLevel()):this.layout.add(H.NEWLINE,H.INDENT,this.showKw(e),H.SPACE):this.layout.add(this.showKw(e),H.NEWLINE,H.INDENT)}formatDataType(e){this.layout.add(this.showDataType(e),H.SPACE)}showKw(e){return Na(e.tokenType)?Ma(this.showNonTabularKw(e),this.cfg.indentStyle):this.showNonTabularKw(e)}showNonTabularKw(e){switch(this.cfg.keywordCase){case`preserve`:return k(e.raw);case`upper`:return e.text;case`lower`:return e.text.toLowerCase()}}showFunctionKw(e){return Na(e.tokenType)?Ma(this.showNonTabularFunctionKw(e),this.cfg.indentStyle):this.showNonTabularFunctionKw(e)}showNonTabularFunctionKw(e){switch(this.cfg.functionCase){case`preserve`:return k(e.raw);case`upper`:return e.text;case`lower`:return e.text.toLowerCase()}}showIdentifier(e){if(e.quoted)return e.text;switch(this.cfg.identifierCase){case`preserve`:return e.text;case`upper`:return e.text.toUpperCase();case`lower`:return e.text.toLowerCase()}}showDataType(e){switch(this.cfg.dataTypeCase){case`preserve`:return k(e.raw);case`upper`:return e.text;case`lower`:return e.text.toLowerCase()}}},Ba=class{constructor(e,t){this.dialect=e,this.cfg=t,this.params=new ua(this.cfg.params)}format(e){let t=this.parse(e);return this.formatAst(t).trimEnd()}parse(e){return Oa(this.dialect.tokenizer).parse(e,this.cfg.paramTypes||{})}formatAst(e){return e.map(e=>this.formatStatement(e)).join(`
|
|
15
|
-
`.repeat(this.cfg.linesBetweenQueries+1))}formatStatement(e){let t=new za({cfg:this.cfg,dialectCfg:this.dialect.formatOptions,params:this.params,layout:new ka(new Ia(la(this.cfg)))}).format(e.children);return e.hasSemicolon&&(this.cfg.newlineBeforeSemicolon?t.add(H.NEWLINE,`;`):t.add(H.NO_NEWLINE,`;`)),t.toString()}},U=class extends Error{};function Va(e){for(let t of[`multilineLists`,`newlineBeforeOpenParen`,`newlineBeforeCloseParen`,`aliasAs`,`commaPosition`,`tabulateAlias`])if(t in e)throw new U(`${t} config is no more supported.`);if(e.expressionWidth<=0)throw new U(`expressionWidth config must be positive number. Received ${e.expressionWidth} instead.`);if(e.params&&!Ha(e.params)&&console.warn(`WARNING: All "params" option values should be strings.`),e.paramTypes&&!Ua(e.paramTypes))throw new U(`Empty regex given in custom paramTypes. That would result in matching infinite amount of parameters.`);return e}function Ha(e){return(e instanceof Array?e:Object.values(e)).every(e=>typeof e==`string`)}function Ua(e){return e.custom&&Array.isArray(e.custom)?e.custom.every(e=>e.regex!==``):!0}var Wa=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},Ga={bigquery:`bigquery`,clickhouse:`clickhouse`,db2:`db2`,db2i:`db2i`,duckdb:`duckdb`,hive:`hive`,mariadb:`mariadb`,mysql:`mysql`,n1ql:`n1ql`,plsql:`plsql`,postgresql:`postgresql`,redshift:`redshift`,spark:`spark`,sqlite:`sqlite`,sql:`sql`,tidb:`tidb`,trino:`trino`,transactsql:`transactsql`,tsql:`transactsql`,singlestoredb:`singlestoredb`,snowflake:`snowflake`},Ka=Object.keys(Ga),qa={tabWidth:2,useTabs:!1,keywordCase:`preserve`,identifierCase:`preserve`,dataTypeCase:`preserve`,functionCase:`preserve`,indentStyle:`standard`,logicalOperatorNewline:`before`,expressionWidth:50,linesBetweenQueries:1,denseOperators:!1,newlineBeforeSemicolon:!1},Ja=(e,t={})=>{if(typeof t.language==`string`&&!Ka.includes(t.language))throw new U(`Unsupported SQL dialect: ${t.language}`);let n=Ga[t.language||`sql`];return Ya(e,Object.assign(Object.assign({},t),{dialect:Mi[n]}))},Ya=(e,t)=>{var{dialect:n}=t,r=Wa(t,[`dialect`]);if(typeof e!=`string`)throw Error(`Invalid query argument. Expected string, instead got `+typeof e);let i=Va(Object.assign(Object.assign({},qa),r));return new Ba(oa(n),i).format(e)},Xa={funnel:{description:`Track conversion through sequential steps. Entities (identified by bindingKey) move through ordered steps.`,structure:{funnel:{bindingKey:`Cube.dimension - identifies entities moving through funnel`,timeDimension:`Cube.dimension - time field for ordering events`,steps:[{name:`string - human readable step name`,filter:{member:`Cube.dimension`,operator:`equals | notEquals | contains | ...`,values:[`array of filter values`]},timeToConvert:`optional - max time window e.g. "7 days"`}],dateRange:`[start, end] array OR string like "last 7 days", "last 3 months", "this quarter"`}}},flow:{description:`Analyze paths users take before/after a specific event. Shows event sequences.`,structure:{flow:{bindingKey:`Cube.dimension - identifies entities`,timeDimension:`Cube.dimension - time field for ordering`,eventDimension:`Cube.dimension - the event type field`,startingStep:{filter:{member:`Cube.dimension`,operator:`equals`,values:[`event value`]}},stepsBefore:`number - how many steps to show before starting step`,stepsAfter:`number - how many steps to show after starting step`,dateRange:`[start, end] array OR string like "last 7 days", "last 3 months", "this quarter"`}}},retention:{description:`Measure how many users return over time periods after initial activity.`,structure:{retention:{bindingKey:`Cube.dimension - identifies entities`,timeDimension:`Cube.dimension - time field for cohort assignment`,granularity:`day | week | month - period size`,periods:`number - how many periods to analyze`,dateRange:`[start, end] array OR string like "last 7 days", "last 3 months", "this quarter"`}}}};function Za(e,t){if(e.length>500||t.length>500)return e.length+t.length;let n=[];for(let e=0;e<=t.length;e++)n[e]=[e];for(let t=0;t<=e.length;t++)n[0][t]=t;for(let r=1;r<=t.length;r++)for(let i=1;i<=e.length;i++)t.charAt(r-1)===e.charAt(i-1)?n[r][i]=n[r-1][i-1]:n[r][i]=Math.min(n[r-1][i-1]+1,n[r][i-1]+1,n[r-1][i]+1);return n[t.length][e.length]}function W(e,t){let n=e.toLowerCase().trim(),r=t.toLowerCase().trim();if(n===r)return 1;if(r.includes(n))return .9;let i=r.split(/[\s_-]+/);for(let e of i){if(e===n)return .85;if(e.startsWith(n))return .75}let a=1-Za(n,r)/Math.max(n.length,r.length);return a>.5?a*.7:0}function G(e,t){let n=0;for(let r of t){let t=W(e,r);t>n&&(n=t)}return n}function Qa(e){let t=new Set(`a.an.the.is.are.was.were.be.been.being.have.has.had.do.does.did.will.would.could.should.may.might.must.can.and.or.but.if.then.else.when.where.why.how.what.which.who.this.that.these.those.i.me.my.we.our.you.your.he.she.it.they.them.their.in.on.at.to.for.of.with.by.from.up.down.out.over.under.about.into.through.during.before.after.above.below.between.show.me.get.find.list.give.tell.display.want.need.see.know`.split(`.`));return e.toLowerCase().replace(/[^\w\s]/g,` `).split(/\s+/).filter(e=>e.length>2&&!t.has(e))}function $a(e,t){let n=0,r=[],i=new Map,a=new Map;for(let o of t){let t=W(o,e.name);t>.5&&(n+=t*2,r.includes(`name`)||r.push(`name`));let s=W(o,e.title);if(s>.5&&(n+=s*1.5,r.includes(`title`)||r.push(`title`)),e.description){let t=W(o,e.description);t>.3&&(n+=t,r.includes(`description`)||r.push(`description`))}if(e.exampleQuestions)for(let t of e.exampleQuestions){let e=W(o,t);e>.3&&(n+=e*1.5,r.includes(`exampleQuestions`)||r.push(`exampleQuestions`))}for(let t of e.measures){let e=0,a=t.name.split(`.`).pop()||t.name;if(e=Math.max(e,W(o,a)),e=Math.max(e,W(o,t.title)),t.description&&(e=Math.max(e,W(o,t.description)*.8)),t.synonyms&&(e=Math.max(e,G(o,t.synonyms))),e>.4){n+=e,r.includes(`measures`)||r.push(`measures`);let a=i.get(t.name)||0;i.set(t.name,Math.max(a,e))}}for(let t of e.dimensions){let e=0,i=t.name.split(`.`).pop()||t.name;if(e=Math.max(e,W(o,i)),e=Math.max(e,W(o,t.title)),t.description&&(e=Math.max(e,W(o,t.description)*.8)),t.synonyms&&(e=Math.max(e,G(o,t.synonyms))),e>.4){n+=e,r.includes(`dimensions`)||r.push(`dimensions`);let i=a.get(t.name)||0;a.set(t.name,Math.max(i,e))}}}return{score:Math.min(1,n/(t.length*2)),matchedOn:r,suggestedMeasures:Array.from(i.entries()).sort((e,t)=>t[1]-e[1]).slice(0,5).map(([e])=>e),suggestedDimensions:Array.from(a.entries()).sort((e,t)=>t[1]-e[1]).slice(0,5).map(([e])=>e)}}function eo(e){let t=!!e.meta?.eventStream,n=e.dimensions.some(e=>e.type===`time`),r=e.dimensions.some(t=>t.name.toLowerCase().includes(`id`)||t.type===`number`||e.meta?.eventStream?.bindingKey&&t.name===e.meta.eventStream.bindingKey),i=t||n&&r;return{query:!0,funnel:i,flow:i,retention:i}}function to(e){let t=eo(e);if(!t.funnel&&!t.flow&&!t.retention)return;let n=[];if(e.meta?.eventStream?.bindingKey){let t=e.dimensions.find(t=>t.name===e.meta?.eventStream?.bindingKey);n.push({dimension:e.meta.eventStream.bindingKey,description:t?.description||`Configured binding key`})}for(let t of e.dimensions)(t.name.split(`.`).pop()?.toLowerCase()||``).includes(`id`)&&!n.some(e=>e.dimension===t.name)&&n.push({dimension:t.name,description:t.description||`Potential entity identifier`});let r=[];if(e.meta?.eventStream?.timeDimension){let t=e.dimensions.find(t=>t.name===e.meta?.eventStream?.timeDimension);r.push({dimension:e.meta.eventStream.timeDimension,description:t?.description||`Configured time dimension`})}for(let t of e.dimensions)t.type===`time`&&!r.some(e=>e.dimension===t.name)&&r.push({dimension:t.name,description:t.description});let i=[];for(let t of e.dimensions){let e=t.name.split(`.`).pop()?.toLowerCase()||``;t.type===`string`&&(e.includes(`type`)||e.includes(`event`)||e.includes(`status`)||e.includes(`state`)||e.includes(`action`))&&i.push({dimension:t.name,description:t.description||`Potential event type dimension`})}return{candidateBindingKeys:n,candidateTimeDimensions:r,candidateEventDimensions:i}}function no(e,t){let n=[];if(!t)return n;if(t.candidateBindingKeys.length>1&&n.push(`Choose bindingKey based on what entity to track through the analysis`),t.candidateEventDimensions.length>0){let e=t.candidateEventDimensions[0].dimension;n.push(`Query ${e} dimension to discover available values for funnel steps`)}return n.push(`Use /mcp/load with a standard query to discover dimension values before building analysis queries`),n}function ro(e,t={}){let{topic:n,intent:r,limit:i=10,minScore:a=.1}=t,o=[n,r].filter(Boolean).join(` `);if(!o.trim())return e.slice(0,i).map(e=>{let t=eo(e),n=to(e),r=no(e,n),i=t.funnel||t.flow||t.retention;return{cube:e.name,title:e.title,description:e.description,relevanceScore:1,matchedOn:[],suggestedMeasures:e.measures.slice(0,5).map(e=>e.name),suggestedDimensions:e.dimensions.slice(0,5).map(e=>e.name),capabilities:t,analysisConfig:n,hints:r.length>0?r:void 0,querySchemas:i?Xa:void 0}});let s=Qa(o);if(s.length===0)return[];let c=[];for(let t of e){let{score:e,matchedOn:n,suggestedMeasures:r,suggestedDimensions:i}=$a(t,s);if(e>=a){let a=eo(t),o=to(t),s=no(t,o),l=a.funnel||a.flow||a.retention;c.push({cube:t.name,title:t.title,description:t.description,relevanceScore:e,matchedOn:n,suggestedMeasures:r,suggestedDimensions:i,capabilities:a,analysisConfig:o,hints:s.length>0?s:void 0,querySchemas:l?Xa:void 0})}}return c.sort((e,t)=>t.relevanceScore-e.relevanceScore).slice(0,i)}function io(e,t,n){let r=null;for(let i of e){if(!n||n===`measure`)for(let e of i.measures){let n=W(t,e.name.split(`.`).pop()||e.name);n=Math.max(n,W(t,e.title)),e.synonyms&&(n=Math.max(n,G(t,e.synonyms))),n>.5&&(!r||n>r.score)&&(r={field:e.name,cube:i.name,score:n,type:`measure`})}if(!n||n===`dimension`)for(let e of i.dimensions){let n=W(t,e.name.split(`.`).pop()||e.name);n=Math.max(n,W(t,e.title)),e.synonyms&&(n=Math.max(n,G(t,e.synonyms))),n>.5&&(!r||n>r.score)&&(r={field:e.name,cube:i.name,score:n,type:`dimension`})}}return r}function ao(){let e=new Date,t=e.toISOString().split(`T`)[0],n=e=>e.toISOString().split(`T`)[0],r=e=>new Date(e.getFullYear(),e.getMonth(),1),i=e=>new Date(e.getFullYear(),0,1),a=e=>{let t=Math.floor(e.getMonth()/3);return new Date(e.getFullYear(),t*3,1)},o=e=>{let t=e.getDay(),n=e.getDate()-t+(t===0?-6:1);return new Date(e.getFullYear(),e.getMonth(),n)};return[{pattern:/\btoday\b/i,getDateRange:()=>[t,t],granularity:`day`},{pattern:/\byesterday\b/i,getDateRange:()=>{let t=new Date(e);t.setDate(t.getDate()-1);let r=n(t);return[r,r]},granularity:`day`},{pattern:/\bthis week\b/i,getDateRange:()=>[n(o(e)),t],granularity:`day`},{pattern:/\blast week\b/i,getDateRange:()=>{let t=new Date(o(e));t.setDate(t.getDate()-7);let r=new Date(t);return r.setDate(r.getDate()+6),[n(t),n(r)]},granularity:`day`},{pattern:/\bthis month\b/i,getDateRange:()=>[n(r(e)),t],granularity:`day`},{pattern:/\blast month\b/i,getDateRange:()=>{let t=new Date(e.getFullYear(),e.getMonth()-1,1),r=new Date(e.getFullYear(),e.getMonth(),0);return[n(t),n(r)]},granularity:`day`},{pattern:/\bthis quarter\b/i,getDateRange:()=>[n(a(e)),t],granularity:`month`},{pattern:/\blast quarter\b/i,getDateRange:()=>{let t=new Date(a(e));t.setMonth(t.getMonth()-3);let r=new Date(a(e));return r.setDate(r.getDate()-1),[n(t),n(r)]},granularity:`month`},{pattern:/\bthis year\b/i,getDateRange:()=>[n(i(e)),t],granularity:`month`},{pattern:/\blast year\b/i,getDateRange:()=>{let t=new Date(e.getFullYear()-1,0,1),r=new Date(e.getFullYear()-1,11,31);return[n(t),n(r)]},granularity:`month`},{pattern:/\blast (\d+) days?\b/i,getDateRange:()=>{let r=new Date(e);return r.setDate(r.getDate()-7),[n(r),t]},granularity:`day`},{pattern:/\blast (\d+) weeks?\b/i,getDateRange:()=>{let r=new Date(e);return r.setDate(r.getDate()-28),[n(r),t]},granularity:`week`},{pattern:/\blast (\d+) months?\b/i,getDateRange:()=>{let r=new Date(e);return r.setMonth(r.getMonth()-3),[n(r),t]},granularity:`month`},{pattern:/\bq([1-4])\b/i,getDateRange:()=>[n(new Date(e.getFullYear(),0,1)),n(new Date(e.getFullYear(),2,31))],granularity:`month`}]}var oo={funnel:/\b(funnel|conversion|drop.?off|steps?|journey|pipeline|stages?)\b/i,flow:/\b(flows?|paths?|sequence|before|after|next|previous|user.?journey)\b/i,retention:/\b(retention|cohort|return|churn|comeback|retained|day.?\d+)\b/i};function so(e){let t=e.toLowerCase();return oo.funnel.test(t)?`funnel`:oo.flow.test(t)?`flow`:oo.retention.test(t)?`retention`:`query`}function co(e,t){let n=t||`the relevant cube`;switch(e){case`funnel`:return[`Use /mcp/discover to get ${n} funnel configuration and schema`,`Query the event dimension to discover available event types for funnel steps`,`Build funnel query with discovered values using the schema from discover`];case`flow`:return[`Use /mcp/discover to get ${n} flow configuration and schema`,`Query the event dimension to discover available event types`,`Build flow query specifying the starting event and steps before/after`];case`retention`:return[`Use /mcp/discover to get ${n} retention configuration and schema`,`Build retention query specifying granularity (day/week/month) and number of periods`]}}function lo(e){let t=ao(),n=e.toLowerCase();for(let e of t){let t=n.match(e.pattern);if(t){if(t[1]&&/^\d+$/.test(t[1])){let e=parseInt(t[1],10),r=new Date,i=r.toISOString().split(`T`)[0],a=e=>e.toISOString().split(`T`)[0];if(/days?/.test(n)){let t=new Date(r);return t.setDate(t.getDate()-e),{dateRange:[a(t),i],granularity:`day`}}if(/weeks?/.test(n)){let t=new Date(r);return t.setDate(t.getDate()-e*7),{dateRange:[a(t),i],granularity:e<=4?`day`:`week`}}if(/months?/.test(n)){let t=new Date(r);return t.setMonth(t.getMonth()-e),{dateRange:[a(t),i],granularity:e<=3?`day`:`month`}}}if(/^q[1-4]$/i.test(t[0])){let e=parseInt(t[1],10),n=new Date().getFullYear(),r=(e-1)*3,i=new Date(n,r,1),a=new Date(n,r+3,0),o=e=>e.toISOString().split(`T`)[0];return{dateRange:[o(i),o(a)],granularity:`month`}}return{dateRange:e.getDateRange(),granularity:e.granularity}}}return null}function uo(e){let t=e.toLowerCase();for(let{pattern:e,type:n}of[{pattern:/\b(total|sum|combined)\b/i,type:`sum`},{pattern:/\b(count|number of|how many)\b/i,type:`count`},{pattern:/\b(average|avg|mean)\b/i,type:`avg`},{pattern:/\b(maximum|max|highest|top)\b/i,type:`max`},{pattern:/\b(minimum|min|lowest|bottom)\b/i,type:`min`}])if(e.test(t))return{type:n,confidence:.8};return null}function fo(e){let t=e.toLowerCase(),n=[],r=/\bby\s+(\w+(?:\s+\w+)?)/gi,i;for(;(i=r.exec(t))!==null;)n.push(i[1].trim());let a=/\bper\s+(\w+)/gi;for(;(i=a.exec(t))!==null;)n.push(i[1].trim());let o=/\bfor each\s+(\w+)/gi;for(;(i=o.exec(t))!==null;)n.push(i[1].trim());return n}function po(e,t,n){let r=[],i=[],a={},o=so(t),s;if(n){let t=e.find(e=>e.name===n);t?(s=[t],r.push(`Using specified cube: ${n}`)):(i.push(`Specified cube '${n}' not found`),s=[])}else s=ro(e,{intent:t,limit:3}).map(t=>e.find(e=>e.name===t.cube)).filter(e=>e!==void 0),s.length>0&&r.push(`Identified relevant cubes: ${s.map(e=>e.name).join(`, `)}`);if(s.length===0){let e=o!==`query`,t=e?co(o,void 0):void 0;return{query:{},confidence:e?.7:0,reasoning:e?[`Detected ${o} intent from natural language`]:[`Could not identify relevant cubes for this query`],warnings:i,analysisMode:o,nextSteps:t}}let c=s[0],l=.5,u=uo(t);u&&(r.push(`Detected ${u.type} aggregation intent`),l+=.1);let d=[],f=t.toLowerCase();for(let e of c.measures){let t=[(e.name.split(`.`).pop()||e.name).toLowerCase(),e.title.toLowerCase(),...(e.synonyms||[]).map(e=>e.toLowerCase())];for(let n of t)if(f.includes(n)){d.push(e.name),r.push(`Matched measure '${e.name}' via keyword '${n}'`),l+=.15;break}}if(d.length===0&&u){let e=c.measures.filter(e=>e.type===u.type);if(e.length>0)d.push(e[0].name),r.push(`Suggested ${e[0].name} based on ${u.type} intent`);else if(u.type===`count`){let e=c.measures.find(e=>e.type===`count`||e.type===`countDistinct`);e&&(d.push(e.name),r.push(`Suggested ${e.name} for counting`))}}d.length===0&&c.measures.length>0&&(d.push(c.measures[0].name),r.push(`Using default measure: ${c.measures[0].name}`),i.push(`Could not determine specific measure from query, using default`)),a.measures=d;let p=fo(t),m=[];for(let e of p){let t=io(s,e,`dimension`);t&&(m.push(t.field),r.push(`Matched dimension '${t.field}' from grouping keyword '${e}'`),l+=.1)}for(let e of s)for(let t of e.dimensions){let e=[(t.name.split(`.`).pop()||t.name).toLowerCase(),t.title.toLowerCase(),...(t.synonyms||[]).map(e=>e.toLowerCase())];for(let n of e)if(f.includes(n)&&!m.includes(t.name)&&(f.includes(`by ${n}`)||f.includes(`per ${n}`))){m.push(t.name),r.push(`Matched dimension '${t.name}' as grouping`),l+=.1;break}}m.length>0&&(a.dimensions=m);let h=lo(t);if(h){let e=c.dimensions.find(e=>e.type===`time`);if(e){let t={dimension:e.name,dateRange:h.dateRange};h.granularity&&(t.granularity=h.granularity),a.timeDimensions=[t],r.push(`Applied time filter: ${h.dateRange[0]} to ${h.dateRange[1]}`),l+=.15}else i.push(`Time expression found but no time dimension in cube`)}if(l=Math.min(1,l),o!==`query`){let e=s.length>0?s[0].name:void 0;return{query:{},confidence:.7,reasoning:[`Detected ${o} intent from natural language`,...e?[`Found relevant cube: ${e}`]:[]],warnings:i.length>0?i:void 0,analysisMode:o,nextSteps:co(o,e)}}return{query:a,confidence:l,reasoning:r,warnings:i.length>0?i:void 0,analysisMode:`query`}}function mo(e,t){if(e.length>500||t.length>500)return e.length+t.length;let n=[];for(let e=0;e<=t.length;e++)n[e]=[e];for(let t=0;t<=e.length;t++)n[0][t]=t;for(let r=1;r<=t.length;r++)for(let i=1;i<=e.length;i++)t.charAt(r-1)===e.charAt(i-1)?n[r][i]=n[r-1][i-1]:n[r][i]=Math.min(n[r-1][i-1]+1,n[r][i-1]+1,n[r-1][i]+1);return n[t.length][e.length]}function K(e,t){let n=null;for(let r of t){let t=mo(e.toLowerCase(),r.toLowerCase());t<=3&&(!n||t<n.distance)&&(n={field:r,distance:t})}return n}function ho(e,t,n,r){let i=e.split(`.`);if(i.length!==2){n.push({type:`syntax_error`,message:`Invalid measure format: '${e}'. Expected 'CubeName.measureName'`,field:e});return}let[a,o]=i,s=t.find(e=>e.name===a);if(!s){let i=t.map(e=>e.name),s=K(a,i);s?(n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Did you mean '${s.field}'?`,correctedValue:`${s.field}.${o}`}),r.set(e,`${s.field}.${o}`)):n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Available cubes: ${i.join(`, `)}`});return}if(!s.measures.some(t=>t.name===e)){let i=io(t,o,`measure`);if(i&&i.cube===a)n.push({type:`measure_not_found`,message:`Measure '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:i.field}),r.set(e,i.field);else{let t=s.measures.map(e=>e.name.split(`.`).pop()),i=K(o,t);if(i){let t=`${a}.${i.field}`;n.push({type:`measure_not_found`,message:`Measure '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:t}),r.set(e,t)}else n.push({type:`measure_not_found`,message:`Measure '${o}' not found on cube '${a}'`,field:e,suggestion:`Available measures: ${t.slice(0,5).join(`, `)}${t.length>5?`...`:``}`})}}}function q(e,t,n,r){let i=e.split(`.`);if(i.length!==2){n.push({type:`syntax_error`,message:`Invalid dimension format: '${e}'. Expected 'CubeName.dimensionName'`,field:e});return}let[a,o]=i,s=t.find(e=>e.name===a);if(!s){let i=t.map(e=>e.name),s=K(a,i);s?(n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Did you mean '${s.field}'?`,correctedValue:`${s.field}.${o}`}),r.set(e,`${s.field}.${o}`)):n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Available cubes: ${i.join(`, `)}`});return}if(!s.dimensions.some(t=>t.name===e)){let i=io(t,o,`dimension`);if(i&&i.cube===a)n.push({type:`dimension_not_found`,message:`Dimension '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:i.field}),r.set(e,i.field);else{let t=s.dimensions.map(e=>e.name.split(`.`).pop()),i=K(o,t);if(i){let t=`${a}.${i.field}`;n.push({type:`dimension_not_found`,message:`Dimension '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:t}),r.set(e,t)}else n.push({type:`dimension_not_found`,message:`Dimension '${o}' not found on cube '${a}'`,field:e,suggestion:`Available dimensions: ${t.slice(0,5).join(`, `)}${t.length>5?`...`:``}`})}}}function J(e,t,n,r){for(let i of e){if(`and`in i&&Array.isArray(i.and)){J(i.and,t,n,r);continue}if(`or`in i&&Array.isArray(i.or)){J(i.or,t,n,r);continue}if(`member`in i){let e=i.member,a=e.split(`.`);if(a.length!==2){n.push({type:`invalid_filter`,message:`Invalid filter member format: '${e}'`,field:e});continue}let[o,s]=a,c=t.find(e=>e.name===o);if(!c){let i=K(o,t.map(e=>e.name));i&&r.set(e,`${i.field}.${s}`),n.push({type:`cube_not_found`,message:`Cube '${o}' not found in filter`,field:e,suggestion:i?`Did you mean '${i.field}'?`:void 0,correctedValue:i?`${i.field}.${s}`:void 0});continue}let l=c.dimensions.some(t=>t.name===e),u=c.measures.some(t=>t.name===e);if(!l&&!u){let t=K(s,[...c.dimensions.map(e=>e.name.split(`.`).pop()),...c.measures.map(e=>e.name.split(`.`).pop())]);if(t){let i=`${o}.${t.field}`;r.set(e,i),n.push({type:`invalid_filter`,message:`Filter field '${s}' not found on cube '${o}'`,field:e,suggestion:`Did you mean '${t.field}'?`,correctedValue:i})}else n.push({type:`invalid_filter`,message:`Filter field '${s}' not found on cube '${o}'`,field:e})}}}}function go(e,t,n,r,i){let a=e.funnel;if(a)if(a.bindingKey?typeof a.bindingKey==`string`&&q(a.bindingKey,t,n,i):n.push({type:`syntax_error`,message:`funnel.bindingKey is required`}),a.timeDimension?typeof a.timeDimension==`string`&&q(a.timeDimension,t,n,i):n.push({type:`syntax_error`,message:`funnel.timeDimension is required`}),!a.steps||!Array.isArray(a.steps))n.push({type:`syntax_error`,message:`funnel.steps array is required`});else if(a.steps.length<2)n.push({type:`syntax_error`,message:`funnel requires at least 2 steps`});else for(let e=0;e<a.steps.length;e++){let o=a.steps[e];o.name||r.push({type:`best_practice`,message:`Step ${e+1} is missing a name`,suggestion:`Add descriptive names to funnel steps`}),o.filter&&`member`in o.filter&&J([o.filter],t,n,i)}}function _o(e,t,n,r,i){let a=e.flow;a&&(a.bindingKey?typeof a.bindingKey==`string`&&q(a.bindingKey,t,n,i):n.push({type:`syntax_error`,message:`flow.bindingKey is required`}),a.timeDimension?typeof a.timeDimension==`string`&&q(a.timeDimension,t,n,i):n.push({type:`syntax_error`,message:`flow.timeDimension is required`}),a.eventDimension?typeof a.eventDimension==`string`&&q(a.eventDimension,t,n,i):n.push({type:`syntax_error`,message:`flow.eventDimension is required`}),a.stepsBefore===void 0&&a.stepsAfter===void 0&&r.push({type:`best_practice`,message:`Neither stepsBefore nor stepsAfter specified`,suggestion:`Set stepsBefore and/or stepsAfter to see event sequences`}))}function vo(e,t,n,r,i){let a=e.retention;a&&(a.bindingKey?typeof a.bindingKey==`string`&&q(a.bindingKey,t,n,i):n.push({type:`syntax_error`,message:`retention.bindingKey is required`}),a.timeDimension?typeof a.timeDimension==`string`&&q(a.timeDimension,t,n,i):n.push({type:`syntax_error`,message:`retention.timeDimension is required`}),a.granularity||r.push({type:`best_practice`,message:`retention.granularity not specified`,suggestion:`Specify granularity: "day", "week", or "month"`}),a.periods||r.push({type:`best_practice`,message:`retention.periods not specified`,suggestion:`Specify number of periods to analyze`}))}function yo(e,t){let n=[],r=[],i=new Map;if(e.funnel)return go(e,t,n,r,i),{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};if(e.flow)return _o(e,t,n,r,i),{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};if(e.retention)return vo(e,t,n,r,i),{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};if(e.measures)for(let r of e.measures)ho(r,t,n,i);if(e.dimensions)for(let r of e.dimensions)q(r,t,n,i);if(e.timeDimensions)for(let a of e.timeDimensions){q(a.dimension,t,n,i);let[e]=a.dimension.split(`.`),o=t.find(t=>t.name===e);if(o){let e=o.dimensions.find(e=>e.name===a.dimension);e&&e.type!==`time`&&r.push({type:`best_practice`,message:`Dimension '${a.dimension}' is not a time type (it's '${e.type}')`,field:a.dimension,suggestion:`Use a dimension with type "time" for timeDimensions`})}}e.filters&&J(e.filters,t,n,i),!e.measures?.length&&!e.dimensions?.length&&n.push({type:`syntax_error`,message:`Query must have at least one measure or dimension`}),e.measures&&e.measures.length>10&&r.push({type:`performance`,message:`Query has ${e.measures.length} measures, which may impact performance`,suggestion:`Consider splitting into multiple queries`}),e.dimensions&&e.dimensions.length>5&&r.push({type:`performance`,message:`Query has ${e.dimensions.length} dimensions, which may produce many rows`,suggestion:`Consider adding filters or reducing dimensions`});let a;if(i.size>0){let t=JSON.parse(JSON.stringify(e));t.measures&&=t.measures.map(e=>i.get(e)||e),t.dimensions&&=t.dimensions.map(e=>i.get(e)||e),t.timeDimensions&&=t.timeDimensions.map(e=>({...e,dimension:i.get(e.dimension)||e.dimension})),a=t}return{isValid:n.length===0,errors:n,warnings:r,correctedQuery:i.size>0?a:void 0}}function bo(e){let t=0;return t+=(e.measures?.length||0)*1,t+=(e.dimensions?.length||0)*1,t+=(e.filters?.length||0)*2,t+=(e.timeDimensions?.length||0)*3,t<=5?`low`:t<=15?`medium`:`high`}function xo(e,t){if(`and`in e||`or`in e){let n=e.and||e.or||[];for(let e of n)xo(e,t);return}if(`member`in e){let[n]=e.member.split(`.`);n&&t.add(n)}}function So(){return crypto.randomUUID()}function Co(e){let t=e.dimensions||[],n=e.timeDimensions||[],r=e.measures||[];return{sortedDimensions:t,sortedTimeDimensions:n,timeDimensions:n,measures:r,leafMeasureAdditive:!0,leafMeasures:r,measureToLeafMeasures:{},hasNoTimeDimensionsWithoutGranularity:!0,allFiltersWithinSelectedDimensions:!0,isAdditive:!0,granularityHierarchies:{},hasMultipliedMeasures:!1,hasCumulativeMeasures:!1,windowGranularity:null,filterDimensionsSingleValueEqual:{},ownedDimensions:t,ownedTimeDimensionsWithRollupGranularity:[],ownedTimeDimensionsAsIs:[],allBackAliasMembers:{},hasMultiStage:!1}}function wo(e){if(e.hasExecutor()){let t=e.databaseExecutor;if(t?.engineType)return t.engineType}return`postgres`}function To(e){let t=[];if(e.timeDimensions?.some(e=>e.compareDateRange&&e.compareDateRange.length>=2)&&t.push(`comparison`),e.funnel&&e.funnel.steps?.length>=2&&t.push(`funnel`),e.flow&&e.flow.bindingKey&&e.flow.eventDimension&&t.push(`flow`),e.retention&&e.retention.bindingKey&&e.retention.timeDimension&&t.push(`retention`),t.length===0)return`regular`;if(t.length>1)throw Error(`Query contains multiple query modes: ${t.join(`, `)}`);return t[0]}function Eo(e,t,n){try{return n.analyzeQuery(e,t)}catch(e){console.warn(`Query analysis failed:`,String(e).replace(/\n|\r/g,``));return}}function Y(e,t,n){let r=t.validateQuery(e);if(!r.isValid)throw Error(`${n} validation failed: ${r.errors.join(`, `)}`)}async function X(e,t,n){return{sqlResult:await n.dryRun(e,t),analysis:Eo(e,t,n)}}function Z(e,t){let[n]=e.split(`.`);n&&t.add(n)}function Q(e,t){if(e)for(let n of e)n.cube&&t.add(n.cube)}function Do(e){let t=new Set;return e.measures?.forEach(e=>Z(e,t)),e.dimensions?.forEach(e=>Z(e,t)),e.timeDimensions?.forEach(e=>Z(e.dimension,t)),e.filters?.forEach(e=>{xo(e,t)}),Array.from(t)}function Oo(e){let t=new Set,n=e.funnel;typeof n.bindingKey==`string`?Z(n.bindingKey,t):Q(n.bindingKey,t),typeof n.timeDimension==`string`?Z(n.timeDimension,t):Q(n.timeDimension,t);for(let e of n.steps)`cube`in e&&e.cube&&t.add(e.cube);return Array.from(t)}function ko(e){let t=new Set,n=e.flow;return typeof n.bindingKey==`string`?Z(n.bindingKey,t):Q(n.bindingKey,t),typeof n.timeDimension==`string`?Z(n.timeDimension,t):Q(n.timeDimension,t),Z(n.eventDimension,t),Array.from(t)}function Ao(e){let t=new Set,n=e.retention;typeof n.timeDimension==`string`?Z(n.timeDimension,t):n.timeDimension?.cube&&t.add(n.timeDimension.cube),typeof n.bindingKey==`string`?Z(n.bindingKey,t):Q(n.bindingKey,t);for(let e of n.breakdownDimensions||[])Z(e,t);return Array.from(t)}function $(e){let t=e.normalizedQueries||[],n=e.transformedQueries||t;return{mode:e.mode,queryType:e.queryType,normalizedQueries:t,queryOrder:e.cubesUsed,transformedQueries:n,pivotQuery:{query:e.query,cubes:e.cubesUsed},sql:{sql:[e.sqlResult.sql],params:e.sqlResult.params||[]},complexity:e.complexity,valid:!0,cubesUsed:e.cubesUsed,joinType:e.joinType,query:e.query,analysis:e.analysis,planningTrace:e.analysis?.planningTrace,modeMetadata:e.modeMetadata}}async function jo(e,t,n){return{regular:()=>Mo(e,t,n),comparison:()=>No(e,t,n),funnel:()=>Bo(e,t,n),flow:()=>Vo(e,t,n),retention:()=>Ho(e,t,n)}[To(e)]()}async function Mo(e,t,n){Y(e,n,`Query`);let r=Do(e),i=r.length>1,{sqlResult:a,analysis:o}=await X(e,t,n),s=r.map(t=>({cube:t,query:{measures:e.measures?.filter(e=>e.startsWith(t+`.`))||[],dimensions:e.dimensions?.filter(e=>e.startsWith(t+`.`))||[],filters:e.filters||[],timeDimensions:e.timeDimensions||[],order:e.order||{},limit:e.limit,offset:e.offset}}));return $({mode:`regular`,queryType:`regularQuery`,joinType:i?`multi_cube_join`:`single_cube`,complexity:bo(e),query:e,cubesUsed:r,sqlResult:a,analysis:o,normalizedQueries:s})}async function No(e,t,n){Y(e,n,`Comparison query`);let r=Do(e),i=r.length>1,{sqlResult:a,analysis:o}=await X(e,t,n),s=e.timeDimensions?.find(e=>e.compareDateRange&&e.compareDateRange.length>=2),c=s?{timeDimension:s.dimension,granularity:s.granularity||`day`,periodCount:s.compareDateRange?.length??0,compareDateRange:s.compareDateRange,sqlPreviewPeriodIndex:0,note:`Dry-run SQL preview shows the first comparison period; execution runs all periods and merges results.`}:void 0;return $({mode:`comparison`,queryType:`comparisonQuery`,joinType:i?`multi_cube_join`:`single_cube`,complexity:bo(e),query:e,cubesUsed:r,sqlResult:a,analysis:o,modeMetadata:c})}function Po(e,t,n){let r=wo(n),i=So();return{queryType:`regularQuery`,results:[{query:e,lastRefreshTime:new Date().toISOString(),usedPreAggregations:{},transformedQuery:Co(e),requestId:i,annotation:t.annotation,dataSource:`default`,dbType:r,extDbType:r,external:!1,slowQuery:!1,data:t.data,...t.cache&&{cache:t.cache},...t.warnings?.length&&{warnings:t.warnings}}],pivotQuery:{...e,queryType:`regularQuery`},slowQuery:!1}}function Fo(e,t){try{return Ja(e,{language:{postgres:`postgresql`,mysql:`mysql`,sqlite:`sqlite`,singlestore:`mysql`,duckdb:`postgresql`,databend:`postgresql`}[t],tabWidth:2,keywordCase:`upper`,indentStyle:`standard`})}catch(t){return console.warn(`SQL formatting failed:`,t),e}}function Io(e,t){return{sql:t.sql,params:t.params||[],query:e}}function Lo(e){return{cubes:e,queryGuidance:{dateHandling:{critical:`Date filtering and time grouping are DIFFERENT operations`,forAggregatedTotals:{description:`For totals over a date range (no time breakdown), use filters with inDateRange operator - NOT timeDimensions`,example:{filters:[{member:`Cube.date`,operator:`inDateRange`,values:[`last 3 months`]}]},useCase:`User asks for "total sales last month", "top 5 last quarter", "sum over past year"`},forTimeSeries:{description:`For time series grouped by period (trend analysis), use timeDimensions WITH granularity`,example:{timeDimensions:[{dimension:`Cube.date`,granularity:`month`,dateRange:`last 3 months`}]},useCase:`User asks for "monthly breakdown", "daily trend", "per week"`},warning:`Using timeDimensions WITHOUT granularity groups by day, returning many rows instead of aggregates. This is the #1 query mistake.`},crossCubeQueries:{description:`Include dimensions from related cubes - the system auto-joins based on relationships`,example:`To get employee names with productivity: measures=["Productivity.total"], dimensions=["Employees.name"]`,howToFind:`Check the "joins" property in each cube metadata to see relationships`},topNPattern:{description:`For "top N" queries, use filters (not timeDimensions) + order + limit`,example:{measures:[`Cube.total`],dimensions:[`RelatedCube.name`],filters:[{member:`Cube.date`,operator:`inDateRange`,values:[`last 3 months`]}],order:{"Cube.total":`desc`},limit:5}},filterSyntax:{description:`Filters must be flat arrays of { member, operator, values }`,operators:[`equals`,`notEquals`,`contains`,`notContains`,`gt`,`gte`,`lt`,`lte`,`inDateRange`,`beforeDate`,`afterDate`,`set`,`notSet`],dateRangeValues:{relative:[`last 7 days`,`last 3 months`,`last year`,`this week`,`this month`,`this quarter`],absolute:[`2024-01-01`,`2024-03-31`]}}}}}function Ro(e,t=500){return{error:e instanceof Error?e.message:e,status:t}}async function zo(e,t,n,r){return{results:(await Promise.allSettled(e.map(async e=>Po(e,await n.executeMultiCubeQuery(e,t,{skipCache:r?.skipCache}),n)))).map((t,n)=>t.status===`fulfilled`?{success:!0,...t.value}:{success:!1,error:t.reason instanceof Error?t.reason.message:String(t.reason),query:e[n]})}}async function Bo(e,t,n){Y(e,n,`Funnel query`);let r=Oo(e),{sqlResult:i,analysis:a}=await X(e,t,n),o=e.funnel;return $({mode:`funnel`,queryType:`funnelQuery`,joinType:`funnel_cte`,complexity:`high`,query:e,cubesUsed:r,sqlResult:i,analysis:a,modeMetadata:{stepCount:o.steps.length,steps:o.steps.map((e,t)=>({index:t,name:e.name,timeToConvert:e.timeToConvert,cube:`cube`in e?e.cube:void 0})),bindingKey:o.bindingKey,timeDimension:o.timeDimension,includeTimeMetrics:o.includeTimeMetrics,globalTimeWindow:o.globalTimeWindow}})}async function Vo(e,t,n){Y(e,n,`Flow query`);let r=ko(e),{sqlResult:i,analysis:a}=await X(e,t,n),o=e.flow;return $({mode:`flow`,queryType:`flowQuery`,joinType:`flow_cte`,complexity:`high`,query:e,cubesUsed:r,sqlResult:i,analysis:a,modeMetadata:{stepsBefore:o.stepsBefore,stepsAfter:o.stepsAfter,bindingKey:o.bindingKey,timeDimension:o.timeDimension,eventDimension:o.eventDimension,startingStep:o.startingStep}})}async function Ho(e,t,n){Y(e,n,`Retention query`);let r=Ao(e),{sqlResult:i,analysis:a}=await X(e,t,n),o=e.retention;return $({mode:`retention`,queryType:`retentionQuery`,joinType:`retention_cte`,complexity:`high`,query:e,cubesUsed:r,sqlResult:i,analysis:a,modeMetadata:{timeDimension:o.timeDimension,bindingKey:o.bindingKey,granularity:o.granularity,periods:o.periods,retentionType:o.retentionType,breakdownDimensions:o.breakdownDimensions,segmentCount:o.breakdownDimensions?.length||1}})}async function Uo(e,t){return{cubes:ro(e.getMetadata(),{topic:t.topic,intent:t.intent,limit:t.limit,minScore:t.minScore})}}async function Wo(e,t){return po(e.getMetadata(),t.naturalLanguage,t.cube)}async function Go(e,t){let n=e.getMetadata();return yo(t.query,n)}async function Ko(e,t,n){let r=n.query,i=e.validateQuery(r);if(!i.isValid)throw Error(`Query validation failed: ${i.errors.join(`, `)}`);let a=await e.executeMultiCubeQuery(r,t);return{data:a.data,annotation:a.annotation,query:r}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return Lo}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return So}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return Uo}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return jo}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return Go}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return Ro}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return wo}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return Wo}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return bo}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return Io}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return Ko}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Po}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Fo}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Co}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return zo}});
|
|
15
|
+
`.repeat(this.cfg.linesBetweenQueries+1))}formatStatement(e){let t=new za({cfg:this.cfg,dialectCfg:this.dialect.formatOptions,params:this.params,layout:new ka(new Ia(la(this.cfg)))}).format(e.children);return e.hasSemicolon&&(this.cfg.newlineBeforeSemicolon?t.add(H.NEWLINE,`;`):t.add(H.NO_NEWLINE,`;`)),t.toString()}},U=class extends Error{};function Va(e){for(let t of[`multilineLists`,`newlineBeforeOpenParen`,`newlineBeforeCloseParen`,`aliasAs`,`commaPosition`,`tabulateAlias`])if(t in e)throw new U(`${t} config is no more supported.`);if(e.expressionWidth<=0)throw new U(`expressionWidth config must be positive number. Received ${e.expressionWidth} instead.`);if(e.params&&!Ha(e.params)&&console.warn(`WARNING: All "params" option values should be strings.`),e.paramTypes&&!Ua(e.paramTypes))throw new U(`Empty regex given in custom paramTypes. That would result in matching infinite amount of parameters.`);return e}function Ha(e){return(e instanceof Array?e:Object.values(e)).every(e=>typeof e==`string`)}function Ua(e){return e.custom&&Array.isArray(e.custom)?e.custom.every(e=>e.regex!==``):!0}var Wa=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n},Ga={bigquery:`bigquery`,clickhouse:`clickhouse`,db2:`db2`,db2i:`db2i`,duckdb:`duckdb`,hive:`hive`,mariadb:`mariadb`,mysql:`mysql`,n1ql:`n1ql`,plsql:`plsql`,postgresql:`postgresql`,redshift:`redshift`,spark:`spark`,sqlite:`sqlite`,sql:`sql`,tidb:`tidb`,trino:`trino`,transactsql:`transactsql`,tsql:`transactsql`,singlestoredb:`singlestoredb`,snowflake:`snowflake`},Ka=Object.keys(Ga),qa={tabWidth:2,useTabs:!1,keywordCase:`preserve`,identifierCase:`preserve`,dataTypeCase:`preserve`,functionCase:`preserve`,indentStyle:`standard`,logicalOperatorNewline:`before`,expressionWidth:50,linesBetweenQueries:1,denseOperators:!1,newlineBeforeSemicolon:!1},Ja=(e,t={})=>{if(typeof t.language==`string`&&!Ka.includes(t.language))throw new U(`Unsupported SQL dialect: ${t.language}`);let n=Ga[t.language||`sql`];return Ya(e,Object.assign(Object.assign({},t),{dialect:Mi[n]}))},Ya=(e,t)=>{var{dialect:n}=t,r=Wa(t,[`dialect`]);if(typeof e!=`string`)throw Error(`Invalid query argument. Expected string, instead got `+typeof e);let i=Va(Object.assign(Object.assign({},qa),r));return new Ba(oa(n),i).format(e)},Xa={funnel:{description:`Track conversion through sequential steps. Entities (identified by bindingKey) move through ordered steps.`,structure:{funnel:{bindingKey:`Cube.dimension - identifies entities moving through funnel`,timeDimension:`Cube.dimension - time field for ordering events`,steps:[{name:`string - human readable step name`,filter:{member:`Cube.dimension`,operator:`equals | notEquals | contains | ...`,values:[`array of filter values`]},timeToConvert:`optional - max time window e.g. "7 days"`}],dateRange:`[start, end] array OR string like "last 7 days", "last 3 months", "this quarter"`}}},flow:{description:`Analyze paths users take before/after a specific event. Shows event sequences.`,structure:{flow:{bindingKey:`Cube.dimension - identifies entities`,timeDimension:`Cube.dimension - time field for ordering`,eventDimension:`Cube.dimension - the event type field`,startingStep:{filter:{member:`Cube.dimension`,operator:`equals`,values:[`event value`]}},stepsBefore:`number - how many steps to show before starting step`,stepsAfter:`number - how many steps to show after starting step`,dateRange:`[start, end] array OR string like "last 7 days", "last 3 months", "this quarter"`}}},retention:{description:`Measure how many users return over time periods after initial activity.`,structure:{retention:{bindingKey:`Cube.dimension - identifies entities`,timeDimension:`Cube.dimension - time field for cohort assignment`,granularity:`day | week | month - period size`,periods:`number - how many periods to analyze`,dateRange:`[start, end] array OR string like "last 7 days", "last 3 months", "this quarter"`}}}};function Za(e,t){if(e.length>500||t.length>500)return e.length+t.length;let n=[];for(let e=0;e<=t.length;e++)n[e]=[e];for(let t=0;t<=e.length;t++)n[0][t]=t;for(let r=1;r<=t.length;r++)for(let i=1;i<=e.length;i++)t.charAt(r-1)===e.charAt(i-1)?n[r][i]=n[r-1][i-1]:n[r][i]=Math.min(n[r-1][i-1]+1,n[r][i-1]+1,n[r-1][i]+1);return n[t.length][e.length]}function W(e,t){let n=e.toLowerCase().trim(),r=t.toLowerCase().trim();if(n===r)return 1;if(r.includes(n))return .9;let i=r.split(/[\s_-]+/);for(let e of i){if(e===n)return .85;if(e.startsWith(n))return .75}let a=1-Za(n,r)/Math.max(n.length,r.length);return a>.5?a*.7:0}function G(e,t){let n=0;for(let r of t){let t=W(e,r);t>n&&(n=t)}return n}function Qa(e){let t=new Set(`a.an.the.is.are.was.were.be.been.being.have.has.had.do.does.did.will.would.could.should.may.might.must.can.and.or.but.if.then.else.when.where.why.how.what.which.who.this.that.these.those.i.me.my.we.our.you.your.he.she.it.they.them.their.in.on.at.to.for.of.with.by.from.up.down.out.over.under.about.into.through.during.before.after.above.below.between.show.me.get.find.list.give.tell.display.want.need.see.know`.split(`.`));return e.toLowerCase().replace(/[^\w\s]/g,` `).split(/\s+/).filter(e=>e.length>2&&!t.has(e))}function $a(e,t){let n=0,r=[],i=new Map,a=new Map;for(let o of t){let t=W(o,e.name);t>.5&&(n+=t*2,r.includes(`name`)||r.push(`name`));let s=W(o,e.title);if(s>.5&&(n+=s*1.5,r.includes(`title`)||r.push(`title`)),e.description){let t=W(o,e.description);t>.3&&(n+=t,r.includes(`description`)||r.push(`description`))}if(e.exampleQuestions)for(let t of e.exampleQuestions){let e=W(o,t);e>.3&&(n+=e*1.5,r.includes(`exampleQuestions`)||r.push(`exampleQuestions`))}for(let t of e.measures){let e=0,a=t.name.split(`.`).pop()||t.name;if(e=Math.max(e,W(o,a)),e=Math.max(e,W(o,t.title)),t.description&&(e=Math.max(e,W(o,t.description)*.8)),t.synonyms&&(e=Math.max(e,G(o,t.synonyms))),e>.4){n+=e,r.includes(`measures`)||r.push(`measures`);let a=i.get(t.name)||0;i.set(t.name,Math.max(a,e))}}for(let t of e.dimensions){let e=0,i=t.name.split(`.`).pop()||t.name;if(e=Math.max(e,W(o,i)),e=Math.max(e,W(o,t.title)),t.description&&(e=Math.max(e,W(o,t.description)*.8)),t.synonyms&&(e=Math.max(e,G(o,t.synonyms))),e>.4){n+=e,r.includes(`dimensions`)||r.push(`dimensions`);let i=a.get(t.name)||0;a.set(t.name,Math.max(i,e))}}}return{score:Math.min(1,n/(t.length*2)),matchedOn:r,suggestedMeasures:Array.from(i.entries()).sort((e,t)=>t[1]-e[1]).slice(0,5).map(([e])=>e),suggestedDimensions:Array.from(a.entries()).sort((e,t)=>t[1]-e[1]).slice(0,5).map(([e])=>e)}}function eo(e){let t=!!e.meta?.eventStream,n=e.dimensions.some(e=>e.type===`time`),r=e.dimensions.some(t=>t.name.toLowerCase().includes(`id`)||t.type===`number`||e.meta?.eventStream?.bindingKey&&t.name===e.meta.eventStream.bindingKey),i=t||n&&r;return{query:!0,funnel:i,flow:i,retention:i}}function to(e){let t=eo(e);if(!t.funnel&&!t.flow&&!t.retention)return;let n=[];if(e.meta?.eventStream?.bindingKey){let t=e.dimensions.find(t=>t.name===e.meta?.eventStream?.bindingKey);n.push({dimension:e.meta.eventStream.bindingKey,description:t?.description||`Configured binding key`})}for(let t of e.dimensions)(t.name.split(`.`).pop()?.toLowerCase()||``).includes(`id`)&&!n.some(e=>e.dimension===t.name)&&n.push({dimension:t.name,description:t.description||`Potential entity identifier`});let r=[];if(e.meta?.eventStream?.timeDimension){let t=e.dimensions.find(t=>t.name===e.meta?.eventStream?.timeDimension);r.push({dimension:e.meta.eventStream.timeDimension,description:t?.description||`Configured time dimension`})}for(let t of e.dimensions)t.type===`time`&&!r.some(e=>e.dimension===t.name)&&r.push({dimension:t.name,description:t.description});let i=[];for(let t of e.dimensions){let e=t.name.split(`.`).pop()?.toLowerCase()||``;t.type===`string`&&(e.includes(`type`)||e.includes(`event`)||e.includes(`status`)||e.includes(`state`)||e.includes(`action`))&&i.push({dimension:t.name,description:t.description||`Potential event type dimension`})}return{candidateBindingKeys:n,candidateTimeDimensions:r,candidateEventDimensions:i}}function no(e,t){let n=[];if(!t)return n;if(t.candidateBindingKeys.length>1&&n.push(`Choose bindingKey based on what entity to track through the analysis`),t.candidateEventDimensions.length>0){let e=t.candidateEventDimensions[0].dimension;n.push(`Query ${e} dimension to discover available values for funnel steps`)}return n.push(`Use /mcp/load with a standard query to discover dimension values before building analysis queries`),n}function ro(e,t={}){let{topic:n,intent:r,limit:i=10,minScore:a=.1}=t,o=[n,r].filter(Boolean).join(` `);if(!o.trim())return e.slice(0,i).map(e=>{let t=eo(e),n=to(e),r=no(e,n),i=t.funnel||t.flow||t.retention;return{cube:e.name,title:e.title,description:e.description,relevanceScore:1,matchedOn:[],suggestedMeasures:e.measures.slice(0,5).map(e=>e.name),suggestedDimensions:e.dimensions.slice(0,5).map(e=>e.name),capabilities:t,analysisConfig:n,hints:r.length>0?r:void 0,querySchemas:i?Xa:void 0}});let s=Qa(o);if(s.length===0)return[];let c=[];for(let t of e){let{score:e,matchedOn:n,suggestedMeasures:r,suggestedDimensions:i}=$a(t,s);if(e>=a){let a=eo(t),o=to(t),s=no(t,o),l=a.funnel||a.flow||a.retention;c.push({cube:t.name,title:t.title,description:t.description,relevanceScore:e,matchedOn:n,suggestedMeasures:r,suggestedDimensions:i,capabilities:a,analysisConfig:o,hints:s.length>0?s:void 0,querySchemas:l?Xa:void 0})}}return c.sort((e,t)=>t.relevanceScore-e.relevanceScore).slice(0,i)}function io(e,t,n){let r=null;for(let i of e){if(!n||n===`measure`)for(let e of i.measures){let n=W(t,e.name.split(`.`).pop()||e.name);n=Math.max(n,W(t,e.title)),e.synonyms&&(n=Math.max(n,G(t,e.synonyms))),n>.5&&(!r||n>r.score)&&(r={field:e.name,cube:i.name,score:n,type:`measure`})}if(!n||n===`dimension`)for(let e of i.dimensions){let n=W(t,e.name.split(`.`).pop()||e.name);n=Math.max(n,W(t,e.title)),e.synonyms&&(n=Math.max(n,G(t,e.synonyms))),n>.5&&(!r||n>r.score)&&(r={field:e.name,cube:i.name,score:n,type:`dimension`})}}return r}function ao(){let e=new Date,t=e.toISOString().split(`T`)[0],n=e=>e.toISOString().split(`T`)[0],r=e=>new Date(e.getFullYear(),e.getMonth(),1),i=e=>new Date(e.getFullYear(),0,1),a=e=>{let t=Math.floor(e.getMonth()/3);return new Date(e.getFullYear(),t*3,1)},o=e=>{let t=e.getDay(),n=e.getDate()-t+(t===0?-6:1);return new Date(e.getFullYear(),e.getMonth(),n)};return[{pattern:/\btoday\b/i,getDateRange:()=>[t,t],granularity:`day`},{pattern:/\byesterday\b/i,getDateRange:()=>{let t=new Date(e);t.setDate(t.getDate()-1);let r=n(t);return[r,r]},granularity:`day`},{pattern:/\bthis week\b/i,getDateRange:()=>[n(o(e)),t],granularity:`day`},{pattern:/\blast week\b/i,getDateRange:()=>{let t=new Date(o(e));t.setDate(t.getDate()-7);let r=new Date(t);return r.setDate(r.getDate()+6),[n(t),n(r)]},granularity:`day`},{pattern:/\bthis month\b/i,getDateRange:()=>[n(r(e)),t],granularity:`day`},{pattern:/\blast month\b/i,getDateRange:()=>{let t=new Date(e.getFullYear(),e.getMonth()-1,1),r=new Date(e.getFullYear(),e.getMonth(),0);return[n(t),n(r)]},granularity:`day`},{pattern:/\bthis quarter\b/i,getDateRange:()=>[n(a(e)),t],granularity:`month`},{pattern:/\blast quarter\b/i,getDateRange:()=>{let t=new Date(a(e));t.setMonth(t.getMonth()-3);let r=new Date(a(e));return r.setDate(r.getDate()-1),[n(t),n(r)]},granularity:`month`},{pattern:/\bthis year\b/i,getDateRange:()=>[n(i(e)),t],granularity:`month`},{pattern:/\blast year\b/i,getDateRange:()=>{let t=new Date(e.getFullYear()-1,0,1),r=new Date(e.getFullYear()-1,11,31);return[n(t),n(r)]},granularity:`month`},{pattern:/\blast (\d+) days?\b/i,getDateRange:()=>{let r=new Date(e);return r.setDate(r.getDate()-7),[n(r),t]},granularity:`day`},{pattern:/\blast (\d+) weeks?\b/i,getDateRange:()=>{let r=new Date(e);return r.setDate(r.getDate()-28),[n(r),t]},granularity:`week`},{pattern:/\blast (\d+) months?\b/i,getDateRange:()=>{let r=new Date(e);return r.setMonth(r.getMonth()-3),[n(r),t]},granularity:`month`},{pattern:/\bq([1-4])\b/i,getDateRange:()=>[n(new Date(e.getFullYear(),0,1)),n(new Date(e.getFullYear(),2,31))],granularity:`month`}]}var oo={funnel:/\b(funnel|conversion|drop.?off|steps?|journey|pipeline|stages?)\b/i,flow:/\b(flows?|paths?|sequence|before|after|next|previous|user.?journey)\b/i,retention:/\b(retention|cohort|return|churn|comeback|retained|day.?\d+)\b/i};function so(e){let t=e.toLowerCase();return oo.funnel.test(t)?`funnel`:oo.flow.test(t)?`flow`:oo.retention.test(t)?`retention`:`query`}function co(e,t){let n=t||`the relevant cube`;switch(e){case`funnel`:return[`Use /mcp/discover to get ${n} funnel configuration and schema`,`Query the event dimension to discover available event types for funnel steps`,`Build funnel query with discovered values using the schema from discover`];case`flow`:return[`Use /mcp/discover to get ${n} flow configuration and schema`,`Query the event dimension to discover available event types`,`Build flow query specifying the starting event and steps before/after`];case`retention`:return[`Use /mcp/discover to get ${n} retention configuration and schema`,`Build retention query specifying granularity (day/week/month) and number of periods`]}}function lo(e){let t=ao(),n=e.toLowerCase();for(let e of t){let t=n.match(e.pattern);if(t){if(t[1]&&/^\d+$/.test(t[1])){let e=parseInt(t[1],10),r=new Date,i=r.toISOString().split(`T`)[0],a=e=>e.toISOString().split(`T`)[0];if(/days?/.test(n)){let t=new Date(r);return t.setDate(t.getDate()-e),{dateRange:[a(t),i],granularity:`day`}}if(/weeks?/.test(n)){let t=new Date(r);return t.setDate(t.getDate()-e*7),{dateRange:[a(t),i],granularity:e<=4?`day`:`week`}}if(/months?/.test(n)){let t=new Date(r);return t.setMonth(t.getMonth()-e),{dateRange:[a(t),i],granularity:e<=3?`day`:`month`}}}if(/^q[1-4]$/i.test(t[0])){let e=parseInt(t[1],10),n=new Date().getFullYear(),r=(e-1)*3,i=new Date(n,r,1),a=new Date(n,r+3,0),o=e=>e.toISOString().split(`T`)[0];return{dateRange:[o(i),o(a)],granularity:`month`}}return{dateRange:e.getDateRange(),granularity:e.granularity}}}return null}function uo(e){let t=e.toLowerCase();for(let{pattern:e,type:n}of[{pattern:/\b(total|sum|combined)\b/i,type:`sum`},{pattern:/\b(count|number of|how many)\b/i,type:`count`},{pattern:/\b(average|avg|mean)\b/i,type:`avg`},{pattern:/\b(maximum|max|highest|top)\b/i,type:`max`},{pattern:/\b(minimum|min|lowest|bottom)\b/i,type:`min`}])if(e.test(t))return{type:n,confidence:.8};return null}function fo(e){let t=e.toLowerCase(),n=[],r=/\bby\s+(\w+(?:\s+\w+)?)/gi,i;for(;(i=r.exec(t))!==null;)n.push(i[1].trim());let a=/\bper\s+(\w+)/gi;for(;(i=a.exec(t))!==null;)n.push(i[1].trim());let o=/\bfor each\s+(\w+)/gi;for(;(i=o.exec(t))!==null;)n.push(i[1].trim());return n}function po(e,t,n){let r=[],i=[],a={},o=so(t),s;if(n){let t=e.find(e=>e.name===n);t?(s=[t],r.push(`Using specified cube: ${n}`)):(i.push(`Specified cube '${n}' not found`),s=[])}else s=ro(e,{intent:t,limit:3}).map(t=>e.find(e=>e.name===t.cube)).filter(e=>e!==void 0),s.length>0&&r.push(`Identified relevant cubes: ${s.map(e=>e.name).join(`, `)}`);if(s.length===0){let e=o!==`query`,t=e?co(o,void 0):void 0;return{query:{},confidence:e?.7:0,reasoning:e?[`Detected ${o} intent from natural language`]:[`Could not identify relevant cubes for this query`],warnings:i,analysisMode:o,nextSteps:t}}let c=s[0],l=.5,u=uo(t);u&&(r.push(`Detected ${u.type} aggregation intent`),l+=.1);let d=[],f=t.toLowerCase();for(let e of c.measures){let t=[(e.name.split(`.`).pop()||e.name).toLowerCase(),e.title.toLowerCase(),...(e.synonyms||[]).map(e=>e.toLowerCase())];for(let n of t)if(f.includes(n)){d.push(e.name),r.push(`Matched measure '${e.name}' via keyword '${n}'`),l+=.15;break}}if(d.length===0&&u){let e=c.measures.filter(e=>e.type===u.type);if(e.length>0)d.push(e[0].name),r.push(`Suggested ${e[0].name} based on ${u.type} intent`);else if(u.type===`count`){let e=c.measures.find(e=>e.type===`count`||e.type===`countDistinct`);e&&(d.push(e.name),r.push(`Suggested ${e.name} for counting`))}}d.length===0&&c.measures.length>0&&(d.push(c.measures[0].name),r.push(`Using default measure: ${c.measures[0].name}`),i.push(`Could not determine specific measure from query, using default`)),a.measures=d;let p=fo(t),m=[];for(let e of p){let t=io(s,e,`dimension`);t&&(m.push(t.field),r.push(`Matched dimension '${t.field}' from grouping keyword '${e}'`),l+=.1)}for(let e of s)for(let t of e.dimensions){let e=[(t.name.split(`.`).pop()||t.name).toLowerCase(),t.title.toLowerCase(),...(t.synonyms||[]).map(e=>e.toLowerCase())];for(let n of e)if(f.includes(n)&&!m.includes(t.name)&&(f.includes(`by ${n}`)||f.includes(`per ${n}`))){m.push(t.name),r.push(`Matched dimension '${t.name}' as grouping`),l+=.1;break}}m.length>0&&(a.dimensions=m);let h=lo(t);if(h){let e=c.dimensions.find(e=>e.type===`time`);if(e){let t={dimension:e.name,dateRange:h.dateRange};h.granularity&&(t.granularity=h.granularity),a.timeDimensions=[t],r.push(`Applied time filter: ${h.dateRange[0]} to ${h.dateRange[1]}`),l+=.15}else i.push(`Time expression found but no time dimension in cube`)}if(l=Math.min(1,l),o!==`query`){let e=s.length>0?s[0].name:void 0;return{query:{},confidence:.7,reasoning:[`Detected ${o} intent from natural language`,...e?[`Found relevant cube: ${e}`]:[]],warnings:i.length>0?i:void 0,analysisMode:o,nextSteps:co(o,e)}}return{query:a,confidence:l,reasoning:r,warnings:i.length>0?i:void 0,analysisMode:`query`}}function mo(e,t){if(e.length>500||t.length>500)return e.length+t.length;let n=[];for(let e=0;e<=t.length;e++)n[e]=[e];for(let t=0;t<=e.length;t++)n[0][t]=t;for(let r=1;r<=t.length;r++)for(let i=1;i<=e.length;i++)t.charAt(r-1)===e.charAt(i-1)?n[r][i]=n[r-1][i-1]:n[r][i]=Math.min(n[r-1][i-1]+1,n[r][i-1]+1,n[r-1][i]+1);return n[t.length][e.length]}function K(e,t){let n=null;for(let r of t){let t=mo(e.toLowerCase(),r.toLowerCase());t<=3&&(!n||t<n.distance)&&(n={field:r,distance:t})}return n}function ho(e,t,n,r){let i=e.split(`.`);if(i.length!==2){n.push({type:`syntax_error`,message:`Invalid measure format: '${e}'. Expected 'CubeName.measureName'`,field:e});return}let[a,o]=i,s=t.find(e=>e.name===a);if(!s){let i=t.map(e=>e.name),s=K(a,i);s?(n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Did you mean '${s.field}'?`,correctedValue:`${s.field}.${o}`}),r.set(e,`${s.field}.${o}`)):n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Available cubes: ${i.join(`, `)}`});return}if(!s.measures.some(t=>t.name===e)){let i=io(t,o,`measure`);if(i&&i.cube===a)n.push({type:`measure_not_found`,message:`Measure '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:i.field}),r.set(e,i.field);else{let t=s.measures.map(e=>e.name.split(`.`).pop()),i=K(o,t);if(i){let t=`${a}.${i.field}`;n.push({type:`measure_not_found`,message:`Measure '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:t}),r.set(e,t)}else n.push({type:`measure_not_found`,message:`Measure '${o}' not found on cube '${a}'`,field:e,suggestion:`Available measures: ${t.slice(0,5).join(`, `)}${t.length>5?`...`:``}`})}}}function q(e,t,n,r){let i=e.split(`.`);if(i.length!==2){n.push({type:`syntax_error`,message:`Invalid dimension format: '${e}'. Expected 'CubeName.dimensionName'`,field:e});return}let[a,o]=i,s=t.find(e=>e.name===a);if(!s){let i=t.map(e=>e.name),s=K(a,i);s?(n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Did you mean '${s.field}'?`,correctedValue:`${s.field}.${o}`}),r.set(e,`${s.field}.${o}`)):n.push({type:`cube_not_found`,message:`Cube '${a}' not found`,field:e,suggestion:`Available cubes: ${i.join(`, `)}`});return}if(!s.dimensions.some(t=>t.name===e)){let i=io(t,o,`dimension`);if(i&&i.cube===a)n.push({type:`dimension_not_found`,message:`Dimension '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:i.field}),r.set(e,i.field);else{let t=s.dimensions.map(e=>e.name.split(`.`).pop()),i=K(o,t);if(i){let t=`${a}.${i.field}`;n.push({type:`dimension_not_found`,message:`Dimension '${o}' not found on cube '${a}'`,field:e,suggestion:`Did you mean '${i.field}'?`,correctedValue:t}),r.set(e,t)}else n.push({type:`dimension_not_found`,message:`Dimension '${o}' not found on cube '${a}'`,field:e,suggestion:`Available dimensions: ${t.slice(0,5).join(`, `)}${t.length>5?`...`:``}`})}}}function J(e,t,n,r){for(let i of e){if(`and`in i&&Array.isArray(i.and)){J(i.and,t,n,r);continue}if(`or`in i&&Array.isArray(i.or)){J(i.or,t,n,r);continue}if(`member`in i){let e=i.member,a=e.split(`.`);if(a.length!==2){n.push({type:`invalid_filter`,message:`Invalid filter member format: '${e}'`,field:e});continue}let[o,s]=a,c=t.find(e=>e.name===o);if(!c){let i=K(o,t.map(e=>e.name));i&&r.set(e,`${i.field}.${s}`),n.push({type:`cube_not_found`,message:`Cube '${o}' not found in filter`,field:e,suggestion:i?`Did you mean '${i.field}'?`:void 0,correctedValue:i?`${i.field}.${s}`:void 0});continue}let l=c.dimensions.some(t=>t.name===e),u=c.measures.some(t=>t.name===e);if(!l&&!u){let t=K(s,[...c.dimensions.map(e=>e.name.split(`.`).pop()),...c.measures.map(e=>e.name.split(`.`).pop())]);if(t){let i=`${o}.${t.field}`;r.set(e,i),n.push({type:`invalid_filter`,message:`Filter field '${s}' not found on cube '${o}'`,field:e,suggestion:`Did you mean '${t.field}'?`,correctedValue:i})}else n.push({type:`invalid_filter`,message:`Filter field '${s}' not found on cube '${o}'`,field:e})}}}}function go(e,t,n,r,i){let a=e.funnel;if(a)if(a.bindingKey?typeof a.bindingKey==`string`&&q(a.bindingKey,t,n,i):n.push({type:`syntax_error`,message:`funnel.bindingKey is required`}),a.timeDimension?typeof a.timeDimension==`string`&&q(a.timeDimension,t,n,i):n.push({type:`syntax_error`,message:`funnel.timeDimension is required`}),!a.steps||!Array.isArray(a.steps))n.push({type:`syntax_error`,message:`funnel.steps array is required`});else if(a.steps.length<2)n.push({type:`syntax_error`,message:`funnel requires at least 2 steps`});else for(let e=0;e<a.steps.length;e++){let o=a.steps[e];o.name||r.push({type:`best_practice`,message:`Step ${e+1} is missing a name`,suggestion:`Add descriptive names to funnel steps`}),o.filter&&`member`in o.filter&&J([o.filter],t,n,i)}}function _o(e,t,n,r,i){let a=e.flow;a&&(a.bindingKey?typeof a.bindingKey==`string`&&q(a.bindingKey,t,n,i):n.push({type:`syntax_error`,message:`flow.bindingKey is required`}),a.timeDimension?typeof a.timeDimension==`string`&&q(a.timeDimension,t,n,i):n.push({type:`syntax_error`,message:`flow.timeDimension is required`}),a.eventDimension?typeof a.eventDimension==`string`&&q(a.eventDimension,t,n,i):n.push({type:`syntax_error`,message:`flow.eventDimension is required`}),a.stepsBefore===void 0&&a.stepsAfter===void 0&&r.push({type:`best_practice`,message:`Neither stepsBefore nor stepsAfter specified`,suggestion:`Set stepsBefore and/or stepsAfter to see event sequences`}))}function vo(e,t,n,r,i){let a=e.retention;a&&(a.bindingKey?typeof a.bindingKey==`string`&&q(a.bindingKey,t,n,i):n.push({type:`syntax_error`,message:`retention.bindingKey is required`}),a.timeDimension?typeof a.timeDimension==`string`&&q(a.timeDimension,t,n,i):n.push({type:`syntax_error`,message:`retention.timeDimension is required`}),a.granularity||r.push({type:`best_practice`,message:`retention.granularity not specified`,suggestion:`Specify granularity: "day", "week", or "month"`}),a.periods||r.push({type:`best_practice`,message:`retention.periods not specified`,suggestion:`Specify number of periods to analyze`}))}function yo(e,t){let n=[],r=[],i=new Map;if(e.funnel)return go(e,t,n,r,i),{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};if(e.flow)return _o(e,t,n,r,i),{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};if(e.retention)return vo(e,t,n,r,i),{isValid:n.length===0,errors:n,warnings:r,correctedQuery:void 0};if(e.measures)for(let r of e.measures)ho(r,t,n,i);if(e.dimensions)for(let r of e.dimensions)q(r,t,n,i);if(e.timeDimensions)for(let a of e.timeDimensions){q(a.dimension,t,n,i);let[e]=a.dimension.split(`.`),o=t.find(t=>t.name===e);if(o){let e=o.dimensions.find(e=>e.name===a.dimension);e&&e.type!==`time`&&r.push({type:`best_practice`,message:`Dimension '${a.dimension}' is not a time type (it's '${e.type}')`,field:a.dimension,suggestion:`Use a dimension with type "time" for timeDimensions`})}}e.filters&&J(e.filters,t,n,i),!e.measures?.length&&!e.dimensions?.length&&n.push({type:`syntax_error`,message:`Query must have at least one measure or dimension`}),e.measures&&e.measures.length>10&&r.push({type:`performance`,message:`Query has ${e.measures.length} measures, which may impact performance`,suggestion:`Consider splitting into multiple queries`}),e.dimensions&&e.dimensions.length>5&&r.push({type:`performance`,message:`Query has ${e.dimensions.length} dimensions, which may produce many rows`,suggestion:`Consider adding filters or reducing dimensions`});let a;if(i.size>0){let t=JSON.parse(JSON.stringify(e));t.measures&&=t.measures.map(e=>i.get(e)||e),t.dimensions&&=t.dimensions.map(e=>i.get(e)||e),t.timeDimensions&&=t.timeDimensions.map(e=>({...e,dimension:i.get(e.dimension)||e.dimension})),a=t}return{isValid:n.length===0,errors:n,warnings:r,correctedQuery:i.size>0?a:void 0}}function bo(e){let t=0;return t+=(e.measures?.length||0)*1,t+=(e.dimensions?.length||0)*1,t+=(e.filters?.length||0)*2,t+=(e.timeDimensions?.length||0)*3,t<=5?`low`:t<=15?`medium`:`high`}function xo(e,t){if(`and`in e||`or`in e){let n=e.and||e.or||[];for(let e of n)xo(e,t);return}if(`member`in e){let[n]=e.member.split(`.`);n&&t.add(n)}}function So(){return crypto.randomUUID()}function Co(e){let t=e.dimensions||[],n=e.timeDimensions||[],r=e.measures||[];return{sortedDimensions:t,sortedTimeDimensions:n,timeDimensions:n,measures:r,leafMeasureAdditive:!0,leafMeasures:r,measureToLeafMeasures:{},hasNoTimeDimensionsWithoutGranularity:!0,allFiltersWithinSelectedDimensions:!0,isAdditive:!0,granularityHierarchies:{},hasMultipliedMeasures:!1,hasCumulativeMeasures:!1,windowGranularity:null,filterDimensionsSingleValueEqual:{},ownedDimensions:t,ownedTimeDimensionsWithRollupGranularity:[],ownedTimeDimensionsAsIs:[],allBackAliasMembers:{},hasMultiStage:!1}}function wo(e){if(e.hasExecutor()){let t=e.databaseExecutor;if(t?.engineType)return t.engineType}return`postgres`}function To(e){let t=[];if(e.timeDimensions?.some(e=>e.compareDateRange&&e.compareDateRange.length>=2)&&t.push(`comparison`),e.funnel&&e.funnel.steps?.length>=2&&t.push(`funnel`),e.flow&&e.flow.bindingKey&&e.flow.eventDimension&&t.push(`flow`),e.retention&&e.retention.bindingKey&&e.retention.timeDimension&&t.push(`retention`),t.length===0)return`regular`;if(t.length>1)throw Error(`Query contains multiple query modes: ${t.join(`, `)}`);return t[0]}function Eo(e,t,n){try{return n.analyzeQuery(e,t)}catch(e){console.warn(`Query analysis failed:`,String(e).replace(/\n|\r/g,``));return}}function Y(e,t,n){let r=t.validateQuery(e);if(!r.isValid)throw Error(`${n} validation failed: ${r.errors.join(`, `)}`)}async function X(e,t,n){return{sqlResult:await n.dryRun(e,t),analysis:Eo(e,t,n)}}function Z(e,t){let[n]=e.split(`.`);n&&t.add(n)}function Q(e,t){if(e)for(let n of e)n.cube&&t.add(n.cube)}function Do(e){let t=new Set;return e.measures?.forEach(e=>Z(e,t)),e.dimensions?.forEach(e=>Z(e,t)),e.timeDimensions?.forEach(e=>Z(e.dimension,t)),e.filters?.forEach(e=>{xo(e,t)}),Array.from(t)}function Oo(e){let t=new Set,n=e.funnel;typeof n.bindingKey==`string`?Z(n.bindingKey,t):Q(n.bindingKey,t),typeof n.timeDimension==`string`?Z(n.timeDimension,t):Q(n.timeDimension,t);for(let e of n.steps)`cube`in e&&e.cube&&t.add(e.cube);return Array.from(t)}function ko(e){let t=new Set,n=e.flow;return typeof n.bindingKey==`string`?Z(n.bindingKey,t):Q(n.bindingKey,t),typeof n.timeDimension==`string`?Z(n.timeDimension,t):Q(n.timeDimension,t),Z(n.eventDimension,t),Array.from(t)}function Ao(e){let t=new Set,n=e.retention;typeof n.timeDimension==`string`?Z(n.timeDimension,t):n.timeDimension?.cube&&t.add(n.timeDimension.cube),typeof n.bindingKey==`string`?Z(n.bindingKey,t):Q(n.bindingKey,t);for(let e of n.breakdownDimensions||[])Z(e,t);return Array.from(t)}function $(e){let t=e.normalizedQueries||[],n=e.transformedQueries||t;return{mode:e.mode,queryType:e.queryType,normalizedQueries:t,queryOrder:e.cubesUsed,transformedQueries:n,pivotQuery:{query:e.query,cubes:e.cubesUsed},sql:{sql:[e.sqlResult.sql],params:e.sqlResult.params||[]},complexity:e.complexity,valid:!0,cubesUsed:e.cubesUsed,joinType:e.joinType,query:e.query,analysis:e.analysis,planningTrace:e.analysis?.planningTrace,modeMetadata:e.modeMetadata}}async function jo(e,t,n){return{regular:()=>Mo(e,t,n),comparison:()=>No(e,t,n),funnel:()=>Bo(e,t,n),flow:()=>Vo(e,t,n),retention:()=>Ho(e,t,n)}[To(e)]()}async function Mo(e,t,n){Y(e,n,`Query`);let r=Do(e),i=r.length>1,{sqlResult:a,analysis:o}=await X(e,t,n),s=r.map(t=>({cube:t,query:{measures:e.measures?.filter(e=>e.startsWith(t+`.`))||[],dimensions:e.dimensions?.filter(e=>e.startsWith(t+`.`))||[],filters:e.filters||[],timeDimensions:e.timeDimensions||[],order:e.order||{},limit:e.limit,offset:e.offset}}));return $({mode:`regular`,queryType:`regularQuery`,joinType:i?`multi_cube_join`:`single_cube`,complexity:bo(e),query:e,cubesUsed:r,sqlResult:a,analysis:o,normalizedQueries:s})}async function No(e,t,n){Y(e,n,`Comparison query`);let r=Do(e),i=r.length>1,{sqlResult:a,analysis:o}=await X(e,t,n),s=e.timeDimensions?.find(e=>e.compareDateRange&&e.compareDateRange.length>=2),c=s?{timeDimension:s.dimension,granularity:s.granularity||`day`,periodCount:s.compareDateRange?.length??0,compareDateRange:s.compareDateRange,sqlPreviewPeriodIndex:0,note:`Dry-run SQL preview shows the first comparison period; execution runs all periods and merges results.`}:void 0;return $({mode:`comparison`,queryType:`comparisonQuery`,joinType:i?`multi_cube_join`:`single_cube`,complexity:bo(e),query:e,cubesUsed:r,sqlResult:a,analysis:o,modeMetadata:c})}function Po(e,t,n){let r=wo(n),i=So();return{queryType:`regularQuery`,results:[{query:e,lastRefreshTime:new Date().toISOString(),usedPreAggregations:{},transformedQuery:Co(e),requestId:i,annotation:t.annotation,dataSource:`default`,dbType:r,extDbType:r,external:!1,slowQuery:!1,data:t.data,...t.cache&&{cache:t.cache},...t.warnings?.length&&{warnings:t.warnings}}],pivotQuery:{...e,queryType:`regularQuery`},slowQuery:!1}}function Fo(e,t){try{return Ja(e,{language:{postgres:`postgresql`,mysql:`mysql`,sqlite:`sqlite`,singlestore:`mysql`,duckdb:`postgresql`,databend:`postgresql`,snowflake:`postgresql`}[t],tabWidth:2,keywordCase:`upper`,indentStyle:`standard`})}catch(t){return console.warn(`SQL formatting failed:`,t),e}}function Io(e,t){return{sql:t.sql,params:t.params||[],query:e}}function Lo(e){return{cubes:e,queryGuidance:{dateHandling:{critical:`Date filtering and time grouping are DIFFERENT operations`,forAggregatedTotals:{description:`For totals over a date range (no time breakdown), use filters with inDateRange operator - NOT timeDimensions`,example:{filters:[{member:`Cube.date`,operator:`inDateRange`,values:[`last 3 months`]}]},useCase:`User asks for "total sales last month", "top 5 last quarter", "sum over past year"`},forTimeSeries:{description:`For time series grouped by period (trend analysis), use timeDimensions WITH granularity`,example:{timeDimensions:[{dimension:`Cube.date`,granularity:`month`,dateRange:`last 3 months`}]},useCase:`User asks for "monthly breakdown", "daily trend", "per week"`},warning:`Using timeDimensions WITHOUT granularity groups by day, returning many rows instead of aggregates. This is the #1 query mistake.`},crossCubeQueries:{description:`Include dimensions from related cubes - the system auto-joins based on relationships`,example:`To get employee names with productivity: measures=["Productivity.total"], dimensions=["Employees.name"]`,howToFind:`Check the "joins" property in each cube metadata to see relationships`},topNPattern:{description:`For "top N" queries, use filters (not timeDimensions) + order + limit`,example:{measures:[`Cube.total`],dimensions:[`RelatedCube.name`],filters:[{member:`Cube.date`,operator:`inDateRange`,values:[`last 3 months`]}],order:{"Cube.total":`desc`},limit:5}},filterSyntax:{description:`Filters must be flat arrays of { member, operator, values }`,operators:[`equals`,`notEquals`,`contains`,`notContains`,`gt`,`gte`,`lt`,`lte`,`inDateRange`,`beforeDate`,`afterDate`,`set`,`notSet`],dateRangeValues:{relative:[`last 7 days`,`last 3 months`,`last year`,`this week`,`this month`,`this quarter`],absolute:[`2024-01-01`,`2024-03-31`]}}}}}function Ro(e,t=500){return{error:e instanceof Error?e.message:e,status:t}}async function zo(e,t,n,r){return{results:(await Promise.allSettled(e.map(async e=>Po(e,await n.executeMultiCubeQuery(e,t,{skipCache:r?.skipCache}),n)))).map((t,n)=>t.status===`fulfilled`?{success:!0,...t.value}:{success:!1,error:t.reason instanceof Error?t.reason.message:String(t.reason),query:e[n]})}}async function Bo(e,t,n){Y(e,n,`Funnel query`);let r=Oo(e),{sqlResult:i,analysis:a}=await X(e,t,n),o=e.funnel;return $({mode:`funnel`,queryType:`funnelQuery`,joinType:`funnel_cte`,complexity:`high`,query:e,cubesUsed:r,sqlResult:i,analysis:a,modeMetadata:{stepCount:o.steps.length,steps:o.steps.map((e,t)=>({index:t,name:e.name,timeToConvert:e.timeToConvert,cube:`cube`in e?e.cube:void 0})),bindingKey:o.bindingKey,timeDimension:o.timeDimension,includeTimeMetrics:o.includeTimeMetrics,globalTimeWindow:o.globalTimeWindow}})}async function Vo(e,t,n){Y(e,n,`Flow query`);let r=ko(e),{sqlResult:i,analysis:a}=await X(e,t,n),o=e.flow;return $({mode:`flow`,queryType:`flowQuery`,joinType:`flow_cte`,complexity:`high`,query:e,cubesUsed:r,sqlResult:i,analysis:a,modeMetadata:{stepsBefore:o.stepsBefore,stepsAfter:o.stepsAfter,bindingKey:o.bindingKey,timeDimension:o.timeDimension,eventDimension:o.eventDimension,startingStep:o.startingStep}})}async function Ho(e,t,n){Y(e,n,`Retention query`);let r=Ao(e),{sqlResult:i,analysis:a}=await X(e,t,n),o=e.retention;return $({mode:`retention`,queryType:`retentionQuery`,joinType:`retention_cte`,complexity:`high`,query:e,cubesUsed:r,sqlResult:i,analysis:a,modeMetadata:{timeDimension:o.timeDimension,bindingKey:o.bindingKey,granularity:o.granularity,periods:o.periods,retentionType:o.retentionType,breakdownDimensions:o.breakdownDimensions,segmentCount:o.breakdownDimensions?.length||1}})}async function Uo(e,t){return{cubes:ro(e.getMetadata(),{topic:t.topic,intent:t.intent,limit:t.limit,minScore:t.minScore})}}async function Wo(e,t){return po(e.getMetadata(),t.naturalLanguage,t.cube)}async function Go(e,t){let n=e.getMetadata();return yo(t.query,n)}async function Ko(e,t,n){let r=n.query,i=e.validateQuery(r);if(!i.isValid)throw Error(`Query validation failed: ${i.errors.join(`, `)}`);let a=await e.executeMultiCubeQuery(r,t);return{data:a.data,annotation:a.annotation,query:r}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return Lo}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return So}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return Uo}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return jo}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return Go}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return Ro}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return wo}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return Wo}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return bo}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return Io}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return Ko}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return Po}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return Fo}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Co}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return zo}});
|
package/dist/adapters/utils.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./utils-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./utils-BLFzzCI9.cjs`);exports.buildTransformedQuery=e.t,exports.calculateQueryComplexity=e.n,exports.formatCubeResponse=e.r,exports.formatErrorResponse=e.i,exports.formatMetaResponse=e.a,exports.formatSqlResponse=e.o,exports.formatSqlString=e.s,exports.generateRequestId=e.c,exports.getDatabaseType=e.l,exports.handleBatchRequest=e.u,exports.handleDiscover=e.d,exports.handleDryRun=e.f,exports.handleLoad=e.p,exports.handleSuggest=e.m,exports.handleValidate=e.h;
|
package/dist/adapters/utils.d.ts
CHANGED
|
@@ -88,7 +88,7 @@ export declare function formatCubeResponse(query: SemanticQuery, result: {
|
|
|
88
88
|
/**
|
|
89
89
|
* Format SQL string using sql-formatter with appropriate dialect
|
|
90
90
|
*/
|
|
91
|
-
export declare function formatSqlString(sqlString: string, engineType: 'postgres' | 'mysql' | 'sqlite' | 'singlestore' | 'duckdb' | 'databend'): string;
|
|
91
|
+
export declare function formatSqlString(sqlString: string, engineType: 'postgres' | 'mysql' | 'sqlite' | 'singlestore' | 'duckdb' | 'databend' | 'snowflake'): string;
|
|
92
92
|
/**
|
|
93
93
|
* Format SQL generation response
|
|
94
94
|
*/
|
package/dist/adapters/utils.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as e, c as t, d as n, f as r, h as i, i as a, l as o, m as s, n as c, o as l, p as u, r as d, s as f, t as p, u as m } from "./utils-
|
|
1
|
+
import { a as e, c as t, d as n, f as r, h as i, i as a, l as o, m as s, n as c, o as l, p as u, r as d, s as f, t as p, u as m } from "./utils-B7VkyzMv.js";
|
|
2
2
|
export { p as buildTransformedQuery, c as calculateQueryComplexity, d as formatCubeResponse, a as formatErrorResponse, e as formatMetaResponse, l as formatSqlResponse, f as formatSqlString, t as generateRequestId, o as getDatabaseType, m as handleBatchRequest, n as handleDiscover, r as handleDryRun, u as handleLoad, s as handleSuggest, i as handleValidate };
|