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 ke=(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),Se=(Z,ne,ie,qe)=>(Mi(Z,ne,"write to private field"),qe?qe.call(Z,ie):ne.set(Z,ie),ie);var un=(Z,ne,ie,qe)=>({set _(Vt){Se(Z,ne,Vt,ie)},get _(){return ke(Z,ne,qe)}});var $e,Oe,je;async function ne(e,t,{concurrency:c=Number.POSITIVE_INFINITY,stopOnError:s=!0,signal:l}={}){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(c)&&c>=1||c===Number.POSITIVE_INFINITY))throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${c}\` (${typeof c})`);const d=[],a=[],g=new Map;let n=!1,y=!1,E=!1,b=0,h=0;const $=e[Symbol.iterator]===void 0?e[Symbol.asyncIterator]():e[Symbol.iterator](),o=()=>{u(l.reason)},f=()=>{l==null||l.removeEventListener("abort",o)},r=w=>{i(w),f()},u=w=>{n=!0,y=!0,p(w),f()};l&&(l.aborted&&u(l.reason),l.addEventListener("abort",o,{once:!0}));const _=async()=>{if(y)return;const w=await $.next(),v=h;if(h++,w.done){if(E=!0,b===0&&!y){if(!s&&a.length>0){u(new AggregateError(a));return}if(y=!0,g.size===0){r(d);return}const S=[];for(const[k,A]of d.entries())g.get(k)!==ie&&S.push(A);r(S)}return}b++,(async()=>{try{const S=await w.value;if(y)return;const k=await t(S,v);k===ie&&g.set(v,k),d[v]=k,b--,await _()}catch(S){if(s)u(S);else{a.push(S),b--;try{await _()}catch(k){u(k)}}}})()};(async()=>{for(let w=0;w<c;w++){try{await _()}catch(v){u(v);break}if(E||n)break}})()})}const ie=Symbol("skip");async function qe(e,t,c){return(await ne(e,(l,i)=>Promise.all([t(l,i),l]),c)).filter(l=>!!l[0]).map(l=>l[1])}class Vt{constructor(t){cn(this,"value");cn(this,"next");this.value=t}}class Fi{constructor(){Ft(this,$e);Ft(this,Oe);Ft(this,je);this.clear()}enqueue(t){const c=new Vt(t);ke(this,$e)?(ke(this,Oe).next=c,Se(this,Oe,c)):(Se(this,$e,c),Se(this,Oe,c)),un(this,je)._++}dequeue(){const t=ke(this,$e);if(t)return Se(this,$e,ke(this,$e).next),un(this,je)._--,t.value}clear(){Se(this,$e,void 0),Se(this,Oe,void 0),Se(this,je,0)}get size(){return ke(this,je)}*[Symbol.iterator](){let t=ke(this,$e);for(;t;)yield t.value,t=t.next}}$e=new WeakMap,Oe=new WeakMap,je=new WeakMap;function ln(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 c=0;const s=()=>{c--,t.size>0&&t.dequeue()()},l=async(d,a,g)=>{c++;const n=(async()=>d(...g))();a(n);try{await n}catch{}s()},i=(d,a,g)=>{t.enqueue(l.bind(void 0,d,a,g)),(async()=>(await Promise.resolve(),c<e&&t.size>0&&t.dequeue()()))()},p=(d,...a)=>new Promise(g=>{i(d,g,a)});return Object.defineProperties(p,{activeCount:{get:()=>c},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:c=Number.POSITIVE_INFINITY,preserveOrder:s=!0}={}){const l=ln(c),i=[...e].map(d=>[d,l(Vi,d,t)]),p=ln(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:c}},{pathExists:s,npmDependencies:l}){return Gi(e,l)&&xi(t,l)&&await Ki(c,s)},Gi=function(e,t){return e.length===0||e.some(c=>t.includes(c))},xi=function(e,t){return e.every(c=>!t.includes(c))},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:c}){if(e===void 0)return[];const s=Ji(t,e).map(l=>`${c} ${l}`);return s.length!==0?s:[e]},Ji=function(e,t){const c=Bi(e,t);return c.length!==0?c:Object.keys(e).filter(l=>Wi(l,e[l])).sort(mn)},pn=e=>e===-1?Number.MAX_SAFE_INTEGER:e,mn=(e,t)=>{const c=zt.findIndex(l=>Ut(e,l)),s=zt.findIndex(l=>Ut(t,l));return pn(c)-pn(s)},Bi=function(e,t){return Object.entries(e).filter(([,c])=>c.includes(t)).map(([c])=>c).sort(mn)},Wi=function(e,t){return zt.some(c=>Ut(e,c)&&!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 c={};if(Array.isArray(t))for(const s of t){const l=Object.getOwnPropertyDescriptor(e,s);l!=null&&l.enumerable&&Object.defineProperty(c,s,l)}else for(const s of Reflect.ownKeys(e)){const l=Object.getOwnPropertyDescriptor(e,s);if(l.enumerable){const i=e[s];t(s,i,e)&&Object.defineProperty(c,s,l)}}return c}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),c=ra(e);return{npmDependencies:t,scripts:c}},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={},we={},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 c 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=c;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((u,_)=>`${u}${_}`,"")}get names(){var r;return(r=this._names)!==null&&r!==void 0?r:this._names=this._items.reduce((u,_)=>(_ instanceof c&&(u[_.str]=(u[_.str]||0)+1),u),{})}}e._Code=s,e.nil=new s("");function l(f,...r){const u=[f[0]];let _=0;for(;_<r.length;)d(u,r[_]),u.push(f[++_]);return new s(u)}e._=l;const i=new s("+");function p(f,...r){const u=[b(f[0])];let _=0;for(;_<r.length;)u.push(i),d(u,r[_]),u.push(i,b(f[++_]));return a(u),new s(u)}e.str=p;function d(f,r){r instanceof s?f.push(...r._items):r instanceof c?f.push(r):f.push(y(r))}e.addCodeArg=d;function a(f){let r=1;for(;r<f.length-1;){if(f[r]===i){const u=g(f[r-1],f[r+1]);if(u!==void 0){f.splice(r-1,3,u);continue}f[r++]="+"}r++}}function g(f,r){if(r==='""')return f;if(f==='""')return r;if(typeof f=="string")return r instanceof c||f[f.length-1]!=='"'?void 0:typeof r!="string"?`${f.slice(0,-1)}${r}"`:r[0]==='"'?f.slice(0,-1)+r.slice(1):void 0;if(typeof r=="string"&&r[0]==='"'&&!(f instanceof c))return`"${f}${r.slice(1)}`}function n(f,r){return r.emptyStr()?f:f.emptyStr()?r:p`${f}${r}`}e.strConcat=n;function y(f){return typeof f=="number"||typeof f=="boolean"||f===null?f:b(Array.isArray(f)?f.join(","):f)}function E(f){return new s(b(f))}e.stringify=E;function b(f){return JSON.stringify(f).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}e.safeStringify=b;function h(f){return typeof f=="string"&&e.IDENTIFIER.test(f)?new s(`.${f}`):l`[${f}]`}e.getProperty=h;function $(f){if(typeof f=="string"&&e.IDENTIFIER.test(f))return new s(`${f}`);throw new Error(`CodeGen: invalid export name: ${f}, use explicit $id name mapping`)}e.getEsmExportName=$;function o(f){return new s(f.toString())}e.regexpCode=o}(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 c 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 l{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=l;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 l{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 E=this.toName(g),{prefix:b}=E,h=(y=n.key)!==null&&y!==void 0?y:n.ref;let $=this._values[b];if($){const r=$.get(h);if(r)return r}else $=this._values[b]=new Map;$.set(h,E);const o=this._scope[b]||(this._scope[b]=[]),f=o.length;return o[f]=n.ref,E.setValue(n,{property:b,itemIndex:f}),E}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,E=>{if(E.value===void 0)throw new Error(`CodeGen: name "${E}" has no value`);return E.value.code},n,y)}_reduceValues(g,n,y={},E){let b=t.nil;for(const h in g){const $=g[h];if(!$)continue;const o=y[h]=y[h]||new Map;$.forEach(f=>{if(o.has(f))return;o.set(f,s.Started);let r=n(f);if(r){const u=this.opts.es5?e.varKinds.var:e.varKinds.const;b=(0,t._)`${b}${u} ${f} = ${r};${this.opts._n}`}else if(r=E==null?void 0:E(f))b=(0,t._)`${b}${r}${this.opts._n}`;else throw new c(f);o.set(f,s.Completed)})}return b}}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(),c=$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 l=$n();Object.defineProperty(e,"Scope",{enumerable:!0,get:function(){return l.Scope}}),Object.defineProperty(e,"ValueScope",{enumerable:!0,get:function(){return l.ValueScope}}),Object.defineProperty(e,"ValueScopeName",{enumerable:!0,get:function(){return l.ValueScopeName}}),Object.defineProperty(e,"varKinds",{enumerable:!0,get:function(){return l.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(m,P){return this}}class p extends i{constructor(m,P,q){super(),this.varKind=m,this.name=P,this.rhs=q}render({es5:m,_n:P}){const q=m?c.varKinds.var:this.varKind,H=this.rhs===void 0?"":` = ${this.rhs}`;return`${q} ${this.name}${H};`+P}optimizeNames(m,P){if(m[this.name.str])return this.rhs&&(this.rhs=D(this.rhs,m,P)),this}get names(){return this.rhs instanceof t._CodeOrName?this.rhs.names:{}}}class d extends i{constructor(m,P,q){super(),this.lhs=m,this.rhs=P,this.sideEffects=q}render({_n:m}){return`${this.lhs} = ${this.rhs};`+m}optimizeNames(m,P){if(!(this.lhs instanceof t.Name&&!m[this.lhs.str]&&!this.sideEffects))return this.rhs=D(this.rhs,m,P),this}get names(){const m=this.lhs instanceof t.Name?{}:{...this.lhs.names};return J(m,this.rhs)}}class a extends d{constructor(m,P,q,H){super(m,q,H),this.op=P}render({_n:m}){return`${this.lhs} ${this.op}= ${this.rhs};`+m}}class g extends i{constructor(m){super(),this.label=m,this.names={}}render({_n:m}){return`${this.label}:`+m}}class n extends i{constructor(m){super(),this.label=m,this.names={}}render({_n:m}){return`break${this.label?` ${this.label}`:""};`+m}}class y extends i{constructor(m){super(),this.error=m}render({_n:m}){return`throw ${this.error};`+m}get names(){return this.error.names}}class E extends i{constructor(m){super(),this.code=m}render({_n:m}){return`${this.code};`+m}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(m,P){return this.code=D(this.code,m,P),this}get names(){return this.code instanceof t._CodeOrName?this.code.names:{}}}class b extends i{constructor(m=[]){super(),this.nodes=m}render(m){return this.nodes.reduce((P,q)=>P+q.render(m),"")}optimizeNodes(){const{nodes:m}=this;let P=m.length;for(;P--;){const q=m[P].optimizeNodes();Array.isArray(q)?m.splice(P,1,...q):q?m[P]=q:m.splice(P,1)}return m.length>0?this:void 0}optimizeNames(m,P){const{nodes:q}=this;let H=q.length;for(;H--;){const X=q[H];X.optimizeNames(m,P)||(L(m,X.names),q.splice(H,1))}return q.length>0?this:void 0}get names(){return this.nodes.reduce((m,P)=>B(m,P.names),{})}}class h extends b{render(m){return"{"+m._n+super.render(m)+"}"+m._n}}class $ extends b{}class o extends h{}o.kind="else";class f extends h{constructor(m,P){super(P),this.condition=m}render(m){let P=`if(${this.condition})`+super.render(m);return this.else&&(P+="else "+this.else.render(m)),P}optimizeNodes(){super.optimizeNodes();const m=this.condition;if(m===!0)return this.nodes;let P=this.else;if(P){const q=P.optimizeNodes();P=this.else=Array.isArray(q)?new o(q):q}if(P)return m===!1?P instanceof f?P:P.nodes:this.nodes.length?this:new f(x(m),P instanceof f?[P]:P.nodes);if(!(m===!1||!this.nodes.length))return this}optimizeNames(m,P){var q;if(this.else=(q=this.else)===null||q===void 0?void 0:q.optimizeNames(m,P),!!(super.optimizeNames(m,P)||this.else))return this.condition=D(this.condition,m,P),this}get names(){const m=super.names;return J(m,this.condition),this.else&&B(m,this.else.names),m}}f.kind="if";class r extends h{}r.kind="for";class u extends r{constructor(m){super(),this.iteration=m}render(m){return`for(${this.iteration})`+super.render(m)}optimizeNames(m,P){if(super.optimizeNames(m,P))return this.iteration=D(this.iteration,m,P),this}get names(){return B(super.names,this.iteration.names)}}class _ extends r{constructor(m,P,q,H){super(),this.varKind=m,this.name=P,this.from=q,this.to=H}render(m){const P=m.es5?c.varKinds.var:this.varKind,{name:q,from:H,to:X}=this;return`for(${P} ${q}=${H}; ${q}<${X}; ${q}++)`+super.render(m)}get names(){const m=J(super.names,this.from);return J(m,this.to)}}class w extends r{constructor(m,P,q,H){super(),this.loop=m,this.varKind=P,this.name=q,this.iterable=H}render(m){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(m)}optimizeNames(m,P){if(super.optimizeNames(m,P))return this.iterable=D(this.iterable,m,P),this}get names(){return B(super.names,this.iterable.names)}}class v extends h{constructor(m,P,q){super(),this.name=m,this.args=P,this.async=q}render(m){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(m)}}v.kind="func";class S extends b{render(m){return"return "+super.render(m)}}S.kind="return";class k extends h{render(m){let P="try"+super.render(m);return this.catch&&(P+=this.catch.render(m)),this.finally&&(P+=this.finally.render(m)),P}optimizeNodes(){var m,P;return super.optimizeNodes(),(m=this.catch)===null||m===void 0||m.optimizeNodes(),(P=this.finally)===null||P===void 0||P.optimizeNodes(),this}optimizeNames(m,P){var q,H;return super.optimizeNames(m,P),(q=this.catch)===null||q===void 0||q.optimizeNames(m,P),(H=this.finally)===null||H===void 0||H.optimizeNames(m,P),this}get names(){const m=super.names;return this.catch&&B(m,this.catch.names),this.finally&&B(m,this.finally.names),m}}class A extends h{constructor(m){super(),this.error=m}render(m){return`catch(${this.error})`+super.render(m)}}A.kind="catch";class V extends h{render(m){return"finally"+super.render(m)}}V.kind="finally";class G{constructor(m,P={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...P,_n:P.lines?` `:""},this._extScope=m,this._scope=new c.Scope({parent:m}),this._nodes=[new $]}toString(){return this._root.render(this.opts)}name(m){return this._scope.name(m)}scopeName(m){return this._extScope.name(m)}scopeValue(m,P){const q=this._extScope.value(m,P);return(this._values[q.prefix]||(this._values[q.prefix]=new Set)).add(q),q}getScopeValue(m,P){return this._extScope.getValue(m,P)}scopeRefs(m){return this._extScope.scopeRefs(m,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(m,P,q,H){const X=this._scope.toName(P);return q!==void 0&&H&&(this._constants[X.str]=q),this._leafNode(new p(m,X,q)),X}const(m,P,q){return this._def(c.varKinds.const,m,P,q)}let(m,P,q){return this._def(c.varKinds.let,m,P,q)}var(m,P,q){return this._def(c.varKinds.var,m,P,q)}assign(m,P,q){return this._leafNode(new d(m,P,q))}add(m,P){return this._leafNode(new a(m,e.operators.ADD,P))}code(m){return typeof m=="function"?m():m!==t.nil&&this._leafNode(new E(m)),this}object(...m){const P=["{"];for(const[q,H]of m)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(m,P,q){if(this._blockNode(new f(m)),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(m){return this._elseNode(new f(m))}else(){return this._elseNode(new o)}endIf(){return this._endBlockNode(f,o)}_for(m,P){return this._blockNode(m),P&&this.code(P).endFor(),this}for(m,P){return this._for(new u(m),P)}forRange(m,P,q,H,X=this.opts.es5?c.varKinds.var:c.varKinds.let){const re=this._scope.toName(m);return this._for(new _(X,re,P,q),()=>H(re))}forOf(m,P,q,H=c.varKinds.const){const X=this._scope.toName(m);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 w("of",H,X,P),()=>q(X))}forIn(m,P,q,H=this.opts.es5?c.varKinds.var:c.varKinds.const){if(this.opts.ownProperties)return this.forOf(m,(0,t._)`Object.keys(${P})`,q);const X=this._scope.toName(m);return this._for(new w("in",H,X,P),()=>q(X))}endFor(){return this._endBlockNode(r)}label(m){return this._leafNode(new g(m))}break(m){return this._leafNode(new n(m))}return(m){const P=new S;if(this._blockNode(P),this.code(m),P.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(S)}try(m,P,q){if(!P&&!q)throw new Error('CodeGen: "try" without "catch" and "finally"');const H=new k;if(this._blockNode(H),this.code(m),P){const X=this.name("e");this._currNode=H.catch=new A(X),P(X)}return q&&(this._currNode=H.finally=new V,this.code(q)),this._endBlockNode(A,V)}throw(m){return this._leafNode(new y(m))}block(m,P){return this._blockStarts.push(this._nodes.length),m&&this.code(m).endBlock(P),this}endBlock(m){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||m!==void 0&&q!==m)throw new Error(`CodeGen: wrong number of nodes: ${q} vs ${m} expected`);return this._nodes.length=P,this}func(m,P=t.nil,q,H){return this._blockNode(new v(m,P,q)),H&&this.code(H).endFunc(),this}endFunc(){return this._endBlockNode(v)}optimize(m=1){for(;m-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(m){return this._currNode.nodes.push(m),this}_blockNode(m){this._currNode.nodes.push(m),this._nodes.push(m)}_endBlockNode(m,P){const q=this._currNode;if(q instanceof m||P&&q instanceof P)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${P?`${m.kind}/${P.kind}`:m.kind}"`)}_elseNode(m){const P=this._currNode;if(!(P instanceof f))throw new Error('CodeGen: "else" without "if"');return this._currNode=P.else=m,this}get _root(){return this._nodes[0]}get _currNode(){const m=this._nodes;return m[m.length-1]}set _currNode(m){const P=this._nodes;P[P.length-1]=m}}e.CodeGen=G;function B(T,m){for(const P in m)T[P]=(T[P]||0)+(m[P]||0);return T}function J(T,m){return m instanceof t._CodeOrName?B(T,m.names):T}function D(T,m,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||m[X.str]!==1?X:(delete m[X.str],re)}function H(X){return X instanceof t._Code&&X._items.some(re=>re instanceof t.Name&&m[re.str]===1&&P[re.str]!==void 0)}}function L(T,m){for(const P in m)T[P]=(T[P]||0)-(m[P]||0)}function x(T){return typeof T=="boolean"||typeof T=="number"||T===null?!T:(0,t._)`!${O(T)}`}e.not=x;const U=R(e.operators.AND);function F(...T){return T.reduce(U)}e.and=F;const z=R(e.operators.OR);function j(...T){return T.reduce(z)}e.or=j;function R(T){return(m,P)=>m===t.nil?P:P===t.nil?m:(0,t._)`${O(m)} ${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 c(w){const v={};for(const S of w)v[S]=!0;return v}W.toHash=c;function s(w,v){return typeof v=="boolean"?v:Object.keys(v).length===0?!0:(l(w,v),!i(v,w.self.RULES.all))}W.alwaysValidSchema=s;function l(w,v=w.schema){const{opts:S,self:k}=w;if(!S.strictSchema||typeof v=="boolean")return;const A=k.RULES.keywords;for(const V in v)A[V]||_(w,`unknown keyword: "${V}"`)}W.checkUnknownRules=l;function i(w,v){if(typeof w=="boolean")return!w;for(const S in w)if(v[S])return!0;return!1}W.schemaHasRules=i;function p(w,v){if(typeof w=="boolean")return!w;for(const S in w)if(S!=="$ref"&&v.all[S])return!0;return!1}W.schemaHasRulesButRef=p;function d({topSchemaRef:w,schemaPath:v},S,k,A){if(!A){if(typeof S=="number"||typeof S=="boolean")return S;if(typeof S=="string")return(0,e._)`${S}`}return(0,e._)`${w}${v}${(0,e.getProperty)(k)}`}W.schemaRefOrVal=d;function a(w){return y(decodeURIComponent(w))}W.unescapeFragment=a;function g(w){return encodeURIComponent(n(w))}W.escapeFragment=g;function n(w){return typeof w=="number"?`${w}`:w.replace(/~/g,"~0").replace(/\//g,"~1")}W.escapeJsonPointer=n;function y(w){return w.replace(/~1/g,"/").replace(/~0/g,"~")}W.unescapeJsonPointer=y;function E(w,v){if(Array.isArray(w))for(const S of w)v(S);else v(w)}W.eachItem=E;function b({mergeNames:w,mergeToName:v,mergeValues:S,resultToName:k}){return(A,V,G,B)=>{const J=G===void 0?V:G instanceof e.Name?(V instanceof e.Name?w(A,V,