tscircuit 0.0.1802 → 0.0.1803-libonly
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/dist/browser.min.js +2 -2
- package/dist/webworker.min.js +3 -7
- package/package.json +4 -10
- package/cli.mjs +0 -14
package/dist/webworker.min.js
CHANGED
|
@@ -939,13 +939,11 @@ ${namesToRegister.map(({variableName,uniqueLocalName})=>` reactHotLoader.regist
|
|
|
939
939
|
`);return newlineIndex===-1&&(newlineIndex=code.length,code+=`
|
|
940
940
|
`),{code:code.slice(0,newlineIndex+1)+prefix+code.slice(newlineIndex+1)+suffix,mappings:this.shiftMappings(result.mappings,prefix.length)}}else return{code:prefix+code+suffix,mappings:this.shiftMappings(result.mappings,prefix.length)}}processBalancedCode(){let braceDepth=0,parenDepth=0;for(;!this.tokens.isAtEnd();){if(this.tokens.matches1(TokenType.braceL)||this.tokens.matches1(TokenType.dollarBraceL))braceDepth++;else if(this.tokens.matches1(TokenType.braceR)){if(braceDepth===0)return;braceDepth--}if(this.tokens.matches1(TokenType.parenL))parenDepth++;else if(this.tokens.matches1(TokenType.parenR)){if(parenDepth===0)return;parenDepth--}this.processToken()}}processToken(){if(this.tokens.matches1(TokenType._class)){this.processClass();return}for(let transformer of this.transformers)if(transformer.process())return;this.tokens.copyToken()}processNamedClass(){if(!this.tokens.matches2(TokenType._class,TokenType.name))throw new Error("Expected identifier for exported class name.");let name=this.tokens.identifierNameAtIndex(this.tokens.currentIndex()+1);return this.processClass(),name}processClass(){let classInfo=getClassInfo(this,this.tokens,this.nameManager,this.disableESTransforms),needsCommaExpression=(classInfo.headerInfo.isExpression||!classInfo.headerInfo.className)&&classInfo.staticInitializerNames.length+classInfo.instanceInitializerNames.length>0,className=classInfo.headerInfo.className;needsCommaExpression&&(className=this.nameManager.claimFreeName("_class"),this.generatedVariables.push(className),this.tokens.appendCode(` (${className} =`));let contextId=this.tokens.currentToken().contextId;if(contextId==null)throw new Error("Expected class to have a context ID.");for(this.tokens.copyExpectedToken(TokenType._class);!this.tokens.matchesContextIdAndLabel(TokenType.braceL,contextId);)this.processToken();this.processClassBody(classInfo,className);let staticInitializerStatements=classInfo.staticInitializerNames.map(name=>`${className}.${name}()`);needsCommaExpression?this.tokens.appendCode(`, ${staticInitializerStatements.map(s3=>`${s3}, `).join("")}${className})`):classInfo.staticInitializerNames.length>0&&this.tokens.appendCode(` ${staticInitializerStatements.map(s3=>`${s3};`).join(" ")}`)}processClassBody(classInfo,className){let{headerInfo,constructorInsertPos,constructorInitializerStatements,fields,instanceInitializerNames,rangesToRemove}=classInfo,fieldIndex=0,rangeToRemoveIndex=0,classContextId=this.tokens.currentToken().contextId;if(classContextId==null)throw new Error("Expected non-null context ID on class.");this.tokens.copyExpectedToken(TokenType.braceL),this.isReactHotLoaderTransformEnabled&&this.tokens.appendCode("__reactstandin__regenerateByEval(key, code) {this[key] = eval(code);}");let needsConstructorInit=constructorInitializerStatements.length+instanceInitializerNames.length>0;if(constructorInsertPos===null&&needsConstructorInit){let constructorInitializersCode=this.makeConstructorInitCode(constructorInitializerStatements,instanceInitializerNames,className);if(headerInfo.hasSuperclass){let argsName=this.nameManager.claimFreeName("args");this.tokens.appendCode(`constructor(...${argsName}) { super(...${argsName}); ${constructorInitializersCode}; }`)}else this.tokens.appendCode(`constructor() { ${constructorInitializersCode}; }`)}for(;!this.tokens.matchesContextIdAndLabel(TokenType.braceR,classContextId);)if(fieldIndex<fields.length&&this.tokens.currentIndex()===fields[fieldIndex].start){let needsCloseBrace=!1;for(this.tokens.matches1(TokenType.bracketL)?this.tokens.copyTokenWithPrefix(`${fields[fieldIndex].initializerName}() {this`):this.tokens.matches1(TokenType.string)||this.tokens.matches1(TokenType.num)?(this.tokens.copyTokenWithPrefix(`${fields[fieldIndex].initializerName}() {this[`),needsCloseBrace=!0):this.tokens.copyTokenWithPrefix(`${fields[fieldIndex].initializerName}() {this.`);this.tokens.currentIndex()<fields[fieldIndex].end;)needsCloseBrace&&this.tokens.currentIndex()===fields[fieldIndex].equalsIndex&&this.tokens.appendCode("]"),this.processToken();this.tokens.appendCode("}"),fieldIndex++}else if(rangeToRemoveIndex<rangesToRemove.length&&this.tokens.currentIndex()>=rangesToRemove[rangeToRemoveIndex].start){for(this.tokens.currentIndex()<rangesToRemove[rangeToRemoveIndex].end&&this.tokens.removeInitialToken();this.tokens.currentIndex()<rangesToRemove[rangeToRemoveIndex].end;)this.tokens.removeToken();rangeToRemoveIndex++}else this.tokens.currentIndex()===constructorInsertPos?(this.tokens.copyToken(),needsConstructorInit&&this.tokens.appendCode(`;${this.makeConstructorInitCode(constructorInitializerStatements,instanceInitializerNames,className)};`),this.processToken()):this.processToken();this.tokens.copyExpectedToken(TokenType.braceR)}makeConstructorInitCode(constructorInitializerStatements,instanceInitializerNames,className){return[...constructorInitializerStatements,...instanceInitializerNames.map(name=>`${className}.prototype.${name}.call(this)`)].join(";")}processPossibleArrowParamEnd(){if(this.tokens.matches2(TokenType.parenR,TokenType.colon)&&this.tokens.tokenAtRelativeIndex(1).isType){let nextNonTypeIndex=this.tokens.currentIndex()+1;for(;this.tokens.tokens[nextNonTypeIndex].isType;)nextNonTypeIndex++;if(this.tokens.matches1AtIndex(nextNonTypeIndex,TokenType.arrow)){for(this.tokens.removeInitialToken();this.tokens.currentIndex()<nextNonTypeIndex;)this.tokens.removeToken();return this.tokens.replaceTokenTrimmingLeftWhitespace(") =>"),!0}}return!1}processPossibleAsyncArrowWithTypeParams(){if(!this.tokens.matchesContextual(ContextualKeyword._async)&&!this.tokens.matches1(TokenType._async))return!1;let nextToken2=this.tokens.tokenAtRelativeIndex(1);if(nextToken2.type!==TokenType.lessThan||!nextToken2.isType)return!1;let nextNonTypeIndex=this.tokens.currentIndex()+1;for(;this.tokens.tokens[nextNonTypeIndex].isType;)nextNonTypeIndex++;if(this.tokens.matches1AtIndex(nextNonTypeIndex,TokenType.parenL)){for(this.tokens.replaceToken("async ("),this.tokens.removeInitialToken();this.tokens.currentIndex()<nextNonTypeIndex;)this.tokens.removeToken();return this.tokens.removeToken(),this.processBalancedCode(),this.processToken(),!0}return!1}processPossibleTypeRange(){if(this.tokens.currentToken().isType){for(this.tokens.removeInitialToken();this.tokens.currentToken().isType;)this.tokens.removeToken();return!0}return!1}shiftMappings(mappings,prefixLength){for(let i3=0;i3<mappings.length;i3++){let mapping=mappings[i3];mapping!==void 0&&(mappings[i3]=mapping+prefixLength)}return mappings}};var import_lines_and_columns=__toESM(require_build());function getTSImportedNames(tokens){let importedNames=new Set;for(let i3=0;i3<tokens.tokens.length;i3++)tokens.matches1AtIndex(i3,TokenType._import)&&!tokens.matches3AtIndex(i3,TokenType._import,TokenType.name,TokenType.eq)&&collectNamesForImport(tokens,i3,importedNames);return importedNames}function collectNamesForImport(tokens,index,importedNames){index++,!tokens.matches1AtIndex(index,TokenType.parenL)&&(tokens.matches1AtIndex(index,TokenType.name)&&(importedNames.add(tokens.identifierNameAtIndex(index)),index++,tokens.matches1AtIndex(index,TokenType.comma)&&index++),tokens.matches1AtIndex(index,TokenType.star)&&(index+=2,importedNames.add(tokens.identifierNameAtIndex(index)),index++),tokens.matches1AtIndex(index,TokenType.braceL)&&(index++,collectNamesForNamedImport(tokens,index,importedNames)))}function collectNamesForNamedImport(tokens,index,importedNames){for(;;){if(tokens.matches1AtIndex(index,TokenType.braceR))return;let specifierInfo=getImportExportSpecifierInfo(tokens,index);if(index=specifierInfo.endIndex,specifierInfo.isType||importedNames.add(specifierInfo.rightName),tokens.matches2AtIndex(index,TokenType.comma,TokenType.braceR))return;if(tokens.matches1AtIndex(index,TokenType.braceR))return;if(tokens.matches1AtIndex(index,TokenType.comma))index++;else throw new Error(`Unexpected token: ${JSON.stringify(tokens.tokens[index])}`)}}function transform5(code,options){validateOptions(options);try{let sucraseContext=getSucraseContext(code,options),transformerResult=new RootTransformer(sucraseContext,options.transforms,!!options.enableLegacyBabel5ModuleInterop,options).transform(),result={code:transformerResult.code};if(options.sourceMapOptions){if(!options.filePath)throw new Error("filePath must be specified when generating a source map.");result={...result,sourceMap:computeSourceMap(transformerResult,options.filePath,options.sourceMapOptions,code,sucraseContext.tokenProcessor.tokens)}}return result}catch(e5){throw options.filePath&&(e5.message=`Error transforming ${options.filePath}: ${e5.message}`),e5}}function getSucraseContext(code,options){let isJSXEnabled2=options.transforms.includes("jsx"),isTypeScriptEnabled2=options.transforms.includes("typescript"),isFlowEnabled2=options.transforms.includes("flow"),disableESTransforms=options.disableESTransforms===!0,file=parse4(code,isJSXEnabled2,isTypeScriptEnabled2,isFlowEnabled2),tokens=file.tokens,scopes=file.scopes,nameManager=new NameManager(code,tokens),helperManager=new HelperManager(nameManager),tokenProcessor=new TokenProcessor(code,tokens,isFlowEnabled2,disableESTransforms,helperManager),enableLegacyTypeScriptModuleInterop=!!options.enableLegacyTypeScriptModuleInterop,importProcessor=null;return options.transforms.includes("imports")?(importProcessor=new CJSImportProcessor(nameManager,tokenProcessor,enableLegacyTypeScriptModuleInterop,options,options.transforms.includes("typescript"),!!options.keepUnusedImports,helperManager),importProcessor.preprocessTokens(),identifyShadowedGlobals(tokenProcessor,scopes,importProcessor.getGlobalNames()),options.transforms.includes("typescript")&&!options.keepUnusedImports&&importProcessor.pruneTypeOnlyImports()):options.transforms.includes("typescript")&&!options.keepUnusedImports&&identifyShadowedGlobals(tokenProcessor,scopes,getTSImportedNames(tokenProcessor)),{tokenProcessor,scopes,nameManager,importProcessor,helperManager}}var TS_EXTENSIONS=new Set([".ts",".tsx",".mts",".cts"]),JSX_EXTENSIONS=new Set([".tsx",".jsx",".ts"]),TYPE_STAR_EXPORT_REGEX=/^\s*export\s+type\s+\*\s+(?:as\s+[\w$]+\s+)?from\s+['"][^'"]+['"]\s*;?\s*$/gim,stripTypeStarExports=code=>code.replace(TYPE_STAR_EXPORT_REGEX,""),stripQueryAndHash=filePath=>{let queryIndex=filePath.indexOf("?"),hashIndex=filePath.indexOf("#"),endIndex=filePath.length;return queryIndex!==-1&&hashIndex!==-1?endIndex=Math.min(queryIndex,hashIndex):queryIndex!==-1?endIndex=queryIndex:hashIndex!==-1&&(endIndex=hashIndex),filePath.slice(0,endIndex)},getExtension=filePath=>{let normalizedPath=stripQueryAndHash(filePath),lastDotIndex=normalizedPath.lastIndexOf(".");return lastDotIndex===-1||Math.max(normalizedPath.lastIndexOf("/"),normalizedPath.lastIndexOf("\\"))>lastDotIndex?"":normalizedPath.slice(lastDotIndex).toLowerCase()},getTransformsForFilePath=filePath=>{let extension=getExtension(filePath),transforms=["imports"];return TS_EXTENSIONS.has(extension)&&transforms.unshift("typescript"),JSX_EXTENSIONS.has(extension)&&transforms.push("jsx"),transforms},transformWithSucrase=(code,filePath)=>{let transforms=getTransformsForFilePath(filePath),sanitizedCode=stripTypeStarExports(code),{code:transformedCode}=transform5(sanitizedCode,{filePath,disableESTransforms:!0,production:!0,transforms});return transformedCode};var debug13=(0,import_debug23.default)("tsci:eval:import-local-file"),getFileExtension2=fsPath=>{let ext=fsPath.split(".").pop();return ext?ext.toLowerCase():""},getStaticFileLoader=(platform,fsPath)=>{let ext=getFileExtension2(fsPath);if(ext)return platform?.staticFileLoaderMap?.[ext]??platform?.staticFileLoaderMap?.[`.${ext}`]},normalizeStaticFileLoaderResult=result=>result&&typeof result=="object"&&result.__esModule?result:{__esModule:!0,default:result},importLocalFile=async(importName,ctx,depth=0)=>{debug13("importLocalFile called with:",{importName});let{fsMap,preSuppliedImports,importStack,currentlyImporting}=ctx,fsPath=resolveFilePathOrThrow(importName,fsMap,void 0,{tsConfig:ctx.tsConfig});if(debug13("fsPath:",fsPath),currentlyImporting.has(fsPath)){let cycleStartIndex=importStack.indexOf(fsPath),cyclePath=cycleStartIndex>=0?importStack.slice(cycleStartIndex).concat(fsPath):[...importStack,fsPath];throw new Error(`Circular dependency detected while importing "${fsPath}". The following import chain forms a cycle:
|
|
941
941
|
|
|
942
|
-
${cyclePath.join(" -> ")}`)}if(!ctx.fsMap[fsPath])throw debug13("fsPath not found in fsMap:",fsPath),new Error(`File "${fsPath}" not found`);let fileContent=fsMap[fsPath];debug13("fileContent:",fileContent?.slice(0,100)),currentlyImporting.add(fsPath),importStack.push(fsPath);try{let staticFileLoader=getStaticFileLoader(ctx.circuit.platform,fsPath);if(staticFileLoader)try{preSuppliedImports[fsPath]=normalizeStaticFileLoaderResult(await staticFileLoader(fileContent))}catch(error2){let ext=getFileExtension2(fsPath);throw new Error(`Failed to load static file "${fsPath}" with platformConfig.staticFileLoaderMap["${ext}"]: ${error2.message}`)}else if(fsPath.endsWith(".json")){let jsonData=JSON.parse(fileContent);preSuppliedImports[fsPath]={__esModule:!0,default:jsonData}}else if(isStaticAssetPath2(fsPath)){let staticUrl;if(fileContent==="__STATIC_ASSET__")staticUrl=`${ctx.circuit.platform?.projectBaseUrl??""}/${fsPath.startsWith("./")?fsPath.slice(2):fsPath}`;else if(fileContent.startsWith("blob:"))staticUrl=`${fileContent}#ext=${fsPath.split(".").pop()}`;else{let blob=new Blob([fileContent],{type:fsPath.endsWith(".kicad_mod")?"text/plain":"application/octet-stream"}),ext=fsPath.split(".").pop()?.toLowerCase(),isStepFile=ext==="step"||ext==="stp",blobUrl=URL.createObjectURL(blob);staticUrl=isStepFile?`${blobUrl}#ext=${ext}`:blobUrl}preSuppliedImports[fsPath]={__esModule:!0,default:staticUrl}}else if(fsPath.endsWith(".tsx")||fsPath.endsWith(".ts")){let importNames=getImportsFromCode(fileContent);for(let importName2 of importNames)preSuppliedImports[importName2]||await importEvalPath(importName2,ctx,depth+1,{cwd:dirname(fsPath)});try{let transformedCode=transformWithSucrase(fileContent,fsPath);debug13("evalCompiledJs called with:",{code:transformedCode.slice(0,100),dirname:dirname(fsPath)});let typeExports=getTypeExportsFromCode(fileContent),importRunResult=evalCompiledJs(transformedCode,preSuppliedImports,dirname(fsPath));debug13("importRunResult:",{fsPath,importRunResult});let moduleExports=importRunResult.exports;typeExports.length>0&&(moduleExports.__typeOnlyExports__=typeExports),preSuppliedImports[fsPath]=moduleExports}catch(error2){throw new Error(`Eval compiled js error for "${importName}": ${error2.message}`)}}else if(fsPath.endsWith(".js")||fsPath.endsWith(".mjs")){let importNames=getImportsFromCode(fileContent);for(let importName2 of importNames)preSuppliedImports[importName2]||await importEvalPath(importName2,ctx,depth+1,{cwd:dirname(fsPath)});preSuppliedImports[fsPath]=evalCompiledJs(transformWithSucrase(fileContent,fsPath),preSuppliedImports,dirname(fsPath)).exports}else throw new Error(`Unsupported file extension "${fsPath.split(".").pop()}" for "${fsPath}"`)}finally{importStack.pop(),currentlyImporting.delete(fsPath)}};async function importSnippet(importName,ctx,depth=0){let{preSuppliedImports}=ctx,fullSnippetName=importName.replace("@tsci/","").replace(".","/"),fetchOptions={};ctx.tscircuitSessionToken&&(fetchOptions.headers={Authorization:`Bearer ${ctx.tscircuitSessionToken}`});let{cjs,error:error2}=await globalThis.fetch(`${ctx.cjsRegistryUrl}/${fullSnippetName}`,fetchOptions).then(async res2=>({cjs:await res2.text(),error:null})).catch(e5=>({error:e5,cjs:null}));if(error2){console.error("Error fetching import",importName,error2);return}if(cjs?.startsWith("{"))try{let jsonResponse=JSON.parse(cjs);if(jsonResponse.ok===!1&&jsonResponse.error)throw new Error(`"${importName}" has no files in dist, it may not be built`)}catch(e5){throw e5 instanceof Error&&e5.message.includes("has no files in dist")?e5:new Error(`Error parsing cjs response: ${e5}`)}let importNames=getImportsFromCode(cjs),staticAssetImports=[],otherImports=[];for(let subImportName of importNames)if(!preSuppliedImports[subImportName])if(subImportName.startsWith("./")&&isStaticAssetPath2(subImportName)){let assetPath=subImportName.slice(2),assetUrl=`${ctx.cjsRegistryUrl}/${importName}/${assetPath}`;staticAssetImports.push({subImportName,assetUrl})}else otherImports.push(subImportName);await Promise.all(staticAssetImports.map(async({subImportName,assetUrl})=>{try{let response=await globalThis.fetch(assetUrl,fetchOptions);if(!response.ok)throw new Error(`Failed to fetch asset: ${response.statusText}`);let blob=await response.blob(),extension=subImportName.split(".").pop()||"",blobUrl=`${URL.createObjectURL(blob)}#ext=${extension}`;preSuppliedImports[subImportName]={__esModule:!0,default:blobUrl}}catch(e5){console.error(`Error fetching static asset ${assetUrl}:`,e5),preSuppliedImports[subImportName]={__esModule:!0,default:assetUrl}}}));for(let subImportName of otherImports)preSuppliedImports[subImportName]||await importEvalPath(subImportName,ctx,depth+1);try{preSuppliedImports[importName]=evalCompiledJs(cjs,preSuppliedImports).exports}catch(e5){console.error("Error importing snippet",e5)}}var import_debug24=__toESM(require_browser(),1);function extractBasePackageName(importName){let basePackageName=importName;if(importName.startsWith("@")){let parts=importName.split("/");basePackageName=parts.length>=2?`${parts[0]}/${parts[1]}`:importName}else basePackageName=importName.split("/")[0];return basePackageName}function isPackageDeclaredInPackageJson(packageName,fsMap){let packageJsonContent=fsMap["package.json"];if(!packageJsonContent)return!0;try{let packageJson=JSON.parse(packageJsonContent),dependencies=packageJson.dependencies||{},devDependencies=packageJson.devDependencies||{},peerDependencies=packageJson.peerDependencies||{},basePackageName=extractBasePackageName(packageName);return basePackageName in dependencies||basePackageName in devDependencies||basePackageName in peerDependencies}catch{return!0}}function getNodeModuleDirectory(packageName,fsMap){let nodeModulePath=`node_modules/${extractBasePackageName(packageName)}`;return Object.keys(fsMap).some(path=>path.startsWith(nodeModulePath+"/")||path===nodeModulePath)?nodeModulePath:null}function getPackageJsonEntrypoint(packageName,fsMap){let packageJsonPath=`node_modules/${extractBasePackageName(packageName)}/package.json`,packageJsonContent=fsMap[packageJsonPath];if(!packageJsonContent)return null;try{let packageJson=JSON.parse(packageJsonContent);return typeof packageJson.browser=="string"&&packageJson.browser||packageJson.module||packageJson.main||null}catch{return null}}function
|
|
942
|
+
${cyclePath.join(" -> ")}`)}if(!ctx.fsMap[fsPath])throw debug13("fsPath not found in fsMap:",fsPath),new Error(`File "${fsPath}" not found`);let fileContent=fsMap[fsPath];debug13("fileContent:",fileContent?.slice(0,100)),currentlyImporting.add(fsPath),importStack.push(fsPath);try{let staticFileLoader=getStaticFileLoader(ctx.circuit.platform,fsPath);if(staticFileLoader)try{preSuppliedImports[fsPath]=normalizeStaticFileLoaderResult(await staticFileLoader(fileContent))}catch(error2){let ext=getFileExtension2(fsPath);throw new Error(`Failed to load static file "${fsPath}" with platformConfig.staticFileLoaderMap["${ext}"]: ${error2.message}`)}else if(fsPath.endsWith(".json")){let jsonData=JSON.parse(fileContent);preSuppliedImports[fsPath]={__esModule:!0,default:jsonData}}else if(isStaticAssetPath2(fsPath)){let staticUrl;if(fileContent==="__STATIC_ASSET__")staticUrl=`${ctx.circuit.platform?.projectBaseUrl??""}/${fsPath.startsWith("./")?fsPath.slice(2):fsPath}`;else if(fileContent.startsWith("blob:"))staticUrl=`${fileContent}#ext=${fsPath.split(".").pop()}`;else{let blob=new Blob([fileContent],{type:fsPath.endsWith(".kicad_mod")?"text/plain":"application/octet-stream"}),ext=fsPath.split(".").pop()?.toLowerCase(),isStepFile=ext==="step"||ext==="stp",blobUrl=URL.createObjectURL(blob);staticUrl=isStepFile?`${blobUrl}#ext=${ext}`:blobUrl}preSuppliedImports[fsPath]={__esModule:!0,default:staticUrl}}else if(fsPath.endsWith(".tsx")||fsPath.endsWith(".ts")){let importNames=getImportsFromCode(fileContent);for(let importName2 of importNames)preSuppliedImports[importName2]||await importEvalPath(importName2,ctx,depth+1,{cwd:dirname(fsPath)});try{let transformedCode=transformWithSucrase(fileContent,fsPath);debug13("evalCompiledJs called with:",{code:transformedCode.slice(0,100),dirname:dirname(fsPath)});let typeExports=getTypeExportsFromCode(fileContent),importRunResult=evalCompiledJs(transformedCode,preSuppliedImports,dirname(fsPath));debug13("importRunResult:",{fsPath,importRunResult});let moduleExports=importRunResult.exports;typeExports.length>0&&(moduleExports.__typeOnlyExports__=typeExports),preSuppliedImports[fsPath]=moduleExports}catch(error2){throw new Error(`Eval compiled js error for "${importName}": ${error2.message}`)}}else if(fsPath.endsWith(".js")||fsPath.endsWith(".mjs")){let importNames=getImportsFromCode(fileContent);for(let importName2 of importNames)preSuppliedImports[importName2]||await importEvalPath(importName2,ctx,depth+1,{cwd:dirname(fsPath)});preSuppliedImports[fsPath]=evalCompiledJs(transformWithSucrase(fileContent,fsPath),preSuppliedImports,dirname(fsPath)).exports}else throw new Error(`Unsupported file extension "${fsPath.split(".").pop()}" for "${fsPath}"`)}finally{importStack.pop(),currentlyImporting.delete(fsPath)}};async function importSnippet(importName,ctx,depth=0){let{preSuppliedImports}=ctx,fullSnippetName=importName.replace("@tsci/","").replace(".","/"),fetchOptions={};ctx.tscircuitSessionToken&&(fetchOptions.headers={Authorization:`Bearer ${ctx.tscircuitSessionToken}`});let{cjs,error:error2}=await globalThis.fetch(`${ctx.cjsRegistryUrl}/${fullSnippetName}`,fetchOptions).then(async res2=>({cjs:await res2.text(),error:null})).catch(e5=>({error:e5,cjs:null}));if(error2){console.error("Error fetching import",importName,error2);return}if(cjs?.startsWith("{"))try{let jsonResponse=JSON.parse(cjs);if(jsonResponse.ok===!1&&jsonResponse.error)throw new Error(`"${importName}" has no files in dist, it may not be built`)}catch(e5){throw e5 instanceof Error&&e5.message.includes("has no files in dist")?e5:new Error(`Error parsing cjs response: ${e5}`)}let importNames=getImportsFromCode(cjs),staticAssetImports=[],otherImports=[];for(let subImportName of importNames)if(!preSuppliedImports[subImportName])if(subImportName.startsWith("./")&&isStaticAssetPath2(subImportName)){let assetPath=subImportName.slice(2),assetUrl=`${ctx.cjsRegistryUrl}/${importName}/${assetPath}`;staticAssetImports.push({subImportName,assetUrl})}else otherImports.push(subImportName);await Promise.all(staticAssetImports.map(async({subImportName,assetUrl})=>{try{let response=await globalThis.fetch(assetUrl,fetchOptions);if(!response.ok)throw new Error(`Failed to fetch asset: ${response.statusText}`);let blob=await response.blob(),extension=subImportName.split(".").pop()||"",blobUrl=`${URL.createObjectURL(blob)}#ext=${extension}`;preSuppliedImports[subImportName]={__esModule:!0,default:blobUrl}}catch(e5){console.error(`Error fetching static asset ${assetUrl}:`,e5),preSuppliedImports[subImportName]={__esModule:!0,default:assetUrl}}}));for(let subImportName of otherImports)preSuppliedImports[subImportName]||await importEvalPath(subImportName,ctx,depth+1);try{preSuppliedImports[importName]=evalCompiledJs(cjs,preSuppliedImports).exports}catch(e5){console.error("Error importing snippet",e5)}}var import_debug24=__toESM(require_browser(),1);function extractBasePackageName(importName){let basePackageName=importName;if(importName.startsWith("@")){let parts=importName.split("/");basePackageName=parts.length>=2?`${parts[0]}/${parts[1]}`:importName}else basePackageName=importName.split("/")[0];return basePackageName}function isPackageDeclaredInPackageJson(packageName,fsMap){let packageJsonContent=fsMap["package.json"];if(!packageJsonContent)return!0;try{let packageJson=JSON.parse(packageJsonContent),dependencies=packageJson.dependencies||{},devDependencies=packageJson.devDependencies||{},peerDependencies=packageJson.peerDependencies||{},basePackageName=extractBasePackageName(packageName);return basePackageName in dependencies||basePackageName in devDependencies||basePackageName in peerDependencies}catch{return!0}}function getNodeModuleDirectory(packageName,fsMap){let nodeModulePath=`node_modules/${extractBasePackageName(packageName)}`;return Object.keys(fsMap).some(path=>path.startsWith(nodeModulePath+"/")||path===nodeModulePath)?nodeModulePath:null}function getPackageJsonEntrypoint(packageName,fsMap){let packageJsonPath=`node_modules/${extractBasePackageName(packageName)}/package.json`,packageJsonContent=fsMap[packageJsonPath];if(!packageJsonContent)return null;try{let packageJson=JSON.parse(packageJsonContent);return typeof packageJson.browser=="string"&&packageJson.browser||packageJson.module||packageJson.main||null}catch{return null}}function isDistDirEmpty(packageName,fsMap){let distPath=`node_modules/${extractBasePackageName(packageName)}/dist`;return!Object.keys(fsMap).some(path=>path.startsWith(distPath+"/"))}var moduleExtensions=[".js",".jsx",".ts",".tsx",".json"],resolveEntrypointPath=(packageName,entrypoint,fsMap)=>{let basePackageName=extractBasePackageName(packageName),normalizedEntrypoint=normalizePackageEntrypoint(entrypoint),entrypointPath=`node_modules/${basePackageName}/${normalizedEntrypoint}`;if(fsMap[entrypointPath])return entrypointPath;for(let ext of moduleExtensions){let pathWithExt=entrypointPath.replace(/\.js$|\.jsx$/,"")+ext;if(fsMap[pathWithExt])return pathWithExt}return null};var debug14=(0,import_debug24.default)("tsci:eval:import-node-module"),importNodeModule=async(importName,ctx,depth=0)=>{let{preSuppliedImports,fsMap}=ctx;if(preSuppliedImports[importName])return;let hasPackageJson=!!fsMap["package.json"];if(hasPackageJson&&!isPackageDeclaredInPackageJson(importName,fsMap))throw new Error(`Node module imported but not in package.json "${importName}"
|
|
943
943
|
|
|
944
944
|
${ctx.logger.stringifyLogs()}`);let nodeModuleDir=hasPackageJson?getNodeModuleDirectory(importName,fsMap):null,resolvedNodeModulePath=resolveNodeModule(importName,ctx.fsMap,"");if(hasPackageJson&&resolvedNodeModulePath){if(!nodeModuleDir)throw new Error(`Node module "${importName}" has no files in the node_modules directory
|
|
945
945
|
|
|
946
|
-
${ctx.logger.stringifyLogs()}`);
|
|
947
|
-
|
|
948
|
-
${ctx.logger.stringifyLogs()}`);if(entrypoint&&entrypoint.startsWith("dist/")&&isDistDirEmpty(importName,fsMap))throw new Error(`"${importName}" has no files in dist, it may not be built
|
|
946
|
+
${ctx.logger.stringifyLogs()}`);if(getPackageJsonEntrypoint(importName,fsMap)?.startsWith("dist/")&&isDistDirEmpty(importName,fsMap))throw new Error(`"${importName}" has no files in dist, it may not be built
|
|
949
947
|
|
|
950
948
|
${ctx.logger.stringifyLogs()}`)}if(!resolvedNodeModulePath){if(hasPackageJson&&nodeModuleDir){let entrypoint=getPackageJsonEntrypoint(importName,fsMap);if(entrypoint?.startsWith("dist/")&&isDistDirEmpty(importName,fsMap))throw new Error(`"${importName}" has no files in dist, it may not be built
|
|
951
949
|
|
|
@@ -967,9 +965,7 @@ ${ctx.logger.stringifyLogs()}`)}}if(importName.startsWith("@tsci/"))return ctx.l
|
|
|
967
965
|
|
|
968
966
|
${ctx.logger.stringifyLogs()}`);let nodeModuleDir=getNodeModuleDirectory(importName,ctx.fsMap);if(!nodeModuleDir&&disableCdnLoading)throw new Error(`Node module "${importName}" has no files in the node_modules directory
|
|
969
967
|
|
|
970
|
-
${ctx.logger.stringifyLogs()}`);if(nodeModuleDir){let entrypoint=getPackageJsonEntrypoint(importName,ctx.fsMap);if(
|
|
971
|
-
|
|
972
|
-
${ctx.logger.stringifyLogs()}`);if(entrypoint?.startsWith("dist/")&&isDistDirEmpty(importName,ctx.fsMap))throw new Error(`"${importName}" has no files in dist, it may not be built
|
|
968
|
+
${ctx.logger.stringifyLogs()}`);if(nodeModuleDir){let entrypoint=getPackageJsonEntrypoint(importName,ctx.fsMap);if(entrypoint?.startsWith("dist/")&&isDistDirEmpty(importName,ctx.fsMap))throw new Error(`"${importName}" has no files in dist, it may not be built
|
|
973
969
|
|
|
974
970
|
${ctx.logger.stringifyLogs()}`);if(entrypoint&&!resolveEntrypointPath(importName,entrypoint,ctx.fsMap))throw new Error(`${importName}'s main path (${entrypoint}) was not found, it may not be built
|
|
975
971
|
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"main": "dist/index.js",
|
|
4
4
|
"types": "dist/index.d.ts",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"version": "0.0.
|
|
6
|
+
"version": "0.0.1803-libonly",
|
|
7
7
|
"license": "MIT",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
@@ -11,7 +11,6 @@
|
|
|
11
11
|
},
|
|
12
12
|
"files": [
|
|
13
13
|
"dist",
|
|
14
|
-
"cli.mjs",
|
|
15
14
|
"globals.d.ts"
|
|
16
15
|
],
|
|
17
16
|
"scripts": {
|
|
@@ -30,10 +29,6 @@
|
|
|
30
29
|
},
|
|
31
30
|
"./browser": "./dist/browser.min.js"
|
|
32
31
|
},
|
|
33
|
-
"bin": {
|
|
34
|
-
"tsci": "cli.mjs",
|
|
35
|
-
"tscircuit": "cli.mjs"
|
|
36
|
-
},
|
|
37
32
|
"devDependencies": {
|
|
38
33
|
"@types/bun": "^1.2.16",
|
|
39
34
|
"esbuild": "^0.20.2",
|
|
@@ -55,10 +50,9 @@
|
|
|
55
50
|
"@tscircuit/capacity-autorouter": "^0.0.529",
|
|
56
51
|
"@tscircuit/checks": "0.0.134",
|
|
57
52
|
"@tscircuit/circuit-json-util": "^0.0.95",
|
|
58
|
-
"@tscircuit/cli": "^0.1.1427",
|
|
59
53
|
"@tscircuit/copper-pour-solver": "^0.0.29",
|
|
60
54
|
"@tscircuit/core": "^0.0.1285",
|
|
61
|
-
"@tscircuit/eval": "^0.0.
|
|
55
|
+
"@tscircuit/eval": "^0.0.884",
|
|
62
56
|
"@tscircuit/footprinter": "^0.0.357",
|
|
63
57
|
"@tscircuit/infer-cable-insertion-point": "^0.0.2",
|
|
64
58
|
"@tscircuit/infgrid-ijump-astar": "^0.0.35",
|
|
@@ -69,7 +63,7 @@
|
|
|
69
63
|
"@tscircuit/miniflex": "^0.0.4",
|
|
70
64
|
"@tscircuit/ngspice-spice-engine": "^0.0.8",
|
|
71
65
|
"@tscircuit/props": "^0.0.542",
|
|
72
|
-
"@tscircuit/runframe": "^0.0.
|
|
66
|
+
"@tscircuit/runframe": "^0.0.2023",
|
|
73
67
|
"@tscircuit/schematic-match-adapt": "^0.0.16",
|
|
74
68
|
"@tscircuit/schematic-trace-solver": "^0.0.60",
|
|
75
69
|
"@tscircuit/simple-3d-svg": "^0.0.41",
|
|
@@ -115,4 +109,4 @@
|
|
|
115
109
|
"tslib": "^2.8.1",
|
|
116
110
|
"zod": "^3.25.67"
|
|
117
111
|
}
|
|
118
|
-
}
|
|
112
|
+
}
|
package/cli.mjs
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
import { createRequire } from "node:module";
|
|
4
|
-
const require = createRequire(import.meta.url);
|
|
5
|
-
|
|
6
|
-
// Use require to import package.json
|
|
7
|
-
const packageJson = require("./package.json");
|
|
8
|
-
global.TSCIRCUIT_VERSION = packageJson.version;
|
|
9
|
-
|
|
10
|
-
async function main() {
|
|
11
|
-
await import("@tscircuit/cli");
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
main();
|