drizzle-cube 0.2.11 → 0.2.13

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.
Files changed (76) hide show
  1. package/dist/adapters/compiler-CMwSRhTS.cjs +22 -0
  2. package/dist/adapters/{compiler-gcKytLwd.js → compiler-DrkCCzf0.js} +16 -11
  3. package/dist/adapters/express/index.cjs +1 -1
  4. package/dist/adapters/express/index.js +8 -8
  5. package/dist/adapters/fastify/index.cjs +1 -1
  6. package/dist/adapters/fastify/index.js +9 -9
  7. package/dist/adapters/hono/index.cjs +1 -1
  8. package/dist/adapters/hono/index.js +11 -11
  9. package/dist/adapters/nextjs/index.cjs +1 -1
  10. package/dist/adapters/nextjs/index.js +59 -59
  11. package/dist/client/charts.js +11 -11
  12. package/dist/client/chunks/{chart-activitygridchart-D17Fxiuf.js → chart-activitygridchart-CUGN9Xq9.js} +3 -2
  13. package/dist/client/chunks/chart-activitygridchart-CUGN9Xq9.js.map +1 -0
  14. package/dist/client/chunks/{chart-areachart-udSbAzl1.js → chart-areachart-B4tknnsY.js} +25 -25
  15. package/dist/client/chunks/{chart-areachart-udSbAzl1.js.map → chart-areachart-B4tknnsY.js.map} +1 -1
  16. package/dist/client/chunks/{chart-axisformatcontrols-DqSa245M.js → chart-axisformatcontrols-Ch_IYF94.js} +18 -18
  17. package/dist/client/chunks/chart-axisformatcontrols-Ch_IYF94.js.map +1 -0
  18. package/dist/client/chunks/{chart-barchart-CDIpqCKS.js → chart-barchart-D_op06r-.js} +6 -6
  19. package/dist/client/chunks/{chart-barchart-CDIpqCKS.js.map → chart-barchart-D_op06r-.js.map} +1 -1
  20. package/dist/client/chunks/{chart-bubblechart-CivK_yfh.js → chart-bubblechart-BsaIXUbS.js} +3 -3
  21. package/dist/client/chunks/chart-bubblechart-BsaIXUbS.js.map +1 -0
  22. package/dist/client/chunks/{chart-charttooltip-BVEdz4Q-.js → chart-charttooltip-Bx3I8jQv.js} +2 -2
  23. package/dist/client/chunks/{chart-charttooltip-BVEdz4Q-.js.map → chart-charttooltip-Bx3I8jQv.js.map} +1 -1
  24. package/dist/client/chunks/{chart-datatable-NHE7BTMr.js → chart-datatable-C7MS9q4Y.js} +2 -2
  25. package/dist/client/chunks/{chart-datatable-NHE7BTMr.js.map → chart-datatable-C7MS9q4Y.js.map} +1 -1
  26. package/dist/client/chunks/{chart-kpidelta-D-FR2o4V.js → chart-kpidelta-7-KOmb3w.js} +62 -60
  27. package/dist/client/chunks/chart-kpidelta-7-KOmb3w.js.map +1 -0
  28. package/dist/client/chunks/{chart-kpinumber-DSH8RJxb.js → chart-kpinumber-HOPfcK2N.js} +4 -4
  29. package/dist/client/chunks/{chart-kpinumber-DSH8RJxb.js.map → chart-kpinumber-HOPfcK2N.js.map} +1 -1
  30. package/dist/client/chunks/{chart-kpitext-Z9oh0bJq.js → chart-kpitext-BZkC9u3A.js} +24 -24
  31. package/dist/client/chunks/{chart-kpitext-Z9oh0bJq.js.map → chart-kpitext-BZkC9u3A.js.map} +1 -1
  32. package/dist/client/chunks/{chart-linechart-D4r0uD1j.js → chart-linechart-DqFmLbRe.js} +7 -7
  33. package/dist/client/chunks/{chart-linechart-D4r0uD1j.js.map → chart-linechart-DqFmLbRe.js.map} +1 -1
  34. package/dist/client/chunks/chart-markdownchart-9n_TemoB.js +256 -0
  35. package/dist/client/chunks/chart-markdownchart-9n_TemoB.js.map +1 -0
  36. package/dist/client/chunks/{chart-piechart-BhttUWuH.js → chart-piechart-CrXFd9pE.js} +6 -6
  37. package/dist/client/chunks/{chart-piechart-BhttUWuH.js.map → chart-piechart-CrXFd9pE.js.map} +1 -1
  38. package/dist/client/chunks/{chart-radarchart-DnqlfoGr.js → chart-radarchart-tar2GBkO.js} +5 -5
  39. package/dist/client/chunks/{chart-radarchart-DnqlfoGr.js.map → chart-radarchart-tar2GBkO.js.map} +1 -1
  40. package/dist/client/chunks/{chart-radialbarchart-BFxxiqLw.js → chart-radialbarchart-ab8Swtal.js} +5 -5
  41. package/dist/client/chunks/{chart-radialbarchart-BFxxiqLw.js.map → chart-radialbarchart-ab8Swtal.js.map} +1 -1
  42. package/dist/client/chunks/{chart-scatterchart-MN4SM-w7.js → chart-scatterchart-BP06BeU5.js} +5 -5
  43. package/dist/client/chunks/{chart-scatterchart-MN4SM-w7.js.map → chart-scatterchart-BP06BeU5.js.map} +1 -1
  44. package/dist/client/chunks/{chart-treemapchart-Nozh2m26.js → chart-treemapchart-DAiixITm.js} +31 -31
  45. package/dist/client/chunks/{chart-treemapchart-Nozh2m26.js.map → chart-treemapchart-DAiixITm.js.map} +1 -1
  46. package/dist/client/chunks/{charts-BSDHSv4l.js → charts-CHzWeaY1.js} +26 -26
  47. package/dist/client/chunks/charts-CHzWeaY1.js.map +1 -0
  48. package/dist/client/chunks/{components-CbDovlG-.js → components-DnM9CCUS.js} +2453 -2445
  49. package/dist/client/chunks/components-DnM9CCUS.js.map +1 -0
  50. package/dist/client/chunks/{index-th92_8oL.js → index-DlsvcKXf.js} +135 -135
  51. package/dist/client/chunks/index-DlsvcKXf.js.map +1 -0
  52. package/dist/client/components/AnalysisBuilder/AnalysisAxisDropZone.d.ts +5 -5
  53. package/dist/client/components/AnalysisBuilder/SectionHeading.d.ts +2 -7
  54. package/dist/client/components/AnalysisBuilder/types.d.ts +8 -8
  55. package/dist/client/components.js +2 -2
  56. package/dist/client/hooks/useResponsiveDashboard.d.ts +2 -8
  57. package/dist/client/hooks.js +2 -2
  58. package/dist/client/hooks.js.map +1 -1
  59. package/dist/client/icons/types.d.ts +2 -2
  60. package/dist/client/index.js +3 -3
  61. package/dist/client/providers.js +1 -1
  62. package/dist/client/styles.css +1 -1
  63. package/dist/client-bundle-stats.html +1 -1
  64. package/dist/server/index.cjs +2 -2
  65. package/dist/server/index.js +16 -11
  66. package/package.json +3 -3
  67. package/dist/adapters/compiler-DP1pPIcg.cjs +0 -22
  68. package/dist/client/chunks/chart-activitygridchart-D17Fxiuf.js.map +0 -1
  69. package/dist/client/chunks/chart-axisformatcontrols-DqSa245M.js.map +0 -1
  70. package/dist/client/chunks/chart-bubblechart-CivK_yfh.js.map +0 -1
  71. package/dist/client/chunks/chart-kpidelta-D-FR2o4V.js.map +0 -1
  72. package/dist/client/chunks/chart-markdownchart-C3FAQFuO.js +0 -254
  73. package/dist/client/chunks/chart-markdownchart-C3FAQFuO.js.map +0 -1
  74. package/dist/client/chunks/charts-BSDHSv4l.js.map +0 -1
  75. package/dist/client/chunks/components-CbDovlG-.js.map +0 -1
  76. package/dist/client/chunks/index-th92_8oL.js.map +0 -1
@@ -676,9 +676,10 @@ class zT extends zE {
676
676
  return L`DATE_ADD(MAKEDATE(YEAR(${e}), 1), INTERVAL (QUARTER(${e}) - 1) * 3 MONTH)`;
677
677
  case "week":
678
678
  return L`DATE_SUB(${e}, INTERVAL WEEKDAY(${e}) DAY)`;
679
- default:
679
+ default: {
680
680
  const A = R[E];
681
681
  return A ? L`STR_TO_DATE(DATE_FORMAT(${e}, ${A}), '%Y-%m-%d %H:%i:%s')` : e;
682
+ }
682
683
  }
683
684
  }
