builder.io 1.1.13-23 → 1.1.13-24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/cli/index.cjs +2 -2
  2. package/package.json +1 -1
package/cli/index.cjs CHANGED
@@ -1190,7 +1190,7 @@ ${t}`:`/**
1190
1190
  * This code was generated by Builder.io.
1191
1191
  * https://builder.io/content/${e.contentId}?codeSession=${e.sessionKey}&sid=${e.id}
1192
1192
  */
1193
- ${t}`:t}async function E7(e,t){let n,r=D7(t,e.toLowerCase());switch(e.toLowerCase()){case"react":let i=await y7();n=`components/${r||"MyComponent"}.${i?"tsx":"jsx"}`;break;case"angular":n=`app/components/${r||"my-component"}.component.ts`;break;case"vue":n=`components/${r||"MyComponent"}.vue`;break;case"svelte":n=`components/${r||"MyComponent"}.svelte`;break;case"html":n=`${r||"my-design"}.html`;break;case"qwik":n=`components/${r||"MyComponent"}.tsx`;break;default:n="components/MyComponent.tsx"}return n=(0,Pt.existsSync)("./src")?`./src/${n}`:`./${n}`,n}async function y7(){let e=(0,Pt.readFileSync)("./package.json","utf-8");if(!e)throw new Error("No package.json found");return e.includes("typescript")}function D7(e,t){let n={vue:/name:\s*'([^']+)'/,react:/function (\w+)\([\w\W]+\)/,qwik:/export const (\w+) = component\$/,angular:/selector:\s*'([^']+)'/};if(!n[t])return null;let r=e.match(n[t]);return t==="react"&&!r?.[1]?e.match(/const (\w+)[\w\W]+=\s*\(/)?.[1]||null:r?.[1]||null}async function Od(e,t,n){let r=[];for(let i of t){let s=S7(n,i.path),o=(0,ii.resolve)(process.cwd(),s);if("code"in i){let a=await C7(e,i.code,v7(i.path));(0,Pt.mkdirSync)((0,ii.dirname)(o),{recursive:!0}),(0,Pt.writeFileSync)(o,a),r.push({...i,path:s,code:a}),U.info(`Writing file to ${o}`)}else(0,Pt.mkdirSync)(o,{recursive:!0}),r=r.concat(await Od(e,i.files,s))}return r}function S7(e,t){let n=e.replace(/^\.?\/+|\/+$/g,""),r=t.replace(/^\.?\/+|\/+$/g,""),i=n.split("/").filter(Boolean),s=r.split("/").filter(Boolean),o=-1;for(let c=0;c<i.length;c++){let u=s.indexOf(i[c]);u!==-1&&(o=u)}return"./"+[...i,...s.slice(o+1)].join("/")}function v7(e){switch(e.split(".").pop()?.toLowerCase()){case"html":case"svelte":return"html";case"vue":return"vue";case"ts":case"tsx":case"js":case"jsx":return"typescript";case"css":return"css";case"json":return"json";default:return"typescript"}}async function C7(e,t,n){let r=t;try{r=await Xt(t,n)}catch{}return MI(e,r,n)}function Gb(e){let n=(0,Pt.existsSync)((0,ii.join)(process.cwd(),"src"))?"src/":"";switch(e.toLowerCase()){case"angular":return`./${n}app/components/`;case"html":return"./";default:return`./${n}components/`}}function Kb(e,t){return{cwd:e,command:t[0],snippetId:t[1],path:t[2]}}var _t=require("path"),Ct=require("fs"),sO=require("glob");var kd=require("http");var LI=require("console"),BI=require("http"),$I=require("https");function us(e){let t=Date.now();return new Promise((n,r)=>{let s=x7(e.url)({protocol:e.url.protocol,host:e.url.host,port:e.url.port,path:e.url.pathname+e.url.search,method:e.method,headers:e.headers},o=>{let a="";o.on("data",c=>{a+=c}),o.on("end",()=>{if((0,LI.debug)(`${e.method} ${e.url.href}, duration: ${Date.now()-t}ms`),typeof o.statusCode=="number"&&o.statusCode>=200&&o.statusCode<300)if(typeof o.headers["content-type"]!="string"||!o.headers["content-type"].includes("application/json"))r(`Response from ${e.url.href} content-type is ${o.headers["content-type"]}`);else try{n(JSON.parse(a))}catch(c){r(`Response from ${e.url.href} is not valid JSON: ${a}
1193
+ ${t}`:t}async function E7(e,t){let n,r=D7(t,e.toLowerCase());switch(e.toLowerCase()){case"react":let i=await y7();n=`components/${r||"MyComponent"}.${i?"tsx":"jsx"}`;break;case"angular":n=`app/components/${r||"my-component"}.component.ts`;break;case"vue":n=`components/${r||"MyComponent"}.vue`;break;case"svelte":n=`components/${r||"MyComponent"}.svelte`;break;case"html":n=`${r||"my-design"}.html`;break;case"qwik":n=`components/${r||"MyComponent"}.tsx`;break;default:n="components/MyComponent.tsx"}return n=(0,Pt.existsSync)("./src")?`./src/${n}`:`./${n}`,n}async function y7(){let e=(0,Pt.readFileSync)("./package.json","utf-8");if(!e)throw new Error("No package.json found");return e.includes("typescript")}function D7(e,t){let n={vue:/name:\s*'([^']+)'/,react:/function (\w+)\([\w\W]+\)/,qwik:/export const (\w+) = component\$/,angular:/selector:\s*'([^']+)'/};if(!n[t])return null;let r=e.match(n[t]);return t==="react"&&!r?.[1]?e.match(/const (\w+)[\w\W]+=\s*\(/)?.[1]||null:r?.[1]||null}async function Od(e,t,n){let r=[];for(let i of t){let s=S7(n,i.path),o=(0,ii.resolve)(process.cwd(),s);if("code"in i){let a=await C7(e,i.code,v7(i.path));(0,Pt.mkdirSync)((0,ii.dirname)(o),{recursive:!0}),(0,Pt.writeFileSync)(o,a),r.push({...i,path:s,code:a}),U.info(`Writing file to ${o}`)}else(0,Pt.mkdirSync)(o,{recursive:!0}),r=r.concat(await Od(e,i.files,s))}return r}function S7(e,t){let n=e.replace(/^\.?\/+|\/+$/g,""),r=t.replace(/^\.?\/+|\/+$/g,""),i=n.split("/").filter(Boolean),s=r.split("/").filter(Boolean),o=-1;for(let c=0;c<i.length;c++){let u=s.indexOf(i[c]);u!==-1&&(o=u)}return[...i,...s.slice(o+1)].join("/")}function v7(e){switch(e.split(".").pop()?.toLowerCase()){case"html":case"svelte":return"html";case"vue":return"vue";case"ts":case"tsx":case"js":case"jsx":return"typescript";case"css":return"css";case"json":return"json";default:return"typescript"}}async function C7(e,t,n){let r=t;try{r=await Xt(t,n)}catch{}return MI(e,r,n)}function Gb(e){let n=(0,Pt.existsSync)((0,ii.join)(process.cwd(),"src"))?"src/":"";switch(e.toLowerCase()){case"angular":return`./${n}app/components/`;case"html":return"./";default:return`./${n}components/`}}function Kb(e,t){return{cwd:e,command:t[0],snippetId:t[1],path:t[2]}}var _t=require("path"),Ct=require("fs"),sO=require("glob");var kd=require("http");var LI=require("console"),BI=require("http"),$I=require("https");function us(e){let t=Date.now();return new Promise((n,r)=>{let s=x7(e.url)({protocol:e.url.protocol,host:e.url.host,port:e.url.port,path:e.url.pathname+e.url.search,method:e.method,headers:e.headers},o=>{let a="";o.on("data",c=>{a+=c}),o.on("end",()=>{if((0,LI.debug)(`${e.method} ${e.url.href}, duration: ${Date.now()-t}ms`),typeof o.statusCode=="number"&&o.statusCode>=200&&o.statusCode<300)if(typeof o.headers["content-type"]!="string"||!o.headers["content-type"].includes("application/json"))r(`Response from ${e.url.href} content-type is ${o.headers["content-type"]}`);else try{n(JSON.parse(a))}catch(c){r(`Response from ${e.url.href} is not valid JSON: ${a}
1194
1194
  ${c}`)}else r(`Request to ${e.url.href} failed with status ${o.statusCode}: ${a}`)})}).on("error",o=>{r(`Error fetching ${e.url.href}, ${o}`)});e.body&&(s.setHeader("Content-Type","application/json"),s.write(e.body)),s.end()})}function x7(e){if(e.protocol==="https:")return $I.request;if(e.protocol==="http:")return BI.request;throw new Error(`Unsupported protocol ${e.protocol}`)}async function UI(e){let t=new URL(`https://cdn.builder.io/api/v3/query/${e.publicApiKey}/${e.model}`);return t.searchParams.set("omit","meta.componentsUsed"),t.searchParams.set("apiKey",e.publicApiKey),t.searchParams.set("userAttributes.urlPath",e.pageUrl),t.searchParams.set("options.page.model",`"${e.model}"`),t.searchParams.set("cachebust","true"),(await us({url:t,method:"GET"}))[e.model]}async function qI(e,t){let n=new URL("https://cdn.builder.io/api/v2/admin"),r={query:`query {
