UNPKG

@netlify/framework-info

Version:

Framework detection utility

2 lines 177 kB
(function(Z,ne){typeof exports=="object"&&typeof module<"u"?ne(exports):typeof define=="function"&&define.amd?define(["exports"],ne):(Z=typeof globalThis<"u"?globalThis:Z||self,ne(Z.frameworkInfo={}))})(this,function(Z){"use strict";var Fo=Object.defineProperty;var Li=Z=>{throw TypeError(Z)};var Vo=(Z,ne,ie)=>ne in Z?Fo(Z,ne,{enumerable:!0,configurable:!0,writable:!0,value:ie}):Z[ne]=ie;var cn=(Z,ne,ie)=>Vo(Z,typeof ne!="symbol"?ne+"":ne,ie),Mi=(Z,ne,ie)=>ne.has(Z)||Li("Cannot "+ie);var we=(Z,ne,ie)=>(Mi(Z,ne,"read from private field"),ie?ie.call(Z):ne.get(Z)),Ft=(Z,ne,ie)=>ne.has(Z)?Li("Cannot add the same private member more than once"):ne instanceof WeakSet?ne.add(Z):ne.set(Z,ie),Pe=(Z,ne,ie,qe)=>(Mi(Z,ne,"write to private field"),qe?qe.call(Z,ie):ne.set(Z,ie),ie);var ln=(Z,ne,ie,qe)=>({set _(Vt){Pe(Z,ne,Vt,ie)},get _(){return we(Z,ne,qe)}});var me,Oe,je;async function ne(e,t,{concurrency:o=Number.POSITIVE_INFINITY,stopOnError:s=!0,signal:f}={}){return new Promise((i,p)=>{if(e[Symbol.iterator]===void 0&&e[Symbol.asyncIterator]===void 0)throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof e})`);if(typeof t!="function")throw new TypeError("Mapper function is required");if(!(Number.isSafeInteger(o)&&o>=1||o===Number.POSITIVE_INFINITY))throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${o}\` (${typeof o})`);const d=[],a=[],g=new Map;let n=!1,y=!1,w=!1,E=0,S=0;const m=e[Symbol.iterator]===void 0?e[Symbol.asyncIterator]():e[Symbol.iterator](),l=()=>{c(f.reason)},u=()=>{f==null||f.removeEventListener("abort",l)},r=$=>{i($),u()},c=$=>{n=!0,y=!0,p($),u()};f&&(f.aborted&&c(f.reason),f.addEventListener("abort",l,{once:!0}));const _=async()=>{if(y)return;const $=await m.next(),v=S;if(S++,$.done){if(w=!0,E===0&&!y){if(!s&&a.length>0){c(new AggregateError(a));return}if(y=!0,g.size===0){r(d);return}const b=[];for(const[R,D]of d.entries())g.get(R)!==ie&&b.push(D);r(b)}return}E++,(async()=>{try{const b=await $.value;if(y)return;const R=await t(b,v);R===ie&&g.set(v,R),d[v]=R,E--,await _()}catch(b){if(s)c(b);else{a.push(b),E--;try{await _()}catch(R){c(R)}}}})()};(async()=>{for(let $=0;$<o;$++){try{await _()}catch(v){c(v);break}if(w||n)break}})()})}const ie=Symbol("skip");async function qe(e,t,o){return(await ne(e,(f,i)=>Promise.all([t(f,i),f]),o)).filter(f=>!!f[0]).map(f=>f[1])}class Vt{constructor(t){cn(this,"value");cn(this,"next");this.value=t}}class Fi{constructor(){Ft(this,me);Ft(this,Oe);Ft(this,je);this.clear()}enqueue(t){const o=new Vt(t);we(this,me)?(we(this,Oe).next=o,Pe(this,Oe,o)):(Pe(this,me,o),Pe(this,Oe,o)),ln(this,je)._++}dequeue(){const t=we(this,me);if(t)return Pe(this,me,we(this,me).next),ln(this,je)._--,t.value}peek(){if(we(this,me))return we(this,me).value}clear(){Pe(this,me,void 0),Pe(this,Oe,void 0),Pe(this,je,0)}get size(){return we(this,je)}*[Symbol.iterator](){let t=we(this,me);for(;t;)yield t.value,t=t.next}*drain(){for(;we(this,me);)yield this.dequeue()}}me=new WeakMap,Oe=new WeakMap,je=new WeakMap;function un(e){if(!((Number.isInteger(e)||e===Number.POSITIVE_INFINITY)&&e>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up");const t=new Fi;let o=0;const s=()=>{o--,t.size>0&&t.dequeue()()},f=async(d,a,g)=>{o++;const n=(async()=>d(...g))();a(n);try{await n}catch{}s()},i=(d,a,g)=>{t.enqueue(f.bind(void 0,d,a,g)),(async()=>(await Promise.resolve(),o<e&&t.size>0&&t.dequeue()()))()},p=(d,...a)=>new Promise(g=>{i(d,g,a)});return Object.defineProperties(p,{activeCount:{get:()=>o},pendingCount:{get:()=>t.size},clearQueue:{value:()=>{t.clear()}}}),p}class dn extends Error{constructor(t){super(),this.value=t}}const Vi=async(e,t)=>t(await e),Ui=async e=>{const t=await Promise.all(e);if(t[1]===!0)throw new dn(t[0]);return!1};async function zi(e,t,{concurrency:o=Number.POSITIVE_INFINITY,preserveOrder:s=!0}={}){const f=un(o),i=[...e].map(d=>[d,f(Vi,d,t)]),p=un(s?1:Number.POSITIVE_INFINITY);try{await Promise.all(i.map(d=>p(Ui,d)))}catch(d){if(d instanceof dn)return d.value;throw d}}const fn=async function({detect:{npmDependencies:e,excludedNpmDependencies:t,configFiles:o}},{pathExists:s,npmDependencies:f}){return Gi(e,f)&&xi(t,f)&&await Ki(o,s)},Gi=function(e,t){return e.length===0||e.some(o=>t.includes(o))},xi=function(e,t){return e.every(o=>!t.includes(o))},Hi=async(e,t)=>!!await zi(e,s=>t(s)),Ki=async function(e,t){return e.length===0||await Hi(e,t)},Xi=function({frameworkDevCommand:e,scripts:t,runScriptCommand:o}){if(e===void 0)return[];const s=Ji(t,e).map(f=>`${o} ${f}`);return s.length!==0?s:[e]},Ji=function(e,t){const o=Bi(e,t);return o.length!==0?o:Object.keys(e).filter(f=>Wi(f,e[f])).sort(mn)},pn=e=>e===-1?Number.MAX_SAFE_INTEGER:e,mn=(e,t)=>{const o=zt.findIndex(f=>Ut(e,f)),s=zt.findIndex(f=>Ut(t,f));return pn(o)-pn(s)},Bi=function(e,t){return Object.entries(e).filter(([,o])=>o.includes(t)).map(([o])=>o).sort(mn)},Wi=function(e,t){return zt.some(o=>Ut(e,o)&&!Yi(t))},Ut=function(e,t){return e===t||e.endsWith(`:${t}`)},zt=["dev","serve","develop","start","run","build","web"],Yi=function(e){return Qi.some(t=>e.includes(t))},Qi=["netlify dev"],Gt=[{id:"astro",name:"Astro",category:"static_site_generator",detect:{npmDependencies:["astro"],excludedNpmDependencies:[],configFiles:["astro.config.mjs"]},dev:{command:"astro dev",port:3e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"astro build",directory:"dist"},staticAssetsDirectory:"public",env:{},logo:{default:"https://framework-info.netlify.app/logos/astro/light.svg",light:"https://framework-info.netlify.app/logos/astro/light.svg",dark:"https://framework-info.netlify.app/logos/astro/dark.svg"},plugins:[]},{id:"docusaurus",name:"Docusaurus",category:"static_site_generator",detect:{npmDependencies:["docusaurus"],excludedNpmDependencies:[],configFiles:["siteConfig.js"]},dev:{command:"docusaurus-start",port:3e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"docusaurus-build",directory:"build/<project-name>"},staticAssetsDirectory:"static",logo:{default:"https://framework-info.netlify.app/logos/docusaurus/default.svg",light:"https://framework-info.netlify.app/logos/docusaurus/default.svg",dark:"https://framework-info.netlify.app/logos/docusaurus/default.svg"},env:{BROWSER:"none"},plugins:[]},{id:"docusaurus-v2",name:"Docusaurus 2",category:"static_site_generator",detect:{npmDependencies:["@docusaurus/core"],excludedNpmDependencies:[],configFiles:["docusaurus.config.js"]},dev:{command:"docusaurus start",port:3e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"docusaurus build",directory:"build"},staticAssetsDirectory:"static",logo:{default:"https://framework-info.netlify.app/logos/docusaurus/default.svg",light:"https://framework-info.netlify.app/logos/docusaurus/default.svg",dark:"https://framework-info.netlify.app/logos/docusaurus/default.svg"},env:{BROWSER:"none"},plugins:[]},{id:"eleventy",name:"Eleventy",category:"static_site_generator",detect:{npmDependencies:["@11ty/eleventy"],excludedNpmDependencies:[],configFiles:[".eleventy.js","eleventy.config.js","eleventy.config.cjs"]},dev:{command:"eleventy --serve",port:8080,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"eleventy",directory:"_site"},logo:{default:"https://framework-info.netlify.app/logos/eleventy/default.svg",light:"https://framework-info.netlify.app/logos/eleventy/default.svg",dark:"https://framework-info.netlify.app/logos/eleventy/default.svg"},env:{},plugins:[]},{id:"gatsby",name:"Gatsby",category:"static_site_generator",detect:{npmDependencies:["gatsby"],excludedNpmDependencies:[],configFiles:["gatsby-config.js","gatsby-config.ts"]},dev:{command:"gatsby develop",port:8e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"gatsby build",directory:"public"},staticAssetsDirectory:"static",env:{GATSBY_LOGGER:"yurnalist",GATSBY_PRECOMPILE_DEVELOP_FUNCTIONS:"true",AWS_LAMBDA_JS_RUNTIME:"nodejs14.x",NODE_VERSION:"14"},logo:{default:"https://framework-info.netlify.app/logos/gatsby/default.svg",light:"https://framework-info.netlify.app/logos/gatsby/light.svg",dark:"https://framework-info.netlify.app/logos/gatsby/dark.svg"},plugins:[{packageName:"@netlify/plugin-gatsby",condition:{minNodeVersion:"12.13.0"}}]},{id:"gridsome",name:"Gridsome",category:"static_site_generator",detect:{npmDependencies:["gridsome"],excludedNpmDependencies:[],configFiles:["gridsome.config.js"]},dev:{command:"gridsome develop",port:8080,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"gridsome build",directory:"dist"},logo:{default:"https://framework-info.netlify.app/logos/gridsome/default.svg",light:"https://framework-info.netlify.app/logos/gridsome/light.svg",dark:"https://framework-info.netlify.app/logos/gridsome/dark.svg"},env:{},plugins:[]},{id:"hexo",name:"Hexo",category:"static_site_generator",detect:{npmDependencies:["hexo"],excludedNpmDependencies:[],configFiles:["_config.yml"]},dev:{command:"hexo server",port:4e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"hexo generate",directory:"public"},logo:{default:"https://framework-info.netlify.app/logos/hexo/default.svg",light:"https://framework-info.netlify.app/logos/hexo/light.svg",dark:"https://framework-info.netlify.app/logos/hexo/dark.svg"},env:{},plugins:[]},{id:"hugo",name:"Hugo",category:"static_site_generator",detect:{npmDependencies:[],excludedNpmDependencies:[],configFiles:["config.json","config.toml","config.yaml","hugo.toml"]},dev:{command:"hugo server -w",port:1313,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"hugo",directory:"public"},logo:{default:"https://framework-info.netlify.app/logos/hugo/default.svg",light:"https://framework-info.netlify.app/logos/hugo/default.svg",dark:"https://framework-info.netlify.app/logos/hugo/default.svg"},env:{},plugins:[]},{id:"hydrogen",name:"Hydrogen",category:"static_site_generator",detect:{npmDependencies:["@shopify/hydrogen"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"vite",port:3e3,pollingStrategies:[{name:"TCP"}]},build:{command:"npm run build",directory:"dist/client"},logo:{default:"https://framework-info.netlify.app/logos/hydrogen/default.svg",light:"https://framework-info.netlify.app/logos/hydrogen/default.svg",dark:"https://framework-info.netlify.app/logos/hydrogen/default.svg"},env:{},plugins:[]},{id:"jekyll",name:"Jekyll",category:"static_site_generator",detect:{npmDependencies:[],excludedNpmDependencies:[],configFiles:["_config.yml","_config.yaml","_config.toml"]},dev:{command:"bundle exec jekyll serve -w",port:4e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"bundle exec jekyll build",directory:"_site"},logo:{default:"https://framework-info.netlify.app/logos/jekyll/dark.svg",light:"https://framework-info.netlify.app/logos/jekyll/light.svg",dark:"https://framework-info.netlify.app/logos/jekyll/dark.svg"},env:{},plugins:[]},{id:"middleman",name:"Middleman",category:"static_site_generator",detect:{npmDependencies:[],excludedNpmDependencies:[],configFiles:["config.rb"]},dev:{command:"bundle exec middleman server",port:4567,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"bundle exec middleman build",directory:"build"},logo:{default:"https://framework-info.netlify.app/logos/middleman/default.svg",light:"https://framework-info.netlify.app/logos/middleman/default.svg",dark:"https://framework-info.netlify.app/logos/middleman/default.svg"},env:{},plugins:[]},{id:"next-nx",name:"Next.js with Nx",category:"static_site_generator",detect:{npmDependencies:["@nrwl/next"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"nx serve",port:4200,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"nx build",directory:"dist/apps/<app name>/.next"},env:{},plugins:[{packageName:"@netlify/plugin-nextjs",condition:{minNodeVersion:"10.13.0"}}]},{id:"next",name:"Next.js",category:"static_site_generator",detect:{npmDependencies:["next"],excludedNpmDependencies:["@nrwl/next"],configFiles:[]},dev:{command:"next",port:3e3,pollingStrategies:[{name:"TCP"}]},build:{command:"next build",directory:".next"},logo:{default:"https://framework-info.netlify.app/logos/nextjs/light.svg",light:"https://framework-info.netlify.app/logos/nextjs/light.svg",dark:"https://framework-info.netlify.app/logos/nextjs/dark.svg"},env:{},plugins:[{packageName:"@netlify/plugin-nextjs",condition:{minNodeVersion:"10.13.0"}}]},{id:"blitz",name:"Blitz.js",category:"static_site_generator",detect:{npmDependencies:["blitz"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"blitz dev",port:3e3,pollingStrategies:[{name:"TCP"}]},build:{command:"blitz build",directory:"out"},logo:{default:"https://framework-info.netlify.app/logos/blitz/light.svg",light:"https://framework-info.netlify.app/logos/blitz/light.svg",dark:"https://framework-info.netlify.app/logos/blitz/dark.svg"},env:{},plugins:[]},{id:"nuxt",name:"Nuxt 2",category:"static_site_generator",detect:{npmDependencies:["nuxt","nuxt-edge"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"nuxt",port:3e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"nuxt generate",directory:"dist"},logo:{default:"https://framework-info.netlify.app/logos/nuxt/default.svg",light:"https://framework-info.netlify.app/logos/nuxt/light.svg",dark:"https://framework-info.netlify.app/logos/nuxt/dark.svg"},env:{},plugins:[]},{id:"nuxt3",name:"Nuxt 3",category:"static_site_generator",detect:{npmDependencies:["nuxt3"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"npm run dev",port:3e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"npm run build",directory:"dist"},env:{AWS_LAMBDA_JS_RUNTIME:"nodejs14.x",NODE_VERSION:"14"},logo:{default:"https://framework-info.netlify.app/logos/nuxt/default.svg",light:"https://framework-info.netlify.app/logos/nuxt/light.svg",dark:"https://framework-info.netlify.app/logos/nuxt/dark.svg"},plugins:[]},{id:"phenomic",name:"Phenomic",category:"static_site_generator",detect:{npmDependencies:["@phenomic/core"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"phenomic start",port:3333,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"phenomic build",directory:"public"},logo:{default:"https://framework-info.netlify.app/logos/phenomic/default.svg",light:"https://framework-info.netlify.app/logos/phenomic/default.svg",dark:"https://framework-info.netlify.app/logos/phenomic/default.svg"},env:{},plugins:[]},{id:"qwik",name:"Qwik",category:"static_site_generator",detect:{npmDependencies:["@builder.io/qwik"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"vite",port:5173,pollingStrategies:[{name:"TCP"}]},build:{command:"npm run build",directory:"dist"},logo:{default:"https://framework-info.netlify.app/logos/qwik/default.svg",light:"https://framework-info.netlify.app/logos/qwik/default.svg",dark:"https://framework-info.netlify.app/logos/qwik/default.svg"},env:{},plugins:[]},{id:"react-static",name:"React Static",category:"static_site_generator",detect:{npmDependencies:["react-static"],excludedNpmDependencies:[],configFiles:["static.config.js"]},dev:{command:"react-static start",port:3e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"react-static build",directory:"dist"},logo:{default:"https://framework-info.netlify.app/logos/react-static/default.png",light:"https://framework-info.netlify.app/logos/react-static/default.png",dark:"https://framework-info.netlify.app/logos/react-static/default.png"},env:{},plugins:[]},{id:"redwoodjs",name:"RedwoodJS",category:"static_site_generator",detect:{npmDependencies:["@redwoodjs/core"],excludedNpmDependencies:[],configFiles:["redwood.toml"]},dev:{command:"yarn rw dev",port:8910,pollingStrategies:[{name:"TCP"}]},build:{command:"rw deploy netlify",directory:"web/dist"},staticAssetsDirectory:"public",logo:{default:"https://framework-info.netlify.app/logos/redwoodjs/default.svg",light:"https://framework-info.netlify.app/logos/redwoodjs/default.svg",dark:"https://framework-info.netlify.app/logos/redwoodjs/default.svg"},env:{},plugins:[]},{id:"remix",name:"Remix",category:"static_site_generator",detect:{npmDependencies:["remix","@remix-run/netlify","@remix-run/netlify-edge"],excludedNpmDependencies:[],configFiles:["remix.config.js"]},dev:{command:"remix watch"},build:{command:"remix build",directory:"public"},logo:{default:"https://framework-info.netlify.app/logos/remix/default.svg",light:"https://framework-info.netlify.app/logos/remix/light.svg",dark:"https://framework-info.netlify.app/logos/remix/dark.svg"},env:{},plugins:[]},{id:"solid-js",name:"SolidJS",category:"static_site_generator",detect:{npmDependencies:["solid-js"],excludedNpmDependencies:["solid-start"],configFiles:[]},dev:{command:"npm run dev",port:3e3,pollingStrategies:[{name:"TCP"}]},build:{command:"npm run build",directory:"netlify"},logo:{default:"https://framework-info.netlify.app/logos/solid-js/default.svg",light:"https://framework-info.netlify.app/logos/solid-js/default.svg",dark:"https://framework-info.netlify.app/logos/solid-js/dark.svg"},env:{},plugins:[]},{id:"solid-start",name:"Solid Start",category:"static_site_generator",detect:{npmDependencies:["solid-start"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"solid-start dev",port:3e3,pollingStrategies:[{name:"TCP"}]},build:{command:"solid-start build",directory:"netlify"},logo:{default:"https://framework-info.netlify.app/logos/solid-start/default.svg",light:"https://framework-info.netlify.app/logos/solid-start/default.svg",dark:"https://framework-info.netlify.app/logos/solid-start/default.svg"},env:{},plugins:[]},{id:"stencil",name:"Stencil",category:"static_site_generator",detect:{npmDependencies:["@stencil/core"],excludedNpmDependencies:[],configFiles:["stencil.config.ts"]},dev:{command:"stencil build --dev --watch --serve",port:3333,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"stencil build",directory:"www"},logo:{default:"https://framework-info.netlify.app/logos/stencil/light.svg",light:"https://framework-info.netlify.app/logos/stencil/light.svg",dark:"https://framework-info.netlify.app/logos/stencil/dark.svg"},env:{BROWSER:"none",PORT:"3000"},plugins:[]},{id:"vuepress",name:"VuePress",category:"static_site_generator",detect:{npmDependencies:["vuepress"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"vuepress dev",port:8080,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"vuepress build",directory:".vuepress/dist"},logo:{default:"https://framework-info.netlify.app/logos/vuepress/default.svg",light:"https://framework-info.netlify.app/logos/vuepress/default.svg",dark:"https://framework-info.netlify.app/logos/vuepress/default.svg"},env:{},plugins:[]},{id:"assemble",name:"Assemble",category:"static_site_generator",detect:{npmDependencies:["assemble"],excludedNpmDependencies:[],configFiles:[]},dev:{},build:{command:"grunt build",directory:"dist"},env:{},logo:{default:"https://framework-info.netlify.app/logos/assemble/default.svg",light:"https://framework-info.netlify.app/logos/assemble/default.svg",dark:"https://framework-info.netlify.app/logos/assemble/default.svg"},plugins:[]},{id:"docpad",name:"DocPad",category:"static_site_generator",detect:{npmDependencies:["docpad"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"docpad run",port:9778,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"docpad generate",directory:"out"},env:{},plugins:[]},{id:"harp",name:"Harp",category:"static_site_generator",detect:{npmDependencies:["harp"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"harp server",port:9e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"harp compile",directory:"www"},logo:{default:"https://framework-info.netlify.app/logos/harp/default.svg",light:"https://framework-info.netlify.app/logos/harp/light.svg",dark:"https://framework-info.netlify.app/logos/harp/default.svg"},env:{},plugins:[]},{id:"metalsmith",name:"Metalsmith",category:"static_site_generator",detect:{npmDependencies:["metalsmith"],excludedNpmDependencies:[],configFiles:[]},dev:{},build:{command:"metalsmith",directory:"build"},logo:{default:"https://framework-info.netlify.app/logos/metalsmith/default.svg",light:"https://framework-info.netlify.app/logos/metalsmith/default.svg",dark:"https://framework-info.netlify.app/logos/metalsmith/default.svg"},env:{},plugins:[]},{id:"roots",name:"Roots",category:"static_site_generator",detect:{npmDependencies:["roots"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"roots watch",port:1111,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"roots compile",directory:"public"},logo:{default:"https://framework-info.netlify.app/logos/roots/default.svg",light:"https://framework-info.netlify.app/logos/roots/default.svg",dark:"https://framework-info.netlify.app/logos/roots/default.svg"},env:{},plugins:[]},{id:"wintersmith",name:"Wintersmith",category:"static_site_generator",detect:{npmDependencies:["wintersmith"],excludedNpmDependencies:[],configFiles:["config.json"]},dev:{command:"wintersmith preview",port:8080,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"wintersmith build",directory:"build"},logo:{default:"https://framework-info.netlify.app/logos/wintersmith/default.svg",light:"https://framework-info.netlify.app/logos/wintersmith/default.svg",dark:"https://framework-info.netlify.app/logos/wintersmith/default.svg"},env:{},plugins:[]},{id:"cecil",name:"Cecil",category:"static_site_generator",detect:{npmDependencies:[],excludedNpmDependencies:[],configFiles:["config.yml"]},dev:{command:"cecil serve",port:8e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"cecil build",directory:"_site"},env:{},logo:{default:"https://framework-info.netlify.app/logos/cecil/default.svg",light:"https://framework-info.netlify.app/logos/cecil/default.svg",dark:"https://framework-info.netlify.app/logos/cecil/default.svg"},plugins:[]},{id:"zola",name:"Zola",category:"static_site_generator",detect:{npmDependencies:[],excludedNpmDependencies:[],configFiles:["config.toml"]},dev:{command:"zola serve",port:1111,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"zola build",directory:"public"},env:{},plugins:[]},{id:"angular",name:"Angular",category:"frontend_framework",detect:{npmDependencies:["@angular/cli"],excludedNpmDependencies:[],configFiles:["angular.json"]},dev:{command:"ng serve",port:4200,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"ng build --prod",directory:"dist/"},logo:{default:"https://framework-info.netlify.app/logos/angular/default.svg",light:"https://framework-info.netlify.app/logos/angular/default.svg",dark:"https://framework-info.netlify.app/logos/angular/default.svg"},env:{},plugins:[]},{id:"create-react-app",name:"Create React App",category:"frontend_framework",detect:{npmDependencies:["react-scripts"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"react-scripts start",port:3e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"react-scripts build",directory:"build"},staticAssetsDirectory:"public",logo:{default:"https://framework-info.netlify.app/logos/create-react-app/default.svg",light:"https://framework-info.netlify.app/logos/create-react-app/default.svg",dark:"https://framework-info.netlify.app/logos/create-react-app/default.svg"},env:{BROWSER:"none",PORT:"3000"},plugins:[]},{id:"ember",name:"Ember.js",category:"frontend_framework",detect:{npmDependencies:["ember-cli"],excludedNpmDependencies:[],configFiles:["ember-cli-build.js"]},dev:{command:"ember serve",port:4200,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"ember build",directory:"dist"},logo:{default:"https://framework-info.netlify.app/logos/ember/default.svg",light:"https://framework-info.netlify.app/logos/ember/light.svg",dark:"https://framework-info.netlify.app/logos/ember/dark.svg"},env:{},plugins:[]},{id:"expo",name:"Expo",category:"frontend_framework",detect:{npmDependencies:["expo"],excludedNpmDependencies:[],configFiles:["app.json"]},dev:{command:"expo start --web",port:19006,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"expo build:web",directory:"web-build"},logo:{default:"https://framework-info.netlify.app/logos/expo/default.svg",light:"https://framework-info.netlify.app/logos/expo/light.svg",dark:"https://framework-info.netlify.app/logos/expo/dark.svg"},env:{},plugins:[]},{id:"quasar",name:"Quasar",category:"frontend_framework",detect:{npmDependencies:["@quasar/app"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"quasar dev -p 8081",port:8081,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"quasar build",directory:"dist/spa"},logo:{default:"https://framework-info.netlify.app/logos/quasar/default.svg",light:"https://framework-info.netlify.app/logos/quasar/default.svg",dark:"https://framework-info.netlify.app/logos/quasar/default.svg"},env:{},plugins:[]},{id:"quasar-v0.17",name:"Quasar",category:"frontend_framework",detect:{npmDependencies:["quasar-cli"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"quasar dev -p 8080",port:8080,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"quasar build",directory:".quasar"},logo:{default:"https://framework-info.netlify.app/logos/quasar/default.svg",light:"https://framework-info.netlify.app/logos/quasar/default.svg",dark:"https://framework-info.netlify.app/logos/quasar/default.svg"},env:{},plugins:[]},{id:"sapper",name:"Sapper",category:"frontend_framework",detect:{npmDependencies:["sapper"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"sapper dev",port:3e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"sapper export",directory:"__sapper__/export"},logo:{default:"https://framework-info.netlify.app/logos/sapper/default.svg",light:"https://framework-info.netlify.app/logos/sapper/default.svg",dark:"https://framework-info.netlify.app/logos/sapper/default.svg"},staticAssetsDirectory:"static",env:{},plugins:[]},{id:"svelte",name:"Svelte",category:"frontend_framework",detect:{npmDependencies:["svelte"],excludedNpmDependencies:["sapper","@sveltejs/kit"],configFiles:[]},dev:{command:"npm run dev",port:5e3,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"npm run build",directory:"public"},logo:{default:"https://framework-info.netlify.app/logos/svelte-kit/default.svg",light:"https://framework-info.netlify.app/logos/svelte-kit/default.svg",dark:"https://framework-info.netlify.app/logos/svelte-kit/default.svg"},env:{},plugins:[]},{id:"svelte-kit",name:"SvelteKit",category:"frontend_framework",detect:{npmDependencies:["@sveltejs/kit"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"vite dev",port:5173,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"vite build",directory:"build"},logo:{default:"https://framework-info.netlify.app/logos/svelte-kit/default.svg",light:"https://framework-info.netlify.app/logos/svelte-kit/default.svg",dark:"https://framework-info.netlify.app/logos/svelte-kit/default.svg"},staticAssetsDirectory:"static",env:{},plugins:[]},{id:"vue",name:"Vue.js",category:"frontend_framework",detect:{npmDependencies:["@vue/cli-service"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"vue-cli-service serve",port:8080,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"vue-cli-service build",directory:"dist"},logo:{default:"https://framework-info.netlify.app/logos/vue/default.svg",light:"https://framework-info.netlify.app/logos/vue/default.svg",dark:"https://framework-info.netlify.app/logos/vue/default.svg"},env:{},plugins:[]},{id:"brunch",name:"Brunch",category:"build_tool",detect:{npmDependencies:["brunch"],excludedNpmDependencies:[],configFiles:["brunch-config.js"]},dev:{command:"brunch watch --server",port:3333,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"brunch build",directory:"public"},env:{},logo:{default:"https://framework-info.netlify.app/logos/brunch/default.svg",light:"https://framework-info.netlify.app/logos/brunch/default.svg",dark:"https://framework-info.netlify.app/logos/brunch/default.svg"},plugins:[]},{id:"parcel",name:"Parcel",category:"build_tool",detect:{npmDependencies:["parcel-bundler","parcel"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"parcel",port:1234,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"parcel build",directory:"dist"},logo:{default:"https://framework-info.netlify.app/logos/parcel/default.svg",light:"https://framework-info.netlify.app/logos/parcel/default.svg",dark:"https://framework-info.netlify.app/logos/parcel/default.svg"},env:{},plugins:[]},{id:"grunt",name:"Grunt",category:"build_tool",detect:{npmDependencies:["grunt"],excludedNpmDependencies:[],configFiles:[]},dev:{},build:{command:"grunt build",directory:"dist"},logo:{default:"https://framework-info.netlify.app/logos/grunt/default.svg",light:"https://framework-info.netlify.app/logos/grunt/default.svg",dark:"https://framework-info.netlify.app/logos/grunt/default.svg"},env:{},plugins:[]},{id:"gulp",name:"gulp.js",category:"build_tool",detect:{npmDependencies:["gulp"],excludedNpmDependencies:[],configFiles:[]},dev:{},build:{command:"gulp build",directory:"dist"},logo:{default:"https://framework-info.netlify.app/logos/gulp/default.svg",light:"https://framework-info.netlify.app/logos/gulp/default.svg",dark:"https://framework-info.netlify.app/logos/gulp/default.svg"},env:{},plugins:[]},{id:"vite",name:"Vite",category:"build_tool",detect:{npmDependencies:["vite"],excludedNpmDependencies:["@shopify/hydrogen","@builder.io/qwik","solid-start","solid-js","@sveltejs/kit"],configFiles:[]},dev:{command:"vite",port:5173,pollingStrategies:[{name:"TCP"}]},build:{command:"vite build",directory:"dist"},logo:{default:"https://framework-info.netlify.app/logos/vite/default.svg",light:"https://framework-info.netlify.app/logos/vite/default.svg",dark:"https://framework-info.netlify.app/logos/vite/default.svg"},env:{},plugins:[]},{id:"wmr",name:"WMR",category:"build_tool",detect:{npmDependencies:["wmr"],excludedNpmDependencies:[],configFiles:[]},dev:{command:"wmr",port:8080,pollingStrategies:[{name:"TCP"},{name:"HTTP"}]},build:{command:"wmr build",directory:"dist"},logo:{default:"https://framework-info.netlify.app/logos/wmr/default.svg",light:"https://framework-info.netlify.app/logos/wmr/default.svg",dark:"https://framework-info.netlify.app/logos/wmr/default.svg"},env:{},plugins:[]}];function Zi(e,t){const o={};if(Array.isArray(t))for(const s of t){const f=Object.getOwnPropertyDescriptor(e,s);f!=null&&f.enumerable&&Object.defineProperty(o,s,f)}else for(const s of Reflect.ownKeys(e)){const f=Object.getOwnPropertyDescriptor(e,s);if(f.enumerable){const i=e[s];t(s,i,e)&&Object.defineProperty(o,s,f)}}return o}function hn(e){if(typeof e!="object"||e===null)return!1;const t=Object.getPrototypeOf(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}const ea=function(e){if(e===void 0)return{npmDependencies:[],scripts:{}};const t=ta(e),o=ra(e);return{npmDependencies:t,scripts:o}},ta=function({dependencies:e,devDependencies:t}){return[...gn(e),...gn(t)]},gn=function(e){return hn(e)?Object.keys(e):[]},ra=function({scripts:e}){return hn(e)?Zi(e,na):{}},na=function(e,t){return typeof t=="string"};function yn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ge={exports:{}},xt={},Ee={},Ne={},Ht={},Kt={},Xt={},vn;function xe(){return vn||(vn=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.regexpCode=e.getEsmExportName=e.getProperty=e.safeStringify=e.stringify=e.strConcat=e.addCodeArg=e.str=e._=e.nil=e._Code=e.Name=e.IDENTIFIER=e._CodeOrName=void 0;class t{}e._CodeOrName=t,e.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class o extends t{constructor(r){if(super(),!e.IDENTIFIER.test(r))throw new Error("CodeGen: name must be a valid identifier");this.str=r}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}e.Name=o;class s extends t{constructor(r){super(),this._items=typeof r=="string"?[r]:r}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;const r=this._items[0];return r===""||r==='""'}get str(){var r;return(r=this._str)!==null&&r!==void 0?r:this._str=this._items.reduce((c,_)=>`${c}${_}`,"")}get names(){var r;return(r=this._names)!==null&&r!==void 0?r:this._names=this._items.reduce((c,_)=>(_ instanceof o&&(c[_.str]=(c[_.str]||0)+1),c),{})}}e._Code=s,e.nil=new s("");function f(u,...r){const c=[u[0]];let _=0;for(;_<r.length;)d(c,r[_]),c.push(u[++_]);return new s(c)}e._=f;const i=new s("+");function p(u,...r){const c=[E(u[0])];let _=0;for(;_<r.length;)c.push(i),d(c,r[_]),c.push(i,E(u[++_]));return a(c),new s(c)}e.str=p;function d(u,r){r instanceof s?u.push(...r._items):r instanceof o?u.push(r):u.push(y(r))}e.addCodeArg=d;function a(u){let r=1;for(;r<u.length-1;){if(u[r]===i){const c=g(u[r-1],u[r+1]);if(c!==void 0){u.splice(r-1,3,c);continue}u[r++]="+"}r++}}function g(u,r){if(r==='""')return u;if(u==='""')return r;if(typeof u=="string")return r instanceof o||u[u.length-1]!=='"'?void 0:typeof r!="string"?`${u.slice(0,-1)}${r}"`:r[0]==='"'?u.slice(0,-1)+r.slice(1):void 0;if(typeof r=="string"&&r[0]==='"'&&!(u instanceof o))return`"${u}${r.slice(1)}`}function n(u,r){return r.emptyStr()?u:u.emptyStr()?r:p`${u}${r}`}e.strConcat=n;function y(u){return typeof u=="number"||typeof u=="boolean"||u===null?u:E(Array.isArray(u)?u.join(","):u)}function w(u){return new s(E(u))}e.stringify=w;function E(u){return JSON.stringify(u).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}e.safeStringify=E;function S(u){return typeof u=="string"&&e.IDENTIFIER.test(u)?new s(`.${u}`):f`[${u}]`}e.getProperty=S;function m(u){if(typeof u=="string"&&e.IDENTIFIER.test(u))return new s(`${u}`);throw new Error(`CodeGen: invalid export name: ${u}, use explicit $id name mapping`)}e.getEsmExportName=m;function l(u){return new s(u.toString())}e.regexpCode=l}(Xt)),Xt}var Jt={},_n;function $n(){return _n||(_n=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.ValueScope=e.ValueScopeName=e.Scope=e.varKinds=e.UsedValueState=void 0;const t=xe();class o extends Error{constructor(g){super(`CodeGen: "code" for ${g} not defined`),this.value=g.value}}var s;(function(a){a[a.Started=0]="Started",a[a.Completed=1]="Completed"})(s||(e.UsedValueState=s={})),e.varKinds={const:new t.Name("const"),let:new t.Name("let"),var:new t.Name("var")};class f{constructor({prefixes:g,parent:n}={}){this._names={},this._prefixes=g,this._parent=n}toName(g){return g instanceof t.Name?g:this.name(g)}name(g){return new t.Name(this._newName(g))}_newName(g){const n=this._names[g]||this._nameGroup(g);return`${g}${n.index++}`}_nameGroup(g){var n,y;if(!((y=(n=this._parent)===null||n===void 0?void 0:n._prefixes)===null||y===void 0)&&y.has(g)||this._prefixes&&!this._prefixes.has(g))throw new Error(`CodeGen: prefix "${g}" is not allowed in this scope`);return this._names[g]={prefix:g,index:0}}}e.Scope=f;class i extends t.Name{constructor(g,n){super(n),this.prefix=g}setValue(g,{property:n,itemIndex:y}){this.value=g,this.scopePath=(0,t._)`.${new t.Name(n)}[${y}]`}}e.ValueScopeName=i;const p=(0,t._)`\n`;class d extends f{constructor(g){super(g),this._values={},this._scope=g.scope,this.opts={...g,_n:g.lines?p:t.nil}}get(){return this._scope}name(g){return new i(g,this._newName(g))}value(g,n){var y;if(n.ref===void 0)throw new Error("CodeGen: ref must be passed in value");const w=this.toName(g),{prefix:E}=w,S=(y=n.key)!==null&&y!==void 0?y:n.ref;let m=this._values[E];if(m){const r=m.get(S);if(r)return r}else m=this._values[E]=new Map;m.set(S,w);const l=this._scope[E]||(this._scope[E]=[]),u=l.length;return l[u]=n.ref,w.setValue(n,{property:E,itemIndex:u}),w}getValue(g,n){const y=this._values[g];if(y)return y.get(n)}scopeRefs(g,n=this._values){return this._reduceValues(n,y=>{if(y.scopePath===void 0)throw new Error(`CodeGen: name "${y}" has no value`);return(0,t._)`${g}${y.scopePath}`})}scopeCode(g=this._values,n,y){return this._reduceValues(g,w=>{if(w.value===void 0)throw new Error(`CodeGen: name "${w}" has no value`);return w.value.code},n,y)}_reduceValues(g,n,y={},w){let E=t.nil;for(const S in g){const m=g[S];if(!m)continue;const l=y[S]=y[S]||new Map;m.forEach(u=>{if(l.has(u))return;l.set(u,s.Started);let r=n(u);if(r){const c=this.opts.es5?e.varKinds.var:e.varKinds.const;E=(0,t._)`${E}${c} ${u} = ${r};${this.opts._n}`}else if(r=w==null?void 0:w(u))E=(0,t._)`${E}${r}${this.opts._n}`;else throw new o(u);l.set(u,s.Completed)})}return E}}e.ValueScope=d}(Jt)),Jt}var wn;function Q(){return wn||(wn=1,function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.or=e.and=e.not=e.CodeGen=e.operators=e.varKinds=e.ValueScopeName=e.ValueScope=e.Scope=e.Name=e.regexpCode=e.stringify=e.getProperty=e.nil=e.strConcat=e.str=e._=void 0;const t=xe(),o=$n();var s=xe();Object.defineProperty(e,"_",{enumerable:!0,get:function(){return s._}}),Object.defineProperty(e,"str",{enumerable:!0,get:function(){return s.str}}),Object.defineProperty(e,"strConcat",{enumerable:!0,get:function(){return s.strConcat}}),Object.defineProperty(e,"nil",{enumerable:!0,get:function(){return s.nil}}),Object.defineProperty(e,"getProperty",{enumerable:!0,get:function(){return s.getProperty}}),Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return s.stringify}}),Object.defineProperty(e,"regexpCode",{enumerable:!0,get:function(){return s.regexpCode}}),Object.defineProperty(e,"Name",{enumerable:!0,get:function(){return s.Name}});var f=$n();Object.defineProperty(e,"Scope",{enumerable:!0,get:function(){return f.Scope}}),Object.defineProperty(e,"ValueScope",{enumerable:!0,get:function(){return f.ValueScope}}),Object.defineProperty(e,"ValueScopeName",{enumerable:!0,get:function(){return f.ValueScopeName}}),Object.defineProperty(e,"varKinds",{enumerable:!0,get:function(){return f.varKinds}}),e.operators={GT:new t._Code(">"),GTE:new t._Code(">="),LT:new t._Code("<"),LTE:new t._Code("<="),EQ:new t._Code("==="),NEQ:new t._Code("!=="),NOT:new t._Code("!"),OR:new t._Code("||"),AND:new t._Code("&&"),ADD:new t._Code("+")};class i{optimizeNodes(){return this}optimizeNames(h,P){return this}}class p extends i{constructor(h,P,q){super(),this.varKind=h,this.name=P,this.rhs=q}render({es5:h,_n:P}){const q=h?o.varKinds.var:this.varKind,H=this.rhs===void 0?"":` = ${this.rhs}`;return`${q} ${this.name}${H};`+P}optimizeNames(h,P){if(h[this.name.str])return this.rhs&&(this.rhs=A(this.rhs,h,P)),this}get names(){return this.rhs instanceof t._CodeOrName?this.rhs.names:{}}}class d extends i{constructor(h,P,q){super(),this.lhs=h,this.rhs=P,this.sideEffects=q}render({_n:h}){return`${this.lhs} = ${this.rhs};`+h}optimizeNames(h,P){if(!(this.lhs instanceof t.Name&&!h[this.lhs.str]&&!this.sideEffects))return this.rhs=A(this.rhs,h,P),this}get names(){const h=this.lhs instanceof t.Name?{}:{...this.lhs.names};return J(h,this.rhs)}}class a extends d{constructor(h,P,q,H){super(h,q,H),this.op=P}render({_n:h}){return`${this.lhs} ${this.op}= ${this.rhs};`+h}}class g extends i{constructor(h){super(),this.label=h,this.names={}}render({_n:h}){return`${this.label}:`+h}}class n extends i{constructor(h){super(),this.label=h,this.names={}}render({_n:h}){return`break${this.label?` ${this.label}`:""};`+h}}class y extends i{constructor(h){super(),this.error=h}render({_n:h}){return`throw ${this.error};`+h}get names(){return this.error.names}}class w extends i{constructor(h){super(),this.code=h}render({_n:h}){return`${this.code};`+h}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(h,P){return this.code=A(this.code,h,P),this}get names(){return this.code instanceof t._CodeOrName?this.code.names:{}}}class E extends i{constructor(h=[]){super(),this.nodes=h}render(h){return this.nodes.reduce((P,q)=>P+q.render(h),"")}optimizeNodes(){const{nodes:h}=this;let P=h.length;for(;P--;){const q=h[P].optimizeNodes();Array.isArray(q)?h.splice(P,1,...q):q?h[P]=q:h.splice(P,1)}return h.length>0?this:void 0}optimizeNames(h,P){const{nodes:q}=this;let H=q.length;for(;H--;){const X=q[H];X.optimizeNames(h,P)||(L(h,X.names),q.splice(H,1))}return q.length>0?this:void 0}get names(){return this.nodes.reduce((h,P)=>B(h,P.names),{})}}class S extends E{render(h){return"{"+h._n+super.render(h)+"}"+h._n}}class m extends E{}class l extends S{}l.kind="else";class u extends S{constructor(h,P){super(P),this.condition=h}render(h){let P=`if(${this.condition})`+super.render(h);return this.else&&(P+="else "+this.else.render(h)),P}optimizeNodes(){super.optimizeNodes();const h=this.condition;if(h===!0)return this.nodes;let P=this.else;if(P){const q=P.optimizeNodes();P=this.else=Array.isArray(q)?new l(q):q}if(P)return h===!1?P instanceof u?P:P.nodes:this.nodes.length?this:new u(x(h),P instanceof u?[P]:P.nodes);if(!(h===!1||!this.nodes.length))return this}optimizeNames(h,P){var q;if(this.else=(q=this.else)===null||q===void 0?void 0:q.optimizeNames(h,P),!!(super.optimizeNames(h,P)||this.else))return this.condition=A(this.condition,h,P),this}get names(){const h=super.names;return J(h,this.condition),this.else&&B(h,this.else.names),h}}u.kind="if";class r extends S{}r.kind="for";class c extends r{constructor(h){super(),this.iteration=h}render(h){return`for(${this.iteration})`+super.render(h)}optimizeNames(h,P){if(super.optimizeNames(h,P))return this.iteration=A(this.iteration,h,P),this}get names(){return B(super.names,this.iteration.names)}}class _ extends r{constructor(h,P,q,H){super(),this.varKind=h,this.name=P,this.from=q,this.to=H}render(h){const P=h.es5?o.varKinds.var:this.varKind,{name:q,from:H,to:X}=this;return`for(${P} ${q}=${H}; ${q}<${X}; ${q}++)`+super.render(h)}get names(){const h=J(super.names,this.from);return J(h,this.to)}}class $ extends r{constructor(h,P,q,H){super(),this.loop=h,this.varKind=P,this.name=q,this.iterable=H}render(h){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(h)}optimizeNames(h,P){if(super.optimizeNames(h,P))return this.iterable=A(this.iterable,h,P),this}get names(){return B(super.names,this.iterable.names)}}class v extends S{constructor(h,P,q){super(),this.name=h,this.args=P,this.async=q}render(h){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(h)}}v.kind="func";class b extends E{render(h){return"return "+super.render(h)}}b.kind="return";class R extends S{render(h){let P="try"+super.render(h);return this.catch&&(P+=this.catch.render(h)),this.finally&&(P+=this.finally.render(h)),P}optimizeNodes(){var h,P;return super.optimizeNodes(),(h=this.catch)===null||h===void 0||h.optimizeNodes(),(P=this.finally)===null||P===void 0||P.optimizeNodes(),this}optimizeNames(h,P){var q,H;return super.optimizeNames(h,P),(q=this.catch)===null||q===void 0||q.optimizeNames(h,P),(H=this.finally)===null||H===void 0||H.optimizeNames(h,P),this}get names(){const h=super.names;return this.catch&&B(h,this.catch.names),this.finally&&B(h,this.finally.names),h}}class D extends S{constructor(h){super(),this.error=h}render(h){return`catch(${this.error})`+super.render(h)}}D.kind="catch";class V extends S{render(h){return"finally"+super.render(h)}}V.kind="finally";class G{constructor(h,P={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...P,_n:P.lines?` `:""},this._extScope=h,this._scope=new o.Scope({parent:h}),this._nodes=[new m]}toString(){return this._root.render(this.opts)}name(h){return this._scope.name(h)}scopeName(h){return this._extScope.name(h)}scopeValue(h,P){const q=this._extScope.value(h,P);return(this._values[q.prefix]||(this._values[q.prefix]=new Set)).add(q),q}getScopeValue(h,P){return this._extScope.getValue(h,P)}scopeRefs(h){return this._extScope.scopeRefs(h,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(h,P,q,H){const X=this._scope.toName(P);return q!==void 0&&H&&(this._constants[X.str]=q),this._leafNode(new p(h,X,q)),X}const(h,P,q){return this._def(o.varKinds.const,h,P,q)}let(h,P,q){return this._def(o.varKinds.let,h,P,q)}var(h,P,q){return this._def(o.varKinds.var,h,P,q)}assign(h,P,q){return this._leafNode(new d(h,P,q))}add(h,P){return this._leafNode(new a(h,e.operators.ADD,P))}code(h){return typeof h=="function"?h():h!==t.nil&&this._leafNode(new w(h)),this}object(...h){const P=["{"];for(const[q,H]of h)P.length>1&&P.push(","),P.push(q),(q!==H||this.opts.es5)&&(P.push(":"),(0,t.addCodeArg)(P,H));return P.push("}"),new t._Code(P)}if(h,P,q){if(this._blockNode(new u(h)),P&&q)this.code(P).else().code(q).endIf();else if(P)this.code(P).endIf();else if(q)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(h){return this._elseNode(new u(h))}else(){return this._elseNode(new l)}endIf(){return this._endBlockNode(u,l)}_for(h,P){return this._blockNode(h),P&&this.code(P).endFor(),this}for(h,P){return this._for(new c(h),P)}forRange(h,P,q,H,X=this.opts.es5?o.varKinds.var:o.varKinds.let){const re=this._scope.toName(h);return this._for(new _(X,re,P,q),()=>H(re))}forOf(h,P,q,H=o.varKinds.const){const X=this._scope.toName(h);if(this.opts.es5){const re=P instanceof t.Name?P:this.var("_arr",P);return this.forRange("_i",0,(0,t._)`${re}.length`,ee=>{this.var(X,(0,t._)`${re}[${ee}]`),q(X)})}return this._for(new $("of",H,X,P),()=>q(X))}forIn(h,P,q,H=this.opts.es5?o.varKinds.var:o.varKinds.const){if(this.opts.ownProperties)return this.forOf(h,(0,t._)`Object.keys(${P})`,q);const X=this._scope.toName(h);return this._for(new $("in",H,X,P),()=>q(X))}endFor(){return this._endBlockNode(r)}label(h){return this._leafNode(new g(h))}break(h){return this._leafNode(new n(h))}return(h){const P=new b;if(this._blockNode(P),this.code(h),P.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(b)}try(h,P,q){if(!P&&!q)throw new Error('CodeGen: "try" without "catch" and "finally"');const H=new R;if(this._blockNode(H),this.code(h),P){const X=this.name("e");this._currNode=H.catch=new D(X),P(X)}return q&&(this._currNode=H.finally=new V,this.code(q)),this._endBlockNode(D,V)}throw(h){return this._leafNode(new y(h))}block(h,P){return this._blockStarts.push(this._nodes.length),h&&this.code(h).endBlock(P),this}endBlock(h){const P=this._blockStarts.pop();if(P===void 0)throw new Error("CodeGen: not in self-balancing block");const q=this._nodes.length-P;if(q<0||h!==void 0&&q!==h)throw new Error(`CodeGen: wrong number of nodes: ${q} vs ${h} expected`);return this._nodes.length=P,this}func(h,P=t.nil,q,H){return this._blockNode(new v(h,P,q)),H&&this.code(H).endFunc(),this}endFunc(){return this._endBlockNode(v)}optimize(h=1){for(;h-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(h){return this._currNode.nodes.push(h),this}_blockNode(h){this._currNode.nodes.push(h),this._nodes.push(h)}_endBlockNode(h,P){const q=this._currNode;if(q instanceof h||P&&q instanceof P)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${P?`${h.kind}/${P.kind}`:h.kind}"`)}_elseNode(h){const P=this._currNode;if(!(P instanceof u))throw new Error('CodeGen: "else" without "if"');return this._currNode=P.else=h,this}get _root(){return this._nodes[0]}get _currNode(){const h=this._nodes;return h[h.length-1]}set _currNode(h){const P=this._nodes;P[P.length-1]=h}}e.CodeGen=G;function B(T,h){for(const P in h)T[P]=(T[P]||0)+(h[P]||0);return T}function J(T,h){return h instanceof t._CodeOrName?B(T,h.names):T}function A(T,h,P){if(T instanceof t.Name)return q(T);if(!H(T))return T;return new t._Code(T._items.reduce((X,re)=>(re instanceof t.Name&&(re=q(re)),re instanceof t._Code?X.push(...re._items):X.push(re),X),[]));function q(X){const re=P[X.str];return re===void 0||h[X.str]!==1?X:(delete h[X.str],re)}function H(X){return X instanceof t._Code&&X._items.some(re=>re instanceof t.Name&&h[re.str]===1&&P[re.str]!==void 0)}}function L(T,h){for(const P in h)T[P]=(T[P]||0)-(h[P]||0)}function x(T){return typeof T=="boolean"||typeof T=="number"||T===null?!T:(0,t._)`!${O(T)}`}e.not=x;const U=k(e.operators.AND);function F(...T){return T.reduce(U)}e.and=F;const z=k(e.operators.OR);function j(...T){return T.reduce(z)}e.or=j;function k(T){return(h,P)=>h===t.nil?P:P===t.nil?h:(0,t._)`${O(h)} ${T} ${O(P)}`}function O(T){return T instanceof t.Name?T:(0,t._)`(${T})`}}(Kt)),Kt}var W={},En;function te(){if(En)return W;En=1,Object.defineProperty(W,"__esModule",{value:!0}),W.checkStrictMode=W.getErrorPath=W.Type=W.useFunc=W.setEvaluated=W.evaluatedPropsToName=W.mergeEvaluated=W.eachItem=W.unescapeJsonPointer=W.escapeJsonPointer=W.escapeFragment=W.unescapeFragment=W.schemaRefOrVal=W.schemaHasRulesButRef=W.schemaHasRules=W.checkUnknownRules=W.alwaysValidSchema=W.toHash=void 0;const e=Q(),t=xe();function o($){const v={};for(const b of $)v[b]=!0;return v}W.toHash=o;function s($,v){return typeof v=="boolean"?v:Object.keys(v).length===0?!0:(f($,v),!i(v,$.self.RULES.all))}W.alwaysValidSchema=s;function f($,v=$.schema){const{opts:b,self:R}=$;if(!b.strictSchema||typeof v=="boolean")return;const D=R.RULES.keywords;for(const V in v)D[V]||_($,`unknown keyword: "${V}"`)}W.checkUnknownRules=f;function i($,v){if(typeof $=="boolean")return!$;for(const b in $)if(v[b])return!0;return!1}W.schemaHasRules=i;function p($,v){if(typeof $=="boolean")return!$;for(const b in $)if(b!=="$ref"&&v.all[b])return!0;return!1}W.schemaHasRulesButRef=p;function d({topSchemaRef:$,schemaPath:v},b,R,D){if(!D){if(typeof b=="number"||typeof b=="boolean")return b;if(typeof b=="string")return(0,e._)`${b}`}return(0,e._)`${$}${v}${(0,e.getProperty)(R)}`}W.schemaRefOrVal=d;function a($){return y(decodeURIComponent($))}W.unescapeFragment=a;function g($){return encodeURIComponent(n($))}W.escapeFragment=g;function n($){return typeof $=="number"?`${$}`:$.replace(/~/g,"~0").replace(/\//g,"~1")}W.escapeJsonPointer=n;function y($){return $.replace(/~1/g,"/").replace(/~0/g,"~")}W.unescapeJsonPointer=y;function w($,v){if(Array.isArray($))for(const b of $)v(b);else v($)}W.eachItem=w;function E({mergeNames:$,mergeToName:v,mergeValues:b,resultTo