684
685
  /**
@@ -789,25 +790,29 @@ class pe extends zE {
789
790
  switch (E) {
790
791
  case "year":
791
792
  return L`datetime(${e}, 'unixepoch', 'start of year')`;
792
- case "quarter":
793
+ case "quarter": {
793
794
  const R = L`datetime(${e}, 'unixepoch')`;
794
795
  return L`datetime(${R}, 'start of year',
795
796
  '+' || (((CAST(strftime('%m', ${R}) AS INTEGER) - 1) / 3) * 3) || ' months')`;
797
+ }
796
798
  case "month":
797
799
  return L`datetime(${e}, 'unixepoch', 'start of month')`;
798
800
  case "week":
799
801
  return L`date(datetime(${e}, 'unixepoch'), 'weekday 1', '-6 days')`;
800
802
  case "day":
801
803
  return L`datetime(${e}, 'unixepoch', 'start of day')`;
802
- case "hour":
803
- const A = L`datetime(${e}, 'unixepoch')`;
804
- return L`datetime(strftime('%Y-%m-%d %H:00:00', ${A}))`;
805
- case "minute":
806
- const S = L`datetime(${e}, 'unixepoch')`;
807
- return L`datetime(strftime('%Y-%m-%d %H:%M:00', ${S}))`;
808
- case "second":
809
- const I = L`datetime(${e}, 'unixepoch')`;
810
- return L`datetime(strftime('%Y-%m-%d %H:%M:%S', ${I}))`;
804
+ case "hour": {
805
+ const R = L`datetime(${e}, 'unixepoch')`;
806
+ return L`datetime(strftime('%Y-%m-%d %H:00:00', ${R}))`;
807
+ }
808
+ case "minute": {
809
+ const R = L`datetime(${e}, 'unixepoch')`;
810
+ return L`datetime(strftime('%Y-%m-%d %H:%M:00', ${R}))`;
811
+ }
812
+ case "second": {
813
+ const R = L`datetime(${e}, 'unixepoch')`;
814
+ return L`datetime(strftime('%Y-%m-%d %H:%M:%S', ${R}))`;
815
+ }
811
816
  default:
812
817
  return L`datetime(${e}, 'unixepoch')`;
813
818
  }
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("express"),v=require("cors"),o=require("../compiler-DP1pPIcg.cjs");function E(d){const{cubes:y,drizzle:j,schema:g,extractSecurityContext:l,engineType:h,cors:R,basePath:c="/cubejs-api/v1",jsonLimit:b="10mb"}=d;if(!y||y.length===0)throw new Error("At least one cube must be provided in the cubes array");const i=p.Router();R&&i.use(v(R)),i.use(p.json({limit:b})),i.use(p.urlencoded({extended:!0,limit:b}));const a=new o.SemanticLayerCompiler({drizzle:j,schema:g,engineType:h});return y.forEach(t=>{a.registerCube(t)}),i.post(`${c}/load`,async(t,e)=>{try{const r=t.body.query||t.body,s=await l(t,e),n=a.validateQuery(r);if(!n.isValid)return e.status(400).json(o.formatErrorResponse(`Query validation failed: ${n.errors.join(", ")}`,400));const u=await a.executeMultiCubeQuery(r,s);e.json(o.formatCubeResponse(r,u,a))}catch(r){console.error("Query execution error:",r),e.status(500).json(o.formatErrorResponse(r instanceof Error?r.message:"Query execution failed",500))}}),i.get(`${c}/load`,async(t,e)=>{try{const r=t.query.query;if(!r)return e.status(400).json(o.formatErrorResponse("Query parameter is required",400));let s;try{s=JSON.parse(r)}catch{return e.status(400).json(o.formatErrorResponse("Invalid JSON in query parameter",400))}const n=await l(t,e),u=a.validateQuery(s);if(!u.isValid)return e.status(400).json(o.formatErrorResponse(`Query validation failed: ${u.errors.join(", ")}`,400));const f=await a.executeMultiCubeQuery(s,n);e.json(o.formatCubeResponse(s,f,a))}catch(r){console.error("Query execution error:",r),e.status(500).json(o.formatErrorResponse(r instanceof Error?r.message:"Query execution failed",500))}}),i.post(`${c}/batch`,async(t,e)=>{try{const{queries:r}=t.body;if(!r||!Array.isArray(r))return e.status(400).json(o.formatErrorResponse('Request body must contain a "queries" array',400));if(r.length===0)return e.status(400).json(o.formatErrorResponse("Queries array cannot be empty",400));const s=await l(t,e),n=await o.handleBatchRequest(r,s,a);e.json(n)}catch(r){console.error("Batch execution error:",r),e.status(500).json(o.formatErrorResponse(r instanceof Error?r.message:"Batch execution failed",500))}}),i.get(`${c}/meta`,(t,e)=>{try{const r=a.getMetadata();e.json(o.formatMetaResponse(r))}catch(r){console.error("Metadata error:",r),e.status(500).json(o.formatErrorResponse(r instanceof Error?r.message:"Failed to fetch metadata",500))}}),i.post(`${c}/sql`,async(t,e)=>{try{const r=t.body,s=await l(t,e),n=a.validateQuery(r);if(!n.isValid)return e.status(400).json(o.formatErrorResponse(`Query validation failed: ${n.errors.join(", ")}`,400));const u=r.measures?.[0]||r.dimensions?.[0];if(!u)return e.status(400).json(o.formatErrorResponse("No measures or dimensions specified",400));const f=u.split(".")[0],m=await a.generateSQL(f,r,s);e.json(o.formatSqlResponse(r,m))}catch(r){console.error("SQL generation error:",r),e.status(500).json(o.formatErrorResponse(r instanceof Error?r.message:"SQL generation failed",500))}}),i.get(`${c}/sql`,async(t,e)=>{try{const r=t.query.query;if(!r)return e.status(400).json(o.formatErrorResponse("Query parameter is required",400));const s=JSON.parse(r),n=await l(t,e),u=a.validateQuery(s);if(!u.isValid)return e.status(400).json(o.formatErrorResponse(`Query validation failed: ${u.errors.join(", ")}`,400));const f=s.measures?.[0]||s.dimensions?.[0];if(!f)return e.status(400).json(o.formatErrorResponse("No measures or dimensions specified",400));const m=f.split(".")[0],Q=await a.generateSQL(m,s,n);e.json(o.formatSqlResponse(s,Q))}catch(r){console.error("SQL generation error:",r),e.status(500).json(o.formatErrorResponse(r instanceof Error?r.message:"SQL generation failed",500))}}),i.post(`${c}/dry-run`,async(t,e)=>{try{const r=t.body.query||t.body,s=await l(t,e),n=await o.handleDryRun(r,s,a);e.json(n)}catch(r){console.error("Dry-run error:",r),e.status(400).json({error:r instanceof Error?r.message:"Dry-run validation failed",valid:!1})}}),i.get(`${c}/dry-run`,async(t,e)=>{try{const r=t.query.query;if(!r)return e.status(400).json({error:"Query parameter is required",valid:!1});const s=JSON.parse(r),n=await l(t,e),u=await o.handleDryRun(s,n,a);e.json(u)}catch(r){console.error("Dry-run error:",r),e.status(400).json({error:r instanceof Error?r.message:"Dry-run validation failed",valid:!1})}}),i.use((t,e,r,s)=>{console.error("Express adapter error:",t),r.headersSent||r.status(500).json(o.formatErrorResponse(t,500))}),i}function q(d,y){const j=E(y);return d.use("/",j),d}function x(d){const y=p();return q(y,d)}exports.createCubeApp=x;exports.createCubeRouter=E;exports.mountCubeRoutes=q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("express"),v=require("cors"),o=require("../compiler-CMwSRhTS.cjs");function E(d){const{cubes:y,drizzle:p,schema:g,extractSecurityContext:l,engineType:h,cors:R,basePath:c="/cubejs-api/v1",jsonLimit:b="10mb"}=d;if(!y||y.length===0)throw new Error("At least one cube must be provided in the cubes array");const i=m.Router();R&&i.use(v(R)),i.use(m.json({limit:b})),i.use(m.urlencoded({extended:!0,limit:b}));const a=new o.SemanticLayerCompiler({drizzle:p,schema:g,engineType:h});return y.forEach(t=>{a.registerCube(t)}),i.post(`${c}/load`,async(t,r)=>{try{const e=t.body.query||t.body,s=await l(t,r),n=a.validateQuery(e);if(!n.isValid)return r.status(400).json(o.formatErrorResponse(`Query validation failed: ${n.errors.join(", ")}`,400));const u=await a.executeMultiCubeQuery(e,s);r.json(o.formatCubeResponse(e,u,a))}catch(e){console.error("Query execution error:",e),r.status(500).json(o.formatErrorResponse(e instanceof Error?e.message:"Query execution failed",500))}}),i.get(`${c}/load`,async(t,r)=>{try{const e=t.query.query;if(!e)return r.status(400).json(o.formatErrorResponse("Query parameter is required",400));let s;try{s=JSON.parse(e)}catch{return r.status(400).json(o.formatErrorResponse("Invalid JSON in query parameter",400))}const n=await l(t,r),u=a.validateQuery(s);if(!u.isValid)return r.status(400).json(o.formatErrorResponse(`Query validation failed: ${u.errors.join(", ")}`,400));const f=await a.executeMultiCubeQuery(s,n);r.json(o.formatCubeResponse(s,f,a))}catch(e){console.error("Query execution error:",e),r.status(500).json(o.formatErrorResponse(e instanceof Error?e.message:"Query execution failed",500))}}),i.post(`${c}/batch`,async(t,r)=>{try{const{queries:e}=t.body;if(!e||!Array.isArray(e))return r.status(400).json(o.formatErrorResponse('Request body must contain a "queries" array',400));if(e.length===0)return r.status(400).json(o.formatErrorResponse("Queries array cannot be empty",400));const s=await l(t,r),n=await o.handleBatchRequest(e,s,a);r.json(n)}catch(e){console.error("Batch execution error:",e),r.status(500).json(o.formatErrorResponse(e instanceof Error?e.message:"Batch execution failed",500))}}),i.get(`${c}/meta`,(t,r)=>{try{const e=a.getMetadata();r.json(o.formatMetaResponse(e))}catch(e){console.error("Metadata error:",e),r.status(500).json(o.formatErrorResponse(e instanceof Error?e.message:"Failed to fetch metadata",500))}}),i.post(`${c}/sql`,async(t,r)=>{try{const e=t.body,s=await l(t,r),n=a.validateQuery(e);if(!n.isValid)return r.status(400).json(o.formatErrorResponse(`Query validation failed: ${n.errors.join(", ")}`,400));const u=e.measures?.[0]||e.dimensions?.[0];if(!u)return r.status(400).json(o.formatErrorResponse("No measures or dimensions specified",400));const f=u.split(".")[0],j=await a.generateSQL(f,e,s);r.json(o.formatSqlResponse(e,j))}catch(e){console.error("SQL generation error:",e),r.status(500).json(o.formatErrorResponse(e instanceof Error?e.message:"SQL generation failed",500))}}),i.get(`${c}/sql`,async(t,r)=>{try{const e=t.query.query;if(!e)return r.status(400).json(o.formatErrorResponse("Query parameter is required",400));const s=JSON.parse(e),n=await l(t,r),u=a.validateQuery(s);if(!u.isValid)return r.status(400).json(o.formatErrorResponse(`Query validation failed: ${u.errors.join(", ")}`,400));const f=s.measures?.[0]||s.dimensions?.[0];if(!f)return r.status(400).json(o.formatErrorResponse("No measures or dimensions specified",400));const j=f.split(".")[0],Q=await a.generateSQL(j,s,n);r.json(o.formatSqlResponse(s,Q))}catch(e){console.error("SQL generation error:",e),r.status(500).json(o.formatErrorResponse(e instanceof Error?e.message:"SQL generation failed",500))}}),i.post(`${c}/dry-run`,async(t,r)=>{try{const e=t.body.query||t.body,s=await l(t,r),n=await o.handleDryRun(e,s,a);r.json(n)}catch(e){console.error("Dry-run error:",e),r.status(400).json({error:e instanceof Error?e.message:"Dry-run validation failed",valid:!1})}}),i.get(`${c}/dry-run`,async(t,r)=>{try{const e=t.query.query;if(!e)return r.status(400).json({error:"Query parameter is required",valid:!1});const s=JSON.parse(e),n=await l(t,r),u=await o.handleDryRun(s,n,a);r.json(u)}catch(e){console.error("Dry-run error:",e),r.status(400).json({error:e instanceof Error?e.message:"Dry-run validation failed",valid:!1})}}),i.use((t,r,e,s)=>{console.error("Express adapter error:",t),e.headersSent||e.status(500).json(o.formatErrorResponse(t,500))}),i}function q(d,y){const p=E(y);return d.use("/",p),d}function x(d){const y=m();return q(y,d)}exports.createCubeApp=x;exports.createCubeRouter=E;exports.mountCubeRoutes=q;
@@ -1,10 +1,10 @@
1
1
  import p, { Router as C } from "express";
2
2
  import S from "cors";
3
- import { S as R, d as o, f as g, h as E, a as $, b as Q, c as q } from "../compiler-gcKytLwd.js";
3
+ import { S as R, d as o, f as g, h as E, a as $, b as Q, c as q } from "../compiler-DrkCCzf0.js";
4
4
  function L(d) {
5
5
  const {
6
6
  cubes: y,
7
- drizzle: j,
7
+ drizzle: m,
8
8
  schema: x,
9
9
  extractSecurityContext: l,
10
10
  engineType: v,
@@ -17,7 +17,7 @@ function L(d) {
17
17
  const i = C();
18
18
  b && i.use(S(b)), i.use(p.json({ limit: h })), i.use(p.urlencoded({ extended: !0, limit: h }));
19
19
  const a = new R({
20
- drizzle: j,
20
+ drizzle: m,
21
21
  schema: x,
22
22
  engineType: v
23
23
  });
@@ -115,8 +115,8 @@ function L(d) {
115
115
  "No measures or dimensions specified",
116
116
  400
117
117
  ));
118
- const f = u.split(".")[0], m = await a.generateSQL(f, e, s);
119
- r.json(Q(e, m));
118
+ const f = u.split(".")[0], j = await a.generateSQL(f, e, s);
119
+ r.json(Q(e, j));
120
120
  } catch (e) {
121
121
  console.error("SQL generation error:", e), r.status(500).json(o(
122
122
  e instanceof Error ? e.message : "SQL generation failed",
@@ -143,7 +143,7 @@ function L(d) {
143
143
  "No measures or dimensions specified",
144
144
  400
145
145
  ));
146
- const m = f.split(".")[0], w = await a.generateSQL(m, s, n);
146
+ const j = f.split(".")[0], w = await a.generateSQL(j, s, n);
147
147
  r.json(Q(s, w));
148
148
  } catch (e) {
149
149
  console.error("SQL generation error:", e), r.status(500).json(o(
@@ -182,8 +182,8 @@ function L(d) {
182
182
  }), i;
183
183
  }
184
184
  function N(d, y) {
185
- const j = L(y);
186
- return d.use("/", j), d;
185
+ const m = L(y);
186
+ return d.use("/", m), d;
187
187
  }
188
188
  function J(d) {
189
189
  const y = p();
@@ -1 +1 @@
1
- "use strict";var S=Object.create;var q=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var $=(n,s,m,g)=>{if(s&&typeof s=="object"||typeof s=="function")for(let d of x(s))!P.call(n,d)&&d!==m&&q(n,d,{get:()=>s[d],enumerable:!(g=w(s,d))||g.enumerable});return n};var L=(n,s,m)=>(m=n!=null?S(j(n)):{},$(s||!n||!n.__esModule?q(m,"default",{value:n,enumerable:!0}):m,n));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../compiler-DP1pPIcg.cjs"),h=function(s,m,g){const{cubes:d,drizzle:E,schema:v,extractSecurityContext:p,engineType:C,cors:R,basePath:y="/cubejs-api/v1",bodyLimit:b=10485760}=m;if(!d||d.length===0)return g(new Error("At least one cube must be provided in the cubes array"));R&&s.register(import("@fastify/cors"),R),s.addHook("onRequest",async(e,t)=>{e.method==="POST"&&(e.body=void 0)});const i=new o.SemanticLayerCompiler({drizzle:E,schema:v,engineType:C});d.forEach(e=>{i.registerCube(e)}),s.post(`${y}/load`,{bodyLimit:b,schema:{body:{type:"object",additionalProperties:!0}}},async(e,t)=>{try{const r=e.body,a=r.query||r,u=await p(e),c=i.validateQuery(a);if(!c.isValid)return t.status(400).send(o.formatErrorResponse(`Query validation failed: ${c.errors.join(", ")}`,400));const l=await i.executeMultiCubeQuery(a,u);return o.formatCubeResponse(a,l,i)}catch(r){return e.log.error(r,"Query execution error"),t.status(500).send(o.formatErrorResponse(r instanceof Error?r.message:"Query execution failed",500))}}),s.get(`${y}/load`,{schema:{querystring:{type:"object",properties:{query:{type:"string"}},required:["query"]}}},async(e,t)=>{try{const{query:r}=e.query;let a;try{a=JSON.parse(r)}catch{return t.status(400).send(o.formatErrorResponse("Invalid JSON in query parameter",400))}const u=await p(e),c=i.validateQuery(a);if(!c.isValid)return t.status(400).send(o.formatErrorResponse(`Query validation failed: ${c.errors.join(", ")}`,400));const l=await i.executeMultiCubeQuery(a,u);return o.formatCubeResponse(a,l,i)}catch(r){return e.log.error(r,"Query execution error"),t.status(500).send(o.formatErrorResponse(r instanceof Error?r.message:"Query execution failed",500))}}),s.post(`${y}/batch`,{bodyLimit:b,schema:{body:{type:"object",required:["queries"],properties:{queries:{type:"array",items:{type:"object"}}}}}},async(e,t)=>{try{const{queries:r}=e.body;if(!r||!Array.isArray(r))return t.status(400).send(o.formatErrorResponse('Request body must contain a "queries" array',400));if(r.length===0)return t.status(400).send(o.formatErrorResponse("Queries array cannot be empty",400));const a=await p(e);return await o.handleBatchRequest(r,a,i)}catch(r){return e.log.error(r,"Batch execution error"),t.status(500).send(o.formatErrorResponse(r instanceof Error?r.message:"Batch execution failed",500))}}),s.get(`${y}/meta`,async(e,t)=>{try{const r=i.getMetadata();return o.formatMetaResponse(r)}catch(r){return e.log.error(r,"Metadata error"),t.status(500).send(o.formatErrorResponse(r instanceof Error?r.message:"Failed to fetch metadata",500))}}),s.post(`${y}/sql`,{bodyLimit:b,schema:{body:{type:"object",additionalProperties:!0}}},async(e,t)=>{try{const r=e.body,a=await p(e),u=i.validateQuery(r);if(!u.isValid)return t.status(400).send(o.formatErrorResponse(`Query validation failed: ${u.errors.join(", ")}`,400));const c=r.measures?.[0]||r.dimensions?.[0];if(!c)return t.status(400).send(o.formatErrorResponse("No measures or dimensions specified",400));const l=c.split(".")[0],f=await i.generateSQL(l,r,a);return o.formatSqlResponse(r,f)}catch(r){return e.log.error(r,"SQL generation error"),t.status(500).send(o.formatErrorResponse(r instanceof Error?r.message:"SQL generation failed",500))}}),s.get(`${y}/sql`,{schema:{querystring:{type:"object",properties:{query:{type:"string"}},required:["query"]}}},async(e,t)=>{try{const{query:r}=e.query,a=JSON.parse(r),u=await p(e),c=i.validateQuery(a);if(!c.isValid)return t.status(400).send(o.formatErrorResponse(`Query validation failed: ${c.errors.join(", ")}`,400));const l=a.measures?.[0]||a.dimensions?.[0];if(!l)return t.status(400).send(o.formatErrorResponse("No measures or dimensions specified",400));const f=l.split(".")[0],Q=await i.generateSQL(f,a,u);return o.formatSqlResponse(a,Q)}catch(r){return e.log.error(r,"SQL generation error"),t.status(500).send(o.formatErrorResponse(r instanceof Error?r.message:"SQL generation failed",500))}}),s.post(`${y}/dry-run`,{bodyLimit:b,schema:{body:{type:"object",additionalProperties:!0}}},async(e,t)=>{try{const r=e.body,a=r.query||r,u=await p(e);return await o.handleDryRun(a,u,i)}catch(r){return e.log.error(r,"Dry-run error"),t.status(400).send({error:r instanceof Error?r.message:"Dry-run validation failed",valid:!1})}}),s.get(`${y}/dry-run`,{schema:{querystring:{type:"object",properties:{query:{type:"string"}},required:["query"]}}},async(e,t)=>{try{const{query:r}=e.query,a=JSON.parse(r),u=await p(e);return await o.handleDryRun(a,u,i)}catch(r){return e.log.error(r,"Dry-run error"),t.status(400).send({error:r instanceof Error?r.message:"Dry-run validation failed",valid:!1})}}),s.setErrorHandler(async(e,t,r)=>{t.log.error(e,"Fastify cube adapter error"),r.statusCode<400&&r.status(500);const a=e instanceof Error?e:String(e);return o.formatErrorResponse(a,r.statusCode)}),g()};async function M(n,s){await n.register(h,s)}function N(n){const s=require("fastify")({logger:!0});return s.register(h,n),s}exports.createCubeApp=N;exports.cubePlugin=h;exports.registerCubeRoutes=M;
1
+ "use strict";var S=Object.create;var q=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,P=Object.prototype.hasOwnProperty;var $=(n,s,m,g)=>{if(s&&typeof s=="object"||typeof s=="function")for(let d of x(s))!P.call(n,d)&&d!==m&&q(n,d,{get:()=>s[d],enumerable:!(g=w(s,d))||g.enumerable});return n};var L=(n,s,m)=>(m=n!=null?S(j(n)):{},$(s||!n||!n.__esModule?q(m,"default",{value:n,enumerable:!0}):m,n));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../compiler-CMwSRhTS.cjs"),h=function(s,m,g){const{cubes:d,drizzle:E,schema:v,extractSecurityContext:p,engineType:C,cors:R,basePath:y="/cubejs-api/v1",bodyLimit:b=10485760}=m;if(!d||d.length===0)return g(new Error("At least one cube must be provided in the cubes array"));R&&s.register(import("@fastify/cors"),R),s.addHook("onRequest",async(e,t)=>{e.method==="POST"&&(e.body=void 0)});const i=new o.SemanticLayerCompiler({drizzle:E,schema:v,engineType:C});d.forEach(e=>{i.registerCube(e)}),s.post(`${y}/load`,{bodyLimit:b,schema:{body:{type:"object",additionalProperties:!0}}},async(e,t)=>{try{const r=e.body,a=r.query||r,u=await p(e),c=i.validateQuery(a);if(!c.isValid)return t.status(400).send(o.formatErrorResponse(`Query validation failed: ${c.errors.join(", ")}`,400));const l=await i.executeMultiCubeQuery(a,u);return o.formatCubeResponse(a,l,i)}catch(r){return e.log.error(r,"Query execution error"),t.status(500).send(o.formatErrorResponse(r instanceof Error?r.message:"Query execution failed",500))}}),s.get(`${y}/load`,{schema:{querystring:{type:"object",properties:{query:{type:"string"}},required:["query"]}}},async(e,t)=>{try{const{query:r}=e.query;let a;try{a=JSON.parse(r)}catch{return t.status(400).send(o.formatErrorResponse("Invalid JSON in query parameter",400))}const u=await p(e),c=i.validateQuery(a);if(!c.isValid)return t.status(400).send(o.formatErrorResponse(`Query validation failed: ${c.errors.join(", ")}`,400));const l=await i.executeMultiCubeQuery(a,u);return o.formatCubeResponse(a,l,i)}catch(r){return e.log.error(r,"Query execution error"),t.status(500).send(o.formatErrorResponse(r instanceof Error?r.message:"Query execution failed",500))}}),s.post(`${y}/batch`,{bodyLimit:b,schema:{body:{type:"object",required:["queries"],properties:{queries:{type:"array",items:{type:"object"}}}}}},async(e,t)=>{try{const{queries:r}=e.body;if(!r||!Array.isArray(r))return t.status(400).send(o.formatErrorResponse('Request body must contain a "queries" array',400));if(r.length===0)return t.status(400).send(o.formatErrorResponse("Queries array cannot be empty",400));const a=await p(e);return await o.handleBatchRequest(r,a,i)}catch(r){return e.log.error(r,"Batch execution error"),t.status(500).send(o.formatErrorResponse(r instanceof Error?r.message:"Batch execution failed",500))}}),s.get(`${y}/meta`,async(e,t)=>{try{const r=i.getMetadata();return o.formatMetaResponse(r)}catch(r){return e.log.error(r,"Metadata error"),t.status(500).send(o.formatErrorResponse(r instanceof Error?r.message:"Failed to fetch metadata",500))}}),s.post(`${y}/sql`,{bodyLimit:b,schema:{body:{type:"object",additionalProperties:!0}}},async(e,t)=>{try{const r=e.body,a=await p(e),u=i.validateQuery(r);if(!u.isValid)return t.status(400).send(o.formatErrorResponse(`Query validation failed: ${u.errors.join(", ")}`,400));const c=r.measures?.[0]||r.dimensions?.[0];if(!c)return t.status(400).send(o.formatErrorResponse("No measures or dimensions specified",400));const l=c.split(".")[0],f=await i.generateSQL(l,r,a);return o.formatSqlResponse(r,f)}catch(r){return e.log.error(r,"SQL generation error"),t.status(500).send(o.formatErrorResponse(r instanceof Error?r.message:"SQL generation failed",500))}}),s.get(`${y}/sql`,{schema:{querystring:{type:"object",properties:{query:{type:"string"}},required:["query"]}}},async(e,t)=>{try{const{query:r}=e.query,a=JSON.parse(r),u=await p(e),c=i.validateQuery(a);if(!c.isValid)return t.status(400).send(o.formatErrorResponse(`Query validation failed: ${c.errors.join(", ")}`,400));const l=a.measures?.[0]||a.dimensions?.[0];if(!l)return t.status(400).send(o.formatErrorResponse("No measures or dimensions specified",400));const f=l.split(".")[0],Q=await i.generateSQL(f,a,u);return o.formatSqlResponse(a,Q)}catch(r){return e.log.error(r,"SQL generation error"),t.status(500).send(o.formatErrorResponse(r instanceof Error?r.message:"SQL generation failed",500))}}),s.post(`${y}/dry-run`,{bodyLimit:b,schema:{body:{type:"object",additionalProperties:!0}}},async(e,t)=>{try{const r=e.body,a=r.query||r,u=await p(e);return await o.handleDryRun(a,u,i)}catch(r){return e.log.error(r,"Dry-run error"),t.status(400).send({error:r instanceof Error?r.message:"Dry-run validation failed",valid:!1})}}),s.get(`${y}/dry-run`,{schema:{querystring:{type:"object",properties:{query:{type:"string"}},required:["query"]}}},async(e,t)=>{try{const{query:r}=e.query,a=JSON.parse(r),u=await p(e);return await o.handleDryRun(a,u,i)}catch(r){return e.log.error(r,"Dry-run error"),t.status(400).send({error:r instanceof Error?r.message:"Dry-run validation failed",valid:!1})}}),s.setErrorHandler(async(e,t,r)=>{t.log.error(e,"Fastify cube adapter error"),r.statusCode<400&&r.status(500);const a=e instanceof Error?e:String(e);return o.formatErrorResponse(a,r.statusCode)}),g()};async function M(n,s){await n.register(h,s)}function N(n){const s=require("fastify")({logger:!0});return s.register(h,n),s}exports.createCubeApp=N;exports.cubePlugin=h;exports.registerCubeRoutes=M;
@@ -1,7 +1,7 @@
1
- import { S as j, d as o, f as h, h as R, a as $, b as q, c as Q } from "../compiler-gcKytLwd.js";
1
+ import { S as E, d as o, f as h, h as R, a as $, b as q, c as Q } from "../compiler-DrkCCzf0.js";
2
2
  const v = function(a, x, p) {
3
3
  const {
4
- cubes: b,
4
+ cubes: g,
5
5
  drizzle: C,
6
6
  schema: w,
7
7
  extractSecurityContext: y,
@@ -11,17 +11,17 @@ const v = function(a, x, p) {
11
11
  bodyLimit: m = 10485760
12
12
  // 10MB
13
13
  } = x;
14
- if (!b || b.length === 0)
14
+ if (!g || g.length === 0)
15
15
  return p(new Error("At least one cube must be provided in the cubes array"));
16
16
  f && a.register(import("@fastify/cors"), f), a.addHook("onRequest", async (r, t) => {
17
17
  r.method === "POST" && (r.body = void 0);
18
18
  });
19
- const n = new j({
19
+ const n = new E({
20
20
  drizzle: C,
21
21
  schema: w,
22
22
  engineType: S
23
23
  });
24
- b.forEach((r) => {
24
+ g.forEach((r) => {
25
25
  n.registerCube(r);
26
26
  }), a.post(`${c}/load`, {
27
27
  bodyLimit: m,
@@ -150,8 +150,8 @@ const v = function(a, x, p) {
150
150
  "No measures or dimensions specified",
151
151
  400
152
152
  ));
153
- const d = u.split(".")[0], g = await n.generateSQL(d, e, s);
154
- return q(e, g);
153
+ const d = u.split(".")[0], b = await n.generateSQL(d, e, s);
154
+ return q(e, b);
155
155
  } catch (e) {
156
156
  return r.log.error(e, "SQL generation error"), t.status(500).send(o(
157
157
  e instanceof Error ? e.message : "SQL generation failed",
@@ -182,8 +182,8 @@ const v = function(a, x, p) {
182
182
  "No measures or dimensions specified",
183
183
  400
184
184
  ));
185
- const g = d.split(".")[0], E = await n.generateSQL(g, s, i);
186
- return q(s, E);
185
+ const b = d.split(".")[0], j = await n.generateSQL(b, s, i);
186
+ return q(s, j);
187
187
  } catch (e) {
188
188
  return r.log.error(e, "SQL generation error"), t.status(500).send(o(
189
189
  e instanceof Error ? e.message : "SQL generation failed",
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("hono"),y=require("../compiler-DP1pPIcg.cjs");var b=f=>{const u={...{origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[]},...f},j=(i=>typeof i=="string"?i==="*"?()=>i:o=>i===o?o:null:typeof i=="function"?i:o=>i.includes(o)?o:null)(u.origin),d=(i=>typeof i=="function"?i:Array.isArray(i)?()=>i:()=>[])(u.allowMethods);return async function(o,c){function n(r,e){o.res.headers.set(r,e)}const s=await j(o.req.header("origin")||"",o);if(s&&n("Access-Control-Allow-Origin",s),u.credentials&&n("Access-Control-Allow-Credentials","true"),u.exposeHeaders?.length&&n("Access-Control-Expose-Headers",u.exposeHeaders.join(",")),o.req.method==="OPTIONS"){u.origin!=="*"&&n("Vary","Origin"),u.maxAge!=null&&n("Access-Control-Max-Age",u.maxAge.toString());const r=await d(o.req.header("origin")||"",o);r.length&&n("Access-Control-Allow-Methods",r.join(","));let e=u.allowHeaders;if(!e?.length){const t=o.req.header("Access-Control-Request-Headers");t&&(e=t.split(/\s*,\s*/))}return e?.length&&(n("Access-Control-Allow-Headers",e.join(",")),o.res.headers.append("Vary","Access-Control-Request-Headers")),o.res.headers.delete("Content-Length"),o.res.headers.delete("Content-Type"),new Response(null,{headers:o.res.headers,status:204,statusText:"No Content"})}await c(),u.origin!=="*"&&o.header("Vary","Origin",{append:!0})}};function g(f){const{cubes:q,drizzle:u,schema:j,extractSecurityContext:d,engineType:i,cors:o,basePath:c="/cubejs-api/v1"}=f;if(!q||q.length===0)throw new Error("At least one cube must be provided in the cubes array");const n=new p.Hono;o&&n.use("/*",b(o));const s=new y.SemanticLayerCompiler({drizzle:u,schema:j,engineType:i});return q.forEach(r=>{s.registerCube(r)}),n.post(`${c}/load`,async r=>{try{const e=await r.req.json(),t=e.query||e,l=await d(r),a=s.validateQuery(t);if(!a.isValid)return r.json({error:`Query validation failed: ${a.errors.join(", ")}`},400);const m=await s.executeMultiCubeQuery(t,l);return r.json(y.formatCubeResponse(t,m,s))}catch(e){return console.error("Query execution error:",e),r.json({error:e instanceof Error?e.message:"Query execution failed"},500)}}),n.get(`${c}/load`,async r=>{try{const e=r.req.query("query");if(!e)return r.json({error:"Query parameter is required"},400);let t;try{t=JSON.parse(e)}catch{return r.json({error:"Invalid JSON in query parameter"},400)}const l=await d(r),a=s.validateQuery(t);if(!a.isValid)return r.json({error:`Query validation failed: ${a.errors.join(", ")}`},400);const m=await s.executeMultiCubeQuery(t,l);return r.json(y.formatCubeResponse(t,m,s))}catch(e){return console.error("Query execution error:",e),r.json({error:e instanceof Error?e.message:"Query execution failed"},500)}}),n.post(`${c}/batch`,async r=>{try{const e=await r.req.json(),{queries:t}=e;if(!t||!Array.isArray(t))return r.json({error:'Request body must contain a "queries" array'},400);if(t.length===0)return r.json({error:"Queries array cannot be empty"},400);const l=await d(r),a=await y.handleBatchRequest(t,l,s);return r.json(a)}catch(e){return console.error("Batch execution error:",e),r.json({error:e instanceof Error?e.message:"Batch execution failed"},500)}}),n.get(`${c}/meta`,r=>{try{const e=s.getMetadata();return r.json(y.formatMetaResponse(e))}catch(e){return console.error("Metadata error:",e),r.json({error:e instanceof Error?e.message:"Failed to fetch metadata"},500)}}),n.post(`${c}/sql`,async r=>{try{const e=await r.req.json(),t=await d(r),l=s.validateQuery(e);if(!l.isValid)return r.json({error:`Query validation failed: ${l.errors.join(", ")}`},400);const a=e.measures?.[0]||e.dimensions?.[0];if(!a)return r.json({error:"No measures or dimensions specified"},400);const m=a.split(".")[0],h=await s.generateSQL(m,e,t);return r.json(y.formatSqlResponse(e,h))}catch(e){return console.error("SQL generation error:",e),r.json({error:e instanceof Error?e.message:"SQL generation failed"},500)}}),n.get(`${c}/sql`,async r=>{try{const e=r.req.query("query");if(!e)return r.json({error:"Query parameter is required"},400);const t=JSON.parse(e),l=await d(r),a=s.validateQuery(t);if(!a.isValid)return r.json({error:`Query validation failed: ${a.errors.join(", ")}`},400);const m=t.measures?.[0]||t.dimensions?.[0];if(!m)return r.json({error:"No measures or dimensions specified"},400);const h=m.split(".")[0],C=await s.generateSQL(h,t,l);return r.json(y.formatSqlResponse(t,C))}catch(e){return console.error("SQL generation error:",e),r.json({error:e instanceof Error?e.message:"SQL generation failed"},500)}}),n.post(`${c}/dry-run`,async r=>{try{const e=await r.req.json(),t=e.query||e,l=await d(r),a=await y.handleDryRun(t,l,s);return r.json(a)}catch(e){return console.error("Dry-run error:",e),r.json({error:e instanceof Error?e.message:"Dry-run validation failed",valid:!1},400)}}),n.get(`${c}/dry-run`,async r=>{try{const e=r.req.query("query");if(!e)return r.json({error:"Query parameter is required",valid:!1},400);const t=JSON.parse(e),l=await d(r),a=await y.handleDryRun(t,l,s);return r.json(a)}catch(e){return console.error("Dry-run error:",e),r.json({error:e instanceof Error?e.message:"Dry-run validation failed",valid:!1},400)}}),n}function w(f,q){const u=g(q);return f.route("/",u),f}function x(f){const q=new p.Hono;return w(q,f)}exports.createCubeApp=x;exports.createCubeRoutes=g;exports.mountCubeRoutes=w;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("hono"),y=require("../compiler-CMwSRhTS.cjs");var b=f=>{const u={...{origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[]},...f},h=(i=>typeof i=="string"?i==="*"?()=>i:o=>i===o?o:null:typeof i=="function"?i:o=>i.includes(o)?o:null)(u.origin),d=(i=>typeof i=="function"?i:Array.isArray(i)?()=>i:()=>[])(u.allowMethods);return async function(o,c){function n(r,e){o.res.headers.set(r,e)}const s=await h(o.req.header("origin")||"",o);if(s&&n("Access-Control-Allow-Origin",s),u.credentials&&n("Access-Control-Allow-Credentials","true"),u.exposeHeaders?.length&&n("Access-Control-Expose-Headers",u.exposeHeaders.join(",")),o.req.method==="OPTIONS"){u.origin!=="*"&&n("Vary","Origin"),u.maxAge!=null&&n("Access-Control-Max-Age",u.maxAge.toString());const r=await d(o.req.header("origin")||"",o);r.length&&n("Access-Control-Allow-Methods",r.join(","));let e=u.allowHeaders;if(!e?.length){const t=o.req.header("Access-Control-Request-Headers");t&&(e=t.split(/\s*,\s*/))}return e?.length&&(n("Access-Control-Allow-Headers",e.join(",")),o.res.headers.append("Vary","Access-Control-Request-Headers")),o.res.headers.delete("Content-Length"),o.res.headers.delete("Content-Type"),new Response(null,{headers:o.res.headers,status:204,statusText:"No Content"})}await c(),u.origin!=="*"&&o.header("Vary","Origin",{append:!0})}};function p(f){const{cubes:q,drizzle:u,schema:h,extractSecurityContext:d,engineType:i,cors:o,basePath:c="/cubejs-api/v1"}=f;if(!q||q.length===0)throw new Error("At least one cube must be provided in the cubes array");const n=new g.Hono;o&&n.use("/*",b(o));const s=new y.SemanticLayerCompiler({drizzle:u,schema:h,engineType:i});return q.forEach(r=>{s.registerCube(r)}),n.post(`${c}/load`,async r=>{try{const e=await r.req.json(),t=e.query||e,l=await d(r),a=s.validateQuery(t);if(!a.isValid)return r.json({error:`Query validation failed: ${a.errors.join(", ")}`},400);const m=await s.executeMultiCubeQuery(t,l);return r.json(y.formatCubeResponse(t,m,s))}catch(e){return console.error("Query execution error:",e),r.json({error:e instanceof Error?e.message:"Query execution failed"},500)}}),n.get(`${c}/load`,async r=>{try{const e=r.req.query("query");if(!e)return r.json({error:"Query parameter is required"},400);let t;try{t=JSON.parse(e)}catch{return r.json({error:"Invalid JSON in query parameter"},400)}const l=await d(r),a=s.validateQuery(t);if(!a.isValid)return r.json({error:`Query validation failed: ${a.errors.join(", ")}`},400);const m=await s.executeMultiCubeQuery(t,l);return r.json(y.formatCubeResponse(t,m,s))}catch(e){return console.error("Query execution error:",e),r.json({error:e instanceof Error?e.message:"Query execution failed"},500)}}),n.post(`${c}/batch`,async r=>{try{const e=await r.req.json(),{queries:t}=e;if(!t||!Array.isArray(t))return r.json({error:'Request body must contain a "queries" array'},400);if(t.length===0)return r.json({error:"Queries array cannot be empty"},400);const l=await d(r),a=await y.handleBatchRequest(t,l,s);return r.json(a)}catch(e){return console.error("Batch execution error:",e),r.json({error:e instanceof Error?e.message:"Batch execution failed"},500)}}),n.get(`${c}/meta`,r=>{try{const e=s.getMetadata();return r.json(y.formatMetaResponse(e))}catch(e){return console.error("Metadata error:",e),r.json({error:e instanceof Error?e.message:"Failed to fetch metadata"},500)}}),n.post(`${c}/sql`,async r=>{try{const e=await r.req.json(),t=await d(r),l=s.validateQuery(e);if(!l.isValid)return r.json({error:`Query validation failed: ${l.errors.join(", ")}`},400);const a=e.measures?.[0]||e.dimensions?.[0];if(!a)return r.json({error:"No measures or dimensions specified"},400);const m=a.split(".")[0],j=await s.generateSQL(m,e,t);return r.json(y.formatSqlResponse(e,j))}catch(e){return console.error("SQL generation error:",e),r.json({error:e instanceof Error?e.message:"SQL generation failed"},500)}}),n.get(`${c}/sql`,async r=>{try{const e=r.req.query("query");if(!e)return r.json({error:"Query parameter is required"},400);const t=JSON.parse(e),l=await d(r),a=s.validateQuery(t);if(!a.isValid)return r.json({error:`Query validation failed: ${a.errors.join(", ")}`},400);const m=t.measures?.[0]||t.dimensions?.[0];if(!m)return r.json({error:"No measures or dimensions specified"},400);const j=m.split(".")[0],C=await s.generateSQL(j,t,l);return r.json(y.formatSqlResponse(t,C))}catch(e){return console.error("SQL generation error:",e),r.json({error:e instanceof Error?e.message:"SQL generation failed"},500)}}),n.post(`${c}/dry-run`,async r=>{try{const e=await r.req.json(),t=e.query||e,l=await d(r),a=await y.handleDryRun(t,l,s);return r.json(a)}catch(e){return console.error("Dry-run error:",e),r.json({error:e instanceof Error?e.message:"Dry-run validation failed",valid:!1},400)}}),n.get(`${c}/dry-run`,async r=>{try{const e=r.req.query("query");if(!e)return r.json({error:"Query parameter is required",valid:!1},400);const t=JSON.parse(e),l=await d(r),a=await y.handleDryRun(t,l,s);return r.json(a)}catch(e){return console.error("Dry-run error:",e),r.json({error:e instanceof Error?e.message:"Dry-run validation failed",valid:!1},400)}}),n}function w(f,q){const u=p(q);return f.route("/",u),f}function x(f){const q=new g.Hono;return w(q,f)}exports.createCubeApp=x;exports.createCubeRoutes=p;exports.mountCubeRoutes=w;
@@ -1,5 +1,5 @@
1
1
  import { Hono as w } from "hono";
