Comparing version 0.4.0-beta.1 to 0.4.0-beta.2
@@ -1,5 +0,5 @@ | ||
var gt=Object.defineProperty;var Ve=Object.getOwnPropertySymbols;var kt=Object.prototype.hasOwnProperty,_t=Object.prototype.propertyIsEnumerable;var Me=(E,A,C)=>A in E?gt(E,A,{enumerable:!0,configurable:!0,writable:!0,value:C}):E[A]=C,ie=(E,A)=>{for(var C in A||(A={}))kt.call(A,C)&&Me(E,C,A[C]);if(Ve)for(var C of Ve(A))_t.call(A,C)&&Me(E,C,A[C]);return E};(function(E,A){typeof exports=="object"&&typeof module!="undefined"?A(exports):typeof define=="function"&&define.amd?define(["exports"],A):(E=typeof globalThis!="undefined"?globalThis:E||self,A(E.groqJS={}))})(this,function(E){"use strict";class A{constructor(e,n,r){this.allowBoost=!1,this.string=e,this.marks=n,this.index=0,this.parseOptions=r}hasMark(e=0){return this.index+e<this.marks.length}getMark(e=0){return this.marks[this.index+e]}shift(){this.index+=1}process(e){const n=this.marks[this.index];this.shift();const r=e[n.name];if(!r)throw new Error(`Unknown handler: ${n.name}`);return r.call(e,this,n)}processString(){return this.shift(),this.processStringEnd()}processStringEnd(){const e=this.marks[this.index-1],n=this.marks[this.index];return this.shift(),this.string.slice(e.position,n.position)}slice(e){const n=this.marks[this.index].position;return this.string.slice(n,n+e)}}const C=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|([-+]\d{2}:\d{2}))$/;function $e(t){return C.test(t)?new Date(t):null}function Ue(t){const e=V(t.getUTCFullYear(),4),n=V(t.getUTCMonth()+1,2),r=V(t.getUTCDate(),2),i=V(t.getUTCHours(),2),a=V(t.getUTCMinutes(),2),o=V(t.getUTCSeconds(),2);let c="";const d=t.getMilliseconds();return d!=0&&(c=`.${V(d,3)}`),`${e}-${n}-${r}T${i}:${a}:${o}${c}Z`}function V(t,e){let n=t.toString();for(;n.length<e;)n=`0${n}`;return n}function De(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Ne(t){const e=[];for(const n of t.split("."))n==="*"?e.push("[^.]+"):n==="**"?e.push(".*"):e.push(De(n));return new RegExp(`^${e.join(".")}$`)}class he{constructor(e){this.pattern=e,this.patternRe=Ne(e)}matches(e){return this.patternRe.test(e)}toJSON(){return this.pattern}}class N{constructor(e){this.type="stream",this.generator=e,this.ticker=null,this.isDone=!1,this.data=[]}isArray(){return!0}async get(){const e=[];for await(const n of this)e.push(await n.get());return e}async*[Symbol.asyncIterator](){let e=0;for(;;){for(;e<this.data.length;e++)yield this.data[e];if(this.isDone)return;await this._nextTick()}}_nextTick(){if(this.ticker)return this.ticker;let e;const n=()=>{this.ticker=new Promise(a=>{e=a})},r=()=>{e(),n()},i=async()=>{for await(const a of this.generator())this.data.push(a),r();this.isDone=!0,r()};return n(),i(),this.ticker}}class j{constructor(e,n){this.data=e,this.type=n}isArray(){return this.type==="array"}async get(){return this.data}[Symbol.asyncIterator](){if(Array.isArray(this.data))return function*(e){for(const n of e)yield S(n)}(this.data);throw new Error(`Cannot iterate over: ${this.type}`)}}const f=new j(null,"null"),k=new j(!0,"boolean"),w=new j(!1,"boolean");class q{constructor(e){this.date=e}static parseToValue(e){const n=$e(e);return n?new j(new q(n),"datetime"):f}equals(e){return this.date.getTime()==e.date.getTime()}add(e){const n=new Date(this.date.getTime());return n.setTime(n.getTime()+e*1e3),new q(n)}difference(e){return(this.date.getTime()-e.date.getTime())/1e3}compareTo(e){return this.date.getTime()-e.date.getTime()}toString(){return Ue(this.date)}toJSON(){return this.toString()}}function x(t){return Number.isFinite(t)?new j(t,"number"):f}function T(t){return new j(t,"string")}function be(t){return new j(t,"datetime")}function Ie(t){return new j(t,"path")}function Le(t){return t&&typeof t.next=="function"}function S(t){return Le(t)?new N(async function*(){for await(const e of t)yield S(e)}):t==null?f:new j(t,I(t))}function I(t){return t===null||typeof t=="undefined"?"null":Array.isArray(t)?"array":t instanceof he?"path":t instanceof q?"datetime":typeof t}const we={datetime:1,number:2,string:3,boolean:4};function M(t,e){const n=I(t),r=I(e);if(n!==r)return null;switch(n){case"number":case"boolean":return t-e;case"string":return t<e?-1:t>e?1:0;case"datetime":return t.compareTo(e);default:return null}}function Fe(t,e){const n=I(t),r=I(e),i=we[n]||100,a=we[r]||100;if(i!==a)return i-a;let o=M(t,e);return o===null&&(o=0),o}const qe=/([^!@#$%^&*(),\\/?";:{}|[\]+<>\s-])+/g,Be=/([^!@#$%^&(),\\/?";:{}|[\]+<>\s-])+/g,ge=/(\b\.+|\.+\b)/g,Ge=1024;function He(t,e){return t.length===0||e.length===0?!1:e.every(n=>n(t))}function ke(t){return t.replace(ge,"").match(qe)||[]}function ze(t){return _e(t).map(n=>r=>r.some(i=>n.test(i)))}function _e(t){return(t.replace(ge,"").match(Be)||[]).map(n=>new RegExp(`^${n.slice(0,Ge).replace(/\*/g,".*")}$`,"i"))}async function z(t,e){if(t.type==="string")return e(t.data),!0;if(t.isArray()){let n=!0;for await(const r of t)r.type==="string"?e(r.data):n=!1;return n}return!1}const Ee=1.2;async function L(t,e,n){if(t.type==="OpCall"&&t.op==="match")return Je(t.left,t.right,e,n);if(t.type==="FuncCall"&&t.name==="boost"){const r=await L(t.args[0],e,n),i=await n(t.args[1],e);return i.type==="number"&&r>0?r+i.data:0}switch(t.type){case"Or":{const r=await L(t.left,e,n),i=await L(t.right,e,n);return r+i}case"And":{const r=await L(t.left,e,n),i=await L(t.right,e,n);return r===0||i===0?0:r+i}default:{const r=await n(t,e);return r.type==="boolean"&&r.data===!0?1:0}}}async function Je(t,e,n,r){const i=await r(t,n),a=await r(e,n);let o=[],c=[];if(await z(i,m=>{o=o.concat(ke(m))}),!await z(a,m=>{c=c.concat(_e(m))})||o.length===0||c.length===0)return 0;let s=0;for(const m of c){const u=o.reduce((p,_)=>p+(m.test(_)?1:0),0);s+=u*(Ee+1)/(u+Ee)}return s}async function Qe(t){if(t.type==="object")return Se(t.data);if(t.isArray()){const e=await Ae(t);if(e.length>0)return e.join(` | ||
var gt=Object.defineProperty;var Re=Object.getOwnPropertySymbols;var kt=Object.prototype.hasOwnProperty,_t=Object.prototype.propertyIsEnumerable;var Ve=(E,A,C)=>A in E?gt(E,A,{enumerable:!0,configurable:!0,writable:!0,value:C}):E[A]=C,ie=(E,A)=>{for(var C in A||(A={}))kt.call(A,C)&&Ve(E,C,A[C]);if(Re)for(var C of Re(A))_t.call(A,C)&&Ve(E,C,A[C]);return E};(function(E,A){typeof exports=="object"&&typeof module!="undefined"?A(exports):typeof define=="function"&&define.amd?define(["exports"],A):(E=typeof globalThis!="undefined"?globalThis:E||self,A(E.groqJS={}))})(this,function(E){"use strict";class A{constructor(e,n,r){this.allowBoost=!1,this.string=e,this.marks=n,this.index=0,this.parseOptions=r}hasMark(e=0){return this.index+e<this.marks.length}getMark(e=0){return this.marks[this.index+e]}shift(){this.index+=1}process(e){const n=this.marks[this.index];this.shift();const r=e[n.name];if(!r)throw new Error(`Unknown handler: ${n.name}`);return r.call(e,this,n)}processString(){return this.shift(),this.processStringEnd()}processStringEnd(){const e=this.marks[this.index-1],n=this.marks[this.index];return this.shift(),this.string.slice(e.position,n.position)}slice(e){const n=this.marks[this.index].position;return this.string.slice(n,n+e)}}const C=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|([-+]\d{2}:\d{2}))$/;function Me(t){return C.test(t)?new Date(t):null}function $e(t){const e=V(t.getUTCFullYear(),4),n=V(t.getUTCMonth()+1,2),r=V(t.getUTCDate(),2),i=V(t.getUTCHours(),2),a=V(t.getUTCMinutes(),2),o=V(t.getUTCSeconds(),2);let c="";const d=t.getMilliseconds();return d!=0&&(c=`.${V(d,3)}`),`${e}-${n}-${r}T${i}:${a}:${o}${c}Z`}function V(t,e){let n=t.toString();for(;n.length<e;)n=`0${n}`;return n}function Ue(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function De(t){const e=[];for(const n of t.split("."))n==="*"?e.push("[^.]+"):n==="**"?e.push(".*"):e.push(Ue(n));return new RegExp(`^${e.join(".")}$`)}class he{constructor(e){this.pattern=e,this.patternRe=De(e)}matches(e){return this.patternRe.test(e)}toJSON(){return this.pattern}}class N{constructor(e){this.type="stream",this.generator=e,this.ticker=null,this.isDone=!1,this.data=[]}isArray(){return!0}async get(){const e=[];for await(const n of this)e.push(await n.get());return e}async*[Symbol.asyncIterator](){let e=0;for(;;){for(;e<this.data.length;e++)yield this.data[e];if(this.isDone)return;await this._nextTick()}}_nextTick(){if(this.ticker)return this.ticker;let e;const n=()=>{this.ticker=new Promise(a=>{e=a})},r=()=>{e(),n()},i=async()=>{for await(const a of this.generator())this.data.push(a),r();this.isDone=!0,r()};return n(),i(),this.ticker}}class j{constructor(e,n){this.data=e,this.type=n}isArray(){return this.type==="array"}async get(){return this.data}[Symbol.asyncIterator](){if(Array.isArray(this.data))return function*(e){for(const n of e)yield S(n)}(this.data);throw new Error(`Cannot iterate over: ${this.type}`)}}const f=new j(null,"null"),k=new j(!0,"boolean"),w=new j(!1,"boolean");class q{constructor(e){this.date=e}static parseToValue(e){const n=Me(e);return n?new j(new q(n),"datetime"):f}equals(e){return this.date.getTime()==e.date.getTime()}add(e){const n=new Date(this.date.getTime());return n.setTime(n.getTime()+e*1e3),new q(n)}difference(e){return(this.date.getTime()-e.date.getTime())/1e3}compareTo(e){return this.date.getTime()-e.date.getTime()}toString(){return $e(this.date)}toJSON(){return this.toString()}}function x(t){return Number.isFinite(t)?new j(t,"number"):f}function T(t){return new j(t,"string")}function be(t){return new j(t,"datetime")}function Ne(t){return new j(t,"path")}function Ie(t){return t&&typeof t.next=="function"}function S(t){return Ie(t)?new N(async function*(){for await(const e of t)yield S(e)}):t==null?f:new j(t,I(t))}function I(t){return t===null||typeof t=="undefined"?"null":Array.isArray(t)?"array":t instanceof he?"path":t instanceof q?"datetime":typeof t}const we={datetime:1,number:2,string:3,boolean:4};function M(t,e){const n=I(t),r=I(e);if(n!==r)return null;switch(n){case"number":case"boolean":return t-e;case"string":return t<e?-1:t>e?1:0;case"datetime":return t.compareTo(e);default:return null}}function Le(t,e){const n=I(t),r=I(e),i=we[n]||100,a=we[r]||100;if(i!==a)return i-a;let o=M(t,e);return o===null&&(o=0),o}const Fe=/([^!@#$%^&*(),\\/?";:{}|[\]+<>\s-])+/g,qe=/([^!@#$%^&(),\\/?";:{}|[\]+<>\s-])+/g,ge=/(\b\.+|\.+\b)/g,Be=1024;function Ge(t,e){return t.length===0||e.length===0?!1:e.every(n=>n(t))}function ke(t){return t.replace(ge,"").match(Fe)||[]}function He(t){return _e(t).map(n=>r=>r.some(i=>n.test(i)))}function _e(t){return(t.replace(ge,"").match(qe)||[]).map(n=>new RegExp(`^${n.slice(0,Be).replace(/\*/g,".*")}$`,"i"))}async function z(t,e){if(t.type==="string")return e(t.data),!0;if(t.isArray()){let n=!0;for await(const r of t)r.type==="string"?e(r.data):n=!1;return n}return!1}const Ee=1.2;async function L(t,e,n){if(t.type==="OpCall"&&t.op==="match")return ze(t.left,t.right,e,n);if(t.type==="FuncCall"&&t.name==="boost"){const r=await L(t.args[0],e,n),i=await n(t.args[1],e);return i.type==="number"&&r>0?r+i.data:0}switch(t.type){case"Or":{const r=await L(t.left,e,n),i=await L(t.right,e,n);return r+i}case"And":{const r=await L(t.left,e,n),i=await L(t.right,e,n);return r===0||i===0?0:r+i}default:{const r=await n(t,e);return r.type==="boolean"&&r.data===!0?1:0}}}async function ze(t,e,n,r){const i=await r(t,n),a=await r(e,n);let o=[],c=[];if(await z(i,m=>{o=o.concat(ke(m))}),!await z(a,m=>{c=c.concat(_e(m))})||o.length===0||c.length===0)return 0;let s=0;for(const m of c){const u=o.reduce((p,_)=>p+(m.test(_)?1:0),0);s+=u*(Ee+1)/(u+Ee)}return s}async function Je(t){if(t.type==="object")return Se(t.data);if(t.isArray()){const e=await Ae(t);if(e.length>0)return e.join(` | ||
`)}return null}async function Ae(t,e=[]){for await(const n of t)if(n.type==="object"){const r=Se(n.data);r!==null&&e.push(r)}else n.isArray()&&await Ae(n,e);return e}function Se(t){if(typeof t._type!="string")return null;const e=t.children;if(!Array.isArray(e))return null;let n="";for(const r of e)r&&typeof r=="object"&&typeof r._type=="string"&&r._type==="span"&&typeof r.text=="string"&&(n+=r.text);return n}function oe(t,e){switch(I(t)){case"array":for(const n of t)if(oe(n,e))return!0;break;case"object":if(t._ref)return e.has(t._ref);for(const n of Object.values(t))if(oe(n,e))return!0;break}return!1}function We(t){let e=0;for(let n=0;n<t.length;n++){const r=t.charCodeAt(n);r>=55296&&r<=56319||e++}return e}const b={};b.coalesce=async function(e,n,r){for(const i of e){const a=await r(i,n);if(a.type!=="null")return a}return f},b.count=async function(e,n,r){const i=await r(e[0],n);if(!i.isArray())return f;let a=0;for await(const o of i)a++;return x(a)},b.count.arity=1,b.dateTime=async function(e,n,r){const i=await r(e[0],n);return i.type==="datetime"?i:i.type!=="string"?f:q.parseToValue(i.data)},b.dateTime.arity=1,b.defined=async function(e,n,r){return(await r(e[0],n)).type==="null"?w:k},b.defined.arity=1,b.identity=async function(e,n){return T(n.context.identity)},b.identity.arity=0,b.length=async function(e,n,r){const i=await r(e[0],n);if(i.type==="string")return x(We(i.data));if(i.isArray()){let a=0;for await(const o of i)a++;return x(a)}return f},b.length.arity=1,b.path=async function(e,n,r){const i=await r(e[0],n);return i.type!=="string"?f:Ie(new he(i.data))},b.path.arity=1,b.string=async function(e,n,r){const i=await r(e[0],n);switch(i.type){case"number":case"string":case"boolean":case"datetime":return T(`${i.data}`);default:return f}},b.string.arity=1,b.references=async function(e,n,r){const i=new Set;for(const o of e){const c=await r(o,n);if(c.type==="string")i.add(c.data);else if(c.isArray())for await(const d of c)d.type==="string"&&i.add(d.data)}if(i.size===0)return w;const a=await n.value.get();return oe(a,i)?k:w},b.references.arity=t=>t>=1,b.round=async function(e,n,r){const i=await r(e[0],n);if(i.type!=="number")return f;const a=i.data;let o=0;if(e.length===2){const c=await r(e[1],n);if(c.type!=="number"||c.data<0||!Number.isInteger(c.data))return f;o=c.data}return o===0?a<0?x(-Math.round(-a)):x(Math.round(a)):x(Number(a.toFixed(o)))},b.round.arity=t=>t>=1&&t<=2,b.now=async function(e,n){return T(n.context.timestamp.toISOString())},b.now.arity=0,b.boost=async function(){throw new Error("unexpected boost call")},b.boost.arity=2;const $={};$.lower=async function(t,e,n){const r=await n(t[0],e);return r.type!=="string"?f:T(r.data.toLowerCase())},$.lower.arity=1,$.upper=async function(t,e,n){const r=await n(t[0],e);return r.type!=="string"?f:T(r.data.toUpperCase())},$.upper.arity=1,b.lower=$.lower,b.upper=$.upper;const se={};se.text=async function(t,e,n){const r=await n(t[0],e),i=await Qe(r);return i===null?f:T(i)},se.text.arity=1;const ce={};ce.projectId=async function(t,e){return e.context.sanity?T(e.context.sanity.projectId):f},ce.dataset=async function(t,e){return e.context.sanity?T(e.context.sanity.dataset):f};const B={};B.order=async function(e,n,r,i){if(await!0,!e.isArray())return f;const a=[],o=[];let c=0;for(let m of n){let u="asc";m.type==="Desc"?(u="desc",m=m.base):m.type==="Asc"&&(m=m.base),a.push(m),o.push(u),c++}const d=[];let s=0;for await(const m of e){const u=r.createNested(m),p=[await m.get(),s];for(let _=0;_<c;_++){const D=await i(a[_],u);p.push(await D.get())}d.push(p),s++}return d.sort((m,u)=>{for(let p=0;p<c;p++){let _=Fe(m[p+2],u[p+2]);if(o[p]==="desc"&&(_=-_),_!==0)return _}return m[1]-u[1]}),S(d.map(m=>m[0]))},B.order.arity=t=>t>=1,B.score=async function(e,n,r,i){if(!e.isArray())return f;const a=[],o=[];for await(const c of e){if(c.type!=="object"){a.push(await c.get());continue}const d=r.createNested(c);let s=typeof c.data._score=="number"?c.data._score:0;for(const u of n)s+=await L(u,d,i);const m=Object.assign({},c.data,{_score:s});o.push(m)}return o.sort((c,d)=>d._score-c._score),S(o)},B.score.arity=t=>t>=1;const R={};R.operation=async function(t,e){const n=e.context.before!==null,r=e.context.after!==null;return n&&r?T("update"):r?T("create"):n?T("delete"):f},R.changedAny=()=>{throw new Error("not implemented")},R.changedAny.arity=1,R.changedAny.mode="delta",R.changedOnly=()=>{throw new Error("not implemented")},R.changedOnly.arity=1,R.changedOnly.mode="delta";const G={};G.changedAny=()=>{throw new Error("not implemented")},G.changedAny.arity=3,G.changedOnly=()=>{throw new Error("not implemented")},G.changedOnly.arity=3;const Ze={global:b,string:$,pt:se,delta:R,diff:G,sanity:ce},Xe=/^([\t\n\v\f\r \u0085\u00A0]|(\/\/[^\n]+\n))+/,ue=/^\d+/,U=/^[a-zA-Z_][a-zA-Z_0-9]*/,J=1,Q=2,W=3,g=4,F=4,Z=6,X=6,Y=7,K=7,ee=7,te=8,Ye=10,Ke=10,et=8;function tt(t){let e=0;e=l(t,e);let n=h(t,e,0);return n.type==="error"?n:(e=l(t,n.position),e!==t.length?(n.failPosition&&(e=n.failPosition-1),{type:"error",position:e}):(delete n.position,delete n.failPosition,n))}function h(t,e,n){let r=e,i=t[e],a;switch(i){case"+":{let s=h(t,l(t,e+1),Ye);if(s.type==="error")return s;a=[{name:"pos",position:r}].concat(s.marks),e=s.position;break}case"-":{let s=h(t,l(t,e+1),et);if(s.type==="error")return s;a=[{name:"neg",position:r}].concat(s.marks),e=s.position;break}case"(":{let s=h(t,l(t,e+1),0);if(s.type==="error")return s;switch(e=l(t,s.position),t[e]){case",":{for(a=[{name:"tuple",position:r}].concat(s.marks),e=l(t,e+1);;){if(s=h(t,e,0),s.type==="error")return s;if(e=l(t,s.position),t[e]!==",")break;e=l(t,e+1)}if(t[e]!==")")return{type:"error",position:e};e++,a.push({name:"tuple_end",position:e});break}case")":{e++,a=[{name:"group",position:r}].concat(s.marks);break}default:return{type:"error",position:e}}break}case"!":{let s=h(t,l(t,e+1),Ke);if(s.type==="error")return s;a=[{name:"not",position:r}].concat(s.marks),e=s.position;break}case"{":{let s=fe(t,e);if(s.type==="error")return s;a=s.marks,e=s.position;break}case"[":if(a=[{name:"array",position:e}],e=l(t,e+1),t[e]!=="]")for(;;){t.slice(e,e+3)==="..."&&(a.push({name:"array_splat",position:e}),e=l(t,e+3));let s=h(t,e,0);if(s.type==="error")return s;if(a=a.concat(s.marks),e=s.position,e=l(t,e),t[e]!==","||(e=l(t,e+1),t[e]==="]"))break}if(t[e]==="]")e++,a.push({name:"array_end",position:e});else return{type:"error",position:e};break;case"'":case'"':{let s=xe(t,e);if(s.type==="error")return s;a=s.marks,e=s.position;break}case"^":{for(e++,a=[];t[e]==="."&&t[e+1]==="^";)a.push({name:"dblparent",position:r}),e+=2;a.push({name:"parent",position:r});break}case"@":a=[{name:"this",position:r}],e++;break;case"*":a=[{name:"everything",position:r}],e++;break;case"$":{let s=P(t,e+1,U);s&&(e+=1+s,a=[{name:"param",position:r},{name:"ident",position:r+1},{name:"ident_end",position:e}]);break}default:{let s=P(t,e,ue);if(s){e+=s;let u="integer";if(t[e]==="."){let p=P(t,e+1,ue);p&&(u="float",e+=1+p)}if(t[e]==="e"||t[e]==="E"){u="sci",e++,(t[e]==="+"||t[e]==="-")&&e++;let p=P(t,e,ue);if(!p)return{type:"error",position:e};e+=p}a=[{name:u,position:r},{name:u+"_end",position:e}];break}let m=P(t,e,U);if(m){switch(e+=m,t[e]){case":":case"(":{let u=Ce(t,r,e);if(u.type==="error")return u;a=u.marks,e=u.position;break}default:a=[{name:"this_attr",position:r},{name:"ident",position:r},{name:"ident_end",position:e}]}break}}}if(!a)return{type:"error",position:e};let o=12,c;e:for(;;){let s=l(t,e);if(s===t.length){e=s;break}if(c=ve(t,s),c.type==="success"){for(a.unshift({name:"traverse",position:r});c.type==="success";)a=a.concat(c.marks),e=c.position,c=ve(t,l(t,e));a.push({name:"traversal_end",position:e});continue}switch(t[s]){case"=":{switch(t[s+1]){case">":{if(n>J||o<=J)break e;let p=h(t,l(t,s+2),J);if(p.type==="error")return p;a=a.concat(p.marks),a.unshift({name:"pair",position:r}),e=p.position,o=J;break}case"=":{if(n>g||o<=g)break e;let p=h(t,l(t,s+2),5);if(p.type==="error")return p;a.unshift({name:"comp",position:r}),a.push({name:"op",position:s},{name:"op_end",position:s+2}),a=a.concat(p.marks),e=p.position,o=g;break}default:break e}break}case"+":{if(n>Z||o<Z)break e;let u=h(t,l(t,s+1),Z+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"add",position:r}),e=u.position,o=Z;break}case"-":{if(n>X||o<X)break e;let u=h(t,l(t,s+1),X+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"sub",position:r}),e=u.position,o=X;break}case"*":{if(t[s+1]==="*"){if(n>te||o<=te)break e;let p=h(t,l(t,s+2),te);if(p.type==="error")return p;a=a.concat(p.marks),a.unshift({name:"pow",position:r}),e=p.position,o=te;break}if(n>Y||o<Y)break e;let u=h(t,l(t,s+1),Y+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"mul",position:r}),e=u.position,o=Y;break}case"/":{if(n>K||o<K)break e;let u=h(t,l(t,s+1),K+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"div",position:r}),e=u.position,o=K;break}case"%":{if(n>ee||o<ee)break e;let u=h(t,l(t,s+1),ee+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"mod",position:r}),e=u.position,o=ee;break}case"<":case">":{if(n>g||o<=g)break e;let u=s+1;t[u]==="="&&u++;let p=h(t,l(t,u),g+1);if(p.type==="error")return p;a.unshift({name:"comp",position:r}),a.push({name:"op",position:s},{name:"op_end",position:u}),a=a.concat(p.marks),e=p.position,o=g;break}case"|":{if(t[s+1]==="|"){if(n>Q||o<Q)break e;let u=h(t,l(t,s+2),Q+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"or",position:r}),e=u.position,o=Q}else{if(n>11||o<11)break e;let u=l(t,s+1),p=P(t,u,U);if(!p)return{type:"error",position:u};if(e=u+p,t[e]==="("||t[e]===":"){let _=Ce(t,u,e);if(_.type==="error")return _;a=a.concat(_.marks),a.unshift({name:"pipecall",position:r}),e=_.position,o=11}}break}case"&":{if(t[s+1]!="&"||n>W||o<W)break e;let u=h(t,l(t,s+2),W+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"and",position:r}),e=u.position,o=W;break}case"!":{if(t[s+1]!=="="||n>g||o<g)break e;let u=h(t,l(t,s+2),g+1);if(u.type==="error")return u;a.unshift({name:"comp",position:r}),a.push({name:"op",position:s},{name:"op_end",position:s+2}),a=a.concat(u.marks),e=u.position,o=g;break}case"d":{if(t.slice(s,s+4)!=="desc"||n>F||o<F)break e;a.unshift({name:"desc",position:r}),e=s+4,o=F;break}case"a":{if(t.slice(s,s+3)!=="asc"||n>F||o<F)break e;a.unshift({name:"asc",position:r}),e=s+3,o=F;break}default:switch(nt(t,s,U)){case"in":{if(n>g||o<=g)break e;e=l(t,s+2);let p=!1;t[e]==="("&&(p=!0,e=l(t,e+1));let _=e,D=h(t,e,g+1);if(D.type==="error")return D;if(e=l(t,D.position),t[e]==="."&&t[e+1]==="."){let Re="inc_range";t[e+2]==="."?(Re="exc_range",e=l(t,e+3)):e=l(t,e+2);let ae=h(t,e,g+1);if(ae.type==="error")return ae;a.unshift({name:"in_range",position:r}),a=a.concat({name:Re,position:_},D.marks,ae.marks),e=ae.position}else a.unshift({name:"comp",position:r}),a.push({name:"op",position:s},{name:"op_end",position:s+2}),a=a.concat(D.marks);if(p){if(e=l(t,e),t[e]!==")")return{type:"error",position:e};e++}o=g;break}case"match":{if(n>g||o<=g)break e;let p=h(t,l(t,s+5),g+1);if(p.type==="error")return p;a.unshift({name:"comp",position:r}),a.push({name:"op",position:s},{name:"op_end",position:s+5}),a=a.concat(p.marks),e=p.position,o=4;break}default:break e}}}let d=(c==null?void 0:c.type)==="error"&&c.position;return{type:"success",marks:a,position:e,failPosition:d}}function ve(t,e){let n=e;switch(t[e]){case".":{e=l(t,e+1);let o=e,c=P(t,e,U);return c?(e+=c,{type:"success",marks:[{name:"attr_access",position:n},{name:"ident",position:o},{name:"ident_end",position:e}],position:e}):{type:"error",position:e}}case"-":if(t[e+1]!==">")return{type:"error",position:e};let r=[{name:"deref",position:n}];e+=2;let i=l(t,e),a=P(t,i,U);return a&&(e=i+a,r.push({name:"deref_attr",position:i},{name:"ident",position:i},{name:"ident_end",position:e})),{type:"success",marks:r,position:e};case"[":{if(e=l(t,e+1),t[e]==="]")return{type:"success",marks:[{name:"array_postfix",position:n}],position:e+1};let o=e,c=h(t,e,0);if(c.type==="error")return c;if(e=l(t,c.position),t[e]==="."&&t[e+1]==="."){let d="inc_range";t[e+2]==="."?(d="exc_range",e+=3):e+=2,e=l(t,e);let s=h(t,e,0);return s.type==="error"?s:(e=l(t,s.position),t[e]!=="]"?{type:"error",position:e}:{type:"success",marks:[{name:"slice",position:n},{name:d,position:o}].concat(c.marks,s.marks),position:e+1})}return t[e]!=="]"?{type:"error",position:e}:{type:"success",marks:[{name:"square_bracket",position:n}].concat(c.marks),position:e+1}}case"|":{if(e=l(t,e+1),t[e]==="{"){let o=fe(t,e);return o.type==="error"||o.marks.unshift({name:"projection",position:n}),o}break}case"{":{let o=fe(t,e);return o.type==="error"||o.marks.unshift({name:"projection",position:n}),o}}return{type:"error",position:e}}function Ce(t,e,n){let r=[];if(r.push({name:"func_call",position:e}),t[n]===":"&&t[n+1]===":"){r.push({name:"namespace",position:e}),r.push({name:"ident",position:e},{name:"ident_end",position:n}),n=l(t,n+2);let a=P(t,n,U);if(!a)return{type:"error",position:n};if(r.push({name:"ident",position:n},{name:"ident_end",position:n+a}),n=l(t,n+a),t[n]!=="(")return{type:"error",position:n};n++}else r.push({name:"ident",position:e},{name:"ident_end",position:n}),n=l(t,n+1);let i=n;if(t[n]!==")")for(;;){let a=h(t,n,0);if(a.type==="error")return a;if(r=r.concat(a.marks),i=a.position,n=l(t,a.position),t[n]!==",")break;n=l(t,n+1)}return t[n]!==")"?{type:"error",position:n}:(r.push({name:"func_args_end",position:i}),{type:"success",marks:r,position:n+1})}function fe(t,e){let n=[{name:"object",position:e}];e=l(t,e+1);e:for(;t[e]!=="}";){let r=e;switch(t[e]){case'"':case"'":{let i=xe(t,e);if(i.type==="error")return i;if(e=l(t,i.position),t[e]!==":")return{type:"error",position:e};let a=h(t,l(t,e+1),0);if(a.type==="error")return a;n.push({name:"object_pair",position:r}),n=n.concat(i.marks,a.marks),e=a.position;break}case".":{if(t.slice(e,e+3)==="...")if(e=l(t,e+3),t[e]!=="}"&&t[e]!==","){let i=h(t,e,0);if(i.type==="error")return i;n.push({name:"object_splat",position:r}),n=n.concat(i.marks),e=i.position;break}else{n.push({name:"object_splat_this",position:r});break}break e}default:{let i=h(t,e,0);if(i.type==="error")return i;n=n.concat({name:"object_expr",position:e},i.marks),e=i.position}}if(e=l(t,e),t[e]!==",")break;e=l(t,e+1)}return t[e]!=="}"?{type:"error",position:e}:(e++,n.push({name:"object_end",position:e}),{type:"success",marks:n,position:e})}function xe(t,e){let n=t[e];e=e+1;const r=[{name:"str",position:e}];e:for(;;e++){if(e>t.length)return{type:"error",position:e};switch(t[e]){case n:{r.push({name:"str_end",position:e}),e++;break e}case"\\":r.push({name:"str_pause",position:e}),t[e+1]==="u"?t[e+2]==="{"?(r.push({name:"unicode_hex",position:e+3}),e=t.indexOf("}",e+3),r.push({name:"unicode_hex_end",position:e}),e++):(r.push({name:"unicode_hex",position:e+2}),r.push({name:"unicode_hex_end",position:e+6}),e+=5):(r.push({name:"single_escape",position:e+1}),e+=1),r.push({name:"str_start",position:e+1})}}return{type:"success",marks:r,position:e}}function l(t,e){return e+P(t,e,Xe)}function P(t,e,n){let r=n.exec(t.slice(e));return r?r[0].length:0}function nt(t,e,n){let r=n.exec(t.slice(e));return r?r[0]:null}function O(t,e){return n=>e(t(n))}function le(t){return e=>({type:"Map",base:e,expr:t({type:"This"})})}function rt(t){return e=>({type:"FlatMap",base:e,expr:t({type:"This"})})}function ne(t,e){if(!e)return{type:"a-a",build:t};switch(e.type){case"a-a":return{type:"a-a",build:O(t,e.build)};case"a-b":return{type:"a-b",build:O(t,e.build)};case"b-b":return{type:"a-a",build:O(t,le(e.build))};case"b-a":return{type:"a-a",build:O(t,rt(e.build))};default:throw new Error(`unknown type: ${e.type}`)}}function ye(t,e){if(!e)return{type:"b-b",build:t};switch(e.type){case"a-a":case"b-a":return{type:"b-a",build:O(t,e.build)};case"a-b":case"b-b":return{type:"b-b",build:O(t,e.build)};default:throw new Error(`unknown type: ${e.type}`)}}function at(t,e){if(!e)return{type:"a-b",build:t};switch(e.type){case"a-a":case"b-a":return{type:"a-a",build:O(t,e.build)};case"a-b":case"b-b":return{type:"a-b",build:O(t,e.build)};default:throw new Error(`unknown type: ${e.type}`)}}function it(t,e){if(!e)return{type:"b-b",build:t};switch(e.type){case"a-a":return{type:"a-a",build:O(le(t),e.build)};case"a-b":return{type:"a-b",build:O(le(t),e.build)};case"b-a":return{type:"b-a",build:O(t,e.build)};case"b-b":return{type:"b-b",build:O(t,e.build)};default:throw new Error(`unknown type: ${e.type}`)}}const pe=ot;function ot(t,e){return t.type==="string"&&e.type==="string"||t.type==="boolean"&&e.type==="boolean"||t.type==="null"&&e.type==="null"||t.type==="number"&&e.type==="number"?t.data===e.data:t.type==="datetime"&&e.type==="datetime"?t.data.equals(e.data):!1}const st={"==":function(e,n){return pe(e,n)?k:w},"!=":function(e,n){return pe(e,n)?w:k},">":function(e,n){if(e.type==="stream"||n.type==="stream")return f;const r=M(e.data,n.data);return r===null?f:r>0?k:w},">=":function(e,n){if(e.type==="stream"||n.type==="stream")return f;const r=M(e.data,n.data);return r===null?f:r>=0?k:w},"<":function(e,n){if(e.type==="stream"||n.type==="stream")return f;const r=M(e.data,n.data);return r===null?f:r<0?k:w},"<=":function(e,n){if(e.type==="stream"||n.type==="stream")return f;const r=M(e.data,n.data);return r===null?f:r<=0?k:w},in:async function(e,n){if(n.type==="path")return e.type!=="string"?f:n.data.matches(e.data)?k:w;if(n.isArray()){for await(const r of n)if(pe(e,r))return k;return w}return f},match:async function(e,n){let r=[],i=[];return await z(e,c=>{r=r.concat(ke(c))}),await z(n,c=>{i=i.concat(ze(c))})&&He(r,i)?k:w},"+":function(e,n){return e.type==="datetime"&&n.type==="number"?be(e.data.add(n.data)):e.type==="number"&&n.type==="number"?x(e.data+n.data):e.type==="string"&&n.type==="string"?T(e.data+n.data):e.type==="object"&&n.type==="object"?S(ie(ie({},e.data),n.data)):e.type==="array"&&n.type==="array"?S(e.data.concat(n.data)):e.isArray()&&n.isArray()?new N(async function*(){for await(const r of e)yield r;for await(const r of n)yield r}):f},"-":function(e,n){return e.type==="datetime"&&n.type==="number"?be(e.data.add(-n.data)):e.type==="datetime"&&n.type==="datetime"?x(e.data.difference(n.data)):e.type==="number"&&n.type==="number"?x(e.data-n.data):f},"*":re((t,e)=>t*e),"/":re((t,e)=>t/e),"%":re((t,e)=>t%e),"**":re((t,e)=>Math.pow(t,e))};function re(t){return function(e,n){if(e.type==="number"&&n.type==="number"){const r=t(e.data,n.data);return x(r)}return f}}class H{constructor(e,n,r,i,a){this.isHidden=!1,this.params=e,this.source=n,this.value=r,this.context=i,this.parent=a}createNested(e){return this.isHidden?new H(this.params,this.source,e,this.context,this.parent):new H(this.params,this.source,e,this.context,this)}createHidden(e){const n=this.createNested(e);return n.isHidden=!0,n}}function de(t,e,n=de){return ct[t.type](t,e,n)}function Te(t,e){return"then"in t?t.then(e):e(t)}const ct={This(t,e){return e.value},Everything(t,e){return e.source},Parameter({name:t},e){return S(e.params[t])},Context({key:t},e){if(t==="before"||t==="after")return e.context[t]||f;throw new Error(`unknown context key: ${t}`)},Parent({n:t},e){let n=e;for(let r=0;r<t;r++){if(!n.parent)return f;n=n.parent}return n.value},OpCall({op:t,left:e,right:n},r,i){const a=st[t];if(!a)throw new Error(`Unknown operator: ${t}`);const o=i(e,r),c=i(n,r);return"then"in o||"then"in c?(async()=>a(await o,await c))():a(o,c)},async Select({alternatives:t,fallback:e},n,r){for(const i of t){const a=await r(i.condition,n);if(a.type==="boolean"&&a.data===!0)return r(i.value,n)}return e?r(e,n):f},async InRange({base:t,left:e,right:n,isInclusive:r},i,a){const o=await a(t,i),c=await a(e,i),d=await a(n,i),s=M(await o.get(),await c.get());if(s===null)return f;const m=M(await o.get(),await d.get());return m===null?f:r?s>=0&&m<=0?k:w:s>=0&&m<0?k:w},async Filter({base:t,expr:e},n,r){const i=await r(t,n);return i.isArray()?new N(async function*(){for await(const a of i){const o=n.createNested(a),c=await r(e,o);c.type==="boolean"&&c.data===!0&&(yield a)}}):f},async Projection({base:t,expr:e},n,r){const i=await r(t,n);if(i.type!=="object")return f;const a=n.createNested(i);return r(e,a)},FuncCall({func:t,args:e},n,r){return t(e,n,r)},async PipeFuncCall({func:t,base:e,args:n},r,i){const a=await i(e,r);return t(a,n,r,i)},async AccessAttribute({base:t,name:e},n,r){let i=n.value;return t&&(i=await r(t,n)),i.type==="object"&&i.data.hasOwnProperty(e)?S(i.data[e]):f},async AccessElement({base:t,index:e},n,r){const i=await r(t,n);if(!i.isArray())return f;const a=await i.get(),o=e<0?e+a.length:e;return S(a[o])},async Slice({base:t,left:e,right:n,isInclusive:r},i,a){const o=await a(t,i);if(!o.isArray())return f;const c=await o.get();let d=e,s=n;return d<0&&(d=c.length+d),s<0&&(s=c.length+s),r&&s++,d<0&&(d=0),s<0&&(s=0),S(c.slice(d,s))},async Deref({base:t},e,n){const r=await n(t,e);if(!e.source.isArray()||r.type!=="object")return f;const i=r.data._ref;if(typeof i!="string")return f;for await(const a of e.source)if(a.type==="object"&&i===a.data._id)return a;return f},Value({value:t}){return S(t)},Group({base:t},e,n){return n(t,e)},async Object({attributes:t},e,n){const r={};for(const i of t){const a=i.type;switch(i.type){case"ObjectAttributeValue":{const o=await n(i.value,e);r[i.name]=await o.get();break}case"ObjectConditionalSplat":{const o=await n(i.condition,e);if(o.type!=="boolean"||o.data===!1)continue;const c=await n(i.value,e);c.type==="object"&&Object.assign(r,c.data);break}case"ObjectSplat":{const o=await n(i.value,e);o.type==="object"&&Object.assign(r,o.data);break}default:throw new Error(`Unknown node type: ${a}`)}}return S(r)},Array({elements:t},e,n){return new N(async function*(){for(const r of t){const i=await n(r.value,e);if(r.isSplat){if(i.isArray())for await(const a of i)yield a}else yield i}})},Tuple(){throw new Error("tuples can not be evaluated")},async Or({left:t,right:e},n,r){const i=await r(t,n),a=await r(e,n);return i.type==="boolean"&&i.data===!0||a.type==="boolean"&&a.data===!0?k:i.type!=="boolean"||a.type!=="boolean"?f:w},async And({left:t,right:e},n,r){const i=await r(t,n),a=await r(e,n);return i.type==="boolean"&&i.data===!1||a.type==="boolean"&&a.data===!1?w:i.type!=="boolean"||a.type!=="boolean"?f:k},async Not({base:t},e,n){const r=await n(t,e);return r.type!=="boolean"?f:r.data?w:k},Neg({base:t},e,n){return Te(n(t,e),r=>r.type!=="number"?f:x(-r.data))},Pos({base:t},e,n){return Te(n(t,e),r=>r.type!=="number"?f:x(r.data))},Asc(){return f},Desc(){return f},async ArrayCoerce({base:t},e,n){const r=await n(t,e);return r.isArray()?r:f},async Map({base:t,expr:e},n,r){const i=await r(t,n);return i.isArray()?new N(async function*(){for await(const a of i){const o=n.createHidden(a);yield await r(e,o)}}):f},async FlatMap({base:t,expr:e},n,r){const i=await r(t,n);return i.isArray()?new N(async function*(){for await(const a of i){const o=n.createHidden(a),c=await r(e,o);if(c.isArray())for await(const d of c)yield d;else yield c}}):f}};function ut(t,e={}){const n=S(e.root),r=S(e.dataset),i=ie({},e.params),a=new H(i,r,n,{timestamp:e.timestamp||new Date,identity:e.identity===void 0?"me":e.identity,sanity:e.sanity,after:e.after?S(e.after):null,before:e.before?S(e.before):null},null);return de(t,a)}function ft(t){switch(t.type){case"Group":case"Value":case"Parameter":case"Pos":case"Neg":return!0;case"OpCall":switch(t.op){case"+":case"-":case"*":case"/":case"%":case"**":return!0;default:return!1}default:return!1}}const lt=new H({},f,f,{timestamp:new Date(0),identity:"me",before:null,after:null},null);class yt extends Error{constructor(){super(...arguments);this.name="ConstantEvaluateError"}}function me(t){try{return Oe(t)}catch(e){if(e.name==="ConstantEvaluateError")return null;throw e}}function Oe(t){if(!ft(t))throw new yt("cannot constant evaluate");const e=de(t,lt,Oe);if("then"in e)throw new Error("BUG: constant evaluate should never return a promise");return e}const pt={"'":"'",'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:` | ||
`,r:"\r",t:" "};function dt(t){const e=parseInt(t,16);return String.fromCharCode(e)}class v extends Error{constructor(){super(...arguments);this.name="GroqQueryError"}}const y={group(t){const e=t.process(y);return{type:"Group",base:e}},everything(){return{type:"Everything"}},this(){return{type:"This"}},parent(){return{type:"Parent",n:1}},dblparent(t){const e=t.process(y);return{type:"Parent",n:e.n+1}},traverse(t){const e=t.process(y),n=[];for(;t.getMark().name!=="traversal_end";)n.push(t.process(ht));t.shift();let r=null;for(let i=n.length-1;i>=0;i--)r=n[i](r);if((e.type==="Everything"||e.type==="Array"||e.type==="PipeFuncCall")&&(r=ne(i=>i,r)),r===null)throw new Error("BUG: unexpected empty traversal");return r.build(e)},this_attr(t){const e=t.processString();return e==="null"?{type:"Value",value:null}:e==="true"?{type:"Value",value:!0}:e==="false"?{type:"Value",value:!1}:{type:"AccessAttribute",name:e}},neg(t){const e=t.process(y);return{type:"Neg",base:e}},pos(t){const e=t.process(y);return{type:"Pos",base:e}},add(t){const e=t.process(y),n=t.process(y);return{type:"OpCall",op:"+",left:e,right:n}},sub(t){const e=t.process(y),n=t.process(y);return{type:"OpCall",op:"-",left:e,right:n}},mul(t){const e=t.process(y),n=t.process(y);return{type:"OpCall",op:"*",left:e,right:n}},div(t){const e=t.process(y),n=t.process(y);return{type:"OpCall",op:"/",left:e,right:n}},mod(t){const e=t.process(y),n=t.process(y);return{type:"OpCall",op:"%",left:e,right:n}},pow(t){const e=t.process(y),n=t.process(y);return{type:"OpCall",op:"**",left:e,right:n}},comp(t){const e=t.process(y),n=t.processString(),r=t.process(y);return{type:"OpCall",op:n,left:e,right:r}},in_range(t){const e=t.process(y),n=t.getMark().name==="inc_range";t.shift();const r=t.process(y),i=t.process(y);return{type:"InRange",base:e,left:r,right:i,isInclusive:n}},str(t){let e="";e:for(;t.hasMark();){const n=t.getMark();switch(n.name){case"str_end":e+=t.processStringEnd();break e;case"str_pause":e+=t.processStringEnd();break;case"str_start":t.shift();break;case"single_escape":{const r=t.slice(1);t.shift(),e+=pt[r];break}case"unicode_hex":t.shift(),e+=dt(t.processStringEnd());break;default:throw new Error(`unexpected mark: ${n.name}`)}}return{type:"Value",value:e}},integer(t){const e=t.processStringEnd();return{type:"Value",value:Number(e)}},float(t){const e=t.processStringEnd();return{type:"Value",value:Number(e)}},sci(t){const e=t.processStringEnd();return{type:"Value",value:Number(e)}},object(t){const e=[];for(;t.getMark().name!=="object_end";)e.push(t.process(mt));return t.shift(),{type:"Object",attributes:e}},array(t){const e=[];for(;t.getMark().name!=="array_end";){let n=!1;t.getMark().name==="array_splat"&&(n=!0,t.shift());const r=t.process(y);e.push({type:"ArrayElement",value:r,isSplat:n})}return t.shift(),{type:"Array",elements:e}},tuple(t){const e=[];for(;t.getMark().name!=="tuple_end";)e.push(t.process(y));return t.shift(),{type:"Tuple",members:e}},func_call(t){let e="global";t.getMark().name==="namespace"&&(t.shift(),e=t.processString());const n=t.processString();if(e==="global"&&n==="select"){const o={type:"Select",alternatives:[]};for(;t.getMark().name!=="func_args_end";)if(t.getMark().name==="pair"){if(o.fallback)throw new v("unexpected argument to select()");t.shift();const c=t.process(y),d=t.process(y);o.alternatives.push({type:"SelectAlternative",condition:c,value:d})}else{if(o.fallback)throw new v("unexpected argument to select()");const c=t.process(y);o.fallback=c}return t.shift(),o}const r=[];for(;t.getMark().name!=="func_args_end";)r.push(t.process(y));if(t.shift(),e==="global"&&(n==="before"||n==="after")&&t.parseOptions.mode==="delta")return{type:"Context",key:n};if(e==="global"&&n==="boost"&&!t.allowBoost)throw new v("unexpected boost");const i=Ze[e];if(!i)throw new v(`Undefined namespace: ${e}`);const a=i[n];if(!a)throw new v(`Undefined function: ${n}`);if(a.arity!==void 0&&je(n,a.arity,r.length),a.mode!==void 0&&a.mode!==t.parseOptions.mode)throw new v(`Undefined function: ${n}`);return{type:"FuncCall",func:a,name:n,args:r}},pipecall(t){const e=t.process(y);t.shift();let n="global";if(t.getMark().name==="namespace"&&(t.shift(),n=t.processString()),n!=="global")throw new v(`Undefined namespace: ${n}`);const r=t.processString(),i=[],a=t.allowBoost;for(r==="score"&&(t.allowBoost=!0);;){const c=t.getMark().name;if(c==="func_args_end")break;if(r==="order"){if(c==="asc"){t.shift(),i.push({type:"Asc",base:t.process(y)});continue}else if(c==="desc"){t.shift(),i.push({type:"Desc",base:t.process(y)});continue}}i.push(t.process(y))}t.shift(),t.allowBoost=a;const o=B[r];if(!o)throw new v(`Undefined pipe function: ${r}`);return o.arity&&je(r,o.arity,i.length),{type:"PipeFuncCall",func:o,base:e,name:r,args:i}},pair(t){throw new v("unexpected =>")},and(t){const e=t.process(y),n=t.process(y);return{type:"And",left:e,right:n}},or(t){const e=t.process(y),n=t.process(y);return{type:"Or",left:e,right:n}},not(t){const e=t.process(y);return{type:"Not",base:e}},asc(t){throw new v("unexpected asc")},desc(t){throw new v("unexpected desc")},param(t){const e=t.processString();return t.parseOptions.params&&t.parseOptions.params.hasOwnProperty(e)?{type:"Value",value:t.parseOptions.params[e]}:{type:"Parameter",name:e}}},mt={object_expr(t){if(t.getMark().name==="pair"){t.shift();const n=t.process(y),r=t.process(y);return{type:"ObjectConditionalSplat",condition:n,value:r}}const e=t.process(y);return{type:"ObjectAttributeValue",name:Pe(e),value:e}},object_pair(t){const e=t.process(y);if(e.type!=="Value")throw new Error("name must be string");const n=t.process(y);return{type:"ObjectAttributeValue",name:e.value,value:n}},object_splat(t){const e=t.process(y);return{type:"ObjectSplat",value:e}},object_splat_this(){return{type:"ObjectSplat",value:{type:"This"}}}},ht={square_bracket(t){const e=t.process(y),n=me(e);return n&&n.type==="number"?r=>at(i=>({type:"AccessElement",base:i,index:n.data}),r):n&&n.type==="string"?r=>ye(i=>({type:"AccessAttribute",base:i,name:n.data}),r):r=>ne(i=>({type:"Filter",base:i,expr:e}),r)},slice(t){const e=t.getMark().name==="inc_range";t.shift();const n=t.process(y),r=t.process(y),i=me(n),a=me(r);if(!i||!a||i.type!=="number"||a.type!=="number")throw new v("slicing must use constant numbers");return o=>ne(c=>({type:"Slice",base:c,left:i.data,right:a.data,isInclusive:e}),o)},projection(t){const e=t.process(y);return n=>it(r=>({type:"Projection",base:r,expr:e}),n)},attr_access(t){const e=t.processString();return n=>ye(r=>({type:"AccessAttribute",base:r,name:e}),n)},deref(t){let e=null;t.getMark().name==="deref_attr"&&(t.shift(),e=t.processString());const n=r=>e?{type:"AccessAttribute",base:r,name:e}:r;return r=>ye(i=>n({type:"Deref",base:i}),r)},array_postfix(t){return e=>ne(n=>({type:"ArrayCoerce",base:n}),e)}};function Pe(t){if(t.type==="AccessAttribute"&&!t.base)return t.name;if(t.type==="Deref"||t.type==="Map"||t.type==="Projection"||t.type==="Slice"||t.type==="Filter"||t.type==="AccessElement"||t.type==="ArrayCoerce")return Pe(t.base);throw new v(`Cannot determine property key for type: ${t.type}`)}function je(t,e,n){if(typeof e=="number"){if(n!==e)throw new v(`Incorrect number of arguments to function ${t}(). Expected ${e}, got ${n}.`)}else if(e&&!e(n))throw new v(`Incorrect number of arguments to function ${t}().`)}class bt extends Error{constructor(e){super(`Syntax error in GROQ query at position ${e}`);this.name="GroqSyntaxError",this.position=e}}function wt(t,e={}){const n=tt(t);if(n.type==="error")throw new bt(n.position);return new A(t,n.marks,e).process(y)}E.evaluate=ut,E.parse=wt,Object.defineProperty(E,"__esModule",{value:!0}),E[Symbol.toStringTag]="Module"}); | ||
`)}return null}async function Ae(t,e=[]){for await(const n of t)if(n.type==="object"){const r=Se(n.data);r!==null&&e.push(r)}else n.isArray()&&await Ae(n,e);return e}function Se(t){if(typeof t._type!="string")return null;const e=t.children;if(!Array.isArray(e))return null;let n="";for(const r of e)r&&typeof r=="object"&&typeof r._type=="string"&&r._type==="span"&&typeof r.text=="string"&&(n+=r.text);return n}function oe(t,e){switch(I(t)){case"array":for(const n of t)if(oe(n,e))return!0;break;case"object":if(t._ref)return e.has(t._ref);for(const n of Object.values(t))if(oe(n,e))return!0;break}return!1}function Qe(t){let e=0;for(let n=0;n<t.length;n++){const r=t.charCodeAt(n);r>=55296&&r<=56319||e++}return e}const b={};b.coalesce=async function(e,n,r){for(const i of e){const a=await r(i,n);if(a.type!=="null")return a}return f},b.count=async function(e,n,r){const i=await r(e[0],n);if(!i.isArray())return f;let a=0;for await(const o of i)a++;return x(a)},b.count.arity=1,b.dateTime=async function(e,n,r){const i=await r(e[0],n);return i.type==="datetime"?i:i.type!=="string"?f:q.parseToValue(i.data)},b.dateTime.arity=1,b.defined=async function(e,n,r){return(await r(e[0],n)).type==="null"?w:k},b.defined.arity=1,b.identity=async function(e,n){return T(n.context.identity)},b.identity.arity=0,b.length=async function(e,n,r){const i=await r(e[0],n);if(i.type==="string")return x(Qe(i.data));if(i.isArray()){let a=0;for await(const o of i)a++;return x(a)}return f},b.length.arity=1,b.path=async function(e,n,r){const i=await r(e[0],n);return i.type!=="string"?f:Ne(new he(i.data))},b.path.arity=1,b.string=async function(e,n,r){const i=await r(e[0],n);switch(i.type){case"number":case"string":case"boolean":case"datetime":return T(`${i.data}`);default:return f}},b.string.arity=1,b.references=async function(e,n,r){const i=new Set;for(const o of e){const c=await r(o,n);if(c.type==="string")i.add(c.data);else if(c.isArray())for await(const d of c)d.type==="string"&&i.add(d.data)}if(i.size===0)return w;const a=await n.value.get();return oe(a,i)?k:w},b.references.arity=t=>t>=1,b.round=async function(e,n,r){const i=await r(e[0],n);if(i.type!=="number")return f;const a=i.data;let o=0;if(e.length===2){const c=await r(e[1],n);if(c.type!=="number"||c.data<0||!Number.isInteger(c.data))return f;o=c.data}return o===0?a<0?x(-Math.round(-a)):x(Math.round(a)):x(Number(a.toFixed(o)))},b.round.arity=t=>t>=1&&t<=2,b.now=async function(e,n){return T(n.context.timestamp.toISOString())},b.now.arity=0,b.boost=async function(){throw new Error("unexpected boost call")},b.boost.arity=2;const $={};$.lower=async function(t,e,n){const r=await n(t[0],e);return r.type!=="string"?f:T(r.data.toLowerCase())},$.lower.arity=1,$.upper=async function(t,e,n){const r=await n(t[0],e);return r.type!=="string"?f:T(r.data.toUpperCase())},$.upper.arity=1,b.lower=$.lower,b.upper=$.upper;const se={};se.text=async function(t,e,n){const r=await n(t[0],e),i=await Je(r);return i===null?f:T(i)},se.text.arity=1;const ce={};ce.projectId=async function(t,e){return e.context.sanity?T(e.context.sanity.projectId):f},ce.dataset=async function(t,e){return e.context.sanity?T(e.context.sanity.dataset):f};const B={};B.order=async function(e,n,r,i){if(await!0,!e.isArray())return f;const a=[],o=[];let c=0;for(let m of n){let u="asc";m.type==="Desc"?(u="desc",m=m.base):m.type==="Asc"&&(m=m.base),a.push(m),o.push(u),c++}const d=[];let s=0;for await(const m of e){const u=r.createNested(m),p=[await m.get(),s];for(let _=0;_<c;_++){const D=await i(a[_],u);p.push(await D.get())}d.push(p),s++}return d.sort((m,u)=>{for(let p=0;p<c;p++){let _=Le(m[p+2],u[p+2]);if(o[p]==="desc"&&(_=-_),_!==0)return _}return m[1]-u[1]}),S(d.map(m=>m[0]))},B.order.arity=t=>t>=1,B.score=async function(e,n,r,i){if(!e.isArray())return f;const a=[],o=[];for await(const c of e){if(c.type!=="object"){a.push(await c.get());continue}const d=r.createNested(c);let s=typeof c.data._score=="number"?c.data._score:0;for(const u of n)s+=await L(u,d,i);const m=Object.assign({},c.data,{_score:s});o.push(m)}return o.sort((c,d)=>d._score-c._score),S(o)},B.score.arity=t=>t>=1;const R={};R.operation=async function(t,e){const n=e.context.before!==null,r=e.context.after!==null;return n&&r?T("update"):r?T("create"):n?T("delete"):f},R.changedAny=()=>{throw new Error("not implemented")},R.changedAny.arity=1,R.changedAny.mode="delta",R.changedOnly=()=>{throw new Error("not implemented")},R.changedOnly.arity=1,R.changedOnly.mode="delta";const G={};G.changedAny=()=>{throw new Error("not implemented")},G.changedAny.arity=3,G.changedOnly=()=>{throw new Error("not implemented")},G.changedOnly.arity=3;const We={global:b,string:$,pt:se,delta:R,diff:G,sanity:ce},Ze=/^([\t\n\v\f\r \u0085\u00A0]|(\/\/[^\n]*\n))+/,ue=/^\d+/,U=/^[a-zA-Z_][a-zA-Z_0-9]*/,J=1,Q=2,W=3,g=4,F=4,Z=6,X=6,Y=7,K=7,ee=7,te=8,Xe=10,Ye=10,Ke=8;function et(t){let e=0;e=l(t,e);let n=h(t,e,0);return n.type==="error"?n:(e=l(t,n.position),e!==t.length?(n.failPosition&&(e=n.failPosition-1),{type:"error",position:e}):(delete n.position,delete n.failPosition,n))}function h(t,e,n){let r=e,i=t[e],a;switch(i){case"+":{let s=h(t,l(t,e+1),Xe);if(s.type==="error")return s;a=[{name:"pos",position:r}].concat(s.marks),e=s.position;break}case"-":{let s=h(t,l(t,e+1),Ke);if(s.type==="error")return s;a=[{name:"neg",position:r}].concat(s.marks),e=s.position;break}case"(":{let s=h(t,l(t,e+1),0);if(s.type==="error")return s;switch(e=l(t,s.position),t[e]){case",":{for(a=[{name:"tuple",position:r}].concat(s.marks),e=l(t,e+1);;){if(s=h(t,e,0),s.type==="error")return s;if(e=l(t,s.position),t[e]!==",")break;e=l(t,e+1)}if(t[e]!==")")return{type:"error",position:e};e++,a.push({name:"tuple_end",position:e});break}case")":{e++,a=[{name:"group",position:r}].concat(s.marks);break}default:return{type:"error",position:e}}break}case"!":{let s=h(t,l(t,e+1),Ye);if(s.type==="error")return s;a=[{name:"not",position:r}].concat(s.marks),e=s.position;break}case"{":{let s=fe(t,e);if(s.type==="error")return s;a=s.marks,e=s.position;break}case"[":if(a=[{name:"array",position:e}],e=l(t,e+1),t[e]!=="]")for(;;){t.slice(e,e+3)==="..."&&(a.push({name:"array_splat",position:e}),e=l(t,e+3));let s=h(t,e,0);if(s.type==="error")return s;if(a=a.concat(s.marks),e=s.position,e=l(t,e),t[e]!==","||(e=l(t,e+1),t[e]==="]"))break}if(t[e]==="]")e++,a.push({name:"array_end",position:e});else return{type:"error",position:e};break;case"'":case'"':{let s=tt(t,e);if(s.type==="error")return s;a=s.marks,e=s.position;break}case"^":{for(e++,a=[];t[e]==="."&&t[e+1]==="^";)a.push({name:"dblparent",position:r}),e+=2;a.push({name:"parent",position:r});break}case"@":a=[{name:"this",position:r}],e++;break;case"*":a=[{name:"everything",position:r}],e++;break;case"$":{let s=P(t,e+1,U);s&&(e+=1+s,a=[{name:"param",position:r},{name:"ident",position:r+1},{name:"ident_end",position:e}]);break}default:{let s=P(t,e,ue);if(s){e+=s;let u="integer";if(t[e]==="."){let p=P(t,e+1,ue);p&&(u="float",e+=1+p)}if(t[e]==="e"||t[e]==="E"){u="sci",e++,(t[e]==="+"||t[e]==="-")&&e++;let p=P(t,e,ue);if(!p)return{type:"error",position:e};e+=p}a=[{name:u,position:r},{name:u+"_end",position:e}];break}let m=P(t,e,U);if(m){switch(e+=m,t[e]){case":":case"(":{let u=Ce(t,r,e);if(u.type==="error")return u;a=u.marks,e=u.position;break}default:a=[{name:"this_attr",position:r},{name:"ident",position:r},{name:"ident_end",position:e}]}break}}}if(!a)return{type:"error",position:e};let o=12,c;e:for(;;){let s=l(t,e);if(s===t.length){e=s;break}if(c=ve(t,s),c.type==="success"){for(a.unshift({name:"traverse",position:r});c.type==="success";)a=a.concat(c.marks),e=c.position,c=ve(t,l(t,e));a.push({name:"traversal_end",position:e});continue}switch(t[s]){case"=":{switch(t[s+1]){case">":{if(n>J||o<=J)break e;let p=h(t,l(t,s+2),J);if(p.type==="error")return p;a=a.concat(p.marks),a.unshift({name:"pair",position:r}),e=p.position,o=J;break}case"=":{if(n>g||o<=g)break e;let p=h(t,l(t,s+2),5);if(p.type==="error")return p;a.unshift({name:"comp",position:r}),a.push({name:"op",position:s},{name:"op_end",position:s+2}),a=a.concat(p.marks),e=p.position,o=g;break}default:break e}break}case"+":{if(n>Z||o<Z)break e;let u=h(t,l(t,s+1),Z+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"add",position:r}),e=u.position,o=Z;break}case"-":{if(n>X||o<X)break e;let u=h(t,l(t,s+1),X+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"sub",position:r}),e=u.position,o=X;break}case"*":{if(t[s+1]==="*"){if(n>te||o<=te)break e;let p=h(t,l(t,s+2),te);if(p.type==="error")return p;a=a.concat(p.marks),a.unshift({name:"pow",position:r}),e=p.position,o=te;break}if(n>Y||o<Y)break e;let u=h(t,l(t,s+1),Y+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"mul",position:r}),e=u.position,o=Y;break}case"/":{if(n>K||o<K)break e;let u=h(t,l(t,s+1),K+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"div",position:r}),e=u.position,o=K;break}case"%":{if(n>ee||o<ee)break e;let u=h(t,l(t,s+1),ee+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"mod",position:r}),e=u.position,o=ee;break}case"<":case">":{if(n>g||o<=g)break e;let u=s+1;t[u]==="="&&u++;let p=h(t,l(t,u),g+1);if(p.type==="error")return p;a.unshift({name:"comp",position:r}),a.push({name:"op",position:s},{name:"op_end",position:u}),a=a.concat(p.marks),e=p.position,o=g;break}case"|":{if(t[s+1]==="|"){if(n>Q||o<Q)break e;let u=h(t,l(t,s+2),Q+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"or",position:r}),e=u.position,o=Q}else{if(n>11||o<11)break e;let u=l(t,s+1),p=P(t,u,U);if(!p)return{type:"error",position:u};if(e=u+p,t[e]==="("||t[e]===":"){let _=Ce(t,u,e);if(_.type==="error")return _;a=a.concat(_.marks),a.unshift({name:"pipecall",position:r}),e=_.position,o=11}}break}case"&":{if(t[s+1]!="&"||n>W||o<W)break e;let u=h(t,l(t,s+2),W+1);if(u.type==="error")return u;a=a.concat(u.marks),a.unshift({name:"and",position:r}),e=u.position,o=W;break}case"!":{if(t[s+1]!=="="||n>g||o<g)break e;let u=h(t,l(t,s+2),g+1);if(u.type==="error")return u;a.unshift({name:"comp",position:r}),a.push({name:"op",position:s},{name:"op_end",position:s+2}),a=a.concat(u.marks),e=u.position,o=g;break}case"d":{if(t.slice(s,s+4)!=="desc"||n>F||o<F)break e;a.unshift({name:"desc",position:r}),e=s+4,o=F;break}case"a":{if(t.slice(s,s+3)!=="asc"||n>F||o<F)break e;a.unshift({name:"asc",position:r}),e=s+3,o=F;break}default:switch(nt(t,s,U)){case"in":{if(n>g||o<=g)break e;e=l(t,s+2);let p=!1;t[e]==="("&&(p=!0,e=l(t,e+1));let _=e,D=h(t,e,g+1);if(D.type==="error")return D;if(e=l(t,D.position),t[e]==="."&&t[e+1]==="."){let je="inc_range";t[e+2]==="."?(je="exc_range",e=l(t,e+3)):e=l(t,e+2);let ae=h(t,e,g+1);if(ae.type==="error")return ae;a.unshift({name:"in_range",position:r}),a=a.concat({name:je,position:_},D.marks,ae.marks),e=ae.position}else a.unshift({name:"comp",position:r}),a.push({name:"op",position:s},{name:"op_end",position:s+2}),a=a.concat(D.marks);if(p){if(e=l(t,e),t[e]!==")")return{type:"error",position:e};e++}o=g;break}case"match":{if(n>g||o<=g)break e;let p=h(t,l(t,s+5),g+1);if(p.type==="error")return p;a.unshift({name:"comp",position:r}),a.push({name:"op",position:s},{name:"op_end",position:s+5}),a=a.concat(p.marks),e=p.position,o=4;break}default:break e}}}let d=(c==null?void 0:c.type)==="error"&&c.position;return{type:"success",marks:a,position:e,failPosition:d}}function ve(t,e){let n=e;switch(t[e]){case".":{e=l(t,e+1);let o=e,c=P(t,e,U);return c?(e+=c,{type:"success",marks:[{name:"attr_access",position:n},{name:"ident",position:o},{name:"ident_end",position:e}],position:e}):{type:"error",position:e}}case"-":if(t[e+1]!==">")return{type:"error",position:e};let r=[{name:"deref",position:n}];e+=2;let i=l(t,e),a=P(t,i,U);return a&&(e=i+a,r.push({name:"deref_attr",position:i},{name:"ident",position:i},{name:"ident_end",position:e})),{type:"success",marks:r,position:e};case"[":{if(e=l(t,e+1),t[e]==="]")return{type:"success",marks:[{name:"array_postfix",position:n}],position:e+1};let o=e,c=h(t,e,0);if(c.type==="error")return c;if(e=l(t,c.position),t[e]==="."&&t[e+1]==="."){let d="inc_range";t[e+2]==="."?(d="exc_range",e+=3):e+=2,e=l(t,e);let s=h(t,e,0);return s.type==="error"?s:(e=l(t,s.position),t[e]!=="]"?{type:"error",position:e}:{type:"success",marks:[{name:"slice",position:n},{name:d,position:o}].concat(c.marks,s.marks),position:e+1})}return t[e]!=="]"?{type:"error",position:e}:{type:"success",marks:[{name:"square_bracket",position:n}].concat(c.marks),position:e+1}}case"|":{if(e=l(t,e+1),t[e]==="{"){let o=fe(t,e);return o.type==="error"||o.marks.unshift({name:"projection",position:n}),o}break}case"{":{let o=fe(t,e);return o.type==="error"||o.marks.unshift({name:"projection",position:n}),o}}return{type:"error",position:e}}function Ce(t,e,n){let r=[];if(r.push({name:"func_call",position:e}),t[n]===":"&&t[n+1]===":"){r.push({name:"namespace",position:e}),r.push({name:"ident",position:e},{name:"ident_end",position:n}),n=l(t,n+2);let a=P(t,n,U);if(!a)return{type:"error",position:n};if(r.push({name:"ident",position:n},{name:"ident_end",position:n+a}),n=l(t,n+a),t[n]!=="(")return{type:"error",position:n};n++}else r.push({name:"ident",position:e},{name:"ident_end",position:n}),n=l(t,n+1);let i=n;if(t[n]!==")")for(;;){let a=h(t,n,0);if(a.type==="error")return a;if(r=r.concat(a.marks),i=a.position,n=l(t,a.position),t[n]!==","||(n=l(t,n+1),t[n]===")"))break}return t[n]!==")"?{type:"error",position:n}:(r.push({name:"func_args_end",position:i}),{type:"success",marks:r,position:n+1})}function fe(t,e){let n=[{name:"object",position:e}];for(e=l(t,e+1);t[e]!=="}";){let r=e;if(t.slice(e,e+3)==="...")if(e=l(t,e+3),t[e]!=="}"&&t[e]!==","){let i=h(t,e,0);if(i.type==="error")return i;n.push({name:"object_splat",position:r}),n=n.concat(i.marks),e=i.position}else n.push({name:"object_splat_this",position:r});else{let i=h(t,e,0);if(i.type==="error")return i;let a=l(t,i.position);if(i.marks[0].name==="str"&&t[a]===":"){let o=h(t,l(t,a+1),0);if(o.type==="error")return o;n.push({name:"object_pair",position:r}),n=n.concat(i.marks,o.marks),e=o.position}else n=n.concat({name:"object_expr",position:e},i.marks),e=i.position}if(e=l(t,e),t[e]!==",")break;e=l(t,e+1)}return t[e]!=="}"?{type:"error",position:e}:(e++,n.push({name:"object_end",position:e}),{type:"success",marks:n,position:e})}function tt(t,e){let n=t[e];e=e+1;const r=[{name:"str",position:e}];e:for(;;e++){if(e>t.length)return{type:"error",position:e};switch(t[e]){case n:{r.push({name:"str_end",position:e}),e++;break e}case"\\":r.push({name:"str_pause",position:e}),t[e+1]==="u"?t[e+2]==="{"?(r.push({name:"unicode_hex",position:e+3}),e=t.indexOf("}",e+3),r.push({name:"unicode_hex_end",position:e}),e++):(r.push({name:"unicode_hex",position:e+2}),r.push({name:"unicode_hex_end",position:e+6}),e+=5):(r.push({name:"single_escape",position:e+1}),e+=1),r.push({name:"str_start",position:e+1})}}return{type:"success",marks:r,position:e}}function l(t,e){return e+P(t,e,Ze)}function P(t,e,n){let r=n.exec(t.slice(e));return r?r[0].length:0}function nt(t,e,n){let r=n.exec(t.slice(e));return r?r[0]:null}function O(t,e){return n=>e(t(n))}function le(t){return e=>({type:"Map",base:e,expr:t({type:"This"})})}function rt(t){return e=>({type:"FlatMap",base:e,expr:t({type:"This"})})}function ne(t,e){if(!e)return{type:"a-a",build:t};switch(e.type){case"a-a":return{type:"a-a",build:O(t,e.build)};case"a-b":return{type:"a-b",build:O(t,e.build)};case"b-b":return{type:"a-a",build:O(t,le(e.build))};case"b-a":return{type:"a-a",build:O(t,rt(e.build))};default:throw new Error(`unknown type: ${e.type}`)}}function ye(t,e){if(!e)return{type:"b-b",build:t};switch(e.type){case"a-a":case"b-a":return{type:"b-a",build:O(t,e.build)};case"a-b":case"b-b":return{type:"b-b",build:O(t,e.build)};default:throw new Error(`unknown type: ${e.type}`)}}function at(t,e){if(!e)return{type:"a-b",build:t};switch(e.type){case"a-a":case"b-a":return{type:"a-a",build:O(t,e.build)};case"a-b":case"b-b":return{type:"a-b",build:O(t,e.build)};default:throw new Error(`unknown type: ${e.type}`)}}function it(t,e){if(!e)return{type:"b-b",build:t};switch(e.type){case"a-a":return{type:"a-a",build:O(le(t),e.build)};case"a-b":return{type:"a-b",build:O(le(t),e.build)};case"b-a":return{type:"b-a",build:O(t,e.build)};case"b-b":return{type:"b-b",build:O(t,e.build)};default:throw new Error(`unknown type: ${e.type}`)}}const pe=ot;function ot(t,e){return t.type==="string"&&e.type==="string"||t.type==="boolean"&&e.type==="boolean"||t.type==="null"&&e.type==="null"||t.type==="number"&&e.type==="number"?t.data===e.data:t.type==="datetime"&&e.type==="datetime"?t.data.equals(e.data):!1}const st={"==":function(e,n){return pe(e,n)?k:w},"!=":function(e,n){return pe(e,n)?w:k},">":function(e,n){if(e.type==="stream"||n.type==="stream")return f;const r=M(e.data,n.data);return r===null?f:r>0?k:w},">=":function(e,n){if(e.type==="stream"||n.type==="stream")return f;const r=M(e.data,n.data);return r===null?f:r>=0?k:w},"<":function(e,n){if(e.type==="stream"||n.type==="stream")return f;const r=M(e.data,n.data);return r===null?f:r<0?k:w},"<=":function(e,n){if(e.type==="stream"||n.type==="stream")return f;const r=M(e.data,n.data);return r===null?f:r<=0?k:w},in:async function(e,n){if(n.type==="path")return e.type!=="string"?f:n.data.matches(e.data)?k:w;if(n.isArray()){for await(const r of n)if(pe(e,r))return k;return w}return f},match:async function(e,n){let r=[],i=[];return await z(e,c=>{r=r.concat(ke(c))}),await z(n,c=>{i=i.concat(He(c))})&&Ge(r,i)?k:w},"+":function(e,n){return e.type==="datetime"&&n.type==="number"?be(e.data.add(n.data)):e.type==="number"&&n.type==="number"?x(e.data+n.data):e.type==="string"&&n.type==="string"?T(e.data+n.data):e.type==="object"&&n.type==="object"?S(ie(ie({},e.data),n.data)):e.type==="array"&&n.type==="array"?S(e.data.concat(n.data)):e.isArray()&&n.isArray()?new N(async function*(){for await(const r of e)yield r;for await(const r of n)yield r}):f},"-":function(e,n){return e.type==="datetime"&&n.type==="number"?be(e.data.add(-n.data)):e.type==="datetime"&&n.type==="datetime"?x(e.data.difference(n.data)):e.type==="number"&&n.type==="number"?x(e.data-n.data):f},"*":re((t,e)=>t*e),"/":re((t,e)=>t/e),"%":re((t,e)=>t%e),"**":re((t,e)=>Math.pow(t,e))};function re(t){return function(e,n){if(e.type==="number"&&n.type==="number"){const r=t(e.data,n.data);return x(r)}return f}}class H{constructor(e,n,r,i,a){this.isHidden=!1,this.params=e,this.source=n,this.value=r,this.context=i,this.parent=a}createNested(e){return this.isHidden?new H(this.params,this.source,e,this.context,this.parent):new H(this.params,this.source,e,this.context,this)}createHidden(e){const n=this.createNested(e);return n.isHidden=!0,n}}function de(t,e,n=de){return ct[t.type](t,e,n)}function xe(t,e){return"then"in t?t.then(e):e(t)}const ct={This(t,e){return e.value},Everything(t,e){return e.source},Parameter({name:t},e){return S(e.params[t])},Context({key:t},e){if(t==="before"||t==="after")return e.context[t]||f;throw new Error(`unknown context key: ${t}`)},Parent({n:t},e){let n=e;for(let r=0;r<t;r++){if(!n.parent)return f;n=n.parent}return n.value},OpCall({op:t,left:e,right:n},r,i){const a=st[t];if(!a)throw new Error(`Unknown operator: ${t}`);const o=i(e,r),c=i(n,r);return"then"in o||"then"in c?(async()=>a(await o,await c))():a(o,c)},async Select({alternatives:t,fallback:e},n,r){for(const i of t){const a=await r(i.condition,n);if(a.type==="boolean"&&a.data===!0)return r(i.value,n)}return e?r(e,n):f},async InRange({base:t,left:e,right:n,isInclusive:r},i,a){const o=await a(t,i),c=await a(e,i),d=await a(n,i),s=M(await o.get(),await c.get());if(s===null)return f;const m=M(await o.get(),await d.get());return m===null?f:r?s>=0&&m<=0?k:w:s>=0&&m<0?k:w},async Filter({base:t,expr:e},n,r){const i=await r(t,n);return i.isArray()?new N(async function*(){for await(const a of i){const o=n.createNested(a),c=await r(e,o);c.type==="boolean"&&c.data===!0&&(yield a)}}):f},async Projection({base:t,expr:e},n,r){const i=await r(t,n);if(i.type!=="object")return f;const a=n.createNested(i);return r(e,a)},FuncCall({func:t,args:e},n,r){return t(e,n,r)},async PipeFuncCall({func:t,base:e,args:n},r,i){const a=await i(e,r);return t(a,n,r,i)},async AccessAttribute({base:t,name:e},n,r){let i=n.value;return t&&(i=await r(t,n)),i.type==="object"&&i.data.hasOwnProperty(e)?S(i.data[e]):f},async AccessElement({base:t,index:e},n,r){const i=await r(t,n);if(!i.isArray())return f;const a=await i.get(),o=e<0?e+a.length:e;return S(a[o])},async Slice({base:t,left:e,right:n,isInclusive:r},i,a){const o=await a(t,i);if(!o.isArray())return f;const c=await o.get();let d=e,s=n;return d<0&&(d=c.length+d),s<0&&(s=c.length+s),r&&s++,d<0&&(d=0),s<0&&(s=0),S(c.slice(d,s))},async Deref({base:t},e,n){const r=await n(t,e);if(!e.source.isArray()||r.type!=="object")return f;const i=r.data._ref;if(typeof i!="string")return f;for await(const a of e.source)if(a.type==="object"&&i===a.data._id)return a;return f},Value({value:t}){return S(t)},Group({base:t},e,n){return n(t,e)},async Object({attributes:t},e,n){const r={};for(const i of t){const a=i.type;switch(i.type){case"ObjectAttributeValue":{const o=await n(i.value,e);r[i.name]=await o.get();break}case"ObjectConditionalSplat":{const o=await n(i.condition,e);if(o.type!=="boolean"||o.data===!1)continue;const c=await n(i.value,e);c.type==="object"&&Object.assign(r,c.data);break}case"ObjectSplat":{const o=await n(i.value,e);o.type==="object"&&Object.assign(r,o.data);break}default:throw new Error(`Unknown node type: ${a}`)}}return S(r)},Array({elements:t},e,n){return new N(async function*(){for(const r of t){const i=await n(r.value,e);if(r.isSplat){if(i.isArray())for await(const a of i)yield a}else yield i}})},Tuple(){throw new Error("tuples can not be evaluated")},async Or({left:t,right:e},n,r){const i=await r(t,n),a=await r(e,n);return i.type==="boolean"&&i.data===!0||a.type==="boolean"&&a.data===!0?k:i.type!=="boolean"||a.type!=="boolean"?f:w},async And({left:t,right:e},n,r){const i=await r(t,n),a=await r(e,n);return i.type==="boolean"&&i.data===!1||a.type==="boolean"&&a.data===!1?w:i.type!=="boolean"||a.type!=="boolean"?f:k},async Not({base:t},e,n){const r=await n(t,e);return r.type!=="boolean"?f:r.data?w:k},Neg({base:t},e,n){return xe(n(t,e),r=>r.type!=="number"?f:x(-r.data))},Pos({base:t},e,n){return xe(n(t,e),r=>r.type!=="number"?f:x(r.data))},Asc(){return f},Desc(){return f},async ArrayCoerce({base:t},e,n){const r=await n(t,e);return r.isArray()?r:f},async Map({base:t,expr:e},n,r){const i=await r(t,n);return i.isArray()?new N(async function*(){for await(const a of i){const o=n.createHidden(a);yield await r(e,o)}}):f},async FlatMap({base:t,expr:e},n,r){const i=await r(t,n);return i.isArray()?new N(async function*(){for await(const a of i){const o=n.createHidden(a),c=await r(e,o);if(c.isArray())for await(const d of c)yield d;else yield c}}):f}};function ut(t,e={}){const n=S(e.root),r=S(e.dataset),i=ie({},e.params),a=new H(i,r,n,{timestamp:e.timestamp||new Date,identity:e.identity===void 0?"me":e.identity,sanity:e.sanity,after:e.after?S(e.after):null,before:e.before?S(e.before):null},null);return de(t,a)}function ft(t){switch(t.type){case"Group":case"Value":case"Parameter":case"Pos":case"Neg":return!0;case"OpCall":switch(t.op){case"+":case"-":case"*":case"/":case"%":case"**":return!0;default:return!1}default:return!1}}const lt=new H({},f,f,{timestamp:new Date(0),identity:"me",before:null,after:null},null);class yt extends Error{constructor(){super(...arguments);this.name="ConstantEvaluateError"}}function me(t){try{return Te(t)}catch(e){if(e.name==="ConstantEvaluateError")return null;throw e}}function Te(t){if(!ft(t))throw new yt("cannot constant evaluate");const e=de(t,lt,Te);if("then"in e)throw new Error("BUG: constant evaluate should never return a promise");return e}const pt={"'":"'",'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:` | ||
`,r:"\r",t:" "};function dt(t){const e=parseInt(t,16);return String.fromCharCode(e)}class v extends Error{constructor(){super(...arguments);this.name="GroqQueryError"}}const y={group(t){const e=t.process(y);return{type:"Group",base:e}},everything(){return{type:"Everything"}},this(){return{type:"This"}},parent(){return{type:"Parent",n:1}},dblparent(t){const e=t.process(y);return{type:"Parent",n:e.n+1}},traverse(t){const e=t.process(y),n=[];for(;t.getMark().name!=="traversal_end";)n.push(t.process(ht));t.shift();let r=null;for(let i=n.length-1;i>=0;i--)r=n[i](r);if((e.type==="Everything"||e.type==="Array"||e.type==="PipeFuncCall")&&(r=ne(i=>i,r)),r===null)throw new Error("BUG: unexpected empty traversal");return r.build(e)},this_attr(t){const e=t.processString();return e==="null"?{type:"Value",value:null}:e==="true"?{type:"Value",value:!0}:e==="false"?{type:"Value",value:!1}:{type:"AccessAttribute",name:e}},neg(t){const e=t.process(y);return{type:"Neg",base:e}},pos(t){const e=t.process(y);return{type:"Pos",base:e}},add(t){const e=t.process(y),n=t.process(y);return{type:"OpCall",op:"+",left:e,right:n}},sub(t){const e=t.process(y),n=t.process(y);return{type:"OpCall",op:"-",left:e,right:n}},mul(t){const e=t.process(y),n=t.process(y);return{type:"OpCall",op:"*",left:e,right:n}},div(t){const e=t.process(y),n=t.process(y);return{type:"OpCall",op:"/",left:e,right:n}},mod(t){const e=t.process(y),n=t.process(y);return{type:"OpCall",op:"%",left:e,right:n}},pow(t){const e=t.process(y),n=t.process(y);return{type:"OpCall",op:"**",left:e,right:n}},comp(t){const e=t.process(y),n=t.processString(),r=t.process(y);return{type:"OpCall",op:n,left:e,right:r}},in_range(t){const e=t.process(y),n=t.getMark().name==="inc_range";t.shift();const r=t.process(y),i=t.process(y);return{type:"InRange",base:e,left:r,right:i,isInclusive:n}},str(t){let e="";e:for(;t.hasMark();){const n=t.getMark();switch(n.name){case"str_end":e+=t.processStringEnd();break e;case"str_pause":e+=t.processStringEnd();break;case"str_start":t.shift();break;case"single_escape":{const r=t.slice(1);t.shift(),e+=pt[r];break}case"unicode_hex":t.shift(),e+=dt(t.processStringEnd());break;default:throw new Error(`unexpected mark: ${n.name}`)}}return{type:"Value",value:e}},integer(t){const e=t.processStringEnd();return{type:"Value",value:Number(e)}},float(t){const e=t.processStringEnd();return{type:"Value",value:Number(e)}},sci(t){const e=t.processStringEnd();return{type:"Value",value:Number(e)}},object(t){const e=[];for(;t.getMark().name!=="object_end";)e.push(t.process(mt));return t.shift(),{type:"Object",attributes:e}},array(t){const e=[];for(;t.getMark().name!=="array_end";){let n=!1;t.getMark().name==="array_splat"&&(n=!0,t.shift());const r=t.process(y);e.push({type:"ArrayElement",value:r,isSplat:n})}return t.shift(),{type:"Array",elements:e}},tuple(t){const e=[];for(;t.getMark().name!=="tuple_end";)e.push(t.process(y));return t.shift(),{type:"Tuple",members:e}},func_call(t){let e="global";t.getMark().name==="namespace"&&(t.shift(),e=t.processString());const n=t.processString();if(e==="global"&&n==="select"){const o={type:"Select",alternatives:[]};for(;t.getMark().name!=="func_args_end";)if(t.getMark().name==="pair"){if(o.fallback)throw new v("unexpected argument to select()");t.shift();const c=t.process(y),d=t.process(y);o.alternatives.push({type:"SelectAlternative",condition:c,value:d})}else{if(o.fallback)throw new v("unexpected argument to select()");const c=t.process(y);o.fallback=c}return t.shift(),o}const r=[];for(;t.getMark().name!=="func_args_end";)r.push(t.process(y));if(t.shift(),e==="global"&&(n==="before"||n==="after")&&t.parseOptions.mode==="delta")return{type:"Context",key:n};if(e==="global"&&n==="boost"&&!t.allowBoost)throw new v("unexpected boost");const i=We[e];if(!i)throw new v(`Undefined namespace: ${e}`);const a=i[n];if(!a)throw new v(`Undefined function: ${n}`);if(a.arity!==void 0&&Pe(n,a.arity,r.length),a.mode!==void 0&&a.mode!==t.parseOptions.mode)throw new v(`Undefined function: ${n}`);return{type:"FuncCall",func:a,name:n,args:r}},pipecall(t){const e=t.process(y);t.shift();let n="global";if(t.getMark().name==="namespace"&&(t.shift(),n=t.processString()),n!=="global")throw new v(`Undefined namespace: ${n}`);const r=t.processString(),i=[],a=t.allowBoost;for(r==="score"&&(t.allowBoost=!0);;){const c=t.getMark().name;if(c==="func_args_end")break;if(r==="order"){if(c==="asc"){t.shift(),i.push({type:"Asc",base:t.process(y)});continue}else if(c==="desc"){t.shift(),i.push({type:"Desc",base:t.process(y)});continue}}i.push(t.process(y))}t.shift(),t.allowBoost=a;const o=B[r];if(!o)throw new v(`Undefined pipe function: ${r}`);return o.arity&&Pe(r,o.arity,i.length),{type:"PipeFuncCall",func:o,base:e,name:r,args:i}},pair(t){throw new v("unexpected =>")},and(t){const e=t.process(y),n=t.process(y);return{type:"And",left:e,right:n}},or(t){const e=t.process(y),n=t.process(y);return{type:"Or",left:e,right:n}},not(t){const e=t.process(y);return{type:"Not",base:e}},asc(t){throw new v("unexpected asc")},desc(t){throw new v("unexpected desc")},param(t){const e=t.processString();return t.parseOptions.params&&t.parseOptions.params.hasOwnProperty(e)?{type:"Value",value:t.parseOptions.params[e]}:{type:"Parameter",name:e}}},mt={object_expr(t){if(t.getMark().name==="pair"){t.shift();const n=t.process(y),r=t.process(y);return{type:"ObjectConditionalSplat",condition:n,value:r}}const e=t.process(y);return{type:"ObjectAttributeValue",name:Oe(e),value:e}},object_pair(t){const e=t.process(y);if(e.type!=="Value")throw new Error("name must be string");const n=t.process(y);return{type:"ObjectAttributeValue",name:e.value,value:n}},object_splat(t){const e=t.process(y);return{type:"ObjectSplat",value:e}},object_splat_this(){return{type:"ObjectSplat",value:{type:"This"}}}},ht={square_bracket(t){const e=t.process(y),n=me(e);return n&&n.type==="number"?r=>at(i=>({type:"AccessElement",base:i,index:n.data}),r):n&&n.type==="string"?r=>ye(i=>({type:"AccessAttribute",base:i,name:n.data}),r):r=>ne(i=>({type:"Filter",base:i,expr:e}),r)},slice(t){const e=t.getMark().name==="inc_range";t.shift();const n=t.process(y),r=t.process(y),i=me(n),a=me(r);if(!i||!a||i.type!=="number"||a.type!=="number")throw new v("slicing must use constant numbers");return o=>ne(c=>({type:"Slice",base:c,left:i.data,right:a.data,isInclusive:e}),o)},projection(t){const e=t.process(y);return n=>it(r=>({type:"Projection",base:r,expr:e}),n)},attr_access(t){const e=t.processString();return n=>ye(r=>({type:"AccessAttribute",base:r,name:e}),n)},deref(t){let e=null;t.getMark().name==="deref_attr"&&(t.shift(),e=t.processString());const n=r=>e?{type:"AccessAttribute",base:r,name:e}:r;return r=>ye(i=>n({type:"Deref",base:i}),r)},array_postfix(t){return e=>ne(n=>({type:"ArrayCoerce",base:n}),e)}};function Oe(t){if(t.type==="AccessAttribute"&&!t.base)return t.name;if(t.type==="Deref"||t.type==="Map"||t.type==="Projection"||t.type==="Slice"||t.type==="Filter"||t.type==="AccessElement"||t.type==="ArrayCoerce")return Oe(t.base);throw new v(`Cannot determine property key for type: ${t.type}`)}function Pe(t,e,n){if(typeof e=="number"){if(n!==e)throw new v(`Incorrect number of arguments to function ${t}(). Expected ${e}, got ${n}.`)}else if(e&&!e(n))throw new v(`Incorrect number of arguments to function ${t}().`)}class bt extends Error{constructor(e){super(`Syntax error in GROQ query at position ${e}`);this.name="GroqSyntaxError",this.position=e}}function wt(t,e={}){const n=et(t);if(n.type==="error")throw new bt(n.position);return new A(t,n.marks,e).process(y)}E.evaluate=ut,E.parse=wt,Object.defineProperty(E,"__esModule",{value:!0}),E[Symbol.toStringTag]="Module"}); | ||
//# sourceMappingURL=groq-js.umd.js.map |
{ | ||
"name": "groq-js", | ||
"version": "0.4.0-beta.1", | ||
"version": "0.4.0-beta.2", | ||
"license": "MIT", | ||
@@ -5,0 +5,0 @@ "author": "Sanity.io <hello@sanity.io>", |
'use strict' | ||
const WS = /^([\t\n\v\f\r \u0085\u00A0]|(\/\/[^\n]+\n))+/ | ||
const WS = /^([\t\n\v\f\r \u0085\u00A0]|(\/\/[^\n]*\n))+/ | ||
const NUM = /^\d+/ | ||
@@ -682,2 +682,4 @@ const IDENT = /^[a-zA-Z_][a-zA-Z_0-9]*/ | ||
pos = skipWS(str, pos + 1) | ||
// Also allow trailing commas | ||
if (str[pos] === ')') break | ||
} | ||
@@ -706,37 +708,25 @@ } | ||
let pairPos = pos | ||
switch (str[pos]) { | ||
case '"': | ||
case "'": { | ||
let field = parseString(str, pos) | ||
if (field.type === 'error') return field | ||
pos = skipWS(str, field.position) | ||
if (str[pos] !== ':') return {type: 'error', position: pos} | ||
let value = parseExpr(str, skipWS(str, pos + 1), 0) | ||
if (str.slice(pos, pos + 3) === '...') { | ||
pos = skipWS(str, pos + 3) | ||
if (str[pos] !== '}' && str[pos] !== ',') { | ||
let expr = parseExpr(str, pos, 0) | ||
if (expr.type === 'error') return expr | ||
marks.push({name: 'object_splat', position: pairPos}) | ||
marks = marks.concat(expr.marks) | ||
pos = expr.position | ||
} else { | ||
marks.push({name: 'object_splat_this', position: pairPos}) | ||
} | ||
} else { | ||
let expr = parseExpr(str, pos, 0) | ||
if (expr.type === 'error') return expr | ||
let nextPos = skipWS(str, expr.position) | ||
if (expr.marks[0].name === 'str' && str[nextPos] === ':') { | ||
let value = parseExpr(str, skipWS(str, nextPos + 1), 0) | ||
if (value.type === 'error') return value | ||
marks.push({name: 'object_pair', position: pairPos}) | ||
marks = marks.concat(field.marks, value.marks) | ||
marks = marks.concat(expr.marks, value.marks) | ||
pos = value.position | ||
break | ||
} | ||
case '.': { | ||
if (str.slice(pos, pos + 3) === '...') { | ||
pos = skipWS(str, pos + 3) | ||
if (str[pos] !== '}' && str[pos] !== ',') { | ||
let expr = parseExpr(str, pos, 0) | ||
if (expr.type === 'error') return expr | ||
marks.push({name: 'object_splat', position: pairPos}) | ||
marks = marks.concat(expr.marks) | ||
pos = expr.position | ||
break | ||
} else { | ||
marks.push({name: 'object_splat_this', position: pairPos}) | ||
break | ||
} | ||
} | ||
break loop | ||
} | ||
default: { | ||
let expr = parseExpr(str, pos, 0) | ||
if (expr.type === 'error') return expr | ||
} else { | ||
marks = marks.concat({name: 'object_expr', position: pos}, expr.marks) | ||
@@ -746,3 +736,2 @@ pos = expr.position | ||
} | ||
pos = skipWS(str, pos) | ||
@@ -749,0 +738,0 @@ if (str[pos] !== ',') break |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
297118
6317