builder.io 1.1.25-10 → 1.1.26-0
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.
package/cli/index.cjs
CHANGED
|
@@ -1352,12 +1352,13 @@ ${cY(e)}
|
|
|
1352
1352
|
|
|
1353
1353
|
${i}`)}function cY(e){let{exportType:t,importName:n,importPath:r}=e;if(n&&r){let i=JSON.stringify(r);return t==="named"?`import { ${n} } from ${i};`:`import ${n} from ${i};`}return""}var Xt=q(Fr(),1);var oO=q($i(),1);var MY=q(mP()),rO=q(nO()),Dc=q(Yr());function iO(e,t,n){let r,i=new Promise(o=>{try{r=(0,rO.default)(e,t,{stdio:"inherit",...n}),r.on("error",a=>{Dc.captureException(a),o(!1)}),r.on("close",a=>{a===0?o(!0):(Dc.captureMessage(`cmd "${e} ${t.join(" ")}", exit code: ${a}`,"error"),o(!1))})}catch(a){Dc.captureException(a),o(!1)}});return{abort:async()=>{r&&r.kill("SIGINT")},command:i}}var sO=async(e,t,n)=>{if(n.help||n._[2]==="help"){hc(n._[1]);return}if(LY(e)&&(await It({message:"Since it's the first time using builder.io, we can install it for you",active:"Yes, let's integrate!",inactive:"No, I'll do it later"})?await iO("npm",["init","builder.io@latest","--","--skip-question"],{stdio:"inherit",cwd:e.getRootDir()}).command||(te(`Auto-install failed. You can install it manually by running ${(0,Xt.bold)("npm init builder.io@latest")}`),await oe(1)):te(`Ok, you can install it later. By running ${(0,Xt.bold)("npm init builder.io@latest")}`)),t==="migrate")await pP(e,n);else if(t==="publish"||t==="p")await uP(e,n);else if(t==="add"||t==="generate"||t==="gen"||t==="g")await eP(e,n);else if(t==="auth"){console.log(""),Bt((0,Xt.bgCyan)((0,Xt.bold)((0,Xt.white)(" figma auth "))));let{builderPublicKey:r}=await ai(e,n,{figmaAuth:!0,builderPrivateKey:!0,builderPublicKey:!0,force:!0});oO.track("figma auth",{spaceId:r}),rn((0,Xt.bgGreen)((0,Xt.bold)((0,Xt.white)(" Done! \u{1F389} "))))}else t==="help"&&hc(n._[2])};function LY(e){let t=e.getFrameworks(),n=["next","angular"];if(!t.some(r=>n.includes(r.name)))return!1;try{let r=e.readFileSync("package.json");if(!r)return!1;let i=JSON.parse(r);if(!!i.devDependencies?.["@builder.io/dev-tools"]||!!i.dependencies?.["@builder.io/dev-tools"])return!1}catch{return!1}return!0}var Dn=q(Yr(),1),Zd=q($i(),1);var li=require("node:path"),ht=require("node:fs");var en=require("node:fs/promises"),aO=require("node:crypto"),ui=require("node:fs"),Wd=require("node:os"),Zt=q(require("node:path"),1),dE=q(require("prettier"),1),cO=q(require("typescript"),1),uO=q(require("launch-editor"),1);var Sc=require("node:child_process");async function lO(e){let t=new Set,n=(...o)=>{if(process.env.DEBUG){let a=new Date,c=`${String(a.getMinutes()).padStart(2,"0")}:${String(a.getSeconds()).padStart(2,"0")}.${String(a.getMilliseconds()).padStart(3,"0")}`;console.debug(c,"[builder-dev-tools]",...o)}},r=async o=>{let a=(0,aO.createHash)("md5");return a.update(o),a.digest("hex")},i={...Zt.default,getRootDir:()=>Zt.default.normalize(e.getRootDir()),cwd:()=>process.cwd(),exists:async o=>{ci(e,o);try{return await(0,en.access)(o),!0}catch{return!1}},existsSync:o=>(0,ui.existsSync)(o),readdir:async(o,a)=>{ci(e,o);let c=await(0,en.readdir)(o);return a?c.map(u=>Zt.default.join(o,u)):c},readdirSync:o=>(ci(e,o),(0,ui.readdirSync)(o)),readFile:async o=>{ci(e,o);try{return await(0,en.readFile)(o,"utf-8")}catch(a){if(a.code==="ENOENT")return null;throw n(a,o),a}},readFileSync(o){ci(e,o);try{return(0,ui.readFileSync)(o,"utf-8")}catch(a){if(a.code==="ENOENT")return null;throw n(a,o),a}},stat:async o=>(ci(e,o),await(0,en.stat)(o)),statSync:o=>(ci(e,o),(0,ui.statSync)(o)),writeFile:async(o,a)=>{ci(e,o),o=Zt.default.normalize(o);let c={path:o,basename:Zt.default.basename(o),dirname:Zt.default.dirname(o),extname:Zt.default.extname(o)};await(0,en.mkdir)(Zt.default.dirname(o),{recursive:!0}),await(0,en.writeFile)(o,a);for(let u of t)await u(c)},hash:r,getDeviceId:()=>r(`${(0,Wd.hostname)()}:${(0,Wd.homedir)()}`),formatCode:async(o,a)=>{let c=null;try{c=await dE.default.resolveConfig(o)}catch{}try{return dE.default.format(a,{...c,filepath:o})}catch{}return a},on:(o,a)=>{o==="change"&&t.add(a)},off:(o,a)=>{o==="change"&&t.delete(a)},debug:n,launchEditor:async o=>{try{let a=o.filePath;typeof o.line=="number"&&(a+=`:${o.line}`,typeof o.column=="number"&&(a+=`:${o.column}`)),(0,uO.default)(a,"code",(c,u)=>{console.error(`Failed to launch editor for ${c}`),u&&console.error(u)})}catch(a){console.error(`Failed to launch editor for ${String(a.message||a)}`)}},platform:()=>({runtime:"node",os:process.platform}),getRepoInfo:async()=>{let o=Zt.default.normalize(e.getRootDir());return{remoteUrl:BY(o),defaultBranch:$Y(o),commit:UY(o),currentBranch:qY(o)}},getFrameworks:()=>[],ts:cO.default,version:"1.1.25",sdkVersion:null,ignoreMissingConfig:e.ignoreMissingConfig,kind:null},s=await Ui(i);return i.getFrameworks=()=>s,i}function ci(e,t){if(e.skipValidate)return;if(!t)throw new Error(`Invalid path: ${t} (7340)`);t=Zt.default.normalize(Zt.default.resolve(t));let n=e.getRootDir();if(!t.startsWith(n)&&!t.includes("node_modules"))throw new Error(`Invalid path: ${t} (7341)`)}function BY(e){try{return((0,Sc.spawnSync)("git",["config","--get","remote.origin.url"],{cwd:e}).stdout||"").toString().trim()}catch(t){return console.error("Error getting git remote URL:",t),""}}function $Y(e){let t="master";try{let n=(0,Sc.spawnSync)("git",["branch","-r"],{cwd:e});return n.stdout&&n.stdout.toString().trim().split(`
|
|
1354
1354
|
`).map(i=>i.trim()).includes("origin/main")?"main":t}catch(n){return console.error("Error getting git default branch name:",n.toString().split(`
|
|
1355
|
-
`)[0]),t}}function UY(e){try{return((0,Sc.spawnSync)("git",["rev-parse","HEAD"],{cwd:e}).stdout||"").toString().trim()}catch(t){return console.error("Error getting git commit:",t),""}}function qY(e){try{return((0,Sc.spawnSync)("git",["branch","--show-current"],{cwd:e}).stdout||"").toString().trim()}catch(t){return console.error("Error getting current branch name:",t),""}}var ms=q(Fr(),1);async function dO(e){console.log(""),Bt((0,ms.bgCyan)((0,ms.bold)((0,ms.white)(" add "))));let t=e.snippetId;if(!t&&!e.snippet)return te("SnippetId expected. npx builder.io add <snippetId>"),await oe(1);let n=bt(),r=e.snippet||null;if(!r&&t&&(n.start(`Fetching snippet ${t}`),r=await pE(t),n.stop(`Fetched snippet ${t}`)),!r)throw new Error(`No snippet found for id ${t}`);if(r.files?.length>0){let i=fE(r.framework||"react"),s=e.path||await Lt({message:"Where should we copy the files?",initialValue:i,validate(a){if(a.length===0)return"File path is required!";if(a[0]!==".")return"Please enter a relative path."}});if(Te(s))return te("Cancelled sync"),await oe(0);let o=await Jd(r,r.files,s
|
|
1356
|
-
|
|
1357
|
-
${
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1355
|
+
`)[0]),t}}function UY(e){try{return((0,Sc.spawnSync)("git",["rev-parse","HEAD"],{cwd:e}).stdout||"").toString().trim()}catch(t){return console.error("Error getting git commit:",t),""}}function qY(e){try{return((0,Sc.spawnSync)("git",["branch","--show-current"],{cwd:e}).stdout||"").toString().trim()}catch(t){return console.error("Error getting current branch name:",t),""}}var ms=q(Fr(),1);async function dO(e){console.log(""),Bt((0,ms.bgCyan)((0,ms.bold)((0,ms.white)(" add "))));let t=e.snippetId;if(!t&&!e.snippet)return te("SnippetId expected. npx builder.io add <snippetId>"),await oe(1);let n=bt(),r=e.snippet||null;if(!r&&t&&(n.start(`Fetching snippet ${t}`),r=await pE(t),n.stop(`Fetched snippet ${t}`)),!r)throw new Error(`No snippet found for id ${t}`);if(r.files?.length>0){let i=fE(r.framework||"react"),s=e.path||await Lt({message:"Where should we copy the files?",initialValue:i,validate(a){if(a.length===0)return"File path is required!";if(a[0]!==".")return"Please enter a relative path."}});if(Te(s))return te("Cancelled sync"),await oe(0);let o=await Jd(r,r.files,s);return B.success("All files have been written successfully."),{snippet:r,pathInput:s,writtenFiles:o,timeStamp:Date.now()}}else{let{code:i,suggestedName:s,framework:o}=r;if(o){if(o!=="html"&&!(0,ht.existsSync)("./package.json"))throw new Error("No package.json found. Are you in the right directory?");s=await GY(o,i)}s??(s="./src/components/MyComponent.jsx");let a=pO(r,jY(r.code),r.framework);try{r.framework==="html"?a=await nn(a,"html"):r.framework==="angular"?a=await nn(a,"angular"):r.framework==="vue"?a=await nn(a,"vue"):r.framework==="svelte"?a=await nn(a,"html"):a=await nn(a,"typescript")}catch{}let c=e.path;if(!c){try{let p=(await lO({getRootDir:()=>process.cwd()})).getFrameworks();if(p.length>0){let f;if(p.some(m=>m.name.includes("qwik"))?f="qwik":p.some(m=>m.name.includes("react"))?f="react":f=p[0].name,r.framework&&r.framework!==f){let m=await It({message:`This snippet is for ${r.framework}, but you are using ${f}. Continue?`,initialValue:!1});if(Te(m)||!m)return console.log("Please go back to builder and change the output framework to match your project."),console.log(),await oe(0)}}}catch{}if(c=await Lt({message:"Where should we copy the code?",initialValue:s?.startsWith("./")?s:`./${s}`,validate(d){if(d.length===0)return"File path is required!";if(d[0]!==".")return"Please enter a relative path."}}),Te(c))return console.log(""),await oe(0)}let u=process.cwd(),l=(0,li.resolve)(u,c);B.info(`Writing code to ${l}`),(0,ht.mkdirSync)((0,li.dirname)(l),{recursive:!0}),(0,ht.writeFileSync)(l,a)}}function pE(e){return fetch(`https://cdn.builder.io/api/v1/snippet/${e}`).then(t=>t.status===404?null:t.json())}function jY(e){return e.replace(/^```jsx\s?|\s?```$/g,"").trim()}function pO(e,t,n){return n?["vue","html","svelte"].includes(n.toLowerCase())?`<!-- This code was generated by Builder.io -->
|
|
1356
|
+
<!-- https://builder.io/content/${e.contentId}?codeSession=${e.sessionKey}&sid=${e.id} -->
|
|
1357
|
+
${t}`:`/**
|
|
1358
|
+
* This code was generated by Builder.io.
|
|
1359
|
+
* https://builder.io/content/${e.contentId}?codeSession=${e.sessionKey}&sid=${e.id}
|
|
1360
|
+
*/
|
|
1361
|
+
${t}`:t}async function GY(e,t){let n,r=HY(t,e.toLowerCase());switch(e.toLowerCase()){case"react":let i=await KY();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,ht.existsSync)("./src")?`./src/${n}`:`./${n}`,n}async function KY(){let e=(0,ht.readFileSync)("./package.json","utf-8");if(!e)throw new Error("No package.json found");return e.includes("typescript")}function HY(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 Jd(e,t,n){let r=[];for(let i of t){let s=VY(n,i.path),o=(0,li.resolve)(process.cwd(),s);if("code"in i){let a=await YY(e,i.code,zY(i.path));(0,ht.mkdirSync)((0,li.dirname)(o),{recursive:!0}),(0,ht.writeFileSync)(o,a),r.push({...i,path:s,code:a,timestamp:(0,ht.statSync)(o).mtime.getTime()}),B.info(`Writing file to ${o}`)}else(0,ht.mkdirSync)(o,{recursive:!0}),r=r.concat(await Jd(e,i.files,s))}return r}function VY(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 zY(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 YY(e,t,n){let r=t;try{r=await nn(t,n)}catch{}return pO(e,r,n)}function fE(e){let n=(0,ht.existsSync)((0,li.join)(process.cwd(),"src"))?"src/":"";switch(e.toLowerCase()){case"angular":return`./${n}app/components/`;case"html":return"./";default:return`./${n}components/`}}function mE(e,t){return{cwd:e,command:t[0],snippetId:t[1],path:t[2]}}var _t=require("path"),wt=require("fs"),LO=require("glob");var Xd=require("node:http");var fO=require("node:console"),mO=require("node:http"),gO=require("node:https");function gs(e){let t=Date.now();return new Promise((n,r)=>{let s=WY(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,fO.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}
|
|
1361
1362
|
${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 WY(e){if(e.protocol==="https:")return gO.request;if(e.protocol==="http:")return mO.request;throw new Error(`Unsupported protocol ${e.protocol}`)}async function hO(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 gs({url:t,method:"GET"}))[e.model]}async function _O(e,t){if(t.kind===La.VCP)return!0;let n=new URL("https://cdn.builder.io/api/v2/admin"),r={query:`query {
|
|
1362
1363
|
models {
|
|
1363
1364
|
id
|
|
@@ -1587,7 +1588,7 @@ Visit https://www.docs.developers.amplitude.com/data/sdks/browser-2/#tracking-de
|
|
|
1587
1588
|
</script>
|
|
1588
1589
|
</body>
|
|
1589
1590
|
</html>
|
|
1590
|
-
`)}async function RO(e,t){let n=await zx(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 IO=require("node:os");async function AO(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(fi,e.devToolsServerUrl);r.searchParams.set(Tc,(0,IO.platform)()),r.searchParams.set(wc,process.versions.node);let i=e.getFrameworks();return i.length>0&&(n.searchParams.set(Zi,i[0].name),r.searchParams.set(Zi,i[0].name)),n.searchParams.set("redirect_url",r.href),n.searchParams.set("preview_url",t),n.href}async function PO(e,t,n,r){try{if(!e)return _s(n,r,400,"Builder context closed");let i=r5(n);if(i.pathname===cp){if(n.method==="POST"){let s=await n5(n);if(s)try{let o=await xO(e,JSON.parse(s));return NO(n,r,200,o)}catch(o){e.debug("Dev API Error",o.stack||o.message||o);let a={errors:[String(o.message||o)]};return NO(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"?OO(new URL(o))&&(s["Access-Control-Allow-Origin"]=o):s["Access-Control-Allow-Origin"]="*",r.writeHead(200,s),r.end();return}return _s(n,r,405,`${cp} is an API endpoint used only during development by the Builder.io Devtools client-side script`)}if(i.pathname===up)return ZY(n,r,200,await TO(e));if(i.pathname===xE){let s=i.searchParams.get(ap);return s?t5(r,302,await AO(e,s)):_s(n,r,400,`Missing ${ap} querystring`)}return i.pathname===fi?e5(n,r,200,await wO(e)):i.pathname===mi?(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),_s(n,r,200,"Closing Dev Tools Server")):_s(n,r,404,"Not found")}catch(i){return console.error("Dev Server Error",i),_s(n,r,500,`Dev Server Error: ${i}`)}}function NO(e,t,n,r){Qd(e,t,n,"application/json",JSON.stringify(r))}function ZY(e,t,n,r){Qd(e,t,n,"application/javascript",r)}function e5(e,t,n,r){Qd(e,t,n,"text/html",r)}function _s(e,t,n,r){Qd(e,t,n,"text/plain",r)}function Qd(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.25"},o=e.headers.origin;o&&o!=="null"?OO(new URL(o))&&(s["Access-Control-Allow-Origin"]=o):s["Access-Control-Allow-Origin"]="*",t.writeHead(n,s),t.end(i)}function OO(e){return e.hostname==="localhost"||e.origin==="https://builder.io"||e.origin==="https://www.builder.io"||e.origin.endsWith(".builder.io")?!0:e.port===""?!1:e.port!=="80"&&e.port!=="443"}function t5(e,t,n){e.writeHead(t,{Location:n}),e.end()}async function n5(e){let t="";for await(let n of e)t+=n;return t}function r5(e){let t=e.url||"/";return new URL(t,`http://${e.headers.host}`)}async function FO(e){if(globalThis.__builderDevToolsServer)return e.debug("reusing existing devtools server"),globalThis.__builderDevToolsServer.setContext(e),globalThis.__builderDevToolsServer;let t=await i5(e),n=(0,Xd.createServer)((i,s)=>{PO(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 i5(e){return new Promise(t=>{let n=e.port;try{(0,Xd.request)({hostname:"localhost",port:n,path:mi,method:"GET"},i=>{i.on("end",()=>{e.debug(`${mi} - Response ended`),t(n)})}).on("error",i=>{e.debug(`${mi} - No response ${i}`),t(n)}).end()}catch(r){e.debug(`${mi} - Error ${r}`),t(n)}})}async function hE(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 ${kO} [${n}]`);let r=await FO(t);return t.devToolsServerUrl=r.url,t.port=r.port,{getUrl:()=>t.devToolsServerUrl}}var kO="1.1.25";var BO=q(require("chokidar"),1),$O=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 o5(e,t,n){let r=await(0,LO.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,wt.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:bE(a),name:s.split("/").pop()||"",timestamp:(0,wt.statSync)(o).mtime.getTime(),snippetId:c.snippetId})}}catch(a){console.error(`Error reading file ${o}:`,a)}}return i}function s5(e,t){let n=UO(e);return n.contentId===t.contentId&&n.sessionKey===t.sessionKey}function a5(e){let t=[".git",".DS_Store",".vscode","node_modules",".next","coverage"],n=(0,$O.default)().add(t);try{let r=(0,_t.resolve)(e,".gitignore");if((0,wt.existsSync)(r)){let i=(0,wt.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 MO(e,t,n){let r=a5(e),i=BO.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,wt.readFileSync)(a,"utf-8");if(s5(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:bE(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=>{B.info(`File added: ${a}`),await s(a)}).on("change",async a=>{B.info(`File changed: ${a}`),await s(a)}).on("unlink",a=>{B.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=>{B.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"){B.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 qO(e,t){e.debug("builder sync server init");let n=await zi(e),r=t,i=()=>Promise.resolve();r&&setTimeout(()=>{i=MO(process.cwd(),r,s=>{r=s})},1e3),await hE({...n,getPastSyncInfo:({sessionKey:s,since:o})=>!r||s!==r.snippet.sessionKey?null:{...r,hasChanged:r.timeStamp>o},resyncSnippet:async s=>{await i();let o=await _E({path:r?.pathInput,snippet:s.snippet,cwd:process.cwd()});return o&&(r=o,i=MO(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 _E(e){let t=e.snippetId,n=e.snippet||null;if(!n&&t&&(n=await pE(t)),!n)throw new Error(`No snippet found for id ${t}`);let r=await o5(process.cwd(),n.contentId,n.sessionKey),i=r.filter(u=>u.snippetId===n.id);if(B.info(`Found ${i.length} matching files for snippet ${n.id} in existing files ${r.length}`),i.length>0){let u=Math.max(...i.map(l=>l.timestamp||0));return{snippet:n,writtenFiles:i,pathInput:c5(i.map(l=>l.path)),timeStamp:u}}for(let u of r){let l=(0,_t.resolve)(process.cwd(),u.path);try{(0,wt.unlinkSync)(l),B.info(`Deleted old file: ${l}`);let d=(0,_t.dirname)(l);(0,wt.readdirSync)(d).length===0&&((0,wt.rmdirSync)(d),B.info(`Deleted empty folder: ${d}`))}catch(d){B.error(`Error cleaning up file ${l}: ${d}`)}}let s=fE(n.framework||"react"),o=e.path||await Lt({message:"Where should we copy the files?",initialValue:s,validate(u){if(u.length===0)return"File path is required!";if(u[0]!==".")return"Please enter a relative path."}});Te(o)&&(te("Cancelled sync"),process.exit(0));let a=await Jd(n,n.files,o,!0);B.success("All files have been written successfully.");let c=Math.max(...a.map(u=>u.timestamp||0));return{snippet:n,writtenFiles:a.map(u=>({...u,code:bE(u.code)})),pathInput:o,timeStamp:c||Date.now()}}function bE(e){if(!e)return e;let t=/<!--\s*This code was generated by Builder\.io\s*-->\s*<!--\s*https:\/\/builder\.io\/content\/.*?\s*-->\s*/,n=/\/\*\*\s*\n\s*\* This code was generated by Builder\.io\.\s*\n\s*\* https:\/\/builder\.io\/content\/.*?\s*\n\s*\*\/\s*/,r=e.replace(t,"");return r===e&&(r=e.replace(n,"")),r=r.replace(/^\n+/,""),r}function c5(e){if(e.length===0)return"";if(e.length===1)return e[0].slice(0,e[0].lastIndexOf("/")+1);let t=e.map(i=>i.split("/")),n=Math.min(...t.map(i=>i.length)),r=[];for(let i=0;i<n;i++){let s=t[0][i];if(t.every(o=>o[i]===s))r.push(s);else break}return r.join("/")}var jO="1.1.25";function l5(){Zd.init("ac35e3108919035e7d150a2450a07405",{logLevel:Zd.Types.LogLevel.None,flushIntervalMillis:500}),Dn.init({dsn:"https://3252dddc08dbb5bf406dc33bf3c13633@o117565.ingest.us.sentry.io/4505630794448896",tracesSampleRate:1,release:jO,integrations:[new Dn.Integrations.Http({tracing:!0}),...Dn.autoDiscoverNodePerformanceMonitoringIntegrations()]})}async function d5(e){e.debug("builder dev tools cli init");let t=await(0,GO.createDevTools)(e);await(0,HO.createDevToolsServer)({...t,getClientId:()=>"builder-dev-tools-cli",closeAppServer:async()=>{},restartAppServer:async()=>{e.debug("restart server")},enableAppWatch:async n=>n,...e})}var zO=()=>process.exit(0);process.on("SIGINT",zO);process.on("SIGTERM",zO);async function p5(){l5();try{let e=await(0,KO.createDevToolsNodeSys)({getRootDir:()=>process.cwd(),ignoreMissingConfig:!0}),t=(0,VO.default)(process.argv.slice(2),{string:["figmaToken","privateKey","spaceId"],boolean:["help","ci","force","printJson"]}),n=t._[0];if(n==="figma"){let r=t._[1];try{await sO(e,r,t)}catch(i){return Dn.captureException(i),console.error(i),await oe(1)}}else if(n==="add"){let r=mE(process.cwd(),process.argv.slice(2));await dO(r)}else if(n==="sync"){let r=mE(process.cwd(),process.argv.slice(2)),i=await _E(r);qO(e,i).then(()=>{console.info("Builder dev tools is running")}).catch(s=>{Dn.captureException(s),console.error("Cannot start builder dev tools",s)})}else{if(n==="publish"||n==="migrate"||n==="generate")return te("Command not found, do you mean `npx builder.io figma "+n+"`?"),await oe(1);d5(e).then(()=>{console.info("Builder dev tools is running")}).catch(r=>{Dn.captureException(r),console.error("Cannot start builder dev tools",r)})}}catch(e){return Dn.captureException(e),console.error(e),await oe(1)}}p5();
|
|
1591
|
+
`)}async function RO(e,t){let n=await zx(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 IO=require("node:os");async function AO(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(fi,e.devToolsServerUrl);r.searchParams.set(Tc,(0,IO.platform)()),r.searchParams.set(wc,process.versions.node);let i=e.getFrameworks();return i.length>0&&(n.searchParams.set(Zi,i[0].name),r.searchParams.set(Zi,i[0].name)),n.searchParams.set("redirect_url",r.href),n.searchParams.set("preview_url",t),n.href}async function PO(e,t,n,r){try{if(!e)return _s(n,r,400,"Builder context closed");let i=r5(n);if(i.pathname===cp){if(n.method==="POST"){let s=await n5(n);if(s)try{let o=await xO(e,JSON.parse(s));return NO(n,r,200,o)}catch(o){e.debug("Dev API Error",o.stack||o.message||o);let a={errors:[String(o.message||o)]};return NO(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"?OO(new URL(o))&&(s["Access-Control-Allow-Origin"]=o):s["Access-Control-Allow-Origin"]="*",r.writeHead(200,s),r.end();return}return _s(n,r,405,`${cp} is an API endpoint used only during development by the Builder.io Devtools client-side script`)}if(i.pathname===up)return ZY(n,r,200,await TO(e));if(i.pathname===xE){let s=i.searchParams.get(ap);return s?t5(r,302,await AO(e,s)):_s(n,r,400,`Missing ${ap} querystring`)}return i.pathname===fi?e5(n,r,200,await wO(e)):i.pathname===mi?(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),_s(n,r,200,"Closing Dev Tools Server")):_s(n,r,404,"Not found")}catch(i){return console.error("Dev Server Error",i),_s(n,r,500,`Dev Server Error: ${i}`)}}function NO(e,t,n,r){Qd(e,t,n,"application/json",JSON.stringify(r))}function ZY(e,t,n,r){Qd(e,t,n,"application/javascript",r)}function e5(e,t,n,r){Qd(e,t,n,"text/html",r)}function _s(e,t,n,r){Qd(e,t,n,"text/plain",r)}function Qd(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.25"},o=e.headers.origin;o&&o!=="null"?OO(new URL(o))&&(s["Access-Control-Allow-Origin"]=o):s["Access-Control-Allow-Origin"]="*",t.writeHead(n,s),t.end(i)}function OO(e){return e.hostname==="localhost"||e.origin==="https://builder.io"||e.origin==="https://www.builder.io"||e.origin.endsWith(".builder.io")?!0:e.port===""?!1:e.port!=="80"&&e.port!=="443"}function t5(e,t,n){e.writeHead(t,{Location:n}),e.end()}async function n5(e){let t="";for await(let n of e)t+=n;return t}function r5(e){let t=e.url||"/";return new URL(t,`http://${e.headers.host}`)}async function FO(e){if(globalThis.__builderDevToolsServer)return e.debug("reusing existing devtools server"),globalThis.__builderDevToolsServer.setContext(e),globalThis.__builderDevToolsServer;let t=await i5(e),n=(0,Xd.createServer)((i,s)=>{PO(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 i5(e){return new Promise(t=>{let n=e.port;try{(0,Xd.request)({hostname:"localhost",port:n,path:mi,method:"GET"},i=>{i.on("end",()=>{e.debug(`${mi} - Response ended`),t(n)})}).on("error",i=>{e.debug(`${mi} - No response ${i}`),t(n)}).end()}catch(r){e.debug(`${mi} - Error ${r}`),t(n)}})}async function hE(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 ${kO} [${n}]`);let r=await FO(t);return t.devToolsServerUrl=r.url,t.port=r.port,{getUrl:()=>t.devToolsServerUrl}}var kO="1.1.25";var BO=q(require("chokidar"),1),$O=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 o5(e,t,n){let r=await(0,LO.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,wt.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:bE(a),name:s.split("/").pop()||"",timestamp:(0,wt.statSync)(o).mtime.getTime(),snippetId:c.snippetId})}}catch(a){console.error(`Error reading file ${o}:`,a)}}return i}function s5(e,t){let n=UO(e);return n.contentId===t.contentId&&n.sessionKey===t.sessionKey}function a5(e){let t=[".git",".DS_Store",".vscode","node_modules",".next","coverage"],n=(0,$O.default)().add(t);try{let r=(0,_t.resolve)(e,".gitignore");if((0,wt.existsSync)(r)){let i=(0,wt.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 MO(e,t,n){let r=a5(e),i=BO.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,wt.readFileSync)(a,"utf-8");if(s5(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:bE(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=>{B.info(`File added: ${a}`),await s(a)}).on("change",async a=>{B.info(`File changed: ${a}`),await s(a)}).on("unlink",a=>{B.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=>{B.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"){B.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 qO(e,t){e.debug("builder sync server init");let n=await zi(e),r=t,i=()=>Promise.resolve();r&&setTimeout(()=>{i=MO(process.cwd(),r,s=>{r=s})},1e3),await hE({...n,getPastSyncInfo:({sessionKey:s,since:o})=>!r||s!==r.snippet.sessionKey?null:{...r,hasChanged:r.timeStamp>o},resyncSnippet:async s=>{await i();let o=await _E({path:r?.pathInput,snippet:s.snippet,cwd:process.cwd()});return o&&(r=o,i=MO(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 _E(e){let t=e.snippetId,n=e.snippet||null;if(!n&&t&&(n=await pE(t)),!n)throw new Error(`No snippet found for id ${t}`);let r=await o5(process.cwd(),n.contentId,n.sessionKey),i=r.filter(u=>u.snippetId===n.id);if(B.info(`Found ${i.length} matching files for snippet ${n.id} in existing files ${r.length}`),i.length>0){let u=Math.max(...i.map(l=>l.timestamp||0));return{snippet:n,writtenFiles:i,pathInput:c5(i.map(l=>l.path)),timeStamp:u}}for(let u of r){let l=(0,_t.resolve)(process.cwd(),u.path);try{(0,wt.unlinkSync)(l),B.info(`Deleted old file: ${l}`);let d=(0,_t.dirname)(l);(0,wt.readdirSync)(d).length===0&&((0,wt.rmdirSync)(d),B.info(`Deleted empty folder: ${d}`))}catch(d){B.error(`Error cleaning up file ${l}: ${d}`)}}let s=fE(n.framework||"react"),o=e.path||await Lt({message:"Where should we copy the files?",initialValue:s,validate(u){if(u.length===0)return"File path is required!";if(u[0]!==".")return"Please enter a relative path."}});Te(o)&&(te("Cancelled sync"),process.exit(0));let a=await Jd(n,n.files,o);B.success("All files have been written successfully.");let c=Math.max(...a.map(u=>u.timestamp||0));return{snippet:n,writtenFiles:a.map(u=>({...u,code:bE(u.code)})),pathInput:o,timeStamp:c||Date.now()}}function bE(e){if(!e)return e;let t=/<!--\s*This code was generated by Builder\.io\s*-->\s*(?:<!--\s*https:\/\/builder\.io\/content\/[a-f0-9]+\?codeSession=[a-f0-9]+&sid=[a-f0-9]+\s*-->\s*)?/,n=/\/\*\*\s*\n\s*\* This code was generated by Builder\.io\s*\n\s*\* https:\/\/builder\.io\/content\/[a-f0-9]+\?codeSession=[a-f0-9]+&sid=[a-f0-9]+\s*\n\s*\*\/\s*/,r=e.replace(t,"");return r===e&&(r=e.replace(n,"")),r=r.replace(/^\n+/,""),r}function c5(e){if(e.length===0)return"";if(e.length===1)return e[0].slice(0,e[0].lastIndexOf("/")+1);let t=e.map(i=>i.split("/")),n=Math.min(...t.map(i=>i.length)),r=[];for(let i=0;i<n;i++){let s=t[0][i];if(t.every(o=>o[i]===s))r.push(s);else break}return r.join("/")}var jO="1.1.25";function l5(){Zd.init("ac35e3108919035e7d150a2450a07405",{logLevel:Zd.Types.LogLevel.None,flushIntervalMillis:500}),Dn.init({dsn:"https://3252dddc08dbb5bf406dc33bf3c13633@o117565.ingest.us.sentry.io/4505630794448896",tracesSampleRate:1,release:jO,integrations:[new Dn.Integrations.Http({tracing:!0}),...Dn.autoDiscoverNodePerformanceMonitoringIntegrations()]})}async function d5(e){e.debug("builder dev tools cli init");let t=await(0,GO.createDevTools)(e);await(0,HO.createDevToolsServer)({...t,getClientId:()=>"builder-dev-tools-cli",closeAppServer:async()=>{},restartAppServer:async()=>{e.debug("restart server")},enableAppWatch:async n=>n,...e})}var zO=()=>process.exit(0);process.on("SIGINT",zO);process.on("SIGTERM",zO);async function p5(){l5();try{let e=await(0,KO.createDevToolsNodeSys)({getRootDir:()=>process.cwd(),ignoreMissingConfig:!0}),t=(0,VO.default)(process.argv.slice(2),{string:["figmaToken","privateKey","spaceId"],boolean:["help","ci","force","printJson"]}),n=t._[0];if(n==="figma"){let r=t._[1];try{await sO(e,r,t)}catch(i){return Dn.captureException(i),console.error(i),await oe(1)}}else if(n==="add"){let r=mE(process.cwd(),process.argv.slice(2));await dO(r)}else if(n==="sync"){let r=mE(process.cwd(),process.argv.slice(2)),i=await _E(r);qO(e,i).then(()=>{console.info("Builder dev tools is running")}).catch(s=>{Dn.captureException(s),console.error("Cannot start builder dev tools",s)})}else{if(n==="publish"||n==="migrate"||n==="generate")return te("Command not found, do you mean `npx builder.io figma "+n+"`?"),await oe(1);d5(e).then(()=>{console.info("Builder dev tools is running")}).catch(r=>{Dn.captureException(r),console.error("Cannot start builder dev tools",r)})}}catch(e){return Dn.captureException(e),console.error(e),await oe(1)}}p5();
|
|
1591
1592
|
/*! Bundled license information:
|
|
1592
1593
|
|
|
1593
1594
|
cookie/index.js:
|