@malloy-publisher/server 0.0.231 → 0.0.233

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 (101) hide show
  1. package/README.docker.md +4 -0
  2. package/dist/app/api-doc.yaml +135 -13
  3. package/dist/app/assets/{EnvironmentPage-wa_EPkwK.js → EnvironmentPage-DutP7T8h.js} +1 -1
  4. package/dist/app/assets/{HomePage-jnCrupQp.js → HomePage-BcxDrBfl.js} +1 -1
  5. package/dist/app/assets/{LightMode-DYbwNULZ.js → LightMode-BJukGxgz.js} +1 -1
  6. package/dist/app/assets/{MainPage-CuJLrPNI.js → MainPage-DXbwlMeF.js} +2 -2
  7. package/dist/app/assets/{MaterializationsPage-D_67x2ee.js → MaterializationsPage-BBQksmTU.js} +1 -1
  8. package/dist/app/assets/{ModelPage-D5JtAWqR.js → ModelPage-C6tK51uU.js} +1 -1
  9. package/dist/app/assets/{PackagePage-BRwtqUSG.js → PackagePage-Bo3cwwZE.js} +1 -1
  10. package/dist/app/assets/{RouteError-CBNNrnSD.js → RouteError-BufkcAKE.js} +1 -1
  11. package/dist/app/assets/{ThemeEditorPage-CTCeBneA.js → ThemeEditorPage-DICvvKpa.js} +1 -1
  12. package/dist/app/assets/{WorkbookPage-SN6f1RBm.js → WorkbookPage-Dkwt75Nj.js} +1 -1
  13. package/dist/app/assets/{core-Dp3q5Ieu.es-CD5FvM2s.js → core-C0nunIQT.es-DlMLKZBK.js} +1 -1
  14. package/dist/app/assets/{index-DU4r7GdU.js → index-BabP-V-S.js} +346 -321
  15. package/dist/app/assets/{index-BLCx1EdC.js → index-BusxL5Pt.js} +1 -1
  16. package/dist/app/assets/{index-C_tJstcx.js → index-CmEVVe-8.js} +15 -15
  17. package/dist/app/assets/{index-CfmBVB6M.js → index-Cs4WVm2z.js} +1 -1
  18. package/dist/app/assets/{index-B3Nn8Vm2.js → index-qnhU9CGo.js} +266 -265
  19. package/dist/app/index.html +1 -1
  20. package/dist/instrumentation.mjs +2 -0
  21. package/dist/package_load_worker.mjs +11 -1
  22. package/dist/server.mjs +22627 -1260
  23. package/package.json +12 -12
  24. package/scripts/bake-duckdb-extensions.js +4 -1
  25. package/src/config.spec.ts +39 -0
  26. package/src/config.ts +135 -0
  27. package/src/controller/materialization.controller.spec.ts +62 -0
  28. package/src/controller/materialization.controller.ts +15 -0
  29. package/src/controller/package.controller.spec.ts +6 -0
  30. package/src/controller/package.controller.ts +7 -2
  31. package/src/controller/query.controller.ts +26 -21
  32. package/src/errors.ts +19 -0
  33. package/src/json_utils.spec.ts +51 -0
  34. package/src/json_utils.ts +33 -0
  35. package/src/logger.spec.ts +18 -1
  36. package/src/logger.ts +3 -1
  37. package/src/materialization_metrics.spec.ts +89 -4
  38. package/src/materialization_metrics.ts +155 -5
  39. package/src/mcp/query_envelope.spec.ts +229 -0
  40. package/src/mcp/query_envelope.ts +230 -0
  41. package/src/mcp/server.protocol.spec.ts +128 -16
  42. package/src/mcp/skills/build_skills_bundle.ts +94 -4
  43. package/src/mcp/skills/skills_bundle.json +1 -1
  44. package/src/mcp/skills/skills_bundle.spec.ts +113 -4
  45. package/src/mcp/tool_response.spec.ts +108 -0
  46. package/src/mcp/tool_response.ts +138 -0
  47. package/src/mcp/tools/compile_tool.spec.ts +112 -4
  48. package/src/mcp/tools/compile_tool.ts +61 -30
  49. package/src/mcp/tools/docs_search_tool.ts +6 -16
  50. package/src/mcp/tools/embedding_index.spec.ts +1236 -0
  51. package/src/mcp/tools/embedding_index.ts +808 -0
  52. package/src/mcp/tools/execute_query_tool.spec.ts +23 -3
  53. package/src/mcp/tools/execute_query_tool.ts +90 -151
  54. package/src/mcp/tools/get_context_eval.ts +194 -45
  55. package/src/mcp/tools/get_context_tool.spec.ts +358 -5
  56. package/src/mcp/tools/get_context_tool.ts +202 -56
  57. package/src/mcp/tools/reload_package_tool.ts +3 -29
  58. package/src/pg_helpers.spec.ts +201 -0
  59. package/src/pg_helpers.ts +44 -5
  60. package/src/server.ts +24 -0
  61. package/src/service/build_plan.spec.ts +128 -2
  62. package/src/service/build_plan.ts +239 -17
  63. package/src/service/compile_fragment_techniques.spec.ts +156 -0
  64. package/src/service/connection.spec.ts +371 -1
  65. package/src/service/connection.ts +339 -20
  66. package/src/service/connection_config.spec.ts +108 -0
  67. package/src/service/connection_config.ts +47 -8
  68. package/src/service/connection_federation.spec.ts +184 -0
  69. package/src/service/duckdb_instance_isolation.spec.ts +137 -0
  70. package/src/service/embedding_provider.spec.ts +329 -0
  71. package/src/service/embedding_provider.ts +236 -0
  72. package/src/service/environment.ts +274 -12
  73. package/src/service/environment_store.spec.ts +678 -3
  74. package/src/service/environment_store.ts +449 -33
  75. package/src/service/environment_store_clone.spec.ts +350 -0
  76. package/src/service/manifest_loader.spec.ts +68 -13
  77. package/src/service/manifest_loader.ts +67 -19
  78. package/src/service/materialization_build_session.spec.ts +435 -0
  79. package/src/service/materialization_build_session.ts +681 -0
  80. package/src/service/materialization_eligibility.spec.ts +158 -0
  81. package/src/service/materialization_eligibility.ts +305 -0
  82. package/src/service/materialization_serve_transform.spec.ts +1003 -0
  83. package/src/service/materialization_serve_transform.ts +779 -0
  84. package/src/service/materialization_service.spec.ts +774 -7
  85. package/src/service/materialization_service.ts +1107 -42
  86. package/src/service/materialization_test_fixtures.ts +7 -0
  87. package/src/service/model.spec.ts +207 -0
  88. package/src/service/model.ts +569 -59
  89. package/src/service/model_limits.spec.ts +28 -0
  90. package/src/service/model_limits.ts +21 -0
  91. package/src/service/model_storage_serve.spec.ts +193 -0
  92. package/src/service/model_storage_serve_joins.spec.ts +193 -0
  93. package/src/service/package.spec.ts +196 -0
  94. package/src/service/package.ts +385 -17
  95. package/src/service/persistence_policy.spec.ts +109 -0
  96. package/src/storage/duckdb/schema.ts +37 -0
  97. package/tests/fixtures/xlsx/database.xlsx +0 -0
  98. package/tests/integration/first_boot/readiness_line.integration.spec.ts +177 -0
  99. package/tests/integration/materialization/manifest_binding.integration.spec.ts +104 -0
  100. package/tests/integration/mcp/mcp_execute_query_tool.integration.spec.ts +37 -12
  101. package/tests/integration/mcp/mcp_get_context_semantic.integration.spec.ts +235 -0