1195
1195
  models {
1196
1196
  id
@@ -1438,7 +1438,7 @@ Visit https://www.docs.developers.amplitude.com/data/sdks/browser-2/#tracking-de
1438
1438
  </script>
1439
1439
  </body>
1440
1440
  </html>
1441
- `)}async function QI(e,t){let n=await Sx(e),r=e.getFrameworks();return t.replace(/__LOCAL_APP_ID__/g,n).replace(/__DEV_TOOLS_URL__/g,e.devToolsServerUrl).replace(/__CLIENT_ID__/g,e.getClientId()).replace(/__FRAMEWORK__/g,r.length?r[0].name:"")}var XI=require("os");async function ZI(e,t){let n=new URL("/cli-auth","https://builder.io");n.searchParams.set("client_id",e.getClientId()),n.searchParams.set("host",await e.getDeviceId()),n.searchParams.set("response_type","code"),n.searchParams.set("cli","true");let r=new URL(si,e.devToolsServerUrl);r.searchParams.set(hc,(0,XI.platform)()),r.searchParams.set(_c,process.versions.node);let i=e.getFrameworks();return i.length>0&&(n.searchParams.set(Wi,i[0].name),r.searchParams.set(Wi,i[0].name)),n.searchParams.set("redirect_url",r.href),n.searchParams.set("preview_url",t),n.href}async function tO(e,t,n,r){try{if(!e)return ls(n,r,400,"Builder context closed");let i=P7(n);if(i.pathname===Hd){if(n.method==="POST"){let s=await O7(n);if(s)try{let o=await YI(e,JSON.parse(s));return eO(n,r,200,o)}catch(o){e.debug("Dev API Error",o.stack||o.message||o);let a={errors:[String(o.message||o)]};return eO(n,r,500,a)}}else if(n.method==="OPTIONS"){let s={"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Cache-Control, X-Builder-Devtools-Version"},o=n.headers.origin;o&&o!=="null"?nO(new URL(o))&&(s["Access-Control-Allow-Origin"]=o):s["Access-Control-Allow-Origin"]="*",r.writeHead(200,s),r.end();return}return ls(n,r,405,`${Hd} is an API endpoint used only during development by the Builder.io Devtools client-side script`)}if(i.pathname===Vd)return N7(n,r,200,await WI(e));if(i.pathname===eE){let s=i.searchParams.get(Kd);return s?I7(r,302,await ZI(e,s)):ls(n,r,400,`Missing ${Kd} querystring`)}return i.pathname===si?A7(n,r,200,await JI(e)):i.pathname===ai?(e.debug(`Close Dev Tools Server Requested: ${i.href}`),setTimeout(()=>{try{t.close(s=>{e.debug(`Dev Tools Server Closed Error: ${s}`)})}catch(s){e.debug(`Error closing devtools server: ${s}`)}},20),ls(n,r,200,"Closing Dev Tools Server")):ls(n,r,404,"Not found")}catch(i){return console.error("Dev Server Error",i),ls(n,r,500,`Dev Server Error: ${i}`)}}function eO(e,t,n,r){Fd(e,t,n,"application/json",JSON.stringify(r))}function N7(e,t,n,r){Fd(e,t,n,"application/javascript",r)}function A7(e,t,n,r){Fd(e,t,n,"text/html",r)}function ls(e,t,n,r){Fd(e,t,n,"text/plain",r)}function Fd(e,t,n,r,i){let s={"Content-Type":`${r}; charset=utf-8`,"Cache-Control":"no-cache, no-store, must-revalidate","X-Builder-Devtools-Version":"1.1.12"},o=e.headers.origin;o&&o!=="null"?nO(new URL(o))&&(s["Access-Control-Allow-Origin"]=o):s["Access-Control-Allow-Origin"]="*",t.writeHead(n,s),t.end(i)}function nO(e){return e.hostname==="localhost"||e.origin.endsWith(".builder.io")?!0:e.port===""?!1:e.port!=="80"&&e.port!=="443"}function I7(e,t,n){e.writeHead(t,{Location:n}),e.end()}async function O7(e){let t="";for await(let n of e)t+=n;return t}function P7(e){let t=e.url||"/";return new URL(t,`http://${e.headers.host}`)}async function rO(e){if(globalThis.__builderDevToolsServer)return e.debug("reusing existing devtools server"),globalThis.__builderDevToolsServer.setContext(e),globalThis.__builderDevToolsServer;let t=await F7(e),n=(0,kd.createServer)((i,s)=>{tO(e,n,i,s)}),r=()=>new Promise((i,s)=>{n.listening?(e.debug(`closing devtools server on port ${t}`),n.close(o=>{e=null,o?(e.debug(`error closing devtools server on port ${t}`),s(o)):(e&&e.debug(`closed devtools server on port ${t}`),i())})):(e.debug(`devtools server on port ${t} not listening`),i())});return process.once("SIGTERM",r),process.once("SIGINT",r),process.env.CI!=="true"&&process.stdin.on("end",r),globalThis.__builderDevToolsServer={url:new URL(`http://localhost:${t}`).href,port:t,setContext:i=>{e.debug(`set devtools context on server ${t}`),e=i},close:async()=>{globalThis.__builderDevToolsServer=null,await r()}},new Promise(i=>{n.listen(t,()=>{e.debug(`started devtools server on port ${t}`),i(globalThis.__builderDevToolsServer)})})}function F7(e){return new Promise(t=>{let n=e.port;try{(0,kd.request)({hostname:"localhost",port:n,path:ai,method:"GET"},i=>{i.on("end",()=>{e.debug(`${ai} - Response ended`),t(n)})}).on("error",i=>{e.debug(`${ai} - No response ${i}`),t(n)}).end()}catch(r){e.debug(`${ai} - Error ${r}`),t(n)}})}async function Vb(e){let t={getPastSyncInfo:()=>null,resyncSnippet:()=>null,...e,devToolsServerUrl:"",isValid:!1,publicApiKey:"",serverShouldRestart:!1,port:e.port||5273,ignoreMissingConfig:!1},n=e.getFrameworks().map(s=>s.name).join(", ");t.debug(`create devtools ${iO} [${n}]`);let r=await rO(t);return t.devToolsServerUrl=r.url,t.port=r.port,{getUrl:()=>t.devToolsServerUrl}}var iO="1.1.12";var aO=q(require("chokidar"),1),cO=q(require("ignore"),1);function uO(e){let t=e.match(/builder\.io\/content\/([^?]+)\?codeSession=([^&]+)&sid=([^\s]+)/);return t?{contentId:t[1],sessionKey:t[2],snippetId:t[3]}:{}}async function k7(e,t,n){let r=await(0,sO.glob)("**/*",{cwd:e,ignore:["node_modules/**"],nodir:!0}),i=[];for(let s of r){let o=(0,_t.resolve)(e,s);try{let a=(0,Ct.readFileSync)(o,"utf-8");if(a.includes("This code was generated by Builder.io")){let c=uO(a);if(t&&n&&(c.contentId!==t||c.sessionKey!==n))continue;i.push({path:s,code:a,name:s.split("/").pop()||"",timestamp:(0,Ct.statSync)(o).mtime.getTime(),snippetId:c.snippetId})}}catch(a){console.error(`Error reading file ${o}:`,a)}}return i}function M7(e,t){let n=uO(e);return n.contentId===t.contentId&&n.sessionKey===t.sessionKey}function L7(e){let t=[".git",".DS_Store",".vscode","node_modules",".next","coverage"],n=(0,cO.default)().add(t);try{let r=(0,_t.resolve)(e,".gitignore");if((0,Ct.existsSync)(r)){let i=(0,Ct.readFileSync)(r,"utf8");n.add(i)}}catch(r){console.debug("No .gitignore found or error reading it:",r)}return r=>{let i=(0,_t.relative)(e,r);if(!i)return!1;let s=i.split(_t.sep).join("/");return n.ignores(s)}}function oO(e,t,n){let r=L7(e),i=aO.default.watch(e,{ignored:r,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:500,pollInterval:100},ignorePermissionErrors:!0,followSymlinks:!1,atomic:600}),s=async a=>{let c=(0,_t.relative)(e,a);try{let u=(0,Ct.readFileSync)(a,"utf-8");if(M7(u,t.snippet)){let l=t.writtenFiles.find(d=>d.path===c);l?(l.code=u,l.timestamp=Date.now()):t.writtenFiles.push({path:c,code:u,timestamp:Date.now(),name:c.split("/").pop()||""}),t.timeStamp=Date.now(),n(t)}}catch(u){console.debug(`Error reading file ${a}:`,u)}};i.on("add",async a=>{U.info(`File added: ${a}`),await s(a)}).on("change",async a=>{U.info(`File changed: ${a}`),await s(a)}).on("unlink",a=>{U.info(`File deleted: ${a}`);let c=(0,_t.relative)(e,a);t.writtenFiles=t.writtenFiles.filter(u=>u.path!==c),t.timeStamp=Date.now(),n(t)}).on("unlinkDir",a=>{U.info(`Folder deleted: ${a}`);let c=(0,_t.relative)(e,a);t.writtenFiles=t.writtenFiles.filter(u=>!u.path.startsWith(c)),t.timeStamp=Date.now(),n(t)}).on("ready",()=>{console.debug("Initial scan complete. Ready for changes.")}).on("error",a=>{console.error(`Watcher error: ${a}`)}),i.on("raw",async(a,c,u)=>{if(a==="renamed"){U.info(`File renamed: ${u.oldPath} -> ${c}`);let l=u.oldPath?(0,_t.relative)(e,u.oldPath):void 0,d=c?(0,_t.relative)(e,c):void 0;if(l&&d){let p=t.writtenFiles.find(f=>f.path===l);p&&(p.path=d,t.timeStamp=Date.now(),n(t))}}});let o=async()=>{await i.close()};return process.on("SIGINT",o),process.on("SIGTERM",o),o}async function lO(e,t){e.debug("builder sync server init");let n=await Ui(e),r=t,i=()=>Promise.resolve();r&&setTimeout(()=>{i=oO(process.cwd(),r,s=>{r=s})},1e3),await Vb({...n,getPastSyncInfo:({sessionKey:s,since:o})=>!r||s!==r.snippet.sessionKey?r:{...r,hasChanged:r.timeStamp>o},resyncSnippet:async s=>{await i();let o=await zb({path:r?.pathInput,snippet:s.snippet,cwd:process.cwd()});return o&&(r=o,i=oO(process.cwd(),r,a=>{r=a})),r},getClientId:()=>"builder-sync-cli",closeAppServer:async()=>{await i()},restartAppServer:async()=>{e.debug("restart server")},enableAppWatch:async s=>s,...e})}async function zb(e){let t=e.snippetId,n=e.snippet||null;if(!n&&t&&(n=await jb(t)),!n)throw new Error(`No snippet found for id ${t}`);let r=await k7(process.cwd(),n.contentId,n.sessionKey),i=r.filter(c=>c.snippetId===n.id);if(i.length>0){let c=Math.max(...i.map(u=>u.timestamp||0));return{snippet:n,writtenFiles:i,pathInput:e.path||".",timeStamp:c}}for(let c of r){let u=(0,_t.resolve)(process.cwd(),c.path);try{(0,Ct.unlinkSync)(u),U.info(`Deleted old file: ${u}`);let l=(0,_t.dirname)(u);(0,Ct.readdirSync)(l).length===0&&((0,Ct.rmdirSync)(l),U.info(`Deleted empty folder: ${l}`))}catch(l){U.error(`Error cleaning up file ${u}: ${l}`)}}let s=Gb(n.framework||"react"),o=e.path||await Mt({message:"Where should we copy the files?",initialValue:s,validate(c){if(c.length===0)return"File path is required!";if(c[0]!==".")return"Please enter a relative path."}});Fe(o)&&(de("Cancelled sync"),process.exit(0));let a=await Od(n,n.files,o);return U.success("All files have been written successfully."),{snippet:n,writtenFiles:a,pathInput:o,timeStamp:Date.now()+500}}function B7(){Md.init("ac35e3108919035e7d150a2450a07405",{logLevel:Md.Types.LogLevel.None,flushIntervalMillis:500}),bn.init({dsn:"https://3252dddc08dbb5bf406dc33bf3c13633@o117565.ingest.sentry.io/4505630794448896",tracesSampleRate:1,integrations:[new bn.Integrations.Http({tracing:!0}),...bn.autoDiscoverNodePerformanceMonitoringIntegrations()]})}async function $7(e){e.debug("builder dev tools cli init");let t=await(0,dO.createDevTools)(e);await(0,fO.createDevToolsServer)({...t,getClientId:()=>"builder-dev-tools-cli",closeAppServer:async()=>{},restartAppServer:async()=>{e.debug("restart server")},enableAppWatch:async n=>n,...e})}var gO=()=>process.exit(0);process.on("SIGINT",gO);process.on("SIGTERM",gO);async function U7(){B7();try{let e=await(0,pO.createDevToolsNodeSys)({getRootDir:()=>process.cwd(),ignoreMissingConfig:!0}),t=(0,mO.default)(process.argv.slice(2),{string:["figmaToken","privateKey"],boolean:["help","ci","force","printJson"]}),n=t._[0];if(n==="figma"){let r=t._[1];try{await AI(e,r,t)}catch(i){bn.captureException(i),console.error("Cannot run figma command",i),process.exit(1)}}else if(n==="add"){let r=Kb(process.cwd(),process.argv.slice(2));await kI(r)}else if(n==="sync"){let r=Kb(process.cwd(),process.argv.slice(2)),i=await zb(r);lO(e,i).then(()=>{console.info("Builder dev tools is running")}).catch(s=>{bn.captureException(s),console.error("Cannot start builder dev tools",s)})}else n==="publish"||n==="migrate"||n==="generate"?(de("Command not found, do you mean `npx builder.io figma "+n+"`?"),process.exit(1)):$7(e).then(()=>{console.info("Builder dev tools is running")}).catch(r=>{bn.captureException(r),console.error("Cannot start builder dev tools",r)})}catch(e){bn.captureException(e),console.error("error"),process.exit(1)}}U7();
1441
+ `)}async function QI(e,t){let n=await Sx(e),r=e.getFrameworks();return t.replace(/__LOCAL_APP_ID__/g,n).replace(/__DEV_TOOLS_URL__/g,e.devToolsServerUrl).replace(/__CLIENT_ID__/g,e.getClientId()).replace(/__FRAMEWORK__/g,r.length?r[0].name:"")}var XI=require("os");async function ZI(e,t){let n=new URL("/cli-auth","https://builder.io");n.searchParams.set("client_id",e.getClientId()),n.searchParams.set("host",await e.getDeviceId()),n.searchParams.set("response_type","code"),n.searchParams.set("cli","true");let r=new URL(si,e.devToolsServerUrl);r.searchParams.set(hc,(0,XI.platform)()),r.searchParams.set(_c,process.versions.node);let i=e.getFrameworks();return i.length>0&&(n.searchParams.set(Wi,i[0].name),r.searchParams.set(Wi,i[0].name)),n.searchParams.set("redirect_url",r.href),n.searchParams.set("preview_url",t),n.href}async function tO(e,t,n,r){try{if(!e)return ls(n,r,400,"Builder context closed");let i=P7(n);if(i.pathname===Hd){if(n.method==="POST"){let s=await O7(n);if(s)try{let o=await YI(e,JSON.parse(s));return eO(n,r,200,o)}catch(o){e.debug("Dev API Error",o.stack||o.message||o);let a={errors:[String(o.message||o)]};return eO(n,r,500,a)}}else if(n.method==="OPTIONS"){let s={"Access-Control-Allow-Methods":"POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Cache-Control, X-Builder-Devtools-Version"},o=n.headers.origin;o&&o!=="null"?nO(new URL(o))&&(s["Access-Control-Allow-Origin"]=o):s["Access-Control-Allow-Origin"]="*",r.writeHead(200,s),r.end();return}return ls(n,r,405,`${Hd} is an API endpoint used only during development by the Builder.io Devtools client-side script`)}if(i.pathname===Vd)return N7(n,r,200,await WI(e));if(i.pathname===eE){let s=i.searchParams.get(Kd);return s?I7(r,302,await ZI(e,s)):ls(n,r,400,`Missing ${Kd} querystring`)}return i.pathname===si?A7(n,r,200,await JI(e)):i.pathname===ai?(e.debug(`Close Dev Tools Server Requested: ${i.href}`),setTimeout(()=>{try{t.close(s=>{e.debug(`Dev Tools Server Closed Error: ${s}`)})}catch(s){e.debug(`Error closing devtools server: ${s}`)}},20),ls(n,r,200,"Closing Dev Tools Server")):ls(n,r,404,"Not found")}catch(i){return console.error("Dev Server Error",i),ls(n,r,500,`Dev Server Error: ${i}`)}}function eO(e,t,n,r){Fd(e,t,n,"application/json",JSON.stringify(r))}function N7(e,t,n,r){Fd(e,t,n,"application/javascript",r)}function A7(e,t,n,r){Fd(e,t,n,"text/html",r)}function ls(e,t,n,r){Fd(e,t,n,"text/plain",r)}function Fd(e,t,n,r,i){let s={"Content-Type":`${r}; charset=utf-8`,"Cache-Control":"no-cache, no-store, must-revalidate","X-Builder-Devtools-Version":"1.1.12"},o=e.headers.origin;o&&o!=="null"?nO(new URL(o))&&(s["Access-Control-Allow-Origin"]=o):s["Access-Control-Allow-Origin"]="*",t.writeHead(n,s),t.end(i)}function nO(e){return e.hostname==="localhost"||e.origin.endsWith(".builder.io")?!0:e.port===""?!1:e.port!=="80"&&e.port!=="443"}function I7(e,t,n){e.writeHead(t,{Location:n}),e.end()}async function O7(e){let t="";for await(let n of e)t+=n;return t}function P7(e){let t=e.url||"/";return new URL(t,`http://${e.headers.host}`)}async function rO(e){if(globalThis.__builderDevToolsServer)return e.debug("reusing existing devtools server"),globalThis.__builderDevToolsServer.setContext(e),globalThis.__builderDevToolsServer;let t=await F7(e),n=(0,kd.createServer)((i,s)=>{tO(e,n,i,s)}),r=()=>new Promise((i,s)=>{n.listening?(e.debug(`closing devtools server on port ${t}`),n.close(o=>{e=null,o?(e.debug(`error closing devtools server on port ${t}`),s(o)):(e&&e.debug(`closed devtools server on port ${t}`),i())})):(e.debug(`devtools server on port ${t} not listening`),i())});return process.once("SIGTERM",r),process.once("SIGINT",r),process.env.CI!=="true"&&process.stdin.on("end",r),globalThis.__builderDevToolsServer={url:new URL(`http://localhost:${t}`).href,port:t,setContext:i=>{e.debug(`set devtools context on server ${t}`),e=i},close:async()=>{globalThis.__builderDevToolsServer=null,await r()}},new Promise(i=>{n.listen(t,()=>{e.debug(`started devtools server on port ${t}`),i(globalThis.__builderDevToolsServer)})})}function F7(e){return new Promise(t=>{let n=e.port;try{(0,kd.request)({hostname:"localhost",port:n,path:ai,method:"GET"},i=>{i.on("end",()=>{e.debug(`${ai} - Response ended`),t(n)})}).on("error",i=>{e.debug(`${ai} - No response ${i}`),t(n)}).end()}catch(r){e.debug(`${ai} - Error ${r}`),t(n)}})}async function Vb(e){let t={getPastSyncInfo:()=>null,resyncSnippet:()=>null,...e,devToolsServerUrl:"",isValid:!1,publicApiKey:"",serverShouldRestart:!1,port:e.port||5273,ignoreMissingConfig:!1},n=e.getFrameworks().map(s=>s.name).join(", ");t.debug(`create devtools ${iO} [${n}]`);let r=await rO(t);return t.devToolsServerUrl=r.url,t.port=r.port,{getUrl:()=>t.devToolsServerUrl}}var iO="1.1.12";var aO=q(require("chokidar"),1),cO=q(require("ignore"),1);function uO(e){let t=e.match(/builder\.io\/content\/([^?]+)\?codeSession=([^&]+)&sid=([^\s]+)/);return t?{contentId:t[1],sessionKey:t[2],snippetId:t[3]}:{}}async function k7(e,t,n){let r=await(0,sO.glob)("**/*",{cwd:e,ignore:["node_modules/**"],nodir:!0}),i=[];for(let s of r){let o=(0,_t.resolve)(e,s);try{let a=(0,Ct.readFileSync)(o,"utf-8");if(a.includes("This code was generated by Builder.io")){let c=uO(a);if(t&&n&&(c.contentId!==t||c.sessionKey!==n))continue;i.push({path:s,code:a,name:s.split("/").pop()||"",timestamp:(0,Ct.statSync)(o).mtime.getTime(),snippetId:c.snippetId})}}catch(a){console.error(`Error reading file ${o}:`,a)}}return i}function M7(e,t){let n=uO(e);return n.contentId===t.contentId&&n.sessionKey===t.sessionKey}function L7(e){let t=[".git",".DS_Store",".vscode","node_modules",".next","coverage"],n=(0,cO.default)().add(t);try{let r=(0,_t.resolve)(e,".gitignore");if((0,Ct.existsSync)(r)){let i=(0,Ct.readFileSync)(r,"utf8");n.add(i)}}catch(r){console.debug("No .gitignore found or error reading it:",r)}return r=>{let i=(0,_t.relative)(e,r);if(!i)return!1;let s=i.split(_t.sep).join("/");return n.ignores(s)}}function oO(e,t,n){let r=L7(e),i=aO.default.watch(e,{ignored:r,ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:500,pollInterval:600},ignorePermissionErrors:!0,followSymlinks:!1,atomic:600}),s=async a=>{let c=(0,_t.relative)(e,a);try{let u=(0,Ct.readFileSync)(a,"utf-8");if(M7(u,t.snippet)){let l=t.writtenFiles.find(d=>d.path===c);l?(l.code=u,l.timestamp=Date.now()):t.writtenFiles.push({path:c,code:u,timestamp:Date.now(),name:c.split("/").pop()||""}),t.timeStamp=Date.now(),n(t)}}catch(u){console.debug(`Error reading file ${a}:`,u)}};i.on("add",async a=>{U.info(`File added: ${a}`),await s(a)}).on("change",async a=>{U.info(`File changed: ${a}`),await s(a)}).on("unlink",a=>{U.info(`File deleted: ${a}`);let c=(0,_t.relative)(e,a);t.writtenFiles=t.writtenFiles.filter(u=>u.path!==c),t.timeStamp=Date.now(),n(t)}).on("unlinkDir",a=>{U.info(`Folder deleted: ${a}`);let c=(0,_t.relative)(e,a);t.writtenFiles=t.writtenFiles.filter(u=>!u.path.startsWith(c)),t.timeStamp=Date.now(),n(t)}).on("ready",()=>{console.debug("Initial scan complete. Ready for changes.")}).on("error",a=>{console.error(`Watcher error: ${a}`)}),i.on("raw",async(a,c,u)=>{if(a==="renamed"){U.info(`File renamed: ${u.oldPath} -> ${c}`);let l=u.oldPath?(0,_t.relative)(e,u.oldPath):void 0,d=c?(0,_t.relative)(e,c):void 0;if(l&&d){let p=t.writtenFiles.find(f=>f.path===l);p&&(p.path=d,t.timeStamp=Date.now(),n(t))}}});let o=async()=>{await i.close()};return process.on("SIGINT",o),process.on("SIGTERM",o),o}async function lO(e,t){e.debug("builder sync server init");let n=await Ui(e),r=t,i=()=>Promise.resolve();r&&setTimeout(()=>{i=oO(process.cwd(),r,s=>{r=s})},1e3),await Vb({...n,getPastSyncInfo:({sessionKey:s,since:o})=>!r||s!==r.snippet.sessionKey?r:{...r,hasChanged:r.timeStamp>o},resyncSnippet:async s=>{await i();let o=await zb({path:r?.pathInput,snippet:s.snippet,cwd:process.cwd()});return o&&(r=o,i=oO(process.cwd(),r,a=>{r=a})),r},getClientId:()=>"builder-sync-cli",closeAppServer:async()=>{await i()},restartAppServer:async()=>{e.debug("restart server")},enableAppWatch:async s=>s,...e})}async function zb(e){let t=e.snippetId,n=e.snippet||null;if(!n&&t&&(n=await jb(t)),!n)throw new Error(`No snippet found for id ${t}`);let r=await k7(process.cwd(),n.contentId,n.sessionKey),i=r.filter(c=>c.snippetId===n.id);if(i.length>0){let c=Math.max(...i.map(u=>u.timestamp||0));return{snippet:n,writtenFiles:i,pathInput:e.path||".",timeStamp:c}}for(let c of r){let u=(0,_t.resolve)(process.cwd(),c.path);try{(0,Ct.unlinkSync)(u),U.info(`Deleted old file: ${u}`);let l=(0,_t.dirname)(u);(0,Ct.readdirSync)(l).length===0&&((0,Ct.rmdirSync)(l),U.info(`Deleted empty folder: ${l}`))}catch(l){U.error(`Error cleaning up file ${u}: ${l}`)}}let s=Gb(n.framework||"react"),o=e.path||await Mt({message:"Where should we copy the files?",initialValue:s,validate(c){if(c.length===0)return"File path is required!";if(c[0]!==".")return"Please enter a relative path."}});Fe(o)&&(de("Cancelled sync"),process.exit(0));let a=await Od(n,n.files,o);return U.success("All files have been written successfully."),{snippet:n,writtenFiles:a,pathInput:o,timeStamp:Date.now()+500}}function B7(){Md.init("ac35e3108919035e7d150a2450a07405",{logLevel:Md.Types.LogLevel.None,flushIntervalMillis:500}),bn.init({dsn:"https://3252dddc08dbb5bf406dc33bf3c13633@o117565.ingest.sentry.io/4505630794448896",tracesSampleRate:1,integrations:[new bn.Integrations.Http({tracing:!0}),...bn.autoDiscoverNodePerformanceMonitoringIntegrations()]})}async function $7(e){e.debug("builder dev tools cli init");let t=await(0,dO.createDevTools)(e);await(0,fO.createDevToolsServer)({...t,getClientId:()=>"builder-dev-tools-cli",closeAppServer:async()=>{},restartAppServer:async()=>{e.debug("restart server")},enableAppWatch:async n=>n,...e})}var gO=()=>process.exit(0);process.on("SIGINT",gO);process.on("SIGTERM",gO);async function U7(){B7();try{let e=await(0,pO.createDevToolsNodeSys)({getRootDir:()=>process.cwd(),ignoreMissingConfig:!0}),t=(0,mO.default)(process.argv.slice(2),{string:["figmaToken","privateKey"],boolean:["help","ci","force","printJson"]}),n=t._[0];if(n==="figma"){let r=t._[1];try{await AI(e,r,t)}catch(i){bn.captureException(i),console.error("Cannot run figma command",i),process.exit(1)}}else if(n==="add"){let r=Kb(process.cwd(),process.argv.slice(2));await kI(r)}else if(n==="sync"){let r=Kb(process.cwd(),process.argv.slice(2)),i=await zb(r);lO(e,i).then(()=>{console.info("Builder dev tools is running")}).catch(s=>{bn.captureException(s),console.error("Cannot start builder dev tools",s)})}else n==="publish"||n==="migrate"||n==="generate"?(de("Command not found, do you mean `npx builder.io figma "+n+"`?"),process.exit(1)):$7(e).then(()=>{console.info("Builder dev tools is running")}).catch(r=>{bn.captureException(r),console.error("Cannot start builder dev tools",r)})}catch(e){bn.captureException(e),console.error("error"),process.exit(1)}}U7();
1442
1442
  /*! Bundled license information:
1443
1443
 
1444
1444
  cookie/index.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "builder.io",
3
- "version": "1.1.13-23",
3
+ "version": "1.1.13-24",
4
4
  "description": "Add and Sync Builder.io code snippets to an application",
5
5
  "type": "module",
6
6
  "bin": {