builder.io 1.2.1 → 1.2.2

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/main.cjs CHANGED
@@ -1,2 +1,20 @@
1
1
  #!/usr/bin/env node
2
- require("./index.cjs");
2
+
3
+ var version = process.version;
4
+ var [majorVersion, minorVersion] = version.replace("v", "").split(".");
5
+ if (Number(majorVersion) < 18) {
6
+ console.error(
7
+ "Builder.io Dev Tools requires Node.js 18.11 or higher. You are currently running Node.js " +
8
+ version
9
+ );
10
+ process.exit(1);
11
+ } else if (Number(majorVersion) === 18) {
12
+ if (Number(minorVersion) < 11) {
13
+ console.error(
14
+ "Node.js 18.11 or higher is REQUIRED. From Node 18.0.0 to 18.11.0, there is a bug preventing correct behaviour of Builder.io. You are currently running Node.js " +
15
+ version
16
+ );
17
+ }
18
+ }
19
+
20
+ require("./index.cjs");
package/core/index.cjs CHANGED
@@ -913,7 +913,7 @@ export class Counter {
913
913
  }
914
914
  }
915
915
 
916
- `.trimStart()}async function wo(e){await Jt(e);let t=await e.readFile(e.registryPath);return t?Hs(e,t):{components:[],sourceFile:I(e,"")}}async function Hs(e,t){let r=I(e,t);return Xs(e,r)}async function Xs(e,t){let r=[],n=J(e,t,"CUSTOM_COMPONENTS");return n&&await Promise.all(n.arrayLiteralExp.elements.map(async(o,i)=>{let a=await bn(e,t,o);a&&(a.nodeIndex=i,r.push(a))})),{sourceFile:t,components:te(r)}}async function bn(e,t,r){if(!e.ts.isObjectLiteralExpression(r))return null;let n={id:"",name:"",displayFilePath:"",exportName:"",importName:"",filePath:"",relFilePath:"",importPath:"",inputs:[]};for(let o of r.properties){if(!e.ts.isPropertyAssignment(o)||!e.ts.isIdentifier(o.name))continue;if(N(e,o)==="component"){let a,{initializer:s}=o;if(e.ts.isIdentifier(s))a=s.text;else if(e.ts.isCallExpression(s)){let p=s.arguments[0];e.ts.isIdentifier(p)&&(a=p.text)}if(!a)continue;n.name===""&&(n.name=K(a)),n.importName=a;let u=await he(e,e.registryPath,t,a);if(!u)continue;if(n.filePath=u.filePath,n.relFilePath=u.relFilePath,await e.exists(u.filePath)?n.importPath=V(e,u.filePath):(n.externalImportPath=u.importPath,n.importPath=n.externalImportPath),n.displayFilePath=u.displayFilePath,n.exportType=u.exportType,n.externalImportPath)n.exportName=a;else{let p=await mo(e,u.filePath);if(p&&p.length>0)if(p.length===1)n.exportName=p[0].cmpInfo.exportName;else{let m=p.find(f=>f.cmpInfo.exportName===a);m&&(n.exportName=m.cmpInfo.exportName)}}continue}}return n=ne(e,n,r),n.filePath&&n.exportName&&(n.id=await $(e,n.filePath,n.exportName,n.externalImportPath)),n}async function ve(e,t,r,n,o,i,a,s){let u=await Me(e),[p,m,f]=await Promise.all([co(e,u),wo(e),Ft(e)]),c=p.map(x=>x.cmpInfo),d=m.components,C={components:me(c,d),registryPath:e.registryPath,registryDisplayPath:k(e,e.registryPath),frameworks:e.getFrameworks(),dependencies:Ee(c),publicApiKey:f.envValue??void 0,devToolsVersion:e.version};if(s)return C.components=await fo(e,p,C.components),C;let l=!1,D=m.sourceFile,g=Array.isArray(t)?t:typeof t=="string"?[t]:[];if(g.length>0){let x=g.map(A=>{let E=p.find(O=>O.cmpInfo.id===A);if(!E)throw new Error(`Component ${A} not found`);return E}),S=Array.from(new Set(x.map(A=>A.cmpInfo.filePath))),P=await G(e,S);for(let A of x){let E=C.components.find(L=>L.id===A.cmpInfo.id),O=await En(e,A,P);ie(E,O);let z=c.findIndex(L=>L.id===A.cmpInfo.id);c[z].inputs=O;let j=Pe(A.cmpInfo.id,c,d,r,n,o,i),{elements:F,elmIndex:y,statementIndex:H,statement:le,variableDeclaration:Y}=await eu(e,D,A);if(j.addCmpToRegistry)F.push(Zs(e,j.addCmpToRegistry)),l=!0;else if(j.removeCmpFromRegistry)F.splice(y,1),l=!0;else if(j.updateRegisteredCmp){let L=Q(e,F[y],j.updateRegisteredCmp);F[y]=e.ts.factory.updateObjectLiteralExpression(L,[To(e,j.updateRegisteredCmp),...L.properties.slice(1)]),l=!0}if(l&&a){let L=[...D.statements];L[H]=e.ts.factory.updateVariableStatement(le,le.modifiers,e.ts.factory.updateVariableDeclarationList(le.declarationList,[e.ts.factory.updateVariableDeclaration(Y,Y.name,Y.exclamationToken,Y.type,e.ts.factory.createArrayLiteralExpression(Ae(e,F)))])),D=e.ts.factory.updateSourceFile(D,L),E.exportType==="named"?D=v(e,D,{namedImports:[E.importName],importPath:E.externalImportPath?E.externalImportPath:B(e,e.registryPath,E.filePath)}):D=v(e,D,{defaultImport:E.importName,importPath:E.externalImportPath?E.externalImportPath:B(e,e.registryPath,E.filePath)}),D=v(e,D,{namedImports:["RegisteredComponent"],importPath:"@builder.io/sdk-angular",isTypeOnly:!0}),D=ye(e,D,{variableName:"CUSTOM_COMPONENTS",arrayType:"RegisteredComponent"}),C.components=j.components,d=j.components.filter(X=>X.isRegistered)}}}if(l&&a){D=Fe(e,D),D=Se(e,D);let x=_(e,D);x=pe(x),x=await e.formatCode(e.registryPath,x),await e.writeFile(e.registryPath,x)}return C}function To(e,t){let r=e.ts.factory.createIdentifier(t.importName);return e.ts.factory.createPropertyAssignment("component",r)}function Zs(e,t){return Q(e,e.ts.factory.createObjectLiteralExpression([To(e,t)],!0),t)}async function eu(e,t,r){let n=J(e,t,"CUSTOM_COMPONENTS");if(!n)throw new Error(`Exported name of the Builder registry must be "CUSTOM_COMPONENTS". Please update your Builder registry file: ${e.registryPath}`);let o=n.arrayLiteralExp.elements.filter(a=>e.ts.isObjectLiteralExpression(a)),i=-1;for(let a=0;a<o.length;a++)if((await bn(e,t,o[a]))?.id===r.cmpInfo.id){i=a;break}return{...n,elements:o,elmIndex:i}}async function bo(e){let t=await tu(e),r={};return{builderPageOptions:async()=>({templateContentId:"f0b8016ac92e474699293211a268ebaa",pathname:"/builder-demo",title:"Builder + Angular Demo Page"}),ensureBuilderSetup:()=>Fo(t),ensureFigmaImportPage:()=>Po(t),getRegistryPath:()=>t.registryPath,getRegistry:o=>ve(t,null,!1,!1,null,null,!1,!!o?.readAllInputTypes),addExternalPackage:async o=>{r[o]||(r[o]=`export * from "${o}";`)},loadComponent:async o=>{let i=await ve(t,o.cmpId,!1,!1,null,null,!1,!1);return{...i,component:i.components.find(a=>a.id===o.cmpId)}},registerComponent:o=>ve(t,o.cmpId,!0,!1,null,null,!0,!1),setRegisteredComponentInfo:o=>ve(t,o.cmpId,!1,!1,o,null,!0,!1),setRegisteredComponentInput:o=>ve(t,o.cmpId,!1,!1,null,o,!0,!1),unregisterComponent:o=>ve(t,o.cmpId,!1,!0,null,null,!0,!1),getPublicApiKey:()=>Ft(t),setPublicApiKey:o=>lo(t,o.publicApiKey),getDependencies:o=>[{name:"@builder.io/dev-tools"},{name:"@builder.io/sdk-angular"},{name:"concurrently"}],getDevRunCommand:()=>"builder-dev",getCache:()=>De(t),setCache:o=>Ce(t,o)}}async function tu(e){let t=await nu(e),r=e.getAppRootDir(),n=e.join(r,"src"),o=await re(e),i=e.join(n,"app"),a=await ae(e,i),s={...e,srcDir:"",appDir:"",componentsDir:"",registryPath:a,angularConfigPath:t,typescriptEnabled:o,builderPageComponentPath:"",hasAppModule:!1};if(!await e.exists(n))throw new Error(`Could not find src directory. Searched for src in "${e.getAppRootDir()}".`);s.srcDir=n,s.appDir=i,s.componentsDir=e.join(s.appDir,"components"),s.builderPageComponentPath=e.join(s.componentsDir,`builder-page.component.${o?"ts":"js"}`);let u=`app.module.${o?"ts":"js"}`,p=e.join(s.appDir,u);return await e.exists(p)&&(s.hasAppModule=!0),s}async function nu(e){let t=e.join(e.getAppRootDir(),"angular.json");if(await e.exists(t))return t;let r=e.join(e.getAppRootDir(),"project.json");if(await e.exists(r))return r;throw new Error(`Could not find Angular config file. Searched for angular.json & project.json in "${e.getAppRootDir()}".`)}var Xt=Qn(Ko(),1);async function Mo(e,t){let n={components:(await t.getRegistry()).components.filter(i=>i.isRegistered).map(i=>{let a={filePath:ce(e.relative(e.getAppRootDir(),i.filePath)),name:i.name,image:i.image,description:i.description,exportName:i.exportName,inputs:oe(i.inputs)};return oe(a)}),version:1};e.debug("exporting registry components:",n.components.length);let o=(0,Xt.compress)(n);return btoa(JSON.stringify(o))}async function Uo(e,t,r){if(typeof r!="string")throw new Error("Invalid registry to import");let n=await t.getRegistry(),o=JSON.parse(atob(r)),i=(0,Xt.decompress)(o),a=oe(n);e.debug("importing registry components:",i.components.length);for(let s of i.components){let u=ce(e.normalize(s.filePath)),p=n.components.find(f=>ce(f.filePath).endsWith(u)&&f.exportName===s.exportName);if(!p){console.error(`Could not find component to register: ${s.filePath}, ${s.exportName}`);continue}e.debug(`register (${p.id})`,p.filePath),await t.registerComponent({cmpId:p.id});for(let f of s.inputs)e.debug(`set input (${p.id})`),await t.setRegisteredComponentInput({cmpId:p.id,name:f.name,type:f.type,required:f.required,defaultValue:f.defaultValue,friendlyName:f.friendlyName,helperText:f.helperText});e.debug(`set input (${p.id}) info`);let m=await t.setRegisteredComponentInfo({cmpId:p.id,name:s.name,image:s.image,description:s.description});a=oe(m)}return a}var de={react:"react",remix:"remix",angular:"angular",next:"next",qwik:"qwik"},Ed={[de.react]:[{version:w.gen1,recommended:!0},{version:w.gen2,recommended:!1}],[de.remix]:[{version:w.gen1,recommended:!1},{version:w.gen2,recommended:!0}],[de.angular]:[{version:w.gen2,recommended:!0}],[de.next]:[{version:w.gen1,recommended:!0},{version:w.gen2,recommended:!1}],[de.qwik]:[{version:w.gen2,recommended:!0}]};async function zo(e,t){let r=[],n=new Set;async function o(s){let u=e.join(s,"package.json");try{let p=await e.readFile(u);if(p===null)throw new Error(`Failed to read package.json at ${u}`);let m=JSON.parse(p);if(n.has(m.name))return null;n.add(m.name);let f={name:m.name,subPackages:[]},c=await e.readdir(s);for(let d of c)d!=="node_modules"&&(await e.stat(e.join(s,d))).isDirectory()&&f.subPackages.push(d);return r.push(f),f}catch(p){return console.error(`Error reading package.json at ${s}:`,p),null}}let i=e.join(t,"package.json"),a=await e.readFile(i);if(a!==null){let s=JSON.parse(a),u={...s.dependencies,...s.devDependencies};for(let p of Object.keys(u)){let m=e.join(t,"node_modules",p);await o(m)}if(s.workspaces)for(let p of s.workspaces){let m=await e.readdir(e.join(t,p));for(let f of m){let c=e.join(t,p,f);await o(c)}}}return r}var wu={"@builder.io/qwik-city":Jr,next:kr,"@remix-run/react":eo,react:po,"@angular/core":bo},Tu={"@builder.io/qwik-city":de.qwik,next:de.next,"@remix-run/react":de.remix,react:de.react,"@angular/core":de.angular};async function qo(e){if(!e.ts)throw new Error("createDevTools() requires a TypeScript instance passed to the 'ts' option");if((!e.frameworks||e.frameworks.length===0)&&(e.frameworks=await je(e)),e.frameworks.length===0)throw new Error(`Supported Devtools framework for not found within ${e.getAppRootDir()}`);for(let t of e.frameworks){let r=wu[t.name];if(r){let n=await r(e);return{...n,exportRegistry:()=>Mo(e,n),importRegistry:i=>Uo(e,n,i),framework:Tu[t.name],findAllDependencies:async()=>await zo(e,e.getRepoRootDir())}}}throw new Error(`Devtools framework not found for ${e.getAppRootDir()}, ${JSON.stringify(e.frameworks,null,2)}`)}function Jo(e){function t(f){if(typeof f!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(f))}function r(f,c){let d="",C=0,l=-1,D=0,g;for(let x=0;x<=f.length;++x){if(x<f.length)g=f.charCodeAt(x);else{if(g===47)break;g=47}if(g===47){if(!(l===x-1||D===1))if(l!==x-1&&D===2){if(d.length<2||C!==2||d.charCodeAt(d.length-1)!==46||d.charCodeAt(d.length-2)!==46){if(d.length>2){let S=d.lastIndexOf("/");if(S!==d.length-1){S===-1?(d="",C=0):(d=d.slice(0,S),C=d.length-1-d.lastIndexOf("/")),l=x,D=0;continue}}else if(d.length===2||d.length===1){d="",C=0,l=x,D=0;continue}}c&&(d.length>0?d+="/..":d="..",C=2)}else d.length>0?d+="/"+f.slice(l+1,x):d=f.slice(l+1,x),C=x-l-1;l=x,D=0}else g===46&&D!==-1?++D:D=-1}return d}let n=function(...c){let d="",C=!1;for(let l=c.length-1;l>=-1&&!C;l--){let D;l>=0?D=c[l]:e.cwd?D=e.cwd():D="/",t(D),D.length!==0&&(d=D+"/"+d,C=D.charCodeAt(0)===47)}return d=r(d,!C),C?d.length>0?"/"+d:"/":d.length>0?d:"."},o=function(c){if(t(c),c.length===0)return".";let d=c.charCodeAt(0)===47,C=c.charCodeAt(c.length-1)===47;return c=r(c,!d),c.length===0&&!d&&(c="."),c.length>0&&C&&(c+="/"),d?"/"+c:c};return{relative:function(c,d){if(t(c),t(d),c===d||(c=n(c),d=n(d),c===d))return"";let C=1;for(;C<c.length&&c.charCodeAt(C)===47;++C);let l=c.length,D=l-C,g=1;for(;g<d.length&&d.charCodeAt(g)===47;++g);let S=d.length-g,P=D<S?D:S,A=-1,E=0;for(;E<=P;++E){if(E===P){if(S>P){if(d.charCodeAt(g+E)===47)return d.slice(g+E+1);if(E===0)return d.slice(g+E)}else D>P&&(c.charCodeAt(C+E)===47?A=E:E===0&&(A=0));break}let z=c.charCodeAt(C+E),j=d.charCodeAt(g+E);if(z!==j)break;z===47&&(A=E)}let O="";for(E=C+A+1;E<=l;++E)(E===l||c.charCodeAt(E)===47)&&(O.length===0?O+="..":O+="/..");return O.length>0?O+d.slice(g+A):(g+=A,d.charCodeAt(g)===47&&++g,d.slice(g))},resolve:n,join:function(...c){if(c.length===0)return".";let d;for(let C=0;C<c.length;++C){let l=c[C];t(l),l.length>0&&(d===void 0?d=l:d+="/"+l)}return d===void 0?".":o(d)},isAbsolute:function(c){return t(c),c.length>0&&c.charCodeAt(0)===47},basename:function(c,d){if(d!==void 0&&typeof d!="string")throw new TypeError('"ext" argument must be a string');t(c);let C=0,l=-1,D=!0,g;if(d!==void 0&&d.length>0&&d.length<=c.length){if(d.length===c.length&&d===c)return"";let x=d.length-1,S=-1;for(g=c.length-1;g>=0;--g){let P=c.charCodeAt(g);if(P===47){if(!D){C=g+1;break}}else S===-1&&(D=!1,S=g+1),x>=0&&(P===d.charCodeAt(x)?--x===-1&&(l=g):(x=-1,l=S))}return C===l?l=S:l===-1&&(l=c.length),c.slice(C,l)}else{for(g=c.length-1;g>=0;--g)if(c.charCodeAt(g)===47){if(!D){C=g+1;break}}else l===-1&&(D=!1,l=g+1);return l===-1?"":c.slice(C,l)}},normalize:o,dirname:function(c){if(t(c),c.length===0)return".";let d=c.charCodeAt(0),C=d===47,l=-1,D=!0;for(let g=c.length-1;g>=1;--g)if(d=c.charCodeAt(g),d===47){if(!D){l=g;break}}else D=!1;return l===-1?C?"/":".":C&&l===1?"//":c.slice(0,l)},extname:function(c){t(c);let d=-1,C=0,l=-1,D=!0,g=0;for(let x=c.length-1;x>=0;--x){let S=c.charCodeAt(x);if(S===47){if(!D){C=x+1;break}continue}l===-1&&(D=!1,l=x+1),S===46?d===-1?d=x:g!==1&&(g=1):d!==-1&&(g=-1)}return d===-1||l===-1||g===0||g===1&&d===l-1&&d===C+1?"":c.slice(d,l)}}}async function Qo(e){let t=e.getRepoRootDir?e.getRepoRootDir:()=>"/",r=e.cwd?e.cwd:()=>"/",n=Jo({cwd:r,...e}),o=new Map,i=l=>n.normalize(n.resolve(r(),l)),a=l=>{for(let[D]of o)if((D+"/").startsWith(l))return!0;return l===t()},s=l=>(l=i(l),o.has(l)?!0:a(l)),u=l=>{l=i(l);let D=l===t()?l:l+"/",g=D.split("/").length-1,x=[];for(let[S]of o)if(S.split("/").slice(0,g).join("/")+"/"===D){let E=S.split("/")[g];E&&!x.includes(E)&&x.push(E)}return x.sort()},p=l=>{l=i(l);let D=o.get(l);return typeof D=="string"?D:null},m=l=>(l=i(l),{isFile:()=>o.has(l),isDirectory:()=>!o.has(l)&&a(l)}),f=async l=>{if(typeof crypto<"u"){let x=new TextEncoder().encode(l),S=await crypto.subtle.digest("SHA-256",x);return Array.from(new Uint8Array(S)).map(P=>P.toString(16).padStart(2,"0")).join("")}let D=0;for(let g=0;g<l.length;g++){let x=l.charCodeAt(g);D=(D<<5)-D+x,D|=0}return Number(Math.abs(D)).toString(36)},c=new Set,d={getRepoRootDir:t,getAppRootDir:t,getCwdDir:r,cwd:r,exists:async l=>s(l),existsSync:s,readdir:async l=>u(l),readdirSync:u,readFile:async l=>p(l),readFileSync:p,stat:async l=>m(l),statSync:m,writeFile:async(l,D)=>{l=i(l),o.set(l,D);let g={path:l,basename:n.basename(l),dirname:n.dirname(l),extname:n.extname(l)};for(let x of c)await x(g)},unlink:async l=>{l=i(l),o.delete(l)},unlinkSync:l=>{l=i(l),o.delete(l)},hash:f,getDeviceId:async()=>typeof navigator<"u"?f(navigator.userAgent):"",getRepoInfo:async()=>({remoteUrl:"",defaultBranch:"",currentBranch:"",commit:""}),formatCode:async(l,D)=>D,on:(l,D)=>{l==="change"&&c.add(D)},off:(l,D)=>{l==="change"&&c.delete(D)},debug:(...l)=>{console.debug("[builder-dev-tools]",...l)},launchEditor:async()=>{},platform:()=>({runtime:"",os:""}),getFrameworks:()=>[],...n,...e,version:"0.0.0",sdkVersion:null,kind:null,magicast:void 0,spawnSync:void 0},C=await je(d);return d.getFrameworks=e.getFrameworks?e.getFrameworks:()=>C,d}async function Wo(e,t,r){let n=I(e,r),o={content:r,filePath:t,fileName:e.basename(t),hasContentUpdates:!1};if(Yo(e,n))return o;let a=ue(e,n,"cjs"),s=ue(e,n);if(a.length!==1&&s.length!==1)throw new Error(`Expected an export from ${t}`);if(s.length===1){let m=s[0];if(!m.isDefaultExport)throw new Error(`Expected a default export from ${t}`);let f=m.statement;if(!e.ts.isVariableStatement(f))throw new Error(`Unexpected export type in ${t}
916
+ `.trimStart()}async function wo(e){await Jt(e);let t=await e.readFile(e.registryPath);return t?Hs(e,t):{components:[],sourceFile:I(e,"")}}async function Hs(e,t){let r=I(e,t);return Xs(e,r)}async function Xs(e,t){let r=[],n=J(e,t,"CUSTOM_COMPONENTS");return n&&await Promise.all(n.arrayLiteralExp.elements.map(async(o,i)=>{let a=await bn(e,t,o);a&&(a.nodeIndex=i,r.push(a))})),{sourceFile:t,components:te(r)}}async function bn(e,t,r){if(!e.ts.isObjectLiteralExpression(r))return null;let n={id:"",name:"",displayFilePath:"",exportName:"",importName:"",filePath:"",relFilePath:"",importPath:"",inputs:[]};for(let o of r.properties){if(!e.ts.isPropertyAssignment(o)||!e.ts.isIdentifier(o.name))continue;if(N(e,o)==="component"){let a,{initializer:s}=o;if(e.ts.isIdentifier(s))a=s.text;else if(e.ts.isCallExpression(s)){let p=s.arguments[0];e.ts.isIdentifier(p)&&(a=p.text)}if(!a)continue;n.name===""&&(n.name=K(a)),n.importName=a;let u=await he(e,e.registryPath,t,a);if(!u)continue;if(n.filePath=u.filePath,n.relFilePath=u.relFilePath,await e.exists(u.filePath)?n.importPath=V(e,u.filePath):(n.externalImportPath=u.importPath,n.importPath=n.externalImportPath),n.displayFilePath=u.displayFilePath,n.exportType=u.exportType,n.externalImportPath)n.exportName=a;else{let p=await mo(e,u.filePath);if(p&&p.length>0)if(p.length===1)n.exportName=p[0].cmpInfo.exportName;else{let m=p.find(f=>f.cmpInfo.exportName===a);m&&(n.exportName=m.cmpInfo.exportName)}}continue}}return n=ne(e,n,r),n.filePath&&n.exportName&&(n.id=await $(e,n.filePath,n.exportName,n.externalImportPath)),n}async function ve(e,t,r,n,o,i,a,s){let u=await Me(e),[p,m,f]=await Promise.all([co(e,u),wo(e),Ft(e)]),c=p.map(x=>x.cmpInfo),d=m.components,C={components:me(c,d),registryPath:e.registryPath,registryDisplayPath:k(e,e.registryPath),frameworks:e.getFrameworks(),dependencies:Ee(c),publicApiKey:f.envValue??void 0,devToolsVersion:e.version};if(s)return C.components=await fo(e,p,C.components),C;let l=!1,D=m.sourceFile,g=Array.isArray(t)?t:typeof t=="string"?[t]:[];if(g.length>0){let x=g.map(A=>{let E=p.find(O=>O.cmpInfo.id===A);if(!E)throw new Error(`Component ${A} not found`);return E}),S=Array.from(new Set(x.map(A=>A.cmpInfo.filePath))),P=await G(e,S);for(let A of x){let E=C.components.find(L=>L.id===A.cmpInfo.id),O=await En(e,A,P);ie(E,O);let z=c.findIndex(L=>L.id===A.cmpInfo.id);c[z].inputs=O;let j=Pe(A.cmpInfo.id,c,d,r,n,o,i),{elements:F,elmIndex:y,statementIndex:H,statement:le,variableDeclaration:Y}=await eu(e,D,A);if(j.addCmpToRegistry)F.push(Zs(e,j.addCmpToRegistry)),l=!0;else if(j.removeCmpFromRegistry)F.splice(y,1),l=!0;else if(j.updateRegisteredCmp){let L=Q(e,F[y],j.updateRegisteredCmp);F[y]=e.ts.factory.updateObjectLiteralExpression(L,[To(e,j.updateRegisteredCmp),...L.properties.slice(1)]),l=!0}if(l&&a){let L=[...D.statements];L[H]=e.ts.factory.updateVariableStatement(le,le.modifiers,e.ts.factory.updateVariableDeclarationList(le.declarationList,[e.ts.factory.updateVariableDeclaration(Y,Y.name,Y.exclamationToken,Y.type,e.ts.factory.createArrayLiteralExpression(Ae(e,F)))])),D=e.ts.factory.updateSourceFile(D,L),E.exportType==="named"?D=v(e,D,{namedImports:[E.importName],importPath:E.externalImportPath?E.externalImportPath:B(e,e.registryPath,E.filePath)}):D=v(e,D,{defaultImport:E.importName,importPath:E.externalImportPath?E.externalImportPath:B(e,e.registryPath,E.filePath)}),D=v(e,D,{namedImports:["RegisteredComponent"],importPath:"@builder.io/sdk-angular",isTypeOnly:!0}),D=ye(e,D,{variableName:"CUSTOM_COMPONENTS",arrayType:"RegisteredComponent"}),C.components=j.components,d=j.components.filter(X=>X.isRegistered)}}}if(l&&a){D=Fe(e,D),D=Se(e,D);let x=_(e,D);x=pe(x),x=await e.formatCode(e.registryPath,x),await e.writeFile(e.registryPath,x)}return C}function To(e,t){let r=e.ts.factory.createIdentifier(t.importName);return e.ts.factory.createPropertyAssignment("component",r)}function Zs(e,t){return Q(e,e.ts.factory.createObjectLiteralExpression([To(e,t)],!0),t)}async function eu(e,t,r){let n=J(e,t,"CUSTOM_COMPONENTS");if(!n)throw new Error(`Exported name of the Builder registry must be "CUSTOM_COMPONENTS". Please update your Builder registry file: ${e.registryPath}`);let o=n.arrayLiteralExp.elements.filter(a=>e.ts.isObjectLiteralExpression(a)),i=-1;for(let a=0;a<o.length;a++)if((await bn(e,t,o[a]))?.id===r.cmpInfo.id){i=a;break}return{...n,elements:o,elmIndex:i}}async function bo(e){let t=await tu(e),r={};return{builderPageOptions:async()=>({templateContentId:"f0b8016ac92e474699293211a268ebaa",pathname:"/builder-demo",title:"Builder + Angular Demo Page"}),ensureBuilderSetup:()=>Fo(t),ensureFigmaImportPage:()=>Po(t),getRegistryPath:()=>t.registryPath,getRegistry:o=>ve(t,null,!1,!1,null,null,!1,!!o?.readAllInputTypes),addExternalPackage:async o=>{r[o]||(r[o]=`export * from "${o}";`)},loadComponent:async o=>{let i=await ve(t,o.cmpId,!1,!1,null,null,!1,!1);return{...i,component:i.components.find(a=>a.id===o.cmpId)}},registerComponent:o=>ve(t,o.cmpId,!0,!1,null,null,!0,!1),setRegisteredComponentInfo:o=>ve(t,o.cmpId,!1,!1,o,null,!0,!1),setRegisteredComponentInput:o=>ve(t,o.cmpId,!1,!1,null,o,!0,!1),unregisterComponent:o=>ve(t,o.cmpId,!1,!0,null,null,!0,!1),getPublicApiKey:()=>Ft(t),setPublicApiKey:o=>lo(t,o.publicApiKey),getDependencies:o=>[{name:"@builder.io/dev-tools"},{name:"@builder.io/sdk-angular"},{name:"concurrently"}],getDevRunCommand:()=>"builder-dev",getCache:()=>De(t),setCache:o=>Ce(t,o)}}async function tu(e){let t=await nu(e),r=e.getAppRootDir(),n=e.join(r,"src"),o=await re(e),i=e.join(n,"app"),a=await ae(e,i),s={...e,srcDir:"",appDir:"",componentsDir:"",registryPath:a,angularConfigPath:t,typescriptEnabled:o,builderPageComponentPath:"",hasAppModule:!1};if(!await e.exists(n))throw new Error(`Could not find src directory. Searched for src in "${e.getAppRootDir()}".`);s.srcDir=n,s.appDir=i,s.componentsDir=e.join(s.appDir,"components"),s.builderPageComponentPath=e.join(s.componentsDir,`builder-page.component.${o?"ts":"js"}`);let u=`app.module.${o?"ts":"js"}`,p=e.join(s.appDir,u);return await e.exists(p)&&(s.hasAppModule=!0),s}async function nu(e){let t=e.join(e.getAppRootDir(),"angular.json");if(await e.exists(t))return t;let r=e.join(e.getAppRootDir(),"project.json");if(await e.exists(r))return r;throw new Error(`Could not find Angular config file. Searched for angular.json & project.json in "${e.getAppRootDir()}".`)}var Xt=Qn(Ko(),1);async function Mo(e,t){let n={components:(await t.getRegistry()).components.filter(i=>i.isRegistered).map(i=>{let a={filePath:ce(e.relative(e.getAppRootDir(),i.filePath)),name:i.name,image:i.image,description:i.description,exportName:i.exportName,inputs:oe(i.inputs)};return oe(a)}),version:1};e.debug("exporting registry components:",n.components.length);let o=(0,Xt.compress)(n);return btoa(JSON.stringify(o))}async function Uo(e,t,r){if(typeof r!="string")throw new Error("Invalid registry to import");let n=await t.getRegistry(),o=JSON.parse(atob(r)),i=(0,Xt.decompress)(o),a=oe(n);e.debug("importing registry components:",i.components.length);for(let s of i.components){let u=ce(e.normalize(s.filePath)),p=n.components.find(f=>ce(f.filePath).endsWith(u)&&f.exportName===s.exportName);if(!p){console.error(`Could not find component to register: ${s.filePath}, ${s.exportName}`);continue}e.debug(`register (${p.id})`,p.filePath),await t.registerComponent({cmpId:p.id});for(let f of s.inputs)e.debug(`set input (${p.id})`),await t.setRegisteredComponentInput({cmpId:p.id,name:f.name,type:f.type,required:f.required,defaultValue:f.defaultValue,friendlyName:f.friendlyName,helperText:f.helperText});e.debug(`set input (${p.id}) info`);let m=await t.setRegisteredComponentInfo({cmpId:p.id,name:s.name,image:s.image,description:s.description});a=oe(m)}return a}var de={react:"react",remix:"remix",angular:"angular",next:"next",qwik:"qwik"},Ed={[de.react]:[{version:w.gen1,recommended:!0},{version:w.gen2,recommended:!1}],[de.remix]:[{version:w.gen1,recommended:!1},{version:w.gen2,recommended:!0}],[de.angular]:[{version:w.gen2,recommended:!0}],[de.next]:[{version:w.gen1,recommended:!0},{version:w.gen2,recommended:!1}],[de.qwik]:[{version:w.gen2,recommended:!0}]};async function zo(e,t){let r=[],n=new Set;async function o(s){let u=e.join(s,"package.json");try{let p=await e.readFile(u);if(p===null)throw new Error(`Failed to read package.json at ${u}`);let m=JSON.parse(p);if(n.has(m.name))return null;n.add(m.name);let f={name:m.name,subPackages:[]},c=await e.readdir(s);for(let d of c)d!=="node_modules"&&(await e.stat(e.join(s,d))).isDirectory()&&f.subPackages.push(d);return r.push(f),f}catch(p){return console.error(`Error reading package.json at ${s}:`,p),null}}let i=e.join(t,"package.json"),a=await e.readFile(i);if(a!==null){let s=JSON.parse(a),u={...s.dependencies,...s.devDependencies};for(let p of Object.keys(u)){let m=e.join(t,"node_modules",p);await o(m)}if(s.workspaces)for(let p of s.workspaces){let m=await e.readdir(e.join(t,p));for(let f of m){let c=e.join(t,p,f);await o(c)}}}return r}var wu={"@builder.io/qwik-city":Jr,next:kr,"@remix-run/react":eo,react:po,"@angular/core":bo},Tu={"@builder.io/qwik-city":de.qwik,next:de.next,"@remix-run/react":de.remix,react:de.react,"@angular/core":de.angular};async function qo(e){if(!e.ts)throw new Error("createDevTools() requires a TypeScript instance passed to the 'ts' option");if((!e.frameworks||e.frameworks.length===0)&&(e.frameworks=await je(e)),e.frameworks.length===0)throw new Error(`Supported Devtools framework for not found within ${e.getAppRootDir()}`);for(let t of e.frameworks){let r=wu[t.name];if(r){let n=await r(e);return{...n,exportRegistry:()=>Mo(e,n),importRegistry:i=>Uo(e,n,i),framework:Tu[t.name],findAllDependencies:async()=>await zo(e,e.getRepoRootDir())}}}throw new Error(`Devtools framework not found for ${e.getAppRootDir()}, ${JSON.stringify(e.frameworks,null,2)}`)}function Jo(e){function t(f){if(typeof f!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(f))}function r(f,c){let d="",C=0,l=-1,D=0,g;for(let x=0;x<=f.length;++x){if(x<f.length)g=f.charCodeAt(x);else{if(g===47)break;g=47}if(g===47){if(!(l===x-1||D===1))if(l!==x-1&&D===2){if(d.length<2||C!==2||d.charCodeAt(d.length-1)!==46||d.charCodeAt(d.length-2)!==46){if(d.length>2){let S=d.lastIndexOf("/");if(S!==d.length-1){S===-1?(d="",C=0):(d=d.slice(0,S),C=d.length-1-d.lastIndexOf("/")),l=x,D=0;continue}}else if(d.length===2||d.length===1){d="",C=0,l=x,D=0;continue}}c&&(d.length>0?d+="/..":d="..",C=2)}else d.length>0?d+="/"+f.slice(l+1,x):d=f.slice(l+1,x),C=x-l-1;l=x,D=0}else g===46&&D!==-1?++D:D=-1}return d}let n=function(...c){let d="",C=!1;for(let l=c.length-1;l>=-1&&!C;l--){let D;l>=0?D=c[l]:e.cwd?D=e.cwd():D="/",t(D),D.length!==0&&(d=D+"/"+d,C=D.charCodeAt(0)===47)}return d=r(d,!C),C?d.length>0?"/"+d:"/":d.length>0?d:"."},o=function(c){if(t(c),c.length===0)return".";let d=c.charCodeAt(0)===47,C=c.charCodeAt(c.length-1)===47;return c=r(c,!d),c.length===0&&!d&&(c="."),c.length>0&&C&&(c+="/"),d?"/"+c:c};return{relative:function(c,d){if(t(c),t(d),c===d||(c=n(c),d=n(d),c===d))return"";let C=1;for(;C<c.length&&c.charCodeAt(C)===47;++C);let l=c.length,D=l-C,g=1;for(;g<d.length&&d.charCodeAt(g)===47;++g);let S=d.length-g,P=D<S?D:S,A=-1,E=0;for(;E<=P;++E){if(E===P){if(S>P){if(d.charCodeAt(g+E)===47)return d.slice(g+E+1);if(E===0)return d.slice(g+E)}else D>P&&(c.charCodeAt(C+E)===47?A=E:E===0&&(A=0));break}let z=c.charCodeAt(C+E),j=d.charCodeAt(g+E);if(z!==j)break;z===47&&(A=E)}let O="";for(E=C+A+1;E<=l;++E)(E===l||c.charCodeAt(E)===47)&&(O.length===0?O+="..":O+="/..");return O.length>0?O+d.slice(g+A):(g+=A,d.charCodeAt(g)===47&&++g,d.slice(g))},resolve:n,join:function(...c){if(c.length===0)return".";let d;for(let C=0;C<c.length;++C){let l=c[C];t(l),l.length>0&&(d===void 0?d=l:d+="/"+l)}return d===void 0?".":o(d)},isAbsolute:function(c){return t(c),c.length>0&&c.charCodeAt(0)===47},basename:function(c,d){if(d!==void 0&&typeof d!="string")throw new TypeError('"ext" argument must be a string');t(c);let C=0,l=-1,D=!0,g;if(d!==void 0&&d.length>0&&d.length<=c.length){if(d.length===c.length&&d===c)return"";let x=d.length-1,S=-1;for(g=c.length-1;g>=0;--g){let P=c.charCodeAt(g);if(P===47){if(!D){C=g+1;break}}else S===-1&&(D=!1,S=g+1),x>=0&&(P===d.charCodeAt(x)?--x===-1&&(l=g):(x=-1,l=S))}return C===l?l=S:l===-1&&(l=c.length),c.slice(C,l)}else{for(g=c.length-1;g>=0;--g)if(c.charCodeAt(g)===47){if(!D){C=g+1;break}}else l===-1&&(D=!1,l=g+1);return l===-1?"":c.slice(C,l)}},normalize:o,dirname:function(c){if(t(c),c.length===0)return".";let d=c.charCodeAt(0),C=d===47,l=-1,D=!0;for(let g=c.length-1;g>=1;--g)if(d=c.charCodeAt(g),d===47){if(!D){l=g;break}}else D=!1;return l===-1?C?"/":".":C&&l===1?"//":c.slice(0,l)},extname:function(c){t(c);let d=-1,C=0,l=-1,D=!0,g=0;for(let x=c.length-1;x>=0;--x){let S=c.charCodeAt(x);if(S===47){if(!D){C=x+1;break}continue}l===-1&&(D=!1,l=x+1),S===46?d===-1?d=x:g!==1&&(g=1):d!==-1&&(g=-1)}return d===-1||l===-1||g===0||g===1&&d===l-1&&d===C+1?"":c.slice(d,l)}}}async function Qo(e){let t=e.getRepoRootDir?e.getRepoRootDir:()=>"/",r=e.cwd?e.cwd:()=>"/",n=Jo({cwd:r,...e}),o=new Map,i=l=>n.normalize(n.resolve(r(),l)),a=l=>{for(let[D]of o)if((D+"/").startsWith(l))return!0;return l===t()},s=l=>(l=i(l),o.has(l)?!0:a(l)),u=l=>{l=i(l);let D=l===t()?l:l+"/",g=D.split("/").length-1,x=[];for(let[S]of o)if(S.split("/").slice(0,g).join("/")+"/"===D){let E=S.split("/")[g];E&&!x.includes(E)&&x.push(E)}return x.sort()},p=l=>{l=i(l);let D=o.get(l);return typeof D=="string"?D:null},m=l=>(l=i(l),{isFile:()=>o.has(l),isDirectory:()=>!o.has(l)&&a(l)}),f=async l=>{if(typeof crypto<"u"){let x=new TextEncoder().encode(l),S=await crypto.subtle.digest("SHA-256",x);return Array.from(new Uint8Array(S)).map(P=>P.toString(16).padStart(2,"0")).join("")}let D=0;for(let g=0;g<l.length;g++){let x=l.charCodeAt(g);D=(D<<5)-D+x,D|=0}return Number(Math.abs(D)).toString(36)},c=new Set,d={getRepoRootDir:t,getAppRootDir:t,getCwdDir:r,cwd:r,exists:async l=>s(l),existsSync:s,readdir:async l=>u(l),readdirSync:u,readFile:async l=>p(l),readdirRecursive:async(l,D)=>u(l)??[],readFileSync:p,stat:async l=>m(l),statSync:m,writeFile:async(l,D)=>{l=i(l),o.set(l,D);let g={path:l,basename:n.basename(l),dirname:n.dirname(l),extname:n.extname(l)};for(let x of c)await x(g)},unlink:async l=>{l=i(l),o.delete(l)},unlinkSync:l=>{l=i(l),o.delete(l)},hash:f,getDeviceId:async()=>typeof navigator<"u"?f(navigator.userAgent):"",getRepoInfo:async()=>({remoteUrl:"",defaultBranch:"",currentBranch:"",commit:""}),formatCode:async(l,D)=>D,on:(l,D)=>{l==="change"&&c.add(D)},off:(l,D)=>{l==="change"&&c.delete(D)},debug:(...l)=>{console.debug("[builder-dev-tools]",...l)},launchEditor:async()=>{},platform:()=>({runtime:"",os:""}),getFrameworks:()=>[],...n,...e,version:"0.0.0",sdkVersion:null,kind:null,magicast:void 0,spawnSync:void 0},C=await je(d);return d.getFrameworks=e.getFrameworks?e.getFrameworks:()=>C,d}async function Wo(e,t,r){let n=I(e,r),o={content:r,filePath:t,fileName:e.basename(t),hasContentUpdates:!1};if(Yo(e,n))return o;let a=ue(e,n,"cjs"),s=ue(e,n);if(a.length!==1&&s.length!==1)throw new Error(`Expected an export from ${t}`);if(s.length===1){let m=s[0];if(!m.isDefaultExport)throw new Error(`Expected a default export from ${t}`);let f=m.statement;if(!e.ts.isVariableStatement(f))throw new Error(`Unexpected export type in ${t}
917
917
  Found config content:
918
918
  ${r}
919
919
 
@@ -974,4 +974,4 @@ module.exports = nextConfig
974
974
  `,n+=` }
975
975
  `,n+=` }
976
976
  `,n+=`})();
977
- `,n}catch(t){return console.error(`Failed to create devtools client script: ${t.message||t}`),""}}var vt="1.2.1";
977
+ `,n}catch(t){return console.error(`Failed to create devtools client script: ${t.message||t}`),""}}var vt="1.2.2";
package/core/index.mjs CHANGED
@@ -913,7 +913,7 @@ export class Counter {
913
913
  }
914
914
  }
915
915
 
916
- `.trimStart()}async function Po(e){await zt(e);let t=await e.readFile(e.registryPath);return t?qs(e,t):{components:[],sourceFile:I(e,"")}}async function qs(e,t){let r=I(e,t);return Js(e,r)}async function Js(e,t){let r=[],n=J(e,t,"CUSTOM_COMPONENTS");return n&&await Promise.all(n.arrayLiteralExp.elements.map(async(o,i)=>{let a=await yn(e,t,o);a&&(a.nodeIndex=i,r.push(a))})),{sourceFile:t,components:te(r)}}async function yn(e,t,r){if(!e.ts.isObjectLiteralExpression(r))return null;let n={id:"",name:"",displayFilePath:"",exportName:"",importName:"",filePath:"",relFilePath:"",importPath:"",inputs:[]};for(let o of r.properties){if(!e.ts.isPropertyAssignment(o)||!e.ts.isIdentifier(o.name))continue;if(N(e,o)==="component"){let a,{initializer:s}=o;if(e.ts.isIdentifier(s))a=s.text;else if(e.ts.isCallExpression(s)){let p=s.arguments[0];e.ts.isIdentifier(p)&&(a=p.text)}if(!a)continue;n.name===""&&(n.name=K(a)),n.importName=a;let u=await he(e,e.registryPath,t,a);if(!u)continue;if(n.filePath=u.filePath,n.relFilePath=u.relFilePath,await e.exists(u.filePath)?n.importPath=V(e,u.filePath):(n.externalImportPath=u.importPath,n.importPath=n.externalImportPath),n.displayFilePath=u.displayFilePath,n.exportType=u.exportType,n.externalImportPath)n.exportName=a;else{let p=await lo(e,u.filePath);if(p&&p.length>0)if(p.length===1)n.exportName=p[0].cmpInfo.exportName;else{let m=p.find(f=>f.cmpInfo.exportName===a);m&&(n.exportName=m.cmpInfo.exportName)}}continue}}return n=ne(e,n,r),n.filePath&&n.exportName&&(n.id=await $(e,n.filePath,n.exportName,n.externalImportPath)),n}async function ve(e,t,r,n,o,i,a,s){let u=await Ke(e),[p,m,f]=await Promise.all([po(e,u),Po(e),Ft(e)]),c=p.map(x=>x.cmpInfo),d=m.components,C={components:me(c,d),registryPath:e.registryPath,registryDisplayPath:k(e,e.registryPath),frameworks:e.getFrameworks(),dependencies:Ee(c),publicApiKey:f.envValue??void 0,devToolsVersion:e.version};if(s)return C.components=await co(e,p,C.components),C;let l=!1,D=m.sourceFile,g=Array.isArray(t)?t:typeof t=="string"?[t]:[];if(g.length>0){let x=g.map(A=>{let E=p.find(O=>O.cmpInfo.id===A);if(!E)throw new Error(`Component ${A} not found`);return E}),S=Array.from(new Set(x.map(A=>A.cmpInfo.filePath))),P=await G(e,S);for(let A of x){let E=C.components.find(L=>L.id===A.cmpInfo.id),O=await Cn(e,A,P);ie(E,O);let z=c.findIndex(L=>L.id===A.cmpInfo.id);c[z].inputs=O;let j=Pe(A.cmpInfo.id,c,d,r,n,o,i),{elements:F,elmIndex:y,statementIndex:H,statement:le,variableDeclaration:Y}=await Ws(e,D,A);if(j.addCmpToRegistry)F.push(Qs(e,j.addCmpToRegistry)),l=!0;else if(j.removeCmpFromRegistry)F.splice(y,1),l=!0;else if(j.updateRegisteredCmp){let L=Q(e,F[y],j.updateRegisteredCmp);F[y]=e.ts.factory.updateObjectLiteralExpression(L,[yo(e,j.updateRegisteredCmp),...L.properties.slice(1)]),l=!0}if(l&&a){let L=[...D.statements];L[H]=e.ts.factory.updateVariableStatement(le,le.modifiers,e.ts.factory.updateVariableDeclarationList(le.declarationList,[e.ts.factory.updateVariableDeclaration(Y,Y.name,Y.exclamationToken,Y.type,e.ts.factory.createArrayLiteralExpression(Ae(e,F)))])),D=e.ts.factory.updateSourceFile(D,L),E.exportType==="named"?D=v(e,D,{namedImports:[E.importName],importPath:E.externalImportPath?E.externalImportPath:B(e,e.registryPath,E.filePath)}):D=v(e,D,{defaultImport:E.importName,importPath:E.externalImportPath?E.externalImportPath:B(e,e.registryPath,E.filePath)}),D=v(e,D,{namedImports:["RegisteredComponent"],importPath:"@builder.io/sdk-angular",isTypeOnly:!0}),D=ye(e,D,{variableName:"CUSTOM_COMPONENTS",arrayType:"RegisteredComponent"}),C.components=j.components,d=j.components.filter(X=>X.isRegistered)}}}if(l&&a){D=Fe(e,D),D=Se(e,D);let x=_(e,D);x=pe(x),x=await e.formatCode(e.registryPath,x),await e.writeFile(e.registryPath,x)}return C}function yo(e,t){let r=e.ts.factory.createIdentifier(t.importName);return e.ts.factory.createPropertyAssignment("component",r)}function Qs(e,t){return Q(e,e.ts.factory.createObjectLiteralExpression([yo(e,t)],!0),t)}async function Ws(e,t,r){let n=J(e,t,"CUSTOM_COMPONENTS");if(!n)throw new Error(`Exported name of the Builder registry must be "CUSTOM_COMPONENTS". Please update your Builder registry file: ${e.registryPath}`);let o=n.arrayLiteralExp.elements.filter(a=>e.ts.isObjectLiteralExpression(a)),i=-1;for(let a=0;a<o.length;a++)if((await yn(e,t,o[a]))?.id===r.cmpInfo.id){i=a;break}return{...n,elements:o,elmIndex:i}}async function wo(e){let t=await Ys(e),r={};return{builderPageOptions:async()=>({templateContentId:"f0b8016ac92e474699293211a268ebaa",pathname:"/builder-demo",title:"Builder + Angular Demo Page"}),ensureBuilderSetup:()=>So(t),ensureFigmaImportPage:()=>Ao(t),getRegistryPath:()=>t.registryPath,getRegistry:o=>ve(t,null,!1,!1,null,null,!1,!!o?.readAllInputTypes),addExternalPackage:async o=>{r[o]||(r[o]=`export * from "${o}";`)},loadComponent:async o=>{let i=await ve(t,o.cmpId,!1,!1,null,null,!1,!1);return{...i,component:i.components.find(a=>a.id===o.cmpId)}},registerComponent:o=>ve(t,o.cmpId,!0,!1,null,null,!0,!1),setRegisteredComponentInfo:o=>ve(t,o.cmpId,!1,!1,o,null,!0,!1),setRegisteredComponentInput:o=>ve(t,o.cmpId,!1,!1,null,o,!0,!1),unregisterComponent:o=>ve(t,o.cmpId,!1,!0,null,null,!0,!1),getPublicApiKey:()=>Ft(t),setPublicApiKey:o=>uo(t,o.publicApiKey),getDependencies:o=>[{name:"@builder.io/dev-tools"},{name:"@builder.io/sdk-angular"},{name:"concurrently"}],getDevRunCommand:()=>"builder-dev",getCache:()=>De(t),setCache:o=>Ce(t,o)}}async function Ys(e){let t=await Gs(e),r=e.getAppRootDir(),n=e.join(r,"src"),o=await re(e),i=e.join(n,"app"),a=await ae(e,i),s={...e,srcDir:"",appDir:"",componentsDir:"",registryPath:a,angularConfigPath:t,typescriptEnabled:o,builderPageComponentPath:"",hasAppModule:!1};if(!await e.exists(n))throw new Error(`Could not find src directory. Searched for src in "${e.getAppRootDir()}".`);s.srcDir=n,s.appDir=i,s.componentsDir=e.join(s.appDir,"components"),s.builderPageComponentPath=e.join(s.componentsDir,`builder-page.component.${o?"ts":"js"}`);let u=`app.module.${o?"ts":"js"}`,p=e.join(s.appDir,u);return await e.exists(p)&&(s.hasAppModule=!0),s}async function Gs(e){let t=e.join(e.getAppRootDir(),"angular.json");if(await e.exists(t))return t;let r=e.join(e.getAppRootDir(),"project.json");if(await e.exists(r))return r;throw new Error(`Could not find Angular config file. Searched for angular.json & project.json in "${e.getAppRootDir()}".`)}var Gt=Un(Vo(),1);async function $o(e,t){let n={components:(await t.getRegistry()).components.filter(i=>i.isRegistered).map(i=>{let a={filePath:ce(e.relative(e.getAppRootDir(),i.filePath)),name:i.name,image:i.image,description:i.description,exportName:i.exportName,inputs:oe(i.inputs)};return oe(a)}),version:1};e.debug("exporting registry components:",n.components.length);let o=(0,Gt.compress)(n);return btoa(JSON.stringify(o))}async function Ko(e,t,r){if(typeof r!="string")throw new Error("Invalid registry to import");let n=await t.getRegistry(),o=JSON.parse(atob(r)),i=(0,Gt.decompress)(o),a=oe(n);e.debug("importing registry components:",i.components.length);for(let s of i.components){let u=ce(e.normalize(s.filePath)),p=n.components.find(f=>ce(f.filePath).endsWith(u)&&f.exportName===s.exportName);if(!p){console.error(`Could not find component to register: ${s.filePath}, ${s.exportName}`);continue}e.debug(`register (${p.id})`,p.filePath),await t.registerComponent({cmpId:p.id});for(let f of s.inputs)e.debug(`set input (${p.id})`),await t.setRegisteredComponentInput({cmpId:p.id,name:f.name,type:f.type,required:f.required,defaultValue:f.defaultValue,friendlyName:f.friendlyName,helperText:f.helperText});e.debug(`set input (${p.id}) info`);let m=await t.setRegisteredComponentInfo({cmpId:p.id,name:s.name,image:s.image,description:s.description});a=oe(m)}return a}var de={react:"react",remix:"remix",angular:"angular",next:"next",qwik:"qwik"},Cd={[de.react]:[{version:w.gen1,recommended:!0},{version:w.gen2,recommended:!1}],[de.remix]:[{version:w.gen1,recommended:!1},{version:w.gen2,recommended:!0}],[de.angular]:[{version:w.gen2,recommended:!0}],[de.next]:[{version:w.gen1,recommended:!0},{version:w.gen2,recommended:!1}],[de.qwik]:[{version:w.gen2,recommended:!0}]};async function Mo(e,t){let r=[],n=new Set;async function o(s){let u=e.join(s,"package.json");try{let p=await e.readFile(u);if(p===null)throw new Error(`Failed to read package.json at ${u}`);let m=JSON.parse(p);if(n.has(m.name))return null;n.add(m.name);let f={name:m.name,subPackages:[]},c=await e.readdir(s);for(let d of c)d!=="node_modules"&&(await e.stat(e.join(s,d))).isDirectory()&&f.subPackages.push(d);return r.push(f),f}catch(p){return console.error(`Error reading package.json at ${s}:`,p),null}}let i=e.join(t,"package.json"),a=await e.readFile(i);if(a!==null){let s=JSON.parse(a),u={...s.dependencies,...s.devDependencies};for(let p of Object.keys(u)){let m=e.join(t,"node_modules",p);await o(m)}if(s.workspaces)for(let p of s.workspaces){let m=await e.readdir(e.join(t,p));for(let f of m){let c=e.join(t,p,f);await o(c)}}}return r}var Eu={"@builder.io/qwik-city":zr,next:Br,"@remix-run/react":Xr,react:so,"@angular/core":wo},Su={"@builder.io/qwik-city":de.qwik,next:de.next,"@remix-run/react":de.remix,react:de.react,"@angular/core":de.angular};async function Au(e){if(!e.ts)throw new Error("createDevTools() requires a TypeScript instance passed to the 'ts' option");if((!e.frameworks||e.frameworks.length===0)&&(e.frameworks=await Je(e)),e.frameworks.length===0)throw new Error(`Supported Devtools framework for not found within ${e.getAppRootDir()}`);for(let t of e.frameworks){let r=Eu[t.name];if(r){let n=await r(e);return{...n,exportRegistry:()=>$o(e,n),importRegistry:i=>Ko(e,n,i),framework:Su[t.name],findAllDependencies:async()=>await Mo(e,e.getRepoRootDir())}}}throw new Error(`Devtools framework not found for ${e.getAppRootDir()}, ${JSON.stringify(e.frameworks,null,2)}`)}function Uo(e){function t(f){if(typeof f!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(f))}function r(f,c){let d="",C=0,l=-1,D=0,g;for(let x=0;x<=f.length;++x){if(x<f.length)g=f.charCodeAt(x);else{if(g===47)break;g=47}if(g===47){if(!(l===x-1||D===1))if(l!==x-1&&D===2){if(d.length<2||C!==2||d.charCodeAt(d.length-1)!==46||d.charCodeAt(d.length-2)!==46){if(d.length>2){let S=d.lastIndexOf("/");if(S!==d.length-1){S===-1?(d="",C=0):(d=d.slice(0,S),C=d.length-1-d.lastIndexOf("/")),l=x,D=0;continue}}else if(d.length===2||d.length===1){d="",C=0,l=x,D=0;continue}}c&&(d.length>0?d+="/..":d="..",C=2)}else d.length>0?d+="/"+f.slice(l+1,x):d=f.slice(l+1,x),C=x-l-1;l=x,D=0}else g===46&&D!==-1?++D:D=-1}return d}let n=function(...c){let d="",C=!1;for(let l=c.length-1;l>=-1&&!C;l--){let D;l>=0?D=c[l]:e.cwd?D=e.cwd():D="/",t(D),D.length!==0&&(d=D+"/"+d,C=D.charCodeAt(0)===47)}return d=r(d,!C),C?d.length>0?"/"+d:"/":d.length>0?d:"."},o=function(c){if(t(c),c.length===0)return".";let d=c.charCodeAt(0)===47,C=c.charCodeAt(c.length-1)===47;return c=r(c,!d),c.length===0&&!d&&(c="."),c.length>0&&C&&(c+="/"),d?"/"+c:c};return{relative:function(c,d){if(t(c),t(d),c===d||(c=n(c),d=n(d),c===d))return"";let C=1;for(;C<c.length&&c.charCodeAt(C)===47;++C);let l=c.length,D=l-C,g=1;for(;g<d.length&&d.charCodeAt(g)===47;++g);let S=d.length-g,P=D<S?D:S,A=-1,E=0;for(;E<=P;++E){if(E===P){if(S>P){if(d.charCodeAt(g+E)===47)return d.slice(g+E+1);if(E===0)return d.slice(g+E)}else D>P&&(c.charCodeAt(C+E)===47?A=E:E===0&&(A=0));break}let z=c.charCodeAt(C+E),j=d.charCodeAt(g+E);if(z!==j)break;z===47&&(A=E)}let O="";for(E=C+A+1;E<=l;++E)(E===l||c.charCodeAt(E)===47)&&(O.length===0?O+="..":O+="/..");return O.length>0?O+d.slice(g+A):(g+=A,d.charCodeAt(g)===47&&++g,d.slice(g))},resolve:n,join:function(...c){if(c.length===0)return".";let d;for(let C=0;C<c.length;++C){let l=c[C];t(l),l.length>0&&(d===void 0?d=l:d+="/"+l)}return d===void 0?".":o(d)},isAbsolute:function(c){return t(c),c.length>0&&c.charCodeAt(0)===47},basename:function(c,d){if(d!==void 0&&typeof d!="string")throw new TypeError('"ext" argument must be a string');t(c);let C=0,l=-1,D=!0,g;if(d!==void 0&&d.length>0&&d.length<=c.length){if(d.length===c.length&&d===c)return"";let x=d.length-1,S=-1;for(g=c.length-1;g>=0;--g){let P=c.charCodeAt(g);if(P===47){if(!D){C=g+1;break}}else S===-1&&(D=!1,S=g+1),x>=0&&(P===d.charCodeAt(x)?--x===-1&&(l=g):(x=-1,l=S))}return C===l?l=S:l===-1&&(l=c.length),c.slice(C,l)}else{for(g=c.length-1;g>=0;--g)if(c.charCodeAt(g)===47){if(!D){C=g+1;break}}else l===-1&&(D=!1,l=g+1);return l===-1?"":c.slice(C,l)}},normalize:o,dirname:function(c){if(t(c),c.length===0)return".";let d=c.charCodeAt(0),C=d===47,l=-1,D=!0;for(let g=c.length-1;g>=1;--g)if(d=c.charCodeAt(g),d===47){if(!D){l=g;break}}else D=!1;return l===-1?C?"/":".":C&&l===1?"//":c.slice(0,l)},extname:function(c){t(c);let d=-1,C=0,l=-1,D=!0,g=0;for(let x=c.length-1;x>=0;--x){let S=c.charCodeAt(x);if(S===47){if(!D){C=x+1;break}continue}l===-1&&(D=!1,l=x+1),S===46?d===-1?d=x:g!==1&&(g=1):d!==-1&&(g=-1)}return d===-1||l===-1||g===0||g===1&&d===l-1&&d===C+1?"":c.slice(d,l)}}}async function Fu(e){let t=e.getRepoRootDir?e.getRepoRootDir:()=>"/",r=e.cwd?e.cwd:()=>"/",n=Uo({cwd:r,...e}),o=new Map,i=l=>n.normalize(n.resolve(r(),l)),a=l=>{for(let[D]of o)if((D+"/").startsWith(l))return!0;return l===t()},s=l=>(l=i(l),o.has(l)?!0:a(l)),u=l=>{l=i(l);let D=l===t()?l:l+"/",g=D.split("/").length-1,x=[];for(let[S]of o)if(S.split("/").slice(0,g).join("/")+"/"===D){let E=S.split("/")[g];E&&!x.includes(E)&&x.push(E)}return x.sort()},p=l=>{l=i(l);let D=o.get(l);return typeof D=="string"?D:null},m=l=>(l=i(l),{isFile:()=>o.has(l),isDirectory:()=>!o.has(l)&&a(l)}),f=async l=>{if(typeof crypto<"u"){let x=new TextEncoder().encode(l),S=await crypto.subtle.digest("SHA-256",x);return Array.from(new Uint8Array(S)).map(P=>P.toString(16).padStart(2,"0")).join("")}let D=0;for(let g=0;g<l.length;g++){let x=l.charCodeAt(g);D=(D<<5)-D+x,D|=0}return Number(Math.abs(D)).toString(36)},c=new Set,d={getRepoRootDir:t,getAppRootDir:t,getCwdDir:r,cwd:r,exists:async l=>s(l),existsSync:s,readdir:async l=>u(l),readdirSync:u,readFile:async l=>p(l),readFileSync:p,stat:async l=>m(l),statSync:m,writeFile:async(l,D)=>{l=i(l),o.set(l,D);let g={path:l,basename:n.basename(l),dirname:n.dirname(l),extname:n.extname(l)};for(let x of c)await x(g)},unlink:async l=>{l=i(l),o.delete(l)},unlinkSync:l=>{l=i(l),o.delete(l)},hash:f,getDeviceId:async()=>typeof navigator<"u"?f(navigator.userAgent):"",getRepoInfo:async()=>({remoteUrl:"",defaultBranch:"",currentBranch:"",commit:""}),formatCode:async(l,D)=>D,on:(l,D)=>{l==="change"&&c.add(D)},off:(l,D)=>{l==="change"&&c.delete(D)},debug:(...l)=>{console.debug("[builder-dev-tools]",...l)},launchEditor:async()=>{},platform:()=>({runtime:"",os:""}),getFrameworks:()=>[],...n,...e,version:"0.0.0",sdkVersion:null,kind:null,magicast:void 0,spawnSync:void 0},C=await Je(d);return d.getFrameworks=e.getFrameworks?e.getFrameworks:()=>C,d}async function zo(e,t,r){let n=I(e,r),o={content:r,filePath:t,fileName:e.basename(t),hasContentUpdates:!1};if(qo(e,n))return o;let a=ue(e,n,"cjs"),s=ue(e,n);if(a.length!==1&&s.length!==1)throw new Error(`Expected an export from ${t}`);if(s.length===1){let m=s[0];if(!m.isDefaultExport)throw new Error(`Expected a default export from ${t}`);let f=m.statement;if(!e.ts.isVariableStatement(f))throw new Error(`Unexpected export type in ${t}
916
+ `.trimStart()}async function Po(e){await zt(e);let t=await e.readFile(e.registryPath);return t?qs(e,t):{components:[],sourceFile:I(e,"")}}async function qs(e,t){let r=I(e,t);return Js(e,r)}async function Js(e,t){let r=[],n=J(e,t,"CUSTOM_COMPONENTS");return n&&await Promise.all(n.arrayLiteralExp.elements.map(async(o,i)=>{let a=await yn(e,t,o);a&&(a.nodeIndex=i,r.push(a))})),{sourceFile:t,components:te(r)}}async function yn(e,t,r){if(!e.ts.isObjectLiteralExpression(r))return null;let n={id:"",name:"",displayFilePath:"",exportName:"",importName:"",filePath:"",relFilePath:"",importPath:"",inputs:[]};for(let o of r.properties){if(!e.ts.isPropertyAssignment(o)||!e.ts.isIdentifier(o.name))continue;if(N(e,o)==="component"){let a,{initializer:s}=o;if(e.ts.isIdentifier(s))a=s.text;else if(e.ts.isCallExpression(s)){let p=s.arguments[0];e.ts.isIdentifier(p)&&(a=p.text)}if(!a)continue;n.name===""&&(n.name=K(a)),n.importName=a;let u=await he(e,e.registryPath,t,a);if(!u)continue;if(n.filePath=u.filePath,n.relFilePath=u.relFilePath,await e.exists(u.filePath)?n.importPath=V(e,u.filePath):(n.externalImportPath=u.importPath,n.importPath=n.externalImportPath),n.displayFilePath=u.displayFilePath,n.exportType=u.exportType,n.externalImportPath)n.exportName=a;else{let p=await lo(e,u.filePath);if(p&&p.length>0)if(p.length===1)n.exportName=p[0].cmpInfo.exportName;else{let m=p.find(f=>f.cmpInfo.exportName===a);m&&(n.exportName=m.cmpInfo.exportName)}}continue}}return n=ne(e,n,r),n.filePath&&n.exportName&&(n.id=await $(e,n.filePath,n.exportName,n.externalImportPath)),n}async function ve(e,t,r,n,o,i,a,s){let u=await Ke(e),[p,m,f]=await Promise.all([po(e,u),Po(e),Ft(e)]),c=p.map(x=>x.cmpInfo),d=m.components,C={components:me(c,d),registryPath:e.registryPath,registryDisplayPath:k(e,e.registryPath),frameworks:e.getFrameworks(),dependencies:Ee(c),publicApiKey:f.envValue??void 0,devToolsVersion:e.version};if(s)return C.components=await co(e,p,C.components),C;let l=!1,D=m.sourceFile,g=Array.isArray(t)?t:typeof t=="string"?[t]:[];if(g.length>0){let x=g.map(A=>{let E=p.find(O=>O.cmpInfo.id===A);if(!E)throw new Error(`Component ${A} not found`);return E}),S=Array.from(new Set(x.map(A=>A.cmpInfo.filePath))),P=await G(e,S);for(let A of x){let E=C.components.find(L=>L.id===A.cmpInfo.id),O=await Cn(e,A,P);ie(E,O);let z=c.findIndex(L=>L.id===A.cmpInfo.id);c[z].inputs=O;let j=Pe(A.cmpInfo.id,c,d,r,n,o,i),{elements:F,elmIndex:y,statementIndex:H,statement:le,variableDeclaration:Y}=await Ws(e,D,A);if(j.addCmpToRegistry)F.push(Qs(e,j.addCmpToRegistry)),l=!0;else if(j.removeCmpFromRegistry)F.splice(y,1),l=!0;else if(j.updateRegisteredCmp){let L=Q(e,F[y],j.updateRegisteredCmp);F[y]=e.ts.factory.updateObjectLiteralExpression(L,[yo(e,j.updateRegisteredCmp),...L.properties.slice(1)]),l=!0}if(l&&a){let L=[...D.statements];L[H]=e.ts.factory.updateVariableStatement(le,le.modifiers,e.ts.factory.updateVariableDeclarationList(le.declarationList,[e.ts.factory.updateVariableDeclaration(Y,Y.name,Y.exclamationToken,Y.type,e.ts.factory.createArrayLiteralExpression(Ae(e,F)))])),D=e.ts.factory.updateSourceFile(D,L),E.exportType==="named"?D=v(e,D,{namedImports:[E.importName],importPath:E.externalImportPath?E.externalImportPath:B(e,e.registryPath,E.filePath)}):D=v(e,D,{defaultImport:E.importName,importPath:E.externalImportPath?E.externalImportPath:B(e,e.registryPath,E.filePath)}),D=v(e,D,{namedImports:["RegisteredComponent"],importPath:"@builder.io/sdk-angular",isTypeOnly:!0}),D=ye(e,D,{variableName:"CUSTOM_COMPONENTS",arrayType:"RegisteredComponent"}),C.components=j.components,d=j.components.filter(X=>X.isRegistered)}}}if(l&&a){D=Fe(e,D),D=Se(e,D);let x=_(e,D);x=pe(x),x=await e.formatCode(e.registryPath,x),await e.writeFile(e.registryPath,x)}return C}function yo(e,t){let r=e.ts.factory.createIdentifier(t.importName);return e.ts.factory.createPropertyAssignment("component",r)}function Qs(e,t){return Q(e,e.ts.factory.createObjectLiteralExpression([yo(e,t)],!0),t)}async function Ws(e,t,r){let n=J(e,t,"CUSTOM_COMPONENTS");if(!n)throw new Error(`Exported name of the Builder registry must be "CUSTOM_COMPONENTS". Please update your Builder registry file: ${e.registryPath}`);let o=n.arrayLiteralExp.elements.filter(a=>e.ts.isObjectLiteralExpression(a)),i=-1;for(let a=0;a<o.length;a++)if((await yn(e,t,o[a]))?.id===r.cmpInfo.id){i=a;break}return{...n,elements:o,elmIndex:i}}async function wo(e){let t=await Ys(e),r={};return{builderPageOptions:async()=>({templateContentId:"f0b8016ac92e474699293211a268ebaa",pathname:"/builder-demo",title:"Builder + Angular Demo Page"}),ensureBuilderSetup:()=>So(t),ensureFigmaImportPage:()=>Ao(t),getRegistryPath:()=>t.registryPath,getRegistry:o=>ve(t,null,!1,!1,null,null,!1,!!o?.readAllInputTypes),addExternalPackage:async o=>{r[o]||(r[o]=`export * from "${o}";`)},loadComponent:async o=>{let i=await ve(t,o.cmpId,!1,!1,null,null,!1,!1);return{...i,component:i.components.find(a=>a.id===o.cmpId)}},registerComponent:o=>ve(t,o.cmpId,!0,!1,null,null,!0,!1),setRegisteredComponentInfo:o=>ve(t,o.cmpId,!1,!1,o,null,!0,!1),setRegisteredComponentInput:o=>ve(t,o.cmpId,!1,!1,null,o,!0,!1),unregisterComponent:o=>ve(t,o.cmpId,!1,!0,null,null,!0,!1),getPublicApiKey:()=>Ft(t),setPublicApiKey:o=>uo(t,o.publicApiKey),getDependencies:o=>[{name:"@builder.io/dev-tools"},{name:"@builder.io/sdk-angular"},{name:"concurrently"}],getDevRunCommand:()=>"builder-dev",getCache:()=>De(t),setCache:o=>Ce(t,o)}}async function Ys(e){let t=await Gs(e),r=e.getAppRootDir(),n=e.join(r,"src"),o=await re(e),i=e.join(n,"app"),a=await ae(e,i),s={...e,srcDir:"",appDir:"",componentsDir:"",registryPath:a,angularConfigPath:t,typescriptEnabled:o,builderPageComponentPath:"",hasAppModule:!1};if(!await e.exists(n))throw new Error(`Could not find src directory. Searched for src in "${e.getAppRootDir()}".`);s.srcDir=n,s.appDir=i,s.componentsDir=e.join(s.appDir,"components"),s.builderPageComponentPath=e.join(s.componentsDir,`builder-page.component.${o?"ts":"js"}`);let u=`app.module.${o?"ts":"js"}`,p=e.join(s.appDir,u);return await e.exists(p)&&(s.hasAppModule=!0),s}async function Gs(e){let t=e.join(e.getAppRootDir(),"angular.json");if(await e.exists(t))return t;let r=e.join(e.getAppRootDir(),"project.json");if(await e.exists(r))return r;throw new Error(`Could not find Angular config file. Searched for angular.json & project.json in "${e.getAppRootDir()}".`)}var Gt=Un(Vo(),1);async function $o(e,t){let n={components:(await t.getRegistry()).components.filter(i=>i.isRegistered).map(i=>{let a={filePath:ce(e.relative(e.getAppRootDir(),i.filePath)),name:i.name,image:i.image,description:i.description,exportName:i.exportName,inputs:oe(i.inputs)};return oe(a)}),version:1};e.debug("exporting registry components:",n.components.length);let o=(0,Gt.compress)(n);return btoa(JSON.stringify(o))}async function Ko(e,t,r){if(typeof r!="string")throw new Error("Invalid registry to import");let n=await t.getRegistry(),o=JSON.parse(atob(r)),i=(0,Gt.decompress)(o),a=oe(n);e.debug("importing registry components:",i.components.length);for(let s of i.components){let u=ce(e.normalize(s.filePath)),p=n.components.find(f=>ce(f.filePath).endsWith(u)&&f.exportName===s.exportName);if(!p){console.error(`Could not find component to register: ${s.filePath}, ${s.exportName}`);continue}e.debug(`register (${p.id})`,p.filePath),await t.registerComponent({cmpId:p.id});for(let f of s.inputs)e.debug(`set input (${p.id})`),await t.setRegisteredComponentInput({cmpId:p.id,name:f.name,type:f.type,required:f.required,defaultValue:f.defaultValue,friendlyName:f.friendlyName,helperText:f.helperText});e.debug(`set input (${p.id}) info`);let m=await t.setRegisteredComponentInfo({cmpId:p.id,name:s.name,image:s.image,description:s.description});a=oe(m)}return a}var de={react:"react",remix:"remix",angular:"angular",next:"next",qwik:"qwik"},Cd={[de.react]:[{version:w.gen1,recommended:!0},{version:w.gen2,recommended:!1}],[de.remix]:[{version:w.gen1,recommended:!1},{version:w.gen2,recommended:!0}],[de.angular]:[{version:w.gen2,recommended:!0}],[de.next]:[{version:w.gen1,recommended:!0},{version:w.gen2,recommended:!1}],[de.qwik]:[{version:w.gen2,recommended:!0}]};async function Mo(e,t){let r=[],n=new Set;async function o(s){let u=e.join(s,"package.json");try{let p=await e.readFile(u);if(p===null)throw new Error(`Failed to read package.json at ${u}`);let m=JSON.parse(p);if(n.has(m.name))return null;n.add(m.name);let f={name:m.name,subPackages:[]},c=await e.readdir(s);for(let d of c)d!=="node_modules"&&(await e.stat(e.join(s,d))).isDirectory()&&f.subPackages.push(d);return r.push(f),f}catch(p){return console.error(`Error reading package.json at ${s}:`,p),null}}let i=e.join(t,"package.json"),a=await e.readFile(i);if(a!==null){let s=JSON.parse(a),u={...s.dependencies,...s.devDependencies};for(let p of Object.keys(u)){let m=e.join(t,"node_modules",p);await o(m)}if(s.workspaces)for(let p of s.workspaces){let m=await e.readdir(e.join(t,p));for(let f of m){let c=e.join(t,p,f);await o(c)}}}return r}var Eu={"@builder.io/qwik-city":zr,next:Br,"@remix-run/react":Xr,react:so,"@angular/core":wo},Su={"@builder.io/qwik-city":de.qwik,next:de.next,"@remix-run/react":de.remix,react:de.react,"@angular/core":de.angular};async function Au(e){if(!e.ts)throw new Error("createDevTools() requires a TypeScript instance passed to the 'ts' option");if((!e.frameworks||e.frameworks.length===0)&&(e.frameworks=await Je(e)),e.frameworks.length===0)throw new Error(`Supported Devtools framework for not found within ${e.getAppRootDir()}`);for(let t of e.frameworks){let r=Eu[t.name];if(r){let n=await r(e);return{...n,exportRegistry:()=>$o(e,n),importRegistry:i=>Ko(e,n,i),framework:Su[t.name],findAllDependencies:async()=>await Mo(e,e.getRepoRootDir())}}}throw new Error(`Devtools framework not found for ${e.getAppRootDir()}, ${JSON.stringify(e.frameworks,null,2)}`)}function Uo(e){function t(f){if(typeof f!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(f))}function r(f,c){let d="",C=0,l=-1,D=0,g;for(let x=0;x<=f.length;++x){if(x<f.length)g=f.charCodeAt(x);else{if(g===47)break;g=47}if(g===47){if(!(l===x-1||D===1))if(l!==x-1&&D===2){if(d.length<2||C!==2||d.charCodeAt(d.length-1)!==46||d.charCodeAt(d.length-2)!==46){if(d.length>2){let S=d.lastIndexOf("/");if(S!==d.length-1){S===-1?(d="",C=0):(d=d.slice(0,S),C=d.length-1-d.lastIndexOf("/")),l=x,D=0;continue}}else if(d.length===2||d.length===1){d="",C=0,l=x,D=0;continue}}c&&(d.length>0?d+="/..":d="..",C=2)}else d.length>0?d+="/"+f.slice(l+1,x):d=f.slice(l+1,x),C=x-l-1;l=x,D=0}else g===46&&D!==-1?++D:D=-1}return d}let n=function(...c){let d="",C=!1;for(let l=c.length-1;l>=-1&&!C;l--){let D;l>=0?D=c[l]:e.cwd?D=e.cwd():D="/",t(D),D.length!==0&&(d=D+"/"+d,C=D.charCodeAt(0)===47)}return d=r(d,!C),C?d.length>0?"/"+d:"/":d.length>0?d:"."},o=function(c){if(t(c),c.length===0)return".";let d=c.charCodeAt(0)===47,C=c.charCodeAt(c.length-1)===47;return c=r(c,!d),c.length===0&&!d&&(c="."),c.length>0&&C&&(c+="/"),d?"/"+c:c};return{relative:function(c,d){if(t(c),t(d),c===d||(c=n(c),d=n(d),c===d))return"";let C=1;for(;C<c.length&&c.charCodeAt(C)===47;++C);let l=c.length,D=l-C,g=1;for(;g<d.length&&d.charCodeAt(g)===47;++g);let S=d.length-g,P=D<S?D:S,A=-1,E=0;for(;E<=P;++E){if(E===P){if(S>P){if(d.charCodeAt(g+E)===47)return d.slice(g+E+1);if(E===0)return d.slice(g+E)}else D>P&&(c.charCodeAt(C+E)===47?A=E:E===0&&(A=0));break}let z=c.charCodeAt(C+E),j=d.charCodeAt(g+E);if(z!==j)break;z===47&&(A=E)}let O="";for(E=C+A+1;E<=l;++E)(E===l||c.charCodeAt(E)===47)&&(O.length===0?O+="..":O+="/..");return O.length>0?O+d.slice(g+A):(g+=A,d.charCodeAt(g)===47&&++g,d.slice(g))},resolve:n,join:function(...c){if(c.length===0)return".";let d;for(let C=0;C<c.length;++C){let l=c[C];t(l),l.length>0&&(d===void 0?d=l:d+="/"+l)}return d===void 0?".":o(d)},isAbsolute:function(c){return t(c),c.length>0&&c.charCodeAt(0)===47},basename:function(c,d){if(d!==void 0&&typeof d!="string")throw new TypeError('"ext" argument must be a string');t(c);let C=0,l=-1,D=!0,g;if(d!==void 0&&d.length>0&&d.length<=c.length){if(d.length===c.length&&d===c)return"";let x=d.length-1,S=-1;for(g=c.length-1;g>=0;--g){let P=c.charCodeAt(g);if(P===47){if(!D){C=g+1;break}}else S===-1&&(D=!1,S=g+1),x>=0&&(P===d.charCodeAt(x)?--x===-1&&(l=g):(x=-1,l=S))}return C===l?l=S:l===-1&&(l=c.length),c.slice(C,l)}else{for(g=c.length-1;g>=0;--g)if(c.charCodeAt(g)===47){if(!D){C=g+1;break}}else l===-1&&(D=!1,l=g+1);return l===-1?"":c.slice(C,l)}},normalize:o,dirname:function(c){if(t(c),c.length===0)return".";let d=c.charCodeAt(0),C=d===47,l=-1,D=!0;for(let g=c.length-1;g>=1;--g)if(d=c.charCodeAt(g),d===47){if(!D){l=g;break}}else D=!1;return l===-1?C?"/":".":C&&l===1?"//":c.slice(0,l)},extname:function(c){t(c);let d=-1,C=0,l=-1,D=!0,g=0;for(let x=c.length-1;x>=0;--x){let S=c.charCodeAt(x);if(S===47){if(!D){C=x+1;break}continue}l===-1&&(D=!1,l=x+1),S===46?d===-1?d=x:g!==1&&(g=1):d!==-1&&(g=-1)}return d===-1||l===-1||g===0||g===1&&d===l-1&&d===C+1?"":c.slice(d,l)}}}async function Fu(e){let t=e.getRepoRootDir?e.getRepoRootDir:()=>"/",r=e.cwd?e.cwd:()=>"/",n=Uo({cwd:r,...e}),o=new Map,i=l=>n.normalize(n.resolve(r(),l)),a=l=>{for(let[D]of o)if((D+"/").startsWith(l))return!0;return l===t()},s=l=>(l=i(l),o.has(l)?!0:a(l)),u=l=>{l=i(l);let D=l===t()?l:l+"/",g=D.split("/").length-1,x=[];for(let[S]of o)if(S.split("/").slice(0,g).join("/")+"/"===D){let E=S.split("/")[g];E&&!x.includes(E)&&x.push(E)}return x.sort()},p=l=>{l=i(l);let D=o.get(l);return typeof D=="string"?D:null},m=l=>(l=i(l),{isFile:()=>o.has(l),isDirectory:()=>!o.has(l)&&a(l)}),f=async l=>{if(typeof crypto<"u"){let x=new TextEncoder().encode(l),S=await crypto.subtle.digest("SHA-256",x);return Array.from(new Uint8Array(S)).map(P=>P.toString(16).padStart(2,"0")).join("")}let D=0;for(let g=0;g<l.length;g++){let x=l.charCodeAt(g);D=(D<<5)-D+x,D|=0}return Number(Math.abs(D)).toString(36)},c=new Set,d={getRepoRootDir:t,getAppRootDir:t,getCwdDir:r,cwd:r,exists:async l=>s(l),existsSync:s,readdir:async l=>u(l),readdirSync:u,readFile:async l=>p(l),readdirRecursive:async(l,D)=>u(l)??[],readFileSync:p,stat:async l=>m(l),statSync:m,writeFile:async(l,D)=>{l=i(l),o.set(l,D);let g={path:l,basename:n.basename(l),dirname:n.dirname(l),extname:n.extname(l)};for(let x of c)await x(g)},unlink:async l=>{l=i(l),o.delete(l)},unlinkSync:l=>{l=i(l),o.delete(l)},hash:f,getDeviceId:async()=>typeof navigator<"u"?f(navigator.userAgent):"",getRepoInfo:async()=>({remoteUrl:"",defaultBranch:"",currentBranch:"",commit:""}),formatCode:async(l,D)=>D,on:(l,D)=>{l==="change"&&c.add(D)},off:(l,D)=>{l==="change"&&c.delete(D)},debug:(...l)=>{console.debug("[builder-dev-tools]",...l)},launchEditor:async()=>{},platform:()=>({runtime:"",os:""}),getFrameworks:()=>[],...n,...e,version:"0.0.0",sdkVersion:null,kind:null,magicast:void 0,spawnSync:void 0},C=await Je(d);return d.getFrameworks=e.getFrameworks?e.getFrameworks:()=>C,d}async function zo(e,t,r){let n=I(e,r),o={content:r,filePath:t,fileName:e.basename(t),hasContentUpdates:!1};if(qo(e,n))return o;let a=ue(e,n,"cjs"),s=ue(e,n);if(a.length!==1&&s.length!==1)throw new Error(`Expected an export from ${t}`);if(s.length===1){let m=s[0];if(!m.isDefaultExport)throw new Error(`Expected a default export from ${t}`);let f=m.statement;if(!e.ts.isVariableStatement(f))throw new Error(`Unexpected export type in ${t}
917
917
  Found config content:
918
918
  ${r}
919
919
 
@@ -974,4 +974,4 @@ module.exports = nextConfig
974
974
  `,n+=` }
975
975
  `,n+=` }
976
976
  `,n+=`})();
977
- `,n}catch(t){return console.error(`Failed to create devtools client script: ${t.message||t}`),""}}var Ht="1.2.1";export{Au as createDevTools,Fu as createDevToolsSys,Je as detectFrameworks,Hn as detectFrameworksFromPackageJson,Ou as ensureConfigPlugin,ri as findBuildToolConfig,ku as getClientScript,Zn as parseDotEnvContent,Ht as version};
977
+ `,n}catch(t){return console.error(`Failed to create devtools client script: ${t.message||t}`),""}}var Ht="1.2.2";export{Au as createDevTools,Fu as createDevToolsSys,Je as detectFrameworks,Hn as detectFrameworksFromPackageJson,Ou as ensureConfigPlugin,ri as findBuildToolConfig,ku as getClientScript,Zn as parseDotEnvContent,Ht as version};
package/next/index.d.ts CHANGED
@@ -5,4 +5,4 @@ declare function NextBuilderDevTools(options?: {
5
5
  devToolsServerPort?: number;
6
6
  }): (config?: NextConfig) => NextConfig;
7
7
 
8
- export = NextBuilderDevTools;
8
+ export default NextBuilderDevTools;