@@ -1,4 +1,4 @@
1
- import{aJ as mi}from"./index-C_tJstcx.js";import{r as gi}from"./index-w_0OQJgZ.js";function yi(f,ie){for(var W=0;W<ie.length;W++){const P=ie[W];if(typeof P!="string"&&!Array.isArray(P)){for(const k in P)if(k!=="default"&&!(k in f)){const $=Object.getOwnPropertyDescriptor(P,k);$&&Object.defineProperty(f,k,$.get?$:{enumerable:!0,get:()=>P[k]})}}}return Object.freeze(Object.defineProperty(f,Symbol.toStringTag,{value:"Module"}))}var Et={},dt={},Vr;function Ct(){if(Vr)return dt;Vr=1,Object.defineProperty(dt,"__esModule",{value:!0}),dt.isChainOp=f,dt.isStringCondition=ie,dt.isStringFilter=W,dt.isBooleanFilter=P,dt.isNumberFilter=k,dt.isTemporalFilter=$,dt.isFilterExpression=w,dt.isFilterable=y;function f(o){return["and","or",","].includes(o)}function ie(o){return["starts","ends","contains","="].includes(o.operator)}function W(o){return typeof o=="object"&&o!==null&&"operator"in o&&typeof o.operator=="string"&&["starts","ends","contains","=","~","null","none","empty","and","or",",","()"].includes(o.operator)}function P(o){return typeof o=="object"&&o!==null&&"operator"in o&&typeof o.operator=="string"&&["null","none","true","false","=false","=true"].includes(o.operator)}function k(o){return typeof o=="object"&&o!==null&&"operator"in o&&typeof o.operator=="string"&&["range","<=",">=","!=","=",">","<","and","or","()","null","none"].includes(o.operator)}function $(o){return typeof o=="object"&&o!==null&&"operator"in o&&typeof o.operator=="string"&&["literal","before","after","to","for","in","and","or","in_last","this","last","next","()","null","none"].includes(o.operator)}function w(o){return typeof o=="object"&&o!==null&&"operator"in o}function y(o){return["string","number","boolean","timestamp","timestamptz","date"].includes(o)}return dt}var Mt={},Lr;function vi(){return Lr||(Lr=1,Object.defineProperty(Mt,"__esModule",{value:!0}),Mt.BooleanFilterExpression=void 0,Mt.BooleanFilterExpression={parse(f){var ie;if(f.match(/^\s*$/))return{parsed:null,log:[]};const W={parsed:null,log:[]};let P=f.toLowerCase().trim().replace(/\s\s+/," "),k=!1;if(P.startsWith("not ")&&(k=!0,P=P.slice(4)),P==="true")W.parsed={operator:"true"};else if(P==="=true")W.parsed={operator:"=true"};else if(P==="false")W.parsed={operator:"false"};else if(P==="=false")W.parsed={operator:"=false"};else if(P==="null")W.parsed={operator:"null"};else if(P==="none")W.parsed={operator:"none"};else{const $=f.match(/[^\s]/),w=$&&(ie=$.index)!==null&&ie!==void 0?ie:0;W.log=[{message:`Illegal boolean filter '${P}'. Must be one of true,=true,false,=false,null,none`,severity:"error",startIndex:w,endIndex:w+f.length-1}]}return k&&W.parsed&&(W.parsed.not=!0),W},unparse(f){return f===null?"":(f.not?"not ":"")+f.operator}}),Mt}var yr={},ze={},Ir;function Xt(){if(Ir)return ze;Ir=1,Object.defineProperty(ze,"__esModule",{value:!0}),ze.maybeNot=ie,ze.unescape=W,ze.escape=P,ze.matchOp=$,ze.conjoin=y,ze.joinNumbers=o,ze.mkRange=d,ze.mkValues=e,ze.numNot=C,ze.temporalNot=N,ze.joinTemporal=Z,ze.timeLiteral=ne,ze.mkUnits=pe;const f=Ct();function ie(O){const[A,F]=O;return A&&F&&(0,f.isStringFilter)(F)?{...F,not:!0}:F}function W(O){return O.replace(/\\(.)/g,"$1")}function P(O){const A=O.toLowerCase();return A==="null"||A==="empty"||A==="none"?"\\"+O:O.replace(/([,; |()\\%_-])/g,"\\$1")}function k(O){let A=!1,F=!1,G=0,he=!1;const Fe=O.length;for(let we=0;we<Fe;we+=1){const He=O[we];if(He===" "||He===" "){G+=1;continue}G=0,He==="%"?(he=!0,we===0&&(A=!0),F=!0):(F=!1,He==="\\"?we+=1:He==="_"&&(he=!0))}return{hasLike:he,percentEnd:F&&Fe>1,percentStart:A&&Fe>1,endSpace:G}}function $(O){let A=O.trimStart();const{hasLike:F,percentEnd:G,percentStart:he,endSpace:Fe}=k(A);if(Fe>0&&(A=A.slice(0,-Fe)),F){if(he&&G){const we=A.slice(1,-1);if(!k(we).hasLike&&we.length>0)return{operator:"contains",values:[W(we)]}}else if(G){const we=A.slice(0,-1);if(!k(we).hasLike)return{operator:"starts",values:[W(we)]}}else if(he){const we=A.slice(1);if(!k(we).hasLike)return{operator:"ends",values:[W(we)]}}return{operator:"~",escaped_values:[A]}}return A.toLowerCase()==="null"?{operator:"null"}:A.toLowerCase()==="empty"?{operator:"empty"}:A.toLowerCase()==="none"?{operator:"none"}:{operator:"=",values:[W(A)]}}function w(O,A){var F,G;return O.operator===A.operator&&((F=O.not)!==null&&F!==void 0?F:!1)===((G=A.not)!==null&&G!==void 0?G:!1)}function y(O,A,F){if(A=A.toLowerCase(),(0,f.isStringFilter)(O)&&(0,f.isStringFilter)(F)){if(A===","){if(O.operator==="~"&&w(O,F))return{...O,escaped_values:[...O.escaped_values,...F.escaped_values]};if((0,f.isStringCondition)(O)&&w(O,F))return{...O,values:[...O.values,...F.values]}}const G=A===","?",":A==="|"?"or":A===";"?"and":void 0;if(G)return O.operator===G?{...O,members:[...O.members,F]}:{operator:G,members:[O,F]}}return null}function o(O,A,F){if(A=A.toLowerCase(),(0,f.isNumberFilter)(O)&&(0,f.isNumberFilter)(F)){if(A==="or"&&O.operator==="="&&w(O,F)){const G={operator:"=",values:[...O.values,...F.values]};return O.not&&(G.not=!0),G}if(A==="and"||A==="or")return O.operator===A?{...O,members:[...O.members,F]}:{operator:A,members:[O,F]}}return null}function d(O,A,F,G){return{operator:"range",startValue:A,startOperator:O==="("?">":">=",endValue:F,endOperator:G===")"?"<":"<="}}function e(O,A){return{values:[O,...A]}}function C(O,A){return(0,f.isNumberFilter)(O)&&A?O.operator==="="?{operator:"!=",values:O.values}:O.operator==="!="?{operator:"=",values:O.values}:{...O,not:!0}:O}function N(O,A){if((0,f.isTemporalFilter)(O)&&A){if("not"in O){const F={...O};return O.not?delete F.not:F.not=!0,F}return{...O,not:!0}}return O}function Z(O,A,F){return A=A.toLowerCase(),(0,f.isTemporalFilter)(O)&&(0,f.isTemporalFilter)(F)&&(A==="and"||A==="or")?O.operator===A?{...O,members:[...O.members,F]}:{operator:A,members:[O,F]}:null}function ne(O,A){const F={moment:"literal",literal:O};return A&&(F.units=A),F}function pe(O){switch(O.toLowerCase()){case"second":case"seconds":return"second";case"minute":case"minutes":return"minute";case"hour":case"hours":return"hour";case"day":case"days":return"day";case"week":case"weeks":return"week";case"month":case"months":return"month";case"quarter":case"quarters":return"quarter";case"year":case"years":return"year"}}return ze}var vr,Cr;function wi(){if(Cr)return vr;Cr=1;const{numNot:f,mkRange:ie,joinNumbers:W,mkValues:P}=Xt();function k(o,d){function e(){this.constructor=o}e.prototype=d.prototype,o.prototype=new e}function $(o,d,e,C){var N=Error.call(this,o);return Object.setPrototypeOf&&Object.setPrototypeOf(N,$.prototype),N.expected=d,N.found=e,N.location=C,N.name="SyntaxError",N}k($,Error);function w(o,d,e){return e=e||" ",o.length>d?o:(d-=o.length,e+=e.repeat(d),o+e.slice(0,d))}$.prototype.format=function(o){var d="Error: "+this.message;if(this.location){var e=null,C;for(C=0;C<o.length;C++)if(o[C].source===this.location.source){e=o[C].text.split(/\r\n|\n|\r/g);break}var N=this.location.start,Z=this.location.source&&typeof this.location.source.offset=="function"?this.location.source.offset(N):N,ne=this.location.source+":"+Z.line+":"+Z.column;if(e){var pe=this.location.end,O=w("",Z.line.toString().length," "),A=e[N.line-1],F=N.line===pe.line?pe.column:A.length+1,G=F-N.column||1;d+=`
1
+ import{aJ as mi}from"./index-CmEVVe-8.js";import{r as gi}from"./index-w_0OQJgZ.js";function yi(f,ie){for(var W=0;W<ie.length;W++){const P=ie[W];if(typeof P!="string"&&!Array.isArray(P)){for(const k in P)if(k!=="default"&&!(k in f)){const $=Object.getOwnPropertyDescriptor(P,k);$&&Object.defineProperty(f,k,$.get?$:{enumerable:!0,get:()=>P[k]})}}}return Object.freeze(Object.defineProperty(f,Symbol.toStringTag,{value:"Module"}))}var Et={},dt={},Vr;function Ct(){if(Vr)return dt;Vr=1,Object.defineProperty(dt,"__esModule",{value:!0}),dt.isChainOp=f,dt.isStringCondition=ie,dt.isStringFilter=W,dt.isBooleanFilter=P,dt.isNumberFilter=k,dt.isTemporalFilter=$,dt.isFilterExpression=w,dt.isFilterable=y;function f(o){return["and","or",","].includes(o)}function ie(o){return["starts","ends","contains","="].includes(o.operator)}function W(o){return typeof o=="object"&&o!==null&&"operator"in o&&typeof o.operator=="string"&&["starts","ends","contains","=","~","null","none","empty","and","or",",","()"].includes(o.operator)}function P(o){return typeof o=="object"&&o!==null&&"operator"in o&&typeof o.operator=="string"&&["null","none","true","false","=false","=true"].includes(o.operator)}function k(o){return typeof o=="object"&&o!==null&&"operator"in o&&typeof o.operator=="string"&&["range","<=",">=","!=","=",">","<","and","or","()","null","none"].includes(o.operator)}function $(o){return typeof o=="object"&&o!==null&&"operator"in o&&typeof o.operator=="string"&&["literal","before","after","to","for","in","and","or","in_last","this","last","next","()","null","none"].includes(o.operator)}function w(o){return typeof o=="object"&&o!==null&&"operator"in o}function y(o){return["string","number","boolean","timestamp","timestamptz","date"].includes(o)}return dt}var Mt={},Lr;function vi(){return Lr||(Lr=1,Object.defineProperty(Mt,"__esModule",{value:!0}),Mt.BooleanFilterExpression=void 0,Mt.BooleanFilterExpression={parse(f){var ie;if(f.match(/^\s*$/))return{parsed:null,log:[]};const W={parsed:null,log:[]};let P=f.toLowerCase().trim().replace(/\s\s+/," "),k=!1;if(P.startsWith("not ")&&(k=!0,P=P.slice(4)),P==="true")W.parsed={operator:"true"};else if(P==="=true")W.parsed={operator:"=true"};else if(P==="false")W.parsed={operator:"false"};else if(P==="=false")W.parsed={operator:"=false"};else if(P==="null")W.parsed={operator:"null"};else if(P==="none")W.parsed={operator:"none"};else{const $=f.match(/[^\s]/),w=$&&(ie=$.index)!==null&&ie!==void 0?ie:0;W.log=[{message:`Illegal boolean filter '${P}'. Must be one of true,=true,false,=false,null,none`,severity:"error",startIndex:w,endIndex:w+f.length-1}]}return k&&W.parsed&&(W.parsed.not=!0),W},unparse(f){return f===null?"":(f.not?"not ":"")+f.operator}}),Mt}var yr={},ze={},Ir;function Xt(){if(Ir)return ze;Ir=1,Object.defineProperty(ze,"__esModule",{value:!0}),ze.maybeNot=ie,ze.unescape=W,ze.escape=P,ze.matchOp=$,ze.conjoin=y,ze.joinNumbers=o,ze.mkRange=d,ze.mkValues=e,ze.numNot=C,ze.temporalNot=N,ze.joinTemporal=Z,ze.timeLiteral=ne,ze.mkUnits=pe;const f=Ct();function ie(O){const[A,F]=O;return A&&F&&(0,f.isStringFilter)(F)?{...F,not:!0}:F}function W(O){return O.replace(/\\(.)/g,"$1")}function P(O){const A=O.toLowerCase();return A==="null"||A==="empty"||A==="none"?"\\"+O:O.replace(/([,; |()\\%_-])/g,"\\$1")}function k(O){let A=!1,F=!1,G=0,he=!1;const Fe=O.length;for(let we=0;we<Fe;we+=1){const He=O[we];if(He===" "||He===" "){G+=1;continue}G=0,He==="%"?(he=!0,we===0&&(A=!0),F=!0):(F=!1,He==="\\"?we+=1:He==="_"&&(he=!0))}return{hasLike:he,percentEnd:F&&Fe>1,percentStart:A&&Fe>1,endSpace:G}}function $(O){let A=O.trimStart();const{hasLike:F,percentEnd:G,percentStart:he,endSpace:Fe}=k(A);if(Fe>0&&(A=A.slice(0,-Fe)),F){if(he&&G){const we=A.slice(1,-1);if(!k(we).hasLike&&we.length>0)return{operator:"contains",values:[W(we)]}}else if(G){const we=A.slice(0,-1);if(!k(we).hasLike)return{operator:"starts",values:[W(we)]}}else if(he){const we=A.slice(1);if(!k(we).hasLike)return{operator:"ends",values:[W(we)]}}return{operator:"~",escaped_values:[A]}}return A.toLowerCase()==="null"?{operator:"null"}:A.toLowerCase()==="empty"?{operator:"empty"}:A.toLowerCase()==="none"?{operator:"none"}:{operator:"=",values:[W(A)]}}function w(O,A){var F,G;return O.operator===A.operator&&((F=O.not)!==null&&F!==void 0?F:!1)===((G=A.not)!==null&&G!==void 0?G:!1)}function y(O,A,F){if(A=A.toLowerCase(),(0,f.isStringFilter)(O)&&(0,f.isStringFilter)(F)){if(A===","){if(O.operator==="~"&&w(O,F))return{...O,escaped_values:[...O.escaped_values,...F.escaped_values]};if((0,f.isStringCondition)(O)&&w(O,F))return{...O,values:[...O.values,...F.values]}}const G=A===","?",":A==="|"?"or":A===";"?"and":void 0;if(G)return O.operator===G?{...O,members:[...O.members,F]}:{operator:G,members:[O,F]}}return null}function o(O,A,F){if(A=A.toLowerCase(),(0,f.isNumberFilter)(O)&&(0,f.isNumberFilter)(F)){if(A==="or"&&O.operator==="="&&w(O,F)){const G={operator:"=",values:[...O.values,...F.values]};return O.not&&(G.not=!0),G}if(A==="and"||A==="or")return O.operator===A?{...O,members:[...O.members,F]}:{operator:A,members:[O,F]}}return null}function d(O,A,F,G){return{operator:"range",startValue:A,startOperator:O==="("?">":">=",endValue:F,endOperator:G===")"?"<":"<="}}function e(O,A){return{values:[O,...A]}}function C(O,A){return(0,f.isNumberFilter)(O)&&A?O.operator==="="?{operator:"!=",values:O.values}:O.operator==="!="?{operator:"=",values:O.values}:{...O,not:!0}:O}function N(O,A){if((0,f.isTemporalFilter)(O)&&A){if("not"in O){const F={...O};return O.not?delete F.not:F.not=!0,F}return{...O,not:!0}}return O}function Z(O,A,F){return A=A.toLowerCase(),(0,f.isTemporalFilter)(O)&&(0,f.isTemporalFilter)(F)&&(A==="and"||A==="or")?O.operator===A?{...O,members:[...O.members,F]}:{operator:A,members:[O,F]}:null}function ne(O,A){const F={moment:"literal",literal:O};return A&&(F.units=A),F}function pe(O){switch(O.toLowerCase()){case"second":case"seconds":return"second";case"minute":case"minutes":return"minute";case"hour":case"hours":return"hour";case"day":case"days":return"day";case"week":case"weeks":return"week";case"month":case"months":return"month";case"quarter":case"quarters":return"quarter";case"year":case"years":return"year"}}return ze}var vr,Cr;function wi(){if(Cr)return vr;Cr=1;const{numNot:f,mkRange:ie,joinNumbers:W,mkValues:P}=Xt();function k(o,d){function e(){this.constructor=o}e.prototype=d.prototype,o.prototype=new e}function $(o,d,e,C){var N=Error.call(this,o);return Object.setPrototypeOf&&Object.setPrototypeOf(N,$.prototype),N.expected=d,N.found=e,N.location=C,N.name="SyntaxError",N}k($,Error);function w(o,d,e){return e=e||" ",o.length>d?o:(d-=o.length,e+=e.repeat(d),o+e.slice(0,d))}$.prototype.format=function(o){var d="Error: "+this.message;if(this.location){var e=null,C;for(C=0;C<o.length;C++)if(o[C].source===this.location.source){e=o[C].text.split(/\r\n|\n|\r/g);break}var N=this.location.start,Z=this.location.source&&typeof this.location.source.offset=="function"?this.location.source.offset(N):N,ne=this.location.source+":"+Z.line+":"+Z.column;if(e){var pe=this.location.end,O=w("",Z.line.toString().length," "),A=e[N.line-1],F=N.line===pe.line?pe.column:A.length+1,G=F-N.column||1;d+=`
2
2
  --> `+ne+`
3
3
  `+O+` |
4
4
  `+Z.line+" | "+A+`