2
- import { S as x, f as j, h as Q, a as b, b as g, c as p } from "../compiler-gcKytLwd.js";
2
+ import { S as x, f as j, h as Q, a as b, b as g, c as p } from "../compiler-DrkCCzf0.js";
3
3
  var A = (y) => {
4
4
  const u = {
5
5
  ...{
@@ -9,12 +9,12 @@ var A = (y) => {
9
9
  exposeHeaders: []
10
10
  },
11
11
  ...y
12
- }, h = /* @__PURE__ */ ((i) => typeof i == "string" ? i === "*" ? () => i : (o) => i === o ? o : null : typeof i == "function" ? i : (o) => i.includes(o) ? o : null)(u.origin), d = ((i) => typeof i == "function" ? i : Array.isArray(i) ? () => i : () => [])(u.allowMethods);
12
+ }, q = /* @__PURE__ */ ((i) => typeof i == "string" ? i === "*" ? () => i : (o) => i === o ? o : null : typeof i == "function" ? i : (o) => i.includes(o) ? o : null)(u.origin), d = ((i) => typeof i == "function" ? i : Array.isArray(i) ? () => i : () => [])(u.allowMethods);
13
13
  return async function(o, c) {
14
14
  function n(r, e) {
15
15
  o.res.headers.set(r, e);
16
16
  }
17
- const s = await h(o.req.header("origin") || "", o);
17
+ const s = await q(o.req.header("origin") || "", o);
18
18
  if (s && n("Access-Control-Allow-Origin", s), u.credentials && n("Access-Control-Allow-Credentials", "true"), u.exposeHeaders?.length && n("Access-Control-Expose-Headers", u.exposeHeaders.join(",")), o.req.method === "OPTIONS") {
19
19
  u.origin !== "*" && n("Vary", "Origin"), u.maxAge != null && n("Access-Control-Max-Age", u.maxAge.toString());
20
20
  const r = await d(o.req.header("origin") || "", o);
@@ -37,7 +37,7 @@ function v(y) {
37
37
  const {
38
38
  cubes: f,
39
39
  drizzle: u,
40
- schema: h,
40
+ schema: q,
41
41
  extractSecurityContext: d,
42
42
  engineType: i,
43
43
  cors: o,
@@ -49,7 +49,7 @@ function v(y) {
49
49
  o && n.use("/*", A(o));
50
50
  const s = new x({
51
51
  drizzle: u,
52
- schema: h,
52
+ schema: q,
53
53
  engineType: i
54
54
  });
55
55
  return f.forEach((r) => {
@@ -134,8 +134,8 @@ function v(y) {
134
134
  return r.json({
135
135
  error: "No measures or dimensions specified"
136
136
  }, 400);
137
- const m = a.split(".")[0], q = await s.generateSQL(m, e, t);
138
- return r.json(g(e, q));
137
+ const m = a.split(".")[0], h = await s.generateSQL(m, e, t);
138
+ return r.json(g(e, h));
139
139
  } catch (e) {
140
140
  return console.error("SQL generation error:", e), r.json({
141
141
  error: e instanceof Error ? e.message : "SQL generation failed"
@@ -158,7 +158,7 @@ function v(y) {
158
158
  return r.json({
159
159
  error: "No measures or dimensions specified"
160
160
  }, 400);
161
- const q = m.split(".")[0], C = await s.generateSQL(q, t, l);
161
+ const h = m.split(".")[0], C = await s.generateSQL(h, t, l);
162
162
  return r.json(g(t, C));
163
163
  } catch (e) {
164
164
  return console.error("SQL generation error:", e), r.json({
@@ -193,16 +193,16 @@ function v(y) {
193
193
  }
194
194
  }), n;
195
195
  }
196
- function E(y, f) {
196
+ function S(y, f) {
197
197
  const u = v(f);
198
198
  return y.route("/", u), y;
199
199
  }
200
200
  function H(y) {
201
201
  const f = new w();
202
- return E(f, y);
202
+ return S(f, y);
203
203
  }
204
204
  export {
205
205
  H as createCubeApp,
206
206
  v as createCubeRoutes,
207
- E as mountCubeRoutes
207
+ S as mountCubeRoutes
208
208
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("next/server"),c=require("../compiler-DP1pPIcg.cjs");function h(s){const{cubes:t,drizzle:o,schema:a,engineType:f}=s;if(!t||t.length===0)throw new Error("At least one cube must be provided in the cubes array");const r=new c.SemanticLayerCompiler({drizzle:o,schema:a,engineType:f});return t.forEach(i=>{r.registerCube(i)}),r}function m(s,t){const o=s.headers.get("origin"),a={};return t.origin&&(typeof t.origin=="string"?a["Access-Control-Allow-Origin"]=t.origin:Array.isArray(t.origin)?o&&t.origin.includes(o)&&(a["Access-Control-Allow-Origin"]=o):typeof t.origin=="function"&&o&&t.origin(o)&&(a["Access-Control-Allow-Origin"]=o)),t.methods&&(a["Access-Control-Allow-Methods"]=t.methods.join(", ")),t.allowedHeaders&&(a["Access-Control-Allow-Headers"]=t.allowedHeaders.join(", ")),t.credentials&&(a["Access-Control-Allow-Credentials"]="true"),a}function H(s){return async function(o){const a=m(o,s);return new Response(null,{status:200,headers:a})}}function N(s){const{extractSecurityContext:t,cors:o}=s,a=h(s);return async function(r,i){try{let e;if(r.method==="POST"){const y=await r.json();e=y.query||y}else if(r.method==="GET"){const y=r.nextUrl.searchParams.get("query");if(!y)return n.NextResponse.json(c.formatErrorResponse("Query parameter is required",400),{status:400});try{e=JSON.parse(y)}catch{return n.NextResponse.json(c.formatErrorResponse("Invalid JSON in query parameter",400),{status:400})}}else return n.NextResponse.json(c.formatErrorResponse("Method not allowed",405),{status:405});const u=await t(r,i),d=a.validateQuery(e);if(!d.isValid)return n.NextResponse.json(c.formatErrorResponse(`Query validation failed: ${d.errors.join(", ")}`,400),{status:400});const l=await a.executeMultiCubeQuery(e,u),R=c.formatCubeResponse(e,l,a);return n.NextResponse.json(R,{headers:o?m(r,o):{}})}catch(e){return process.env.NODE_ENV!=="test"&&console.error("Next.js load handler error:",e),n.NextResponse.json(c.formatErrorResponse(e instanceof Error?e.message:"Query execution failed",500),{status:500})}}}function j(s){const{cors:t}=s,o=h(s);return async function(f,r){try{const i=o.getMetadata(),e=c.formatMetaResponse(i);return n.NextResponse.json(e,{headers:t?m(f,t):{}})}catch(i){return process.env.NODE_ENV!=="test"&&console.error("Next.js meta handler error:",i),n.NextResponse.json(c.formatErrorResponse(i instanceof Error?i.message:"Failed to fetch metadata",500),{status:500})}}}function E(s){const{extractSecurityContext:t,cors:o}=s,a=h(s);return async function(r,i){try{let e;if(r.method==="POST"){const p=await r.json();e=p.query||p}else if(r.method==="GET"){const p=r.nextUrl.searchParams.get("query");if(!p)return n.NextResponse.json(c.formatErrorResponse("Query parameter is required",400),{status:400});try{e=JSON.parse(p)}catch{return n.NextResponse.json(c.formatErrorResponse("Invalid JSON in query parameter",400),{status:400})}}else return n.NextResponse.json(c.formatErrorResponse("Method not allowed",405),{status:405});const u=await t(r,i),d=a.validateQuery(e);if(!d.isValid)return n.NextResponse.json(c.formatErrorResponse(`Query validation failed: ${d.errors.join(", ")}`,400),{status:400});const l=e.measures?.[0]||e.dimensions?.[0];if(!l)return n.NextResponse.json(c.formatErrorResponse("No measures or dimensions specified",400),{status:400});const R=l.split(".")[0],y=await a.generateSQL(R,e,u),x=c.formatSqlResponse(e,y);return n.NextResponse.json(x,{headers:o?m(r,o):{}})}catch(e){return process.env.NODE_ENV!=="test"&&console.error("Next.js SQL handler error:",e),n.NextResponse.json(c.formatErrorResponse(e instanceof Error?e.message:"SQL generation failed",500),{status:500})}}}function g(s){const{extractSecurityContext:t,cors:o}=s,a=h(s);return async function(r,i){try{let e;if(r.method==="POST"){const l=await r.json();e=l.query||l}else if(r.method==="GET"){const l=r.nextUrl.searchParams.get("query");if(!l)return n.NextResponse.json({error:"Query parameter is required",valid:!1},{status:400});try{e=JSON.parse(l)}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});const u=await t(r,i),d=await c.handleDryRun(e,u,a);return n.NextResponse.json(d,{headers:o?m(r,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 w(s){const{extractSecurityContext:t,cors:o}=s,a=h(s);return async function(r,i){try{if(r.method!=="POST")return n.NextResponse.json(c.formatErrorResponse("Method not allowed - use POST",405),{status:405});const e=await r.json(),{queries:u}=e;if(!u||!Array.isArray(u))return n.NextResponse.json(c.formatErrorResponse('Request body must contain a "queries" array',400),{status:400});if(u.length===0)return n.NextResponse.json(c.formatErrorResponse("Queries array cannot be empty",400),{status:400});const d=await t(r,i),l=await c.handleBatchRequest(u,d,a);return n.NextResponse.json(l,{headers:o?m(r,o):{}})}catch(e){return process.env.NODE_ENV!=="test"&&console.error("Next.js batch handler error:",e),n.NextResponse.json(c.formatErrorResponse(e instanceof Error?e.message:"Batch execution failed",500),{status:500})}}}function S(s){return{load:N(s),meta:j(s),sql:E(s),dryRun:g(s),batch:w(s)}}exports.createBatchHandler=w;exports.createCubeHandlers=S;exports.createDryRunHandler=g;exports.createLoadHandler=N;exports.createMetaHandler=j;exports.createOptionsHandler=H;exports.createSqlHandler=E;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("next/server"),c=require("../compiler-CMwSRhTS.cjs");function p(s){const{cubes:t,drizzle:o,schema:a,engineType:f}=s;if(!t||t.length===0)throw new Error("At least one cube must be provided in the cubes array");const r=new c.SemanticLayerCompiler({drizzle:o,schema:a,engineType:f});return t.forEach(i=>{r.registerCube(i)}),r}function m(s,t){const o=s.headers.get("origin"),a={};return t.origin&&(typeof t.origin=="string"?a["Access-Control-Allow-Origin"]=t.origin:Array.isArray(t.origin)?o&&t.origin.includes(o)&&(a["Access-Control-Allow-Origin"]=o):typeof t.origin=="function"&&o&&t.origin(o)&&(a["Access-Control-Allow-Origin"]=o)),t.methods&&(a["Access-Control-Allow-Methods"]=t.methods.join(", ")),t.allowedHeaders&&(a["Access-Control-Allow-Headers"]=t.allowedHeaders.join(", ")),t.credentials&&(a["Access-Control-Allow-Credentials"]="true"),a}function H(s){return async function(o){const a=m(o,s);return new Response(null,{status:200,headers:a})}}function x(s){const{extractSecurityContext:t,cors:o}=s,a=p(s);return async function(r,i){try{let e;if(r.method==="POST"){const y=await r.json();e=y.query||y}else if(r.method==="GET"){const y=r.nextUrl.searchParams.get("query");if(!y)return n.NextResponse.json(c.formatErrorResponse("Query parameter is required",400),{status:400});try{e=JSON.parse(y)}catch{return n.NextResponse.json(c.formatErrorResponse("Invalid JSON in query parameter",400),{status:400})}}else return n.NextResponse.json(c.formatErrorResponse("Method not allowed",405),{status:405});const u=await t(r,i),d=a.validateQuery(e);if(!d.isValid)return n.NextResponse.json(c.formatErrorResponse(`Query validation failed: ${d.errors.join(", ")}`,400),{status:400});const l=await a.executeMultiCubeQuery(e,u),R=c.formatCubeResponse(e,l,a);return n.NextResponse.json(R,{headers:o?m(r,o):{}})}catch(e){return process.env.NODE_ENV!=="test"&&console.error("Next.js load handler error:",e),n.NextResponse.json(c.formatErrorResponse(e instanceof Error?e.message:"Query execution failed",500),{status:500})}}}function N(s){const{cors:t}=s,o=p(s);return async function(f,r){try{const i=o.getMetadata(),e=c.formatMetaResponse(i);return n.NextResponse.json(e,{headers:t?m(f,t):{}})}catch(i){return process.env.NODE_ENV!=="test"&&console.error("Next.js meta handler error:",i),n.NextResponse.json(c.formatErrorResponse(i instanceof Error?i.message:"Failed to fetch metadata",500),{status:500})}}}function j(s){const{extractSecurityContext:t,cors:o}=s,a=p(s);return async function(r,i){try{let e;if(r.method==="POST"){const h=await r.json();e=h.query||h}else if(r.method==="GET"){const h=r.nextUrl.searchParams.get("query");if(!h)return n.NextResponse.json(c.formatErrorResponse("Query parameter is required",400),{status:400});try{e=JSON.parse(h)}catch{return n.NextResponse.json(c.formatErrorResponse("Invalid JSON in query parameter",400),{status:400})}}else return n.NextResponse.json(c.formatErrorResponse("Method not allowed",405),{status:405});const u=await t(r,i),d=a.validateQuery(e);if(!d.isValid)return n.NextResponse.json(c.formatErrorResponse(`Query validation failed: ${d.errors.join(", ")}`,400),{status:400});const l=e.measures?.[0]||e.dimensions?.[0];if(!l)return n.NextResponse.json(c.formatErrorResponse("No measures or dimensions specified",400),{status:400});const R=l.split(".")[0],y=await a.generateSQL(R,e,u),w=c.formatSqlResponse(e,y);return n.NextResponse.json(w,{headers:o?m(r,o):{}})}catch(e){return process.env.NODE_ENV!=="test"&&console.error("Next.js SQL handler error:",e),n.NextResponse.json(c.formatErrorResponse(e instanceof Error?e.message:"SQL generation failed",500),{status:500})}}}function E(s){const{extractSecurityContext:t,cors:o}=s,a=p(s);return async function(r,i){try{let e;if(r.method==="POST"){const l=await r.json();e=l.query||l}else if(r.method==="GET"){const l=r.nextUrl.searchParams.get("query");if(!l)return n.NextResponse.json({error:"Query parameter is required",valid:!1},{status:400});try{e=JSON.parse(l)}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});const u=await t(r,i),d=await c.handleDryRun(e,u,a);return n.NextResponse.json(d,{headers:o?m(r,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 g(s){const{extractSecurityContext:t,cors:o}=s,a=p(s);return async function(r,i){try{if(r.method!=="POST")return n.NextResponse.json(c.formatErrorResponse("Method not allowed - use POST",405),{status:405});const e=await r.json(),{queries:u}=e;if(!u||!Array.isArray(u))return n.NextResponse.json(c.formatErrorResponse('Request body must contain a "queries" array',400),{status:400});if(u.length===0)return n.NextResponse.json(c.formatErrorResponse("Queries array cannot be empty",400),{status:400});const d=await t(r,i),l=await c.handleBatchRequest(u,d,a);return n.NextResponse.json(l,{headers:o?m(r,o):{}})}catch(e){return process.env.NODE_ENV!=="test"&&console.error("Next.js batch handler error:",e),n.NextResponse.json(c.formatErrorResponse(e instanceof Error?e.message:"Batch execution failed",500),{status:500})}}}function S(s){return{load:x(s),meta:N(s),sql:j(s),dryRun:E(s),batch:g(s)}}exports.createBatchHandler=g;exports.createCubeHandlers=S;exports.createDryRunHandler=E;exports.createLoadHandler=x;exports.createMetaHandler=N;exports.createOptionsHandler=H;exports.createSqlHandler=j;
@@ -1,10 +1,10 @@
1
- import { NextResponse as n } from "next/server";
2
- import { d as i, f as x, a as E, b as N, c as S, h as b, S as C } from "../compiler-gcKytLwd.js";
3
- function j(a) {
4
- const { cubes: t, drizzle: s, schema: o, engineType: y } = a;
1
+ import { NextResponse as a } from "next/server";
2
+ import { d as i, f as x, a as N, b as S, c as b, h as C, S as E } from "../compiler-DrkCCzf0.js";
3
+ function j(n) {
4
+ const { cubes: t, drizzle: s, schema: o, engineType: y } = n;
5
5
  if (!t || t.length === 0)
6
6
  throw new Error("At least one cube must be provided in the cubes array");
7
- const r = new C({
7
+ const r = new E({
8
8
  drizzle: s,
9
9
  schema: o,
10
10
  engineType: y
@@ -13,21 +13,21 @@ function j(a) {
13
13
  r.registerCube(c);
14
14
  }), r;
15
15
  }
16
- function m(a, t) {
17
- const s = a.headers.get("origin"), o = {};
16
+ function m(n, t) {
17
+ const s = n.headers.get("origin"), o = {};
18
18
  return t.origin && (typeof t.origin == "string" ? o["Access-Control-Allow-Origin"] = t.origin : Array.isArray(t.origin) ? s && t.origin.includes(s) && (o["Access-Control-Allow-Origin"] = s) : typeof t.origin == "function" && s && t.origin(s) && (o["Access-Control-Allow-Origin"] = s)), t.methods && (o["Access-Control-Allow-Methods"] = t.methods.join(", ")), t.allowedHeaders && (o["Access-Control-Allow-Headers"] = t.allowedHeaders.join(", ")), t.credentials && (o["Access-Control-Allow-Credentials"] = "true"), o;
19
19
  }
20
- function M(a) {
20
+ function P(n) {
21
21
  return async function(s) {
22
- const o = m(s, a);
22
+ const o = m(s, n);
23
23
  return new Response(null, {
24
24
  status: 200,
25
25
  headers: o
26
26
  });
27
27
  };
28
28
  }
29
- function v(a) {
30
- const { extractSecurityContext: t, cors: s } = a, o = j(a);
29
+ function v(n) {
30
+ const { extractSecurityContext: t, cors: s } = n, o = j(n);
31
31
  return async function(r, c) {
32
32
  try {
33
33
  let e;
@@ -37,35 +37,35 @@ function v(a) {
37
37
  } else if (r.method === "GET") {
38
38
  const f = r.nextUrl.searchParams.get("query");
39
39
  if (!f)
40
- return n.json(
40
+ return a.json(
41
41
  i("Query parameter is required", 400),
42
42
  { status: 400 }
43
43
  );
44
44
  try {
45
45
  e = JSON.parse(f);
46
46
  } catch {
47
- return n.json(
47
+ return a.json(
48
48
  i("Invalid JSON in query parameter", 400),
49
49
  { status: 400 }
50
50
  );
51
51
  }
52
52
  } else
53
- return n.json(
53
+ return a.json(
54
54
  i("Method not allowed", 405),
55
55
  { status: 405 }
56
56
  );
57
57
  const l = await t(r, c), d = o.validateQuery(e);
58
58
  if (!d.isValid)
59
- return n.json(
59
+ return a.json(
60
60
  i(`Query validation failed: ${d.errors.join(", ")}`, 400),
61
61
  { status: 400 }
62
62
  );
63
63
  const u = await o.executeMultiCubeQuery(e, l), g = x(e, u, o);
64
- return n.json(g, {
64
+ return a.json(g, {
65
65
  headers: s ? m(r, s) : {}
66
66
  });
67
67
  } catch (e) {
68
- return process.env.NODE_ENV !== "test" && console.error("Next.js load handler error:", e), n.json(
68
+ return process.env.NODE_ENV !== "test" && console.error("Next.js load handler error:", e), a.json(
69
69
  i(
70
70
  e instanceof Error ? e.message : "Query execution failed",
71
71
  500
@@ -75,16 +75,16 @@ function v(a) {
75
75
  }
76
76
  };
77
77
  }
78
- function p(a) {
79
- const { cors: t } = a, s = j(a);
78
+ function H(n) {
79
+ const { cors: t } = n, s = j(n);
80
80
  return async function(y, r) {
81
81
  try {
82
- const c = s.getMetadata(), e = E(c);
83
- return n.json(e, {
82
+ const c = s.getMetadata(), e = N(c);
83
+ return a.json(e, {
84
84
  headers: t ? m(y, t) : {}
85
85
  });
86
86
  } catch (c) {
87
- return process.env.NODE_ENV !== "test" && console.error("Next.js meta handler error:", c), n.json(
87
+ return process.env.NODE_ENV !== "test" && console.error("Next.js meta handler error:", c), a.json(
88
88
  i(
89
89
  c instanceof Error ? c.message : "Failed to fetch metadata",
90
90
  500
@@ -94,8 +94,8 @@ function p(a) {
94
94
  }
95
95
  };
96
96
  }
97
- function H(a) {
98
- const { extractSecurityContext: t, cors: s } = a, o = j(a);
97
+ function A(n) {
98
+ const { extractSecurityContext: t, cors: s } = n, o = j(n);
99
99
  return async function(r, c) {
100
100
  try {
101
101
  let e;
@@ -105,41 +105,41 @@ function H(a) {
105
105
  } else if (r.method === "GET") {
106
106
  const h = r.nextUrl.searchParams.get("query");
107
107
  if (!h)
108
- return n.json(
108
+ return a.json(
109
109
  i("Query parameter is required", 400),
110
110
  { status: 400 }
111
111
  );
112
112
  try {
113
113
  e = JSON.parse(h);
114
114
  } catch {
115
- return n.json(
115
+ return a.json(
116
116
  i("Invalid JSON in query parameter", 400),
117
117
  { status: 400 }
118
118
  );
119
119
  }
120
120
  } else
121
- return n.json(
121
+ return a.json(
122
122
  i("Method not allowed", 405),
123
123
  { status: 405 }
124
124
  );
125
125
  const l = await t(r, c), d = o.validateQuery(e);
126
126
  if (!d.isValid)
127
- return n.json(
127
+ return a.json(
128
128
  i(`Query validation failed: ${d.errors.join(", ")}`, 400),
129
129
  { status: 400 }
130
130
  );
131
131
  const u = e.measures?.[0] || e.dimensions?.[0];
132
132
  if (!u)
133
- return n.json(
133
+ return a.json(
134
134
  i("No measures or dimensions specified", 400),
135
135
  { status: 400 }
136
136
  );
137
- const g = u.split(".")[0], f = await o.generateSQL(g, e, l), w = N(e, f);
138
- return n.json(w, {
137
+ const g = u.split(".")[0], f = await o.generateSQL(g, e, l), w = S(e, f);
138
+ return a.json(w, {
139
139
  headers: s ? m(r, s) : {}
140
140
  });
141
141
  } catch (e) {
142
- return process.env.NODE_ENV !== "test" && console.error("Next.js SQL handler error:", e), n.json(
142
+ return process.env.NODE_ENV !== "test" && console.error("Next.js SQL handler error:", e), a.json(
143
143
  i(
144
144
  e instanceof Error ? e.message : "SQL generation failed",
145
145
  500
@@ -149,8 +149,8 @@ function H(a) {
149
149
  }
150
150
  };
151
151
  }
152
- function A(a) {
153
- const { extractSecurityContext: t, cors: s } = a, o = j(a);
152
+ function p(n) {
153
+ const { extractSecurityContext: t, cors: s } = n, o = j(n);
154
154
  return async function(r, c) {
155
155
  try {
156
156
  let e;
@@ -160,29 +160,29 @@ function A(a) {
160
160
  } else if (r.method === "GET") {
161
161
  const u = r.nextUrl.searchParams.get("query");
162
162
  if (!u)
163
- return n.json(
163
+ return a.json(
164
164
  { error: "Query parameter is required", valid: !1 },
165
165
  { status: 400 }
166
166
  );
167
167
  try {
168
168
  e = JSON.parse(u);
169
169
  } catch {
170
- return n.json(
170
+ return a.json(
171
171
  { error: "Invalid JSON in query parameter", valid: !1 },
172
172
  { status: 400 }
173
173
  );
174
174
  }
175
175
  } else
176
- return n.json(
176
+ return a.json(
177
177
  { error: "Method not allowed", valid: !1 },
178
178
  { status: 405 }
179
179
  );
180
- const l = await t(r, c), d = await S(e, l, o);
181
- return n.json(d, {
180
+ const l = await t(r, c), d = await b(e, l, o);
181
+ return a.json(d, {
182
182
  headers: s ? m(r, s) : {}
183
183
  });
184
184
  } catch (e) {
185
- return process.env.NODE_ENV !== "test" && console.error("Next.js dry-run handler error:", e), n.json(
185
+ return process.env.NODE_ENV !== "test" && console.error("Next.js dry-run handler error:", e), a.json(
186
186
  {
187
187
  error: e instanceof Error ? e.message : "Dry-run validation failed",
188
188
  valid: !1
@@ -192,32 +192,32 @@ function A(a) {
192
192
  }
193
193
  };
194
194
  }
195
- function R(a) {
196
- const { extractSecurityContext: t, cors: s } = a, o = j(a);
195
+ function R(n) {
196
+ const { extractSecurityContext: t, cors: s } = n, o = j(n);
197
197
  return async function(r, c) {
198
198
  try {
199
199
  if (r.method !== "POST")
200
- return n.json(
200
+ return a.json(
201
201
  i("Method not allowed - use POST", 405),
202
202
  { status: 405 }
203
203
  );
204
204
  const e = await r.json(), { queries: l } = e;
205
205
  if (!l || !Array.isArray(l))
206
- return n.json(
206
+ return a.json(
207
207
  i('Request body must contain a "queries" array', 400),
208
208
  { status: 400 }
209
209
  );
210
210
  if (l.length === 0)
211
- return n.json(
211
+ return a.json(
212
212
  i("Queries array cannot be empty", 400),
213
213
  { status: 400 }
214
214
  );
215
- const d = await t(r, c), u = await b(l, d, o);
216
- return n.json(u, {
215
+ const d = await t(r, c), u = await C(l, d, o);
216
+ return a.json(u, {
217
217
  headers: s ? m(r, s) : {}
218
218
  });
219
219
  } catch (e) {
220
- return process.env.NODE_ENV !== "test" && console.error("Next.js batch handler error:", e), n.json(
220
+ return process.env.NODE_ENV !== "test" && console.error("Next.js batch handler error:", e), a.json(
221
221
  i(
222
222
  e instanceof Error ? e.message : "Batch execution failed",
223
223
  500
@@ -227,21 +227,21 @@ function R(a) {
227
227
  }
228
228
  };
229
229
  }
230
- function q(a) {
230
+ function M(n) {
231
231
  return {
232
- load: v(a),
233
- meta: p(a),
234
- sql: H(a),
235
- dryRun: A(a),
236
- batch: R(a)
232
+ load: v(n),
233
+ meta: H(n),
234
+ sql: A(n),
235
+ dryRun: p(n),
236
+ batch: R(n)
237
237
  };
238
238
  }
239
239
  export {
240
240
  R as createBatchHandler,
241
- q as createCubeHandlers,
242
- A as createDryRunHandler,
241
+ M as createCubeHandlers,
242
+ p as createDryRunHandler,
243
243
  v as createLoadHandler,
244
- p as createMetaHandler,
245
- M as createOptionsHandler,
246
- H as createSqlHandler
244
+ H as createMetaHandler,
245
+ P as createOptionsHandler,
246
+ A as createSqlHandler
247
247
  };