@nent/core
Version:
4 lines • 2.36 kB
JavaScript
/*!
* NENT 2022
*/
import{c as e}from"./index-916ca544.js";import{s as t}from"./factory-acbf0d3d.js";import{resolveTokens as r,hasToken as n}from"./tokens-78f8cdbe.js";import{r as s,t as a}from"./strings-47d55561.js";import{r as o}from"./values-ddfac998.js";import{b as c}from"./logging-5a93c8af.js";const i=(e,t)=>{const r=globalThis[t];return null!=r&&e instanceof r},f=e=>{if(null!=e){if(i(e,"ArrayBuffer")||i(e,"MessagePort")||i(e,"ImageBitmap")||i(e,"OffscreenCanvas"))return[e];if("object"==typeof e)return e.constructor===Object&&(e=Object.values(e)),Array.isArray(e)?e.flatMap(f):f(e.buffer)}return[]};let u=0,l=0;const p=new Map,m=new Map,b=(t,r,n)=>{const s=new Worker(t,{name:r});return s.addEventListener("message",(({data:t})=>{if(t){const r=t[0],s=t[1],a=t[2];if(r===n){const r=t[3],[n,o,c]=p.get(s);if(p.delete(s),r){const t=r.isError?Object.assign(new Error(r.value.message),r.value):r.value;e(t),o(t)}else c&&c.forEach((e=>m.delete(e))),n(a)}else if(r===n+".cb")try{m.get(s)(...a)}catch(t){e(t)}}})),s},j=(e,t,r)=>(...n)=>new Promise(((s,a)=>{let o=u++,c=0,i=n.length,b=[s,a];for(p.set(o,b);c<i;c++)if("function"==typeof n[c]){const e=l++;m.set(e,n[c]),n[c]=[t+".cb",e],(b[2]=b[2]||[]).push(e)}const j=e=>e.postMessage([t,o,r,n],f(n));e.then?e.then(j):j(e)})),d=j(import("./evaluate.worker-cf53b6cf.js").then((e=>e.worker)),"stencil.evaluate.worker","evalExpression"),w=/(in |for |[><+\-=])/gi,g=/(\{.*?\})/g;function x(e){return e.match(w)}function y(e){const t={};let r,n=s(e).split("'").join('"'),a=0,o=n.slice();for(;r=g.exec(n);){const e=r[1],n=JSON.parse(e);let s="abcdefghijklmnopqrstuvwxyz"[a];t[s]=n,a++,o=o.split(e).join(s)}return{data:t,expression:o}}async function v(e,r={}){if(o(e,"expression"),!x(e))return e;try{r.null=null;const t=y(e);return Object.assign(r,t.data),await d(t.expression,r)}catch(r){return c(t.debug,`An exception was raised evaluating expression '${e}': ${r}`),!1}}async function O(e,t={}){return o(e,"expression"),v(await r(e,!0),t)}async function h(e,t={}){o(e,"expression");let s=e.slice();if(n(s)&&(s=await r(s,!0)),!s)return!1;const c=s.startsWith("!");c&&(s=s.slice(1,s.length));let i=a(s);return x(s)&&(i=await v(s,t)),c?!i:i}const k=Object.freeze({__proto__:null,hasExpression:x,convertFromJson:y,evaluateExpression:O,evaluatePredicate:h});export{h as a,j as b,y as c,b as d,O as e,k as f,x as h}