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 Vo=Object.defineProperty;var Li=Z=>{throw TypeError(Z)};var Uo=(Z,ne,ie)=>ne in Z?Vo(Z,ne,{enumerable:!0,configurable:!0,writable:!0,value:ie}):Z[ne]=ie;var cn=(Z,ne,ie)=>Uo(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:a=Number.POSITIVE_INFINITY,stopOnError:n=!0,signal:u}={}){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(a)&&a>=1||a===Number.POSITIVE_INFINITY))throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${a}\` (${typeof a})`);const l=[],o=[],m=new Map;let s=!1,y=!1,w=!1,E=0,P=0;const h=e[Symbol.iterator]===void 0?e[Symbol.asyncIterator]():e[Symbol.iterator](),d=()=>{c(u.reason)},f=()=>{u==null||u.removeEventListener("abort",d)},r=$=>{i($),f()},c=$=>{s=!0,y=!0,p($),f()};u&&(u.aborted&&c(u.reason),u.addEventListener("abort",d,{once:!0}));const _=async()=>{if(y)return;const $=await h.next(),v=P;if(P++,$.done){if(w=!0,E===0&&!y){if(!n&&o.length>0){c(new AggregateError(o));return}if(y=!0,m.size===0){r(l);return}const b=[];for(const[R,D]of l.entries())m.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&&m.set(v,R),l[v]=R,E--,await _()}catch(b){if(n)c(b);else{o.push(b),E--;try{await _()}catch(R){c(R)}}}})()};(async()=>{for(let $=0;$<a;$++){try{await _()}catch(v){c(v);break}if(w||s)break}})()})}const ie=Symbol("skip");async function qe(e,t,a){return(await ne(e,(u,i)=>Promise.all([t(u,i),u]),a)).filter(u=>!!u[0]).map(u=>u[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 a=new Vt(t);we(this,me)?(we(this,Oe).next=a,Pe(this,Oe,a)):(Pe(this,me,a),Pe(this,Oe,a)),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 a=0;const n=()=>{a--,t.size>0&&t.dequeue()()},u=async(l,o,m)=>{a++;const s=(async()=>l(...m))();o(s);try{await s}catch{}n()},i=(l,o,m)=>{t.enqueue(u.bind(void 0,l,o,m)),(async()=>(await Promise.resolve(),a<e&&t.size>0&&t.dequeue()()))()},p=(l,...o)=>new Promise(m=>{i(l,m,o)});return Object.defineProperties(p,{activeCount:{get:()=>a},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:a=Number.POSITIVE_INFINITY,preserveOrder:n=!0}={}){const u=un(a),i=[...e].map(l=>[l,u(Vi,l,t)]),p=un(n?1:Number.POSITIVE_INFINITY);try{await Promise.all(i.map(l=>p(Ui,l)))}catch(l){if(l instanceof dn)return l.value;throw l}}const fn=async function({detect:{npmDependencies:e,excludedNpmDependencies:t,configFiles:a}},{pathExists:n,npmDependencies:u}){return Gi(e,u)&&xi(t,u)&&await Ki(a,n)},Gi=function(e,t){return e.length===0||e.some(a=>t.includes(a))},xi=function(e,t){return e.every(a=>!t.includes(a))},Hi=async(e,t)=>!!await zi(e,n=>t(n)),Ki=async function(e,t){return e.length===0||await Hi(e,t)},Xi=function({frameworkDevCommand:e,scripts:t,runScriptCommand:a}){if(e===void 0)return[];const n=Ji(t,e).map(u=>`${a} ${u}`);return n.length!==0?n:[e]},Ji=function(e,t){const a=Bi(e,t);return a.length!==0?a:Object.keys(e).filter(u=>Wi(u,e[u])).sort(mn)},pn=e=>e===-1?Number.MAX_SAFE_INTEGER:e,mn=(e,t)=>{const a=zt.findIndex(u=>Ut(e,u)),n=zt.findIndex(u=>Ut(t,u));return pn(a)-pn(n)},Bi=function(e,t){return Object.entries(e).filter(([,a])=>a.includes(t)).map(([a])=>a).sort(mn)},Wi=function(e,t){return zt.some(a=>Ut(e,a)&&!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:[]}],Zi=e=>Object.prototype.toString.call(e)==="[object Set]";function ea(e,t){const a={};if(Array.isArray(t)||Zi(t))for(const n of t){const u=Object.getOwnPropertyDescriptor(e,n);u!=null&&u.enumerable&&Object.defineProperty(a,n,u)}else for(const n of Reflect.ownKeys(e)){const u=Object.getOwnPropertyDescriptor(e,n);if(!(u!=null&&u.enumerable))continue;const i=e[n];t(n,i,e)&&Object.defineProperty(a,n,u)}return a}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 ta=function(e){if(e===void 0)return{npmDependencies:[],scripts:{}};const t=ra(e),a=na(e);return{npmDependencies:t,scripts:a}},ra=function({dependencies:e,devDependencies:t}){return[...gn(e),...gn(t)]},gn=function(e){return hn(e)?Object.keys(e):[]},na=function({scripts:e}){return hn(e)?ea(e,sa):{}},sa=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 a 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=a;class n 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 a&&(c[_.str]=(c[_.str]||0)+1),c),{})}}e._Code=n,e.nil=new n("");function u(f,...r){const c=[f[0]];let _=0;for(;_<r.length;)l(c,r[_]),c.push(f[++_]);return new n(c)}e._=u;const i=new n("+");function p(f,...r){const c=[E(f[0])];let _=0;for(;_<r.length;)c.push(i),l(c,r[_]),c.push(i,E(f[++_]));return o(c),new n(c)}e.str=p;function l(f,r){r instanceof n?f.push(...r._items):r instanceof a?f.push(r):f.push(y(r))}e.addCodeArg=l;function o(f){let r=1;for(;r<f.length-1;){if(f[r]===i){const c=m(f[r-1],f[r+1]);if(c!==void 0){f.splice(r-1,3,c);continue}f[r++]="+"}r++}}function m(f,r){if(r==='""')return f;if(f==='""')return r;if(typeof f=="string")return r instanceof a||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 a))return`"${f}${r.slice(1)}`}function s(f,r){return r.emptyStr()?f:f.emptyStr()?r:p`${f}${r}`}e.strConcat=s;function y(f){return typeof f=="number"||typeof f=="boolean"||f===null?f:E(Array.isArray(f)?f.join(","):f)}function w(f){return new n(E(f))}e.stringify=w;function E(f){return JSON.stringify(f).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}e.safeStringify=E;function P(f){return typeof f=="string"&&e.IDENTIFIER.test(f)?new n(`.${f}`):u`[${f}]`}e.getProperty=P;function h(f){if(typeof f=="string"&&e.IDENTIFIER.test(f))return new n(`${f}`);throw new Error(`CodeGen: invalid export name: ${f}, use explicit $id name mapping`)}e.getEsmExportName=h;function d(f){return new n(f.toString())}e.regexpCode=d}(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 a extends Error{constructor(m){super(`CodeGen: "code" for ${m} not defined`),this.value=m.value}}var n;(function(o){o[o.Started=0]="Started",o[o.Completed=1]="Completed"})(n||(e.UsedValueState=n={})),e.varKinds={const:new t.Name("const"),let:new t.Name("let"),var:new t.Name("var")};class u{constructor({prefixes:m,parent:s}={}){this._names={},this._prefixes=m,this._parent=s}toName(m){return m instanceof t.Name?m:this.name(m)}name(m){return new t.Name(this._newName(m))}_newName(m){const s=this._names[m]||this._nameGroup(m);return`${m}${s.index++}`}_nameGroup(m){var s,y;if(!((y=(s=this._parent)===null||s===void 0?void 0:s._prefixes)===null||y===void 0)&&y.has(m)||this._prefixes&&!this._prefixes.has(m))throw new Error(`CodeGen: prefix "${m}" is not allowed in this scope`);return this._names[m]={prefix:m,index:0}}}e.Scope=u;class i extends t.Name{constructor(m,s){super(s),this.prefix=m}setValue(m,{property:s,itemIndex:y}){this.value=m,this.scopePath=(0,t._)`.${new t.Name(s)}[${y}]`}}e.ValueScopeName=i;const p=(0,t._)`\n`;class l extends u{constructor(m){super(m),this._values={},this._scope=m.scope,this.opts={...m,_n:m.lines?p:t.nil}}get(){return this._scope}name(m){return new i(m,this._newName(m))}value(m,s){var y;if(s.ref===void 0)throw new Error("CodeGen: ref must be passed in value");const w=this.toName(m),{prefix:E}=w,P=(y=s.key)!==null&&y!==void 0?y:s.ref;let h=this._values[E];if(h){const r=h.get(P);if(r)return r}else h=this._values[E]=new Map;h.set(P,w);const d=this._scope[E]||(this._scope[E]=[]),f=d.length;return d[f]=s.ref,w.setValue(s,{property:E,itemIndex:f}),w}getValue(m,s){const y=this._values[m];if(y)return y.get(s)}scopeRefs(m,s=this._values){return this._reduceValues(s,y=>{if(y.scopePath===void 0)throw new Error(`CodeGen: name "${y}" has no value`);return(0,t._)`${m}${y.scopePath}`})}scopeCode(m=this._values,s,y){return this._reduceValues(m,w=>{if(w.value===void 0)throw new Error(`CodeGen: name "${w}" has no value`);return w.value.code},s,y)}_reduceValues(m,s,y={},w){let E=t.nil;for(const P in m){const h=m[P];if(!h)continue;const d=y[P]=y[P]||new Map;h.forEach(f=>{if(d.has(f))return;d.set(f,n.Started);let r=s(f);if(r){const c=this.opts.es5?e.varKinds.var:e.varKinds.const;E=(0,t._)`${E}${c} ${f} = ${r};${this.opts._n}`}else if(r=w==null?void 0:w(f))E=(0,t._)`${E}${r}${this.opts._n}`;else throw new a(f);d.set(f,n.Completed)})}return E}}e.ValueScope=l}(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(),a=$n();var n=xe();Object.defineProperty(e,"_",{enumerable:!0,get:function(){return n._}}),Object.defineProperty(e,"str",{enumerable:!0,get:function(){return n.str}}),Object.defineProperty(e,"strConcat",{enumerable:!0,get:function(){return n.strConcat}}),Object.defineProperty(e,"nil",{enumerable:!0,get:function(){return n.nil}}),Object.defineProperty(e,"getProperty",{enumerable:!0,get:function(){return n.getProperty}}),Object.defineProperty(e,"stringify",{enumerable:!0,get:function(){return n.stringify}}),Object.defineProperty(e,"regexpCode",{enumerable:!0,get:function(){return n.regexpCode}}),Object.defineProperty(e,"Name",{enumerable:!0,get:function(){return n.Name}});var u=$n();Object.defineProperty(e,"Scope",{enumerable:!0,get:function(){return u.Scope}}),Object.defineProperty(e,"ValueScope",{enumerable:!0,get:function(){return u.ValueScope}}),Object.defineProperty(e,"ValueScopeName",{enumerable:!0,get:function(){return u.ValueScopeName}}),Object.defineProperty(e,"varKinds",{enumerable:!0,get:function(){return u.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(g,S){return this}}class p extends i{constructor(g,S,q){super(),this.varKind=g,this.name=S,this.rhs=q}render({es5:g,_n:S}){const q=g?a.varKinds.var:this.varKind,H=this.rhs===void 0?"":` = ${this.rhs}`;return`${q} ${this.name}${H};`+S}optimizeNames(g,S){if(g[this.name.str])return this.rhs&&(this.rhs=A(this.rhs,g,S)),this}get names(){return this.rhs instanceof t._CodeOrName?this.rhs.names:{}}}class l extends i{constructor(g,S,q){super(),this.lhs=g,this.rhs=S,this.sideEffects=q}render({_n:g}){return`${this.lhs} = ${this.rhs};`+g}optimizeNames(g,S){if(!(this.lhs instanceof t.Name&&!g[this.lhs.str]&&!this.sideEffects))return this.rhs=A(this.rhs,g,S),this}get names(){const g=this.lhs instanceof t.Name?{}:{...this.lhs.names};return J(g,this.rhs)}}class o extends l{constructor(g,S,q,H){super(g,q,H),this.op=S}render({_n:g}){return`${this.lhs} ${this.op}= ${this.rhs};`+g}}class m extends i{constructor(g){super(),this.label=g,this.names={}}render({_n:g}){return`${this.label}:`+g}}class s extends i{constructor(g){super(),this.label=g,this.names={}}render({_n:g}){return`break${this.label?` ${this.label}`:""};`+g}}class y extends i{constructor(g){super(),this.error=g}render({_n:g}){return`throw ${this.error};`+g}get names(){return this.error.names}}class w extends i{constructor(g){super(),this.code=g}render({_n:g}){return`${this.code};`+g}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(g,S){return this.code=A(this.code,g,S),this}get names(){return this.code instanceof t._CodeOrName?this.code.names:{}}}class E extends i{constructor(g=[]){super(),this.nodes=g}render(g){return this.nodes.reduce((S,q)=>S+q.render(g),"")}optimizeNodes(){const{nodes:g}=this;let S=g.length;for(;S--;){const q=g[S].optimizeNodes();Array.isArray(q)?g.splice(S,1,...q):q?g[S]=q:g.splice(S,1)}return g.length>0?this:void 0}optimizeNames(g,S){const{nodes:q}=this;let H=q.length;for(;H--;){const X=q[H];X.optimizeNames(g,S)||(L(g,X.names),q.splice(H,1))}return q.length>0?this:void 0}get names(){return this.nodes.reduce((g,S)=>B(g,S.names),{})}}class P extends E{render(g){return"{"+g._n+super.render(g)+"}"+g._n}}class h extends E{}class d extends P{}d.kind="else";class f extends P{constructor(g,S){super(S),this.condition=g}render(g){let S=`if(${this.condition})`+super.render(g);return this.else&&(S+="else "+this.else.render(g)),S}optimizeNodes(){super.optimizeNodes();const g=this.condition;if(g===!0)return this.nodes;let S=this.else;if(S){const q=S.optimizeNodes();S=this.else=Array.isArray(q)?new d(q):q}if(S)return g===!1?S instanceof f?S:S.nodes:this.nodes.length?this:new f(x(g),S instanceof f?[S]:S.nodes);if(!(g===!1||!this.nodes.length))return this}optimizeNames(g,S){var q;if(this.else=(q=this.else)===null||q===void 0?void 0:q.optimizeNames(g,S),!!(super.optimizeNames(g,S)||this.else))return this.condition=A(this.condition,g,S),this}get names(){const g=super.names;return J(g,this.condition),this.else&&B(g,this.else.names),g}}f.kind="if";class r extends P{}r.kind="for";class c extends r{constructor(g){super(),this.iteration=g}render(g){return`for(${this.iteration})`+super.render(g)}optimizeNames(g,S){if(super.optimizeNames(g,S))return this.iteration=A(this.iteration,g,S),this}get names(){return B(super.names,this.iteration.names)}}class _ extends r{constructor(g,S,q,H){super(),this.varKind=g,this.name=S,this.from=q,this.to=H}render(g){const S=g.es5?a.varKinds.var:this.varKind,{name:q,from:H,to:X}=this;return`for(${S} ${q}=${H}; ${q}<${X}; ${q}++)`+super.render(g)}get names(){const g=J(super.names,this.from);return J(g,this.to)}}class $ extends r{constructor(g,S,q,H){super(),this.loop=g,this.varKind=S,this.name=q,this.iterable=H}render(g){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(g)}optimizeNames(g,S){if(super.optimizeNames(g,S))return this.iterable=A(this.iterable,g,S),this}get names(){return B(super.names,this.iterable.names)}}class v extends P{constructor(g,S,q){super(),this.name=g,this.args=S,this.async=q}render(g){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(g)}}v.kind="func";class b extends E{render(g){return"return "+super.render(g)}}b.kind="return";class R extends P{render(g){let S="try"+super.render(g);return this.catch&&(S+=this.catch.render(g)),this.finally&&(S+=this.finally.render(g)),S}optimizeNodes(){var g,S;return super.optimizeNodes(),(g=this.catch)===null||g===void 0||g.optimizeNodes(),(S=this.finally)===null||S===void 0||S.optimizeNodes(),this}optimizeNames(g,S){var q,H;return super.optimizeNames(g,S),(q=this.catch)===null||q===void 0||q.optimizeNames(g,S),(H=this.finally)===null||H===void 0||H.optimizeNames(g,S),this}get names(){const g=super.names;return this.catch&&B(g,this.catch.names),this.finally&&B(g,this.finally.names),g}}class D extends P{constructor(g){super(),this.error=g}render(g){return`catch(${this.error})`+super.render(g)}}D.kind="catch";class V extends P{render(g){return"finally"+super.render(g)}}V.kind="finally";class G{constructor(g,S={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...S,_n:S.lines?` `:""},this._extScope=g,this._scope=new a.Scope({parent:g}),this._nodes=[new h]}toString(){return this._root.render(this.opts)}name(g){return this._scope.name(g)}scopeName(g){return this._extScope.name(g)}scopeValue(g,S){const q=this._extScope.value(g,S);return(this._values[q.prefix]||(this._values[q.prefix]=new Set)).add(q),q}getScopeValue(g,S){return this._extScope.getValue(g,S)}scopeRefs(g){return this._extScope.scopeRefs(g,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(g,S,q,H){const X=this._scope.toName(S);return q!==void 0&&H&&(this._constants[X.str]=q),this._leafNode(new p(g,X,q)),X}const(g,S,q){return this._def(a.varKinds.const,g,S,q)}let(g,S,q){return this._def(a.varKinds.let,g,S,q)}var(g,S,q){return this._def(a.varKinds.var,g,S,q)}assign(g,S,q){return this._leafNode(new l(g,S,q))}add(g,S){return this._leafNode(new o(g,e.operators.ADD,S))}code(g){return typeof g=="function"?g():g!==t.nil&&this._leafNode(new w(g)),this}object(...g){const S=["{"];for(const[q,H]of g)S.length>1&&S.push(","),S.push(q),(q!==H||this.opts.es5)&&(S.push(":"),(0,t.addCodeArg)(S,H));return S.push("}"),new t._Code(S)}if(g,S,q){if(this._blockNode(new f(g)),S&&q)this.code(S).else().code(q).endIf();else if(S)this.code(S).endIf();else if(q)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(g){return this._elseNode(new f(g))}else(){return this._elseNode(new d)}endIf(){return this._endBlockNode(f,d)}_for(g,S){return this._blockNode(g),S&&this.code(S).endFor(),this}for(g,S){return this._for(new c(g),S)}forRange(g,S,q,H,X=this.opts.es5?a.varKinds.var:a.varKinds.let){const re=this._scope.toName(g);return this._for(new _(X,re,S,q),()=>H(re))}forOf(g,S,q,H=a.varKinds.const){const X=this._scope.toName(g);if(this.opts.es5){const re=S instanceof t.Name?S:this.var("_arr",S);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,S),()=>q(X))}forIn(g,S,q,H=this.opts.es5?a.varKinds.var:a.varKinds.const){if(this.opts.ownProperties)return this.forOf(g,(0,t._)`Object.keys(${S})`,q);const X=this._scope.toName(g);return this._for(new $("in",H,X,S),()=>q(X))}endFor(){return this._endBlockNode(r)}label(g){return this._leafNode(new m(g))}break(g){return this._leafNode(new s(g))}return(g){const S=new b;if(this._blockNode(S),this.code(g),S.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(b)}try(g,S,q){if(!S&&!q)throw new Error('CodeGen: "try" without "catch" and "finally"');const H=new R;if(this._blockNode(H),this.code(g),S){const X=this.name("e");this._currNode=H.catch=new D(X),S(X)}return q&&(this._currNode=H.finally=new V,this.code(q)),this._endBlockNode(D,V)}throw(g){return this._leafNode(new y(g))}block(g,S){return this._blockStarts.push(this._nodes.length),g&&this.code(g).endBlock(S),this}endBlock(g){const S=this._blockStarts.pop();if(S===void 0)throw new Error("CodeGen: not in self-balancing block");const q=this._nodes.length-S;if(q<0||g!==void 0&&q!==g)throw new Error(`CodeGen: wrong number of nodes: ${q} vs ${g} expected`);return this._nodes.length=S,this}func(g,S=t.nil,q,H){return this._blockNode(new v(g,S,q)),H&&this.code(H).endFunc(),this}endFunc(){return this._endBlockNode(v)}optimize(g=1){for(;g-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(g){return this._currNode.nodes.push(g),this}_blockNode(g){this._currNode.nodes.push(g),this._nodes.push(g)}_endBlockNode(g,S){const q=this._currNode;if(q instanceof g||S&&q instanceof S)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${S?`${g.kind}/${S.kind}`:g.kind}"`)}_elseNode(g){const S=this._currNode;if(!(S instanceof f))throw new Error('CodeGen: "else" without "if"');return this._currNode=S.else=g,this}get _root(){return this._nodes[0]}get _currNode(){const g=this._nodes;return g[g.length-1]}set _currNode(g){const S=this._nodes;S[S.length-1]=g}}e.CodeGen=G;function B(T,g){for(const S in g)T[S]=(T[S]||0)+(g[S]||0);return T}function J(T,g){return g instanceof t._CodeOrName?B(T,g.names):T}function A(T,g,S){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=S[X.str];return re===void 0||g[X.str]!==1?X:(delete g[X.str],re)}function H(X){return X instanceof t._Code&&X._items.some(re=>re instanceof t.Name&&g[re.str]===1&&S[re.str]!==void 0)}}function L(T,g){for(const S in g)T[S]=(T[S]||0)-(g[S]||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(g,S)=>g===t.nil?S:S===t.nil?g:(0,t._)`${O(g)} ${T} ${O(S)}`}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 a($){const v={};for(const b of $)v[b]=!0;return v}W.toHash=a;function n($,v){return typeof v=="boolean"?v:Object.keys(v).length===0?!0:(u($,v),!i(v,$.self.RULES.all))}W.alwaysValidSchema=n;function u($,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=u;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 l({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=l;function o($){return y(decodeURIComponent($))}W.unescapeFragment=o;function m($){return encodeURIComponent(s($))}W.escapeFragment=m;function s($){return typeof $=="number"?`${$}`:$.replace(/~/g,"~0").replace(/\//g,"~1")}W.escapeJsonPointer=s;function y($){return $.replace(/~1/g,"/").replace(/~0/g,"~")}W.unescapeJsonPointer=y;function w($,v){if(Array.isArray($))for(const b of $)v(b);e