@lensmcp/cluster 1.25.33 → 1.25.35
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/basic-ssl.js +1 -1
- package/build-host.js +1 -1
- package/build-scope-patterns.js +1 -1
- package/bundle-parent.js +1 -1
- package/checkout-cache.js +1 -1
- package/child-process-env.js +1 -1
- package/compile-retry.js +1 -1
- package/create-webpack-dev.js +1 -1
- package/create-webpack-prod.js +1 -1
- package/dev-devtool.js +1 -1
- package/devserver-host.js +1 -1
- package/devserver-notifier.js +1 -1
- package/devserver-transport.js +1 -1
- package/error-stack-release.js +1 -1
- package/executors/build/build.impl.js +1 -1
- package/executors/gateway/body-stall.js +1 -1
- package/executors/gateway/canonical-path.js +1 -1
- package/executors/gateway/client-ip.js +1 -1
- package/executors/gateway/gateway-errors.js +1 -1
- package/executors/gateway/gateway.impl.js +1 -1
- package/executors/gateway/gateway.lib.js +1 -1
- package/executors/gateway/health-check.js +1 -1
- package/executors/gateway/jwks-verify.js +1 -1
- package/executors/gateway/jwt-claims.js +1 -1
- package/executors/gateway/main.prod-gateway.js +2 -2
- package/executors/gateway/main.rollout.js +4 -4
- package/executors/gateway/manifest.js +1 -1
- package/executors/gateway/metrics.js +1 -1
- package/executors/gateway/otel-tracing.js +1 -1
- package/executors/gateway/prod-config.js +1 -1
- package/executors/gateway/prod-gateway.lib.js +1 -1
- package/executors/gateway/prod-runtime/access-log.js +1 -1
- package/executors/gateway/prod-runtime/app.js +1 -1
- package/executors/gateway/prod-runtime/auth.js +1 -1
- package/executors/gateway/prod-runtime/body-stall.js +1 -1
- package/executors/gateway/prod-runtime/cors.js +1 -1
- package/executors/gateway/prod-runtime/edge.js +1 -1
- package/executors/gateway/prod-runtime/handler.js +1 -1
- package/executors/gateway/prod-runtime/hooks.js +1 -1
- package/executors/gateway/prod-runtime/observability.js +1 -1
- package/executors/gateway/prod-runtime/rollout.js +1 -1
- package/executors/gateway/prod-runtime/routing.js +1 -1
- package/executors/gateway/prod-runtime/server.js +1 -1
- package/executors/gateway/prod-runtime/trust.js +1 -1
- package/executors/gateway/prod-runtime/upgrade.js +7 -7
- package/executors/gateway/prod-runtime/upstream.js +1 -1
- package/executors/gateway/providers-prod.js +1 -1
- package/executors/gateway/rate-limit.js +2 -2
- package/executors/gateway/registry-source.js +1 -1
- package/executors/gateway/rollout-ops.js +2 -2
- package/executors/gateway/runtime/act.js +1 -1
- package/executors/gateway/runtime/auth.js +1 -1
- package/executors/gateway/runtime/chooser.js +12 -12
- package/executors/gateway/runtime/control.js +2 -2
- package/executors/gateway/runtime/dev-auth.js +1 -1
- package/executors/gateway/runtime/discovery.js +1 -1
- package/executors/gateway/runtime/edge.js +1 -1
- package/executors/gateway/runtime/guest-graph.js +2 -2
- package/executors/gateway/runtime/guest-replay.js +2 -2
- package/executors/gateway/runtime/handler.js +1 -1
- package/executors/gateway/runtime/hmr-reload.js +1 -1
- package/executors/gateway/runtime/hooks.js +1 -1
- package/executors/gateway/runtime/hosted-dashboard.js +1 -1
- package/executors/gateway/runtime/instance.js +2 -2
- package/executors/gateway/runtime/lens-children.js +1 -1
- package/executors/gateway/runtime/lifecycle.js +3 -3
- package/executors/gateway/runtime/observability.js +3 -3
- package/executors/gateway/runtime/orphan-reaper.js +2 -2
- package/executors/gateway/runtime/own-log.js +6 -6
- package/executors/gateway/runtime/pod-env.js +2 -2
- package/executors/gateway/runtime/pod-output.js +1 -1
- package/executors/gateway/runtime/pod-probe.js +1 -1
- package/executors/gateway/runtime/process-names.js +1 -1
- package/executors/gateway/runtime/project-graph-store.js +1 -1
- package/executors/gateway/runtime/proxy.js +1 -1
- package/executors/gateway/runtime/registration-guards.js +1 -1
- package/executors/gateway/runtime/route-registry.js +1 -1
- package/executors/gateway/runtime/scope.js +1 -1
- package/executors/gateway/runtime/serve-launch.js +3 -3
- package/executors/gateway/runtime/server.js +2 -2
- package/executors/gateway/runtime/service-keys.js +1 -1
- package/executors/gateway/runtime/shared-build.js +3 -3
- package/executors/gateway/runtime/source-poller.js +1 -1
- package/executors/gateway/runtime/types.js +1 -1
- package/executors/gateway/runtime/upgrade.js +1 -1
- package/executors/gateway/runtime/warm-start.js +1 -1
- package/executors/gateway/runtime/workspace-log.js +1 -1
- package/executors/gateway/runtime/workspace-middleware.js +1 -1
- package/executors/gateway/runtime/workspace-registry.js +1 -1
- package/executors/gateway/ssrf-guard.js +1 -1
- package/executors/serve/serve.impl.js +1 -1
- package/executors/serve/stop-on-signal.js +1 -1
- package/executors/trust/hostname.js +1 -1
- package/executors/trust/trust.impl.js +3 -3
- package/exit-reason.js +2 -2
- package/fork-ts-check-reporter.js +1 -1
- package/gateway.js +1 -1
- package/gc-notice.js +1 -1
- package/graph-snapshot.js +1 -1
- package/handoff-retire.js +1 -1
- package/heap-snapshot.js +1 -1
- package/hot-swap-registries.js +1 -1
- package/index.js +1 -1
- package/inspector-secret.js +1 -1
- package/main.devserver.js +11 -11
- package/notice-generation.js +1 -1
- package/package.json +4 -4
- package/perf/heavy-barrel-import.js +1 -1
- package/perf/perf-config.js +1 -1
- package/perf/perf-rule-events.js +2 -2
- package/perf/perf-rules-analysis.js +1 -1
- package/perf/perf-rules-plugin.js +1 -1
- package/perf/source-scan.js +5 -5
- package/perf/workspace-libraries.js +2 -2
- package/pod-memory-events.js +2 -2
- package/pod-memory.js +1 -1
- package/pod-sock.js +1 -1
- package/process-name.js +1 -1
- package/redis-disconnect-fix.js +1 -1
- package/schema-first-instance.js +1 -1
- package/serve-runner.js +1 -1
- package/service-build-events.js +2 -2
- package/shared-build/attach.js +2 -2
- package/shared-build/host.js +3 -3
- package/shared-build/protocol.js +1 -1
- package/shared-build/shared-compilation.js +3 -3
- package/shared-build/signature.js +1 -1
- package/stdio-guard.js +1 -1
- package/swap-mode.js +1 -1
- package/swap-recycle.js +1 -1
- package/tsgo-check-plugin.js +4 -4
- package/typecheck-bus.js +3 -3
- package/typecheck-queue.js +1 -1
- package/worker-guard.js +1 -1
- package/worker-retire.js +1 -1
- package/worker-supervisor.js +2 -2
- package/workspace-paths.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var b=Object.defineProperty;var l=(e,o)=>b(e,"name",{value:o,configurable:!0});var g=Object.defineProperty,p=l((e,o)=>g(e,"name",{value:o,configurable:!0}),"p"),d=Object.defineProperty,a=p((e,o)=>d(e,"name",{value:o,configurable:!0}),"a");Object.defineProperty(exports,"__esModule",{value:!0}),exports.PER_SERVICE_PLUGINS=exports.TYPECHECK_ONLY_COMPILER_OPTIONS=exports.PER_SERVICE_TARGET_KEYS=void 0,exports.transpileCompilerOptions=transpileCompilerOptions,exports.memberMasks=memberMasks,exports.configFingerprint=configFingerprint,exports.memberSignature=memberSignature,exports.describeDifference=describeDifference,exports.refusalOf=refusalOf;const tslib_1=require("tslib"),node_crypto_1=require("node:crypto"),node_module_1=require("node:module"),path=tslib_1.__importStar(require("node:path"));exports.PER_SERVICE_TARGET_KEYS=["entryFile","tsConfigFile","outputPath","workers","configEnv","childCount","serviceName","servePrefix","gateway","internalPort","debugPort","logFile","webpackConfigPath","devtool","memoryLimit","port"],exports.TYPECHECK_ONLY_COMPILER_OPTIONS=new Set(["configFilePath","pathsBasePath","rootDir","rootDirs","outDir","outFile","declaration","declarationDir","declarationMap","emitDeclarationOnly","composite","incremental","tsBuildInfoFile","noEmit","noEmitOnError","types","typeRoots","lib","skipLibCheck","skipDefaultLibCheck","forceConsistentCasingInFileNames","strict","noImplicitAny","strictNullChecks","strictFunctionTypes","strictBindCallApply","strictPropertyInitialization","strictBuiltinIteratorReturn","noImplicitThis","useUnknownInCatchVariables","noUnusedLocals","noUnusedParameters","exactOptionalPropertyTypes","noImplicitReturns","noFallthroughCasesInSwitch","noUncheckedIndexedAccess","noImplicitOverride","noPropertyAccessFromIndexSignature","allowUnusedLabels","allowUnreachableCode","noErrorTruncation","diagnostics","extendedDiagnostics","listFiles","listEmittedFiles","traceResolution","explainFiles","pretty","preserveWatchOutput","assumeChangesOnlyAffectDirectDependencies","noStrictGenericChecks","suppressExcessPropertyErrors","suppressImplicitAnyIndexErrors","disableSizeLimit","disableSourceOfProjectReferenceRedirect","disableSolutionSearching","disableReferencedProjectLoad","noCheck","noUncheckedSideEffectImports","checkJs","maxNodeModuleJsDepth","isolatedDeclarations","erasableSyntaxOnly","libReplacement"]),exports.PER_SERVICE_PLUGINS=new Set(["DevServerReloadPlugin","PerfRulesPlugin","ForkTsCheckReporterPlugin","TsgoCheckPlugin","ForkTsCheckerWebpackPlugin","HotModuleReplacementPlugin"]);const UNWALKED_PLUGINS=new Set([...exports.PER_SERVICE_PLUGINS,"NxAppWebpackPlugin"]),sha=a(e=>(0,node_crypto_1.createHash)("sha256").update(e).digest("hex").slice(0,16),"sha");function loadTypeScript(e){try{return(0,node_module_1.createRequire)(path.join(e,"package.json"))("typescript")}catch{return require("typescript")}}l(loadTypeScript,"loadTypeScript"),p(loadTypeScript,"loadTypeScript"),a(loadTypeScript,"loadTypeScript");function canonical(e){if(Array.isArray(e))return e.map(canonical);if(e&&typeof e=="object"){const o={};for(const i of Object.keys(e).sort())o[i]=canonical(e[i]);return o}return e}l(canonical,"canonical"),p(canonical,"canonical"),a(canonical,"canonical");function transpileCompilerOptions(e,o){const i=loadTypeScript(o),r=i.readConfigFile(e,c=>i.sys.readFile(c));if(r.error)throw new Error(`cannot read ${e}: ${String(r.error.messageText)}`);const s={...i.sys,readDirectory:a(()=>[],"readDirectory")},f=i.parseJsonConfigFileContent(r.config,s,path.dirname(e),void 0,e),t={};for(const[c,m]of Object.entries(f.options))exports.TYPECHECK_ONLY_COMPILER_OPTIONS.has(c)||(t[c]=m);const n=f.options.paths;if(n){const c=f.options.baseUrl??f.options.pathsBasePath??path.dirname(e);t.paths=Object.fromEntries(Object.entries(n).map(([m,u])=>[m,u.map(y=>path.resolve(c,y))]))}return canonical(t)}l(transpileCompilerOptions,"transpileCompilerOptions"),p(transpileCompilerOptions,"transpileCompilerOptions"),a(transpileCompilerOptions,"transpileCompilerOptions");function memberMasks(e,o){const i=[{from:e.appRoot,to:"<appRoot>"},{from:e.outputDir,to:"<outputDir>"},{from:e.main,to:"<main>"},{from:e.tsConfig,to:"<tsConfig>"}];for(const r of e.additionalEntryPoints??[])i.push({from:r.entryPath,to:`<worker:${r.entryName}>`});return i.filter(r=>r.from).sort((r,s)=>s.from.length-r.from.length).concat([o,o.replace(/[^\w.-]+/g,"_"),e.appName,e.serviceName].filter(r=>!!r).map(r=>({from:r,to:"<project>",whole:!0})))}l(memberMasks,"memberMasks"),p(memberMasks,"memberMasks"),a(memberMasks,"memberMasks");const MAX_DEPTH=8,MAX_KEYS=200;function configFingerprint(e,o){const i=new WeakSet,r=a(t=>{let n=t;for(const c of o){if(c.whole){if(n===c.from)return c.to;continue}n.includes(c.from)&&(n=n.split(c.from).join(c.to))}return n},"mask"),s=a((t,n)=>{if(typeof t=="string")return r(t);if(typeof t=="function")return`fn:${sha(r(Function.prototype.toString.call(t)))}`;if(t instanceof RegExp)return`re:${r(String(t))}`;if(!t||typeof t!="object")return t;if(i.has(t))return"<cycle>";if(n>=MAX_DEPTH)return"<deep>";i.add(t);try{if(Array.isArray(t))return t.slice(0,MAX_KEYS).map(u=>s(u,n+1));if(t instanceof Map)return{$map:[...t.entries()].slice(0,MAX_KEYS).map(([u,y])=>[s(u,n+1),s(y,n+1)])};if(t instanceof Set)return{$set:[...t].slice(0,MAX_KEYS).map(u=>s(u,n+1))};const c=t.constructor?.name,m=c&&c!=="Object"?{$class:c}:{};for(const u of Object.keys(t).sort().slice(0,MAX_KEYS))m[u]=s(t[u],n+1);return m}finally{i.delete(t)}},"walk"),f={};for(const t of Object.keys(e).sort()){if(t==="entry"||t==="watch")continue;let n=e[t];t==="plugins"&&Array.isArray(n)&&(n=n.filter(c=>!UNWALKED_PLUGINS.has(c?.constructor?.name??""))),t==="output"&&n&&typeof n=="object"&&(n=Object.fromEntries(Object.entries(n).filter(([c])=>c!=="path"))),f[`config.${t}`]=sha(JSON.stringify(s(n,0)))}return f}l(configFingerprint,"configFingerprint"),p(configFingerprint,"configFingerprint"),a(configFingerprint,"configFingerprint");function moduleShapingOptions(e,o){return canonical({devtool:o,buildLibsFromSource:e.buildLibsFromSource??!0,orgScopes:e.orgScopes??[],bundlePackages:e.bundlePackages??[],nodeExternalsConfig:e.nodeExternalsConfig??null})}l(moduleShapingOptions,"moduleShapingOptions"),p(moduleShapingOptions,"moduleShapingOptions"),a(moduleShapingOptions,"moduleShapingOptions");function memberSignature(e){const{join:o}=e,i={};for(const[s,f]of Object.entries(o.targetOptions??{}))exports.PER_SERVICE_TARGET_KEYS.includes(s)||(i[s]=f);const r={options:sha(JSON.stringify(moduleShapingOptions(o.options,e.devtool))),targetOptions:sha(JSON.stringify(canonical(i))),tsconfig:sha(JSON.stringify(e.compilerOptions)),...configFingerprint(e.config,memberMasks(o.options,o.project))};return{key:sha(JSON.stringify(canonical(r))),parts:r}}l(memberSignature,"memberSignature"),p(memberSignature,"memberSignature"),a(memberSignature,"memberSignature");const PART_NAMES={options:"its build options (devtool, buildLibsFromSource, orgScopes, bundlePackages or nodeExternalsConfig)",targetOptions:"its serve target options",tsconfig:"its tsconfig compiler options"};function describeDifference(e,o){const i=[...new Set([...Object.keys(e.parts),...Object.keys(o.parts)])].sort((r,s)=>order(r)-order(s)||r.localeCompare(s));for(const r of i)if(e.parts[r]!==o.parts[r])return PART_NAMES[r]??`its webpack config (\`${r.slice(7)}\` \u2014 a webpackConfigPath override?)`}l(describeDifference,"describeDifference"),p(describeDifference,"describeDifference"),a(describeDifference,"describeDifference");function order(e){return e in PART_NAMES?0:1}l(order,"order"),p(order,"order"),a(order,"order");function refusalOf(e,o){const{options:i}=e,r=a(s=>!!s&&!path.relative(o,path.resolve(o,s)).startsWith(".."),"inside");if(i.buildLibsFromSource===!1)return"buildLibsFromSource is false \u2014 its library paths are its own (a tsconfig nx writes per project)";if([...i.assets??[],...Array.isArray(e.targetOptions?.assets)?e.targetOptions.assets:[]].length>0)return"it copies assets \u2014 they are copied relative to one output directory, and a shared compilation writes several";if(!r(i.outputDir))return`its output directory (${i.outputDir}) is outside the workspace`;if(i.webpackConfigPath&&!r(path.resolve(i.appRoot,i.webpackConfigPath)))return"its webpackConfigPath is outside the workspace";for(const s of i.additionalEntryPoints??[])if(!/^[\w.-]+$/.test(s.entryName))return`worker "${s.entryName}" is not a plain file name`}l(refusalOf,"refusalOf"),p(refusalOf,"refusalOf"),a(refusalOf,"refusalOf");
|
package/stdio-guard.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var u=Object.defineProperty;var t=(o,e)=>u(o,"name",{value:e,configurable:!0});var c=Object.defineProperty,r=t((o,e)=>c(o,"name",{value:e,configurable:!0}),"r"),d=Object.defineProperty,s=r((o,e)=>d(o,"name",{value:e,configurable:!0}),"s");Object.defineProperty(exports,"__esModule",{value:!0}),exports.guardBrokenStdio=guardBrokenStdio;function guardBrokenStdio(o=[process.stdout,process.stderr]){for(const e of o){const n=e;n.__lensmcpStdioGuard||(n.__lensmcpStdioGuard=!0,e.on("error",a=>{if(a?.code!=="EPIPE")throw a}))}}t(guardBrokenStdio,"guardBrokenStdio"),r(guardBrokenStdio,"guardBrokenStdio"),s(guardBrokenStdio,"guardBrokenStdio");
|
package/swap-mode.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var u=Object.defineProperty;var n=(r,e)=>u(r,"name",{value:e,configurable:!0});var a=Object.defineProperty,o=n((r,e)=>a(r,"name",{value:e,configurable:!0}),"o"),t=Object.defineProperty,s=o((r,e)=>t(r,"name",{value:e,configurable:!0}),"s");Object.defineProperty(exports,"__esModule",{value:!0}),exports.swapMode=swapMode,exports.abandonSuperseded=abandonSuperseded,exports.maxRetiring=maxRetiring;function swapMode(r=process.env){const e=(r.LENSMCP_SWAP_MODE??"").trim().toLowerCase();return e==="in-process"||e==="inprocess"||e==="hot"?"in-process":"process"}n(swapMode,"swapMode"),o(swapMode,"swapMode"),s(swapMode,"swapMode");function abandonSuperseded(r,e=process.env){const i=Number(e.LENSMCP_SWAP_MAX_SUPERSEDED),p=Number.isFinite(i)&&i>=0?Math.floor(i):2;return r<p}n(abandonSuperseded,"abandonSuperseded"),o(abandonSuperseded,"abandonSuperseded"),s(abandonSuperseded,"abandonSuperseded");function maxRetiring(r=process.env){const e=Number(r.LENSMCP_SWAP_MAX_RETIRING);return Number.isFinite(e)&&e>=1?Math.floor(e):2}n(maxRetiring,"maxRetiring"),o(maxRetiring,"maxRetiring"),s(maxRetiring,"maxRetiring");
|
package/swap-recycle.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var c=Object.defineProperty;var l=(s,e)=>c(s,"name",{value:e,configurable:!0});var o=Object.defineProperty,n=l((s,e)=>o(s,"name",{value:e,configurable:!0}),"n"),t=Object.defineProperty,r=n((s,e)=>t(s,"name",{value:e,configurable:!0}),"r");Object.defineProperty(exports,"__esModule",{value:!0}),exports.swapRecyclePolicy=swapRecyclePolicy,exports.recycleReason=recycleReason;const MB=1024*1024,numberFrom=r((s,e,a)=>{if(s===void 0||s.trim()==="")return e;const i=Number(s);return Number.isFinite(i)&&i>=a?i:e},"numberFrom");function swapRecyclePolicy(s=process.env){return{enabled:!["0","false","no","off"].includes((s.LENSMCP_SWAP_RECYCLE??"").trim().toLowerCase()),heapFactor:numberFrom(s.LENSMCP_SWAP_RECYCLE_HEAP_FACTOR,3,0),minHeapBytes:numberFrom(s.LENSMCP_SWAP_RECYCLE_MIN_MB,512,0)*MB,heapRatio:Math.min(1,numberFrom(s.LENSMCP_SWAP_RECYCLE_HEAP_RATIO,.7,0)),maxSwaps:Math.floor(numberFrom(s.LENSMCP_SWAP_RECYCLE_AFTER,0,0)),stuckCloseMs:Math.floor(numberFrom(s.LENSMCP_SWAP_RECYCLE_STUCK_CLOSE_MS,6e4,0)),settleMs:Math.floor(numberFrom(s.LENSMCP_SWAP_RECYCLE_SETTLE_MS,5e3,0)),retainedMs:Math.floor(numberFrom(s.LENSMCP_SWAP_RECYCLE_RETAINED_MS,10*6e4,0))}}l(swapRecyclePolicy,"swapRecyclePolicy"),n(swapRecyclePolicy,"swapRecyclePolicy"),r(swapRecyclePolicy,"swapRecyclePolicy");const mb=r(s=>(s/MB).toFixed(0),"mb");function recycleReason(s,e){if(!(!s.enabled||e.swaps<1)){if(s.maxSwaps>0&&e.swaps>=s.maxSwaps)return`${e.swaps} hot swaps in this process (LENSMCP_SWAP_RECYCLE_AFTER=${s.maxSwaps})`;if(s.stuckCloseMs>0&&(e.stuckCloses??0)>0){const a=e.stuckCloses;return`${a} previous app${a===1?" has":"s have"} not finished closing after ${Math.round(s.stuckCloseMs/1e3)}s \u2014 a shutdown hook that never returns keeps the whole app, its connections included, in memory`}if(s.retainedMs>0&&e.retained&&e.retained.gcs>=2&&e.retained.ageMs>=s.retainedMs){const a=e.retained,i=a.ageMs<9e4?`${Math.round(a.ageMs/1e3)}s`:`${Math.round(a.ageMs/6e4)} min`;return`generation ${a.generation} is still in memory ${i} after its app was closed, through ${a.gcs} full GCs \u2014 something still points into it, and only a fresh process gives it back`}if(s.heapRatio>0&&e.limitBytes>0&&e.usedBytes>=s.heapRatio*e.limitBytes){const a=Math.round(e.usedBytes/e.limitBytes*100);return`its heap is ${mb(e.usedBytes)} MB after a full GC, ${a}% of V8's ${mb(e.limitBytes)} MB limit`}if(s.heapFactor>0&&e.settled!==!1&&e.baselineBytes!==void 0&&e.baselineBytes>0&&e.usedBytes>=s.minHeapBytes&&e.usedBytes>=s.heapFactor*e.baselineBytes){const a=(e.usedBytes/e.baselineBytes).toFixed(1);return`its heap is ${mb(e.usedBytes)} MB after a full GC, ${a}\xD7 the ${mb(e.baselineBytes)} MB it booted with \u2014 earlier generations of the bundle are still in memory`}}}l(recycleReason,"recycleReason"),n(recycleReason,"recycleReason"),r(recycleReason,"recycleReason");
|
package/tsgo-check-plugin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`&&(n=!1,t+=r);continue}if(s){r==="*"&&
|
|
1
|
+
"use strict";var S=Object.defineProperty;var c=(e,t)=>S(e,"name",{value:t,configurable:!0});var v=Object.defineProperty,a=c((e,t)=>v(e,"name",{value:t,configurable:!0}),"a"),b=Object.defineProperty,l=a((e,t)=>b(e,"name",{value:t,configurable:!0}),"l");Object.defineProperty(exports,"__esModule",{value:!0}),exports.TsgoCheckPlugin=exports.TSGO_MISSING_CAUSE=exports.TSGO_PACKAGE=void 0,exports.checkerMaxProcs=checkerMaxProcs,exports.tsgoIncremental=tsgoIncremental,exports.tsgoBuildInfoPath=tsgoBuildInfoPath,exports.tsgoCheckArgs=tsgoCheckArgs,exports.resolveTsgoPackageDir=resolveTsgoPackageDir,exports.resolveTsgoBin=resolveTsgoBin,exports.reportTsgoUnavailable=reportTsgoUnavailable,exports.effectivePaths=effectivePaths,exports.writeShimTsconfig=writeShimTsconfig;const tslib_1=require("tslib"),node_child_process_1=require("node:child_process"),fs=tslib_1.__importStar(require("node:fs")),path=tslib_1.__importStar(require("node:path")),typecheck_bus_1=require("./typecheck-bus"),typecheck_queue_1=require("./typecheck-queue"),DEFAULT_TIMEOUT_MS=12e4,DEFAULT_MAX_PROCS=4;function checkerMaxProcs(e=process.env){const t=Number(e.LENSMCP_TYPECHECK_GOMAXPROCS);return Number.isInteger(t)&&t>=1?t:DEFAULT_MAX_PROCS}c(checkerMaxProcs,"checkerMaxProcs"),a(checkerMaxProcs,"checkerMaxProcs"),l(checkerMaxProcs,"checkerMaxProcs");function tsgoIncremental(e=process.env){const t=(e.LENSMCP_TSGO_INCREMENTAL??"").trim().toLowerCase();return!(t==="0"||t==="false"||t==="off"||t==="no")}c(tsgoIncremental,"tsgoIncremental"),a(tsgoIncremental,"tsgoIncremental"),l(tsgoIncremental,"tsgoIncremental");function tsgoBuildInfoPath(e,t){return path.join(t,"tmp","lensmcp-tsgo",`${e}.tsbuildinfo`)}c(tsgoBuildInfoPath,"tsgoBuildInfoPath"),a(tsgoBuildInfoPath,"tsgoBuildInfoPath"),l(tsgoBuildInfoPath,"tsgoBuildInfoPath");function tsgoCheckArgs(e,t){return["--noEmit","--pretty","false",...t?["--incremental","--tsBuildInfoFile",t]:[],"-p",e]}c(tsgoCheckArgs,"tsgoCheckArgs"),a(tsgoCheckArgs,"tsgoCheckArgs"),l(tsgoCheckArgs,"tsgoCheckArgs");const livePlugins=new Set;let exitHooked=!1;function stopWithTheProcess(e){livePlugins.add(e),!exitHooked&&(exitHooked=!0,process.once("exit",()=>{for(const t of livePlugins)t.dispose()}))}c(stopWithTheProcess,"stopWithTheProcess"),a(stopWithTheProcess,"stopWithTheProcess"),l(stopWithTheProcess,"stopWithTheProcess"),exports.TSGO_PACKAGE="@typescript/native-preview";function shimNames(e){return e==="win32"?["tsgo.cmd","tsgo.exe"]:["tsgo"]}c(shimNames,"shimNames"),a(shimNames,"shimNames"),l(shimNames,"shimNames");function isExecutableFile(e,t){try{if(!fs.statSync(e).isFile())return!1}catch{return!1}if(t==="win32")return!0;try{return fs.accessSync(e,fs.constants.X_OK),!0}catch{return!1}}c(isExecutableFile,"isExecutableFile"),a(isExecutableFile,"isExecutableFile"),l(isExecutableFile,"isExecutableFile");function resolveTsgoPackageDir(){try{return path.dirname(require.resolve(`${exports.TSGO_PACKAGE}/package.json`))}catch{}try{let e=path.dirname(require.resolve(exports.TSGO_PACKAGE));for(let t=0;t<6;t++){const i=path.join(e,"package.json");if(fs.existsSync(i))try{const{name:s}=JSON.parse(fs.readFileSync(i,"utf8"));if(s===exports.TSGO_PACKAGE)return e}catch{}const n=path.dirname(e);if(n===e)break;e=n}}catch{}return null}c(resolveTsgoPackageDir,"resolveTsgoPackageDir"),a(resolveTsgoPackageDir,"resolveTsgoPackageDir"),l(resolveTsgoPackageDir,"resolveTsgoPackageDir");function packageDeclaredBin(e){try{const{bin:t}=JSON.parse(fs.readFileSync(path.join(e,"package.json"),"utf8")),i=typeof t=="string"?t:t?.tsgo;return i?path.join(e,i):null}catch{return null}}c(packageDeclaredBin,"packageDeclaredBin"),a(packageDeclaredBin,"packageDeclaredBin"),l(packageDeclaredBin,"packageDeclaredBin");function ownBinCandidates(e,t){const i=path.resolve(e,"..","..",".bin"),n=shimNames(t).map(o=>path.join(i,o)),s=t==="win32"?null:packageDeclaredBin(e);return s?[s,...n]:n}c(ownBinCandidates,"ownBinCandidates"),a(ownBinCandidates,"ownBinCandidates"),l(ownBinCandidates,"ownBinCandidates");function resolveTsgoBin(e,t,i={}){const n=i.platform??process.platform,s=i.isExecutable??(r=>isExecutableFile(r,n));if(t)return s(t)?t:null;for(const r of shimNames(n)){const u=path.join(e,"node_modules",".bin",r);if(s(u))return u}const o=(i.ownPackageDir??resolveTsgoPackageDir)();return o?ownBinCandidates(o,n).find(s)??null:null}c(resolveTsgoBin,"resolveTsgoBin"),a(resolveTsgoBin,"resolveTsgoBin"),l(resolveTsgoBin,"resolveTsgoBin"),exports.TSGO_MISSING_CAUSE=`tsgo binary not found \u2014 @lensmcp/cluster depends on ${exports.TSGO_PACKAGE}, so an absent binary means an incomplete install (reinstall node_modules), a platform with no ${exports.TSGO_PACKAGE} build, or a LENSMCP_TSGO_BIN override pointing at a missing or non-executable file`;function reportTsgoUnavailable(e){try{(0,typecheck_bus_1.publishTypecheckRun)({workspaceRoot:e.workspaceRoot,project:e.appName,tool:"tsgo",tsConfig:e.tsConfig,output:"",durationMs:0,toolError:e.detail,...e.eventFile?{eventFile:e.eventFile}:{}})}catch{}}c(reportTsgoUnavailable,"reportTsgoUnavailable"),a(reportTsgoUnavailable,"reportTsgoUnavailable"),l(reportTsgoUnavailable,"reportTsgoUnavailable");function parseJsonc(e){let t="",i=!1,n=!1,s=!1;for(let o=0;o<e.length;o++){const r=e[o],u=e[o+1];if(n){r===`
|
|
2
|
+
`&&(n=!1,t+=r);continue}if(s){r==="*"&&u==="/"&&(s=!1,o++);continue}if(i){t+=r,r==="\\"?(t+=u??"",o++):r==='"'&&(i=!1);continue}if(r==='"'){i=!0,t+=r;continue}if(r==="/"&&u==="/"){n=!0,o++;continue}if(r==="/"&&u==="*"){s=!0,o++;continue}t+=r}try{return JSON.parse(t.replace(/,(\s*[}\]])/g,"$1"))}catch{return null}}c(parseJsonc,"parseJsonc"),a(parseJsonc,"parseJsonc"),l(parseJsonc,"parseJsonc");function resolveExtends(e,t){if(!e.startsWith(".")&&!path.isAbsolute(e))return null;const i=path.isAbsolute(e)?e:path.resolve(t,e);for(const n of[i,`${i}.json`,path.join(i,"tsconfig.json")])try{if(fs.statSync(n).isFile())return n}catch{}return null}c(resolveExtends,"resolveExtends"),a(resolveExtends,"resolveExtends"),l(resolveExtends,"resolveExtends");function effectivePaths(e,t=new Set){if(t.has(e))return null;t.add(e);let i;try{i=fs.readFileSync(e,"utf8")}catch{return null}const n=parseJsonc(i);if(!n)return null;const s=path.dirname(e),o=n.compilerOptions??{},r=Array.isArray(n.extends)?n.extends.filter(d=>typeof d=="string"):typeof n.extends=="string"?[n.extends]:[],u=l(()=>{for(const d of[...r].reverse()){const f=resolveExtends(d,s);if(!f)continue;const g=effectivePaths(f,t);if(g)return g}return null},"inherited"),p=o.paths,h=typeof o.baseUrl=="string"?path.resolve(s,o.baseUrl):void 0;if(!p){const d=u();return d?{paths:d.paths,anchorDir:h??d.anchorDir}:null}return{paths:p,anchorDir:h??u()?.anchorDir??s}}c(effectivePaths,"effectivePaths"),a(effectivePaths,"effectivePaths"),l(effectivePaths,"effectivePaths");function writeShimTsconfig(e,t,i){const n=path.join(i,"tmp","lensmcp-tsgo");fs.mkdirSync(n,{recursive:!0});const s=path.join(n,`${e}.tsconfig.json`),o=effectivePaths(t),r=o?Object.fromEntries(Object.entries(o.paths).map(([u,p])=>[u,(Array.isArray(p)?p:[]).map(h=>path.isAbsolute(h)?h:path.resolve(o.anchorDir,h))])):void 0;return fs.writeFileSync(s,JSON.stringify({extends:t,compilerOptions:{module:"preserve",moduleResolution:"bundler",isolatedModules:!1,baseUrl:null,...r&&Object.keys(r).length?{paths:r}:{}}},null,2)),s}c(writeShimTsconfig,"writeShimTsconfig"),a(writeShimTsconfig,"writeShimTsconfig"),l(writeShimTsconfig,"writeShimTsconfig");class TsgoCheckPlugin{static{c(this,"TsgoCheckPlugin")}static{a(this,"TsgoCheckPlugin")}static{l(this,"TsgoCheckPlugin")}constructor(t){this.timer=null,this.phase="idle",this.dirty=!1,this.ticket=null,this.inflight=null,this.askedAt=0,this.shimPath=null,this.disabled=!1,this.disposed=!1,this.opts=t,this.spawnImpl=t.spawnImpl??node_child_process_1.spawn,this.queue=t.queue??(0,typecheck_queue_1.machineTypecheckQueue)(),this.buildInfo=t.incremental??tsgoIncremental()?tsgoBuildInfoPath(t.appName,t.workspaceRoot):void 0}apply(t){t.hooks.done.tap("TsgoCheckPlugin",i=>{i.hasErrors()||this.schedule()}),t.hooks.shutdown?.tap?.("TsgoCheckPlugin",()=>this.dispose()),stopWithTheProcess(this)}schedule(){this.disabled||this.disposed||(this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>this.request(),this.opts.debounceMs??500),this.timer.unref?.())}request(){if(this.disabled||this.disposed)return;if(this.phase==="running"){this.dirty=!0;return}if(this.phase==="waiting")return;this.phase="waiting",this.askedAt=Date.now();const t=this.queue(this.opts.appName,()=>this.run(),{onHold:l(i=>this.held(i),"onHold")});this.isIdle()?t.release():this.ticket=t}held(t){if(!this.disposed&&(console.log(`[tsgo] ${this.opts.appName}: check held \u2014 ${t.availableMb} MB free, it waits for ${t.minFreeMb} MB (LENSMCP_TYPECHECK_MIN_FREE_MB)`),this.opts.publishEvents!==!1))try{(0,typecheck_bus_1.publishTypecheckHeld)({workspaceRoot:this.opts.workspaceRoot,project:this.opts.appName,tool:"tsgo",tsConfig:this.opts.tsConfig,availableMb:t.availableMb,minFreeMb:t.minFreeMb,...this.opts.eventFile?{eventFile:this.opts.eventFile}:{}})}catch{}}forgetBuildInfo(){if(this.buildInfo)try{fs.rmSync(this.buildInfo,{force:!0})}catch{}}isIdle(){return this.phase==="idle"}publish(t){if(this.opts.publishEvents!==!1)try{(0,typecheck_bus_1.publishTypecheckRun)({workspaceRoot:this.opts.workspaceRoot,project:this.opts.appName,tool:"tsgo",tsConfig:this.opts.tsConfig,output:t.output,durationMs:t.durationMs,...t.toolError?{toolError:t.toolError}:{},...this.opts.eventFile?{eventFile:this.opts.eventFile}:{}})}catch{}}run(){if(this.disposed)return this.leave();let t;try{t=resolveTsgoBin(this.opts.workspaceRoot,this.opts.binPath),t&&!this.shimPath&&(this.shimPath=writeShimTsconfig(this.opts.appName,this.opts.tsConfig,this.opts.workspaceRoot))}catch(h){return console.warn(`[tsgo] ${this.opts.appName}: could not prepare the check \u2014 ${h.message}`),this.publish({output:"",durationMs:0,toolError:`could not prepare the check: ${h.message}`}),this.leave()}if(!t){this.disabled=!0;const h=`${exports.TSGO_MISSING_CAUSE}. Type checking is disabled for the rest of this session`;return console.warn(`[tsgo] ${this.opts.appName}: ${h}.`),this.publish({output:"",durationMs:0,toolError:h}),this.leave()}this.phase="running",this.dirty=!1;const i=Date.now(),n=i-this.askedAt,s=this.spawnImpl(t,tsgoCheckArgs(this.shimPath,this.buildInfo),{cwd:this.opts.workspaceRoot,stdio:["ignore","pipe","pipe"],env:{...process.env,GOMAXPROCS:process.env.GOMAXPROCS??String(this.opts.maxProcs??checkerMaxProcs())}});this.inflight=s;let o="",r=!1;const u=this.opts.timeoutMs??DEFAULT_TIMEOUT_MS,p=setTimeout(()=>{r=!0,s.kill("SIGKILL")},u);p.unref?.(),s.stdout?.on("data",h=>{o+=h.toString()}),s.stderr?.on("data",h=>{o+=h.toString()}),s.on("error",()=>{clearTimeout(p),this.inflight===s&&(console.warn(`[tsgo] ${this.opts.appName}: failed to spawn ${t}`),this.forgetBuildInfo(),this.publish({output:"",durationMs:Date.now()-i,toolError:`failed to spawn ${t}`}),this.finish(s))}),s.on("close",(h,d)=>{if(clearTimeout(p),this.inflight!==s)return;const f=Date.now()-i,g=(f/1e3).toFixed(1),k=n>=1e3?`${g}s, waited ${(n/1e3).toFixed(1)}s`:`${g}s`;if(this.disposed)return this.finish(s);if(r){const y=`the check was killed after ${Math.round(u/1e3)}s without finishing`;return console.warn(`[tsgo] ${this.opts.appName}: ${y} \u2014 no verdict.`),this.forgetBuildInfo(),this.publish({output:"",durationMs:f,toolError:y}),this.finish(s)}if(d)return this.forgetBuildInfo(),this.finish(s);if(h===0)return console.log(`[tsgo] ${this.opts.appName}: types clean (${k})`),this.publish({output:"",durationMs:f}),this.finish(s);o.trim()&&process.stdout.write(o.endsWith(`
|
|
3
3
|
`)?o:`${o}
|
|
4
|
-
`);const
|
|
5
|
-
`)[0]?.slice(0,300)??""}a(firstLine,"firstLine"),l(firstLine,"firstLine");
|
|
4
|
+
`);const m=(o.match(/error TS\d+/g)??[]).length;console.log(`[tsgo] ${this.opts.appName}: ${m} type error${m===1?"":"s"} (${k})`),m===0&&this.forgetBuildInfo(),this.publish({output:o,durationMs:f,...m===0?{toolError:`tsgo exited ${h} with no diagnostics: ${firstLine(o)}`}:{}}),this.finish(s)})}finish(t){this.inflight===t&&(this.inflight=null),this.leave(),this.dirty&&!this.disposed&&(this.dirty=!1,this.request())}leave(){this.phase="idle",this.ticket?.release(),this.ticket=null}dispose(){this.disposed||(this.disposed=!0,livePlugins.delete(this),this.timer&&clearTimeout(this.timer),this.inflight&&(this.inflight.kill("SIGKILL"),this.forgetBuildInfo()),this.ticket?.release(),this.ticket=null)}}exports.TsgoCheckPlugin=TsgoCheckPlugin;function firstLine(e){return e.trim().split(`
|
|
5
|
+
`)[0]?.slice(0,300)??""}c(firstLine,"firstLine"),a(firstLine,"firstLine"),l(firstLine,"firstLine");
|
package/typecheck-bus.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`)){const
|
|
1
|
+
"use strict";var y=Object.defineProperty;var i=(e,r)=>y(e,"name",{value:r,configurable:!0});var g=Object.defineProperty,n=i((e,r)=>g(e,"name",{value:r,configurable:!0}),"n"),f=Object.defineProperty,o=n((e,r)=>f(e,"name",{value:r,configurable:!0}),"o");Object.defineProperty(exports,"__esModule",{value:!0}),exports.MAX_DIAGNOSTICS_PER_RUN=void 0,exports.stripAnsi=stripAnsi,exports.parseTscDiagnosticLine=parseTscDiagnosticLine,exports.parseTscOutput=parseTscOutput,exports.buildTypecheckRunEvents=buildTypecheckRunEvents,exports.resolveEventFile=resolveEventFile,exports.appendTypecheckEvents=appendTypecheckEvents,exports.publishTypecheckDiagnostics=publishTypecheckDiagnostics,exports.publishTypecheckRun=publishTypecheckRun,exports.buildTypecheckHeldEvent=buildTypecheckHeldEvent,exports.publishTypecheckHeld=publishTypecheckHeld;const tslib_1=require("tslib"),fs=tslib_1.__importStar(require("node:fs")),path=tslib_1.__importStar(require("node:path")),busHygiene=(()=>{try{return require("@lensmcp/node-instrumentation")}catch{return}})(),DIAG_LINE_REGEX=/^(.+?)\((\d+),(\d+)\):\s+(error|warning)\s+(TS\d+):\s+(.+)$/,ANSI_CSI=new RegExp("\x1B\\[[0-9;]*[A-Za-z]","g");function stripAnsi(e){return e.replace(ANSI_CSI,"")}i(stripAnsi,"stripAnsi"),n(stripAnsi,"stripAnsi"),o(stripAnsi,"stripAnsi");function parseTscDiagnosticLine(e){const r=stripAnsi(e).trim();if(!r)return null;const s=DIAG_LINE_REGEX.exec(r);if(!s)return null;const[,c,u,a,p,d,l]=s;return!c||!u||!a||!p||!d||!l?null:{file:c,line:Number(u),column:Number(a),severity:p==="warning"?"warning":"error",code:d,message:l}}i(parseTscDiagnosticLine,"parseTscDiagnosticLine"),n(parseTscDiagnosticLine,"parseTscDiagnosticLine"),o(parseTscDiagnosticLine,"parseTscDiagnosticLine");function parseTscOutput(e){const r=[];for(const s of e.split(`
|
|
2
|
+
`)){const c=parseTscDiagnosticLine(s);c&&r.push(c)}return r}i(parseTscOutput,"parseTscOutput"),n(parseTscOutput,"parseTscOutput"),o(parseTscOutput,"parseTscOutput"),exports.MAX_DIAGNOSTICS_PER_RUN=200;let idCounter=0;function makeId(){return idCounter=(idCounter+1)%65535,`${Date.now().toString(36)}${idCounter.toString(36)}${Math.random().toString(36).slice(2,8)}`}i(makeId,"makeId"),n(makeId,"makeId"),o(makeId,"makeId");function buildTypecheckRunEvents(e){const r=(e.now??Date.now)(),s=e.idImpl??makeId,c="pending",u={sessionId:c,source:"typescript",category:"typecheck",context:{sessionId:c,projectName:e.project}},a={project:e.project,tool:e.tool,...e.tsConfig?{tsConfig:e.tsConfig}:{}},p=e.diagnostics.filter(t=>t.severity==="error"),d=e.diagnostics.slice(0,exports.MAX_DIAGNOSTICS_PER_RUN),l=[];if(!e.toolError){l.push({...u,id:s(),timestamp:r,severity:"info",title:`tsc clear: ${e.project}`,message:`typecheck run starting for ${e.project}`,fingerprint:`tsc:${e.project}:run-start`,raw:{...a,kind:"typecheck-run",phase:"start"}});for(const t of d)l.push({...u,id:s(),timestamp:r,severity:t.severity,title:`${t.code}: ${t.message}`,message:t.message,location:{file:t.file,line:t.line,column:t.column},fingerprint:`tsc:${e.project}:${t.file}:${t.line}:${t.column}:${t.code}`,raw:{...a,kind:"typecheck-diagnostic",code:t.code}})}const h=e.toolError?"error":p.length>0?"failing":"clean";return l.push({...u,id:s(),timestamp:r,severity:"info",title:`typecheck run: ${e.project} \u2014 ${e.toolError?"tool error":`${p.length} error${p.length===1?"":"s"}`} (${e.durationMs}ms)`,...e.toolError?{message:e.toolError}:{},fingerprint:`tsc:${e.project}:run-end`,raw:{...a,kind:"typecheck-run",phase:"end",status:h,durationMs:e.durationMs,errorCount:p.length,warningCount:e.diagnostics.length-p.length,...e.diagnostics.length>d.length?{truncatedDiagnostics:e.diagnostics.length-d.length}:{},...e.toolError?{error:e.toolError}:{}}}),l}i(buildTypecheckRunEvents,"buildTypecheckRunEvents"),n(buildTypecheckRunEvents,"buildTypecheckRunEvents"),o(buildTypecheckRunEvents,"buildTypecheckRunEvents");function resolveEventFile(e){return process.env.LENSMCP_EVENT_FILE||path.join(e,".lensmcp","events.jsonl")}i(resolveEventFile,"resolveEventFile"),n(resolveEventFile,"resolveEventFile"),o(resolveEventFile,"resolveEventFile");let ensuredDir=null;function ensureDir(e){const r=path.dirname(e);ensuredDir!==r&&(fs.mkdirSync(r,{recursive:!0}),ensuredDir=r)}i(ensureDir,"ensureDir"),n(ensureDir,"ensureDir"),o(ensureDir,"ensureDir");function appendTypecheckEvents(e,r){if(r.length===0)return;const s=r.map(c=>JSON.stringify(c)).join(`
|
|
3
3
|
`)+`
|
|
4
|
-
`;try{ensureDir(
|
|
4
|
+
`;try{ensureDir(e),busHygiene?.maybeRotateEventFile(e,s.length),fs.appendFileSync(e,s)}catch(c){if(c?.code==="ENOENT"){try{ensuredDir=null,ensureDir(e),fs.appendFileSync(e,s)}catch{}return}}}i(appendTypecheckEvents,"appendTypecheckEvents"),n(appendTypecheckEvents,"appendTypecheckEvents"),o(appendTypecheckEvents,"appendTypecheckEvents");function publishTypecheckDiagnostics(e){const r=buildTypecheckRunEvents({project:e.project,tool:e.tool,...e.tsConfig?{tsConfig:e.tsConfig}:{},diagnostics:e.diagnostics,durationMs:e.durationMs});return appendTypecheckEvents(e.eventFile??resolveEventFile(e.workspaceRoot),r),r}i(publishTypecheckDiagnostics,"publishTypecheckDiagnostics"),n(publishTypecheckDiagnostics,"publishTypecheckDiagnostics"),o(publishTypecheckDiagnostics,"publishTypecheckDiagnostics");function publishTypecheckRun(e){const r=buildTypecheckRunEvents({project:e.project,tool:e.tool,...e.tsConfig?{tsConfig:e.tsConfig}:{},diagnostics:e.toolError?[]:parseTscOutput(e.output),durationMs:e.durationMs,...e.toolError?{toolError:e.toolError}:{}});return appendTypecheckEvents(e.eventFile??resolveEventFile(e.workspaceRoot),r),r}i(publishTypecheckRun,"publishTypecheckRun"),n(publishTypecheckRun,"publishTypecheckRun"),o(publishTypecheckRun,"publishTypecheckRun");function buildTypecheckHeldEvent(e){const r="pending";return{id:(e.idImpl??makeId)(),sessionId:r,timestamp:(e.now??Date.now)(),source:"typescript",category:"typecheck",severity:"info",context:{sessionId:r,projectName:e.project},title:`typecheck held: ${e.project} \u2014 ${e.availableMb} MB free, a check waits for ${e.minFreeMb} MB`,message:`the type check of ${e.project} waits until ${e.minFreeMb} MB is free (LENSMCP_TYPECHECK_MIN_FREE_MB)`,fingerprint:`tsc:${e.project}:run-held`,raw:{project:e.project,tool:e.tool,...e.tsConfig?{tsConfig:e.tsConfig}:{},kind:"typecheck-run",phase:"held",availableMb:e.availableMb,minFreeMb:e.minFreeMb}}}i(buildTypecheckHeldEvent,"buildTypecheckHeldEvent"),n(buildTypecheckHeldEvent,"buildTypecheckHeldEvent"),o(buildTypecheckHeldEvent,"buildTypecheckHeldEvent");function publishTypecheckHeld(e){const r=buildTypecheckHeldEvent(e);return appendTypecheckEvents(e.eventFile??resolveEventFile(e.workspaceRoot),[r]),r}i(publishTypecheckHeld,"publishTypecheckHeld"),n(publishTypecheckHeld,"publishTypecheckHeld"),o(publishTypecheckHeld,"publishTypecheckHeld");
|
package/typecheck-queue.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var D=Object.defineProperty;var c=(e,t)=>D(e,"name",{value:t,configurable:!0});var P=Object.defineProperty,i=c((e,t)=>P(e,"name",{value:t,configurable:!0}),"i"),x=Object.defineProperty,n=i((e,t)=>x(e,"name",{value:t,configurable:!0}),"n");Object.defineProperty(exports,"__esModule",{value:!0}),exports.immediateQueue=void 0,exports.typecheckQueueDir=typecheckQueueDir,exports.typecheckSlots=typecheckSlots,exports.typecheckMinFreeMb=typecheckMinFreeMb,exports.availableMemoryMb=availableMemoryMb,exports.liveTickets=liveTickets,exports.machineTypecheckQueue=machineTypecheckQueue;const tslib_1=require("tslib"),fs=tslib_1.__importStar(require("node:fs")),os=tslib_1.__importStar(require("node:os")),path=tslib_1.__importStar(require("node:path")),TICKET_SUFFIX=".ticket",DEFAULT_POLL_MS=250,DEFAULT_SETTLE_MS=120,DEFAULT_MAX_AGE_MS=15*6e4,MAX_SLOTS=8,DEFAULT_HOLD_POLL_MS=2e3,DEFAULT_MIN_FREE_MB=2048;function typecheckQueueDir(e=process.env){return path.join(e.LENSMCP_HOME||os.homedir(),".lensmcp","typecheck-queue")}c(typecheckQueueDir,"typecheckQueueDir"),i(typecheckQueueDir,"typecheckQueueDir"),n(typecheckQueueDir,"typecheckQueueDir");function typecheckSlots(e=process.env){const t=Number(e.LENSMCP_TYPECHECK_CONCURRENCY);return Number.isInteger(t)&&t>=1?Math.min(t,MAX_SLOTS):1}c(typecheckSlots,"typecheckSlots"),i(typecheckSlots,"typecheckSlots"),n(typecheckSlots,"typecheckSlots");function typecheckMinFreeMb(e=process.env){const t=e.LENSMCP_TYPECHECK_MIN_FREE_MB,s=Number(t);return t!==void 0&&t.trim()!==""&&Number.isFinite(s)&&s>=0?Math.round(s):DEFAULT_MIN_FREE_MB}c(typecheckMinFreeMb,"typecheckMinFreeMb"),i(typecheckMinFreeMb,"typecheckMinFreeMb"),n(typecheckMinFreeMb,"typecheckMinFreeMb");function availableMemoryMb(){const e=process.availableMemory;if(typeof e=="function")try{const t=e.call(process);return Number.isFinite(t)&&t>0?Math.round(t/(1024*1024)):void 0}catch{return}}c(availableMemoryMb,"availableMemoryMb"),i(availableMemoryMb,"availableMemoryMb"),n(availableMemoryMb,"availableMemoryMb");function pidAlive(e){try{return process.kill(e,0),!0}catch(t){return t.code==="EPERM"}}c(pidAlive,"pidAlive"),i(pidAlive,"pidAlive"),n(pidAlive,"pidAlive");const ticketPid=n(e=>{const t=Number(e.split("-")[0]);return Number.isInteger(t)&&t>0?t:void 0},"ticketPid");function liveTickets(e,t={}){const s=t.isAlive??pidAlive,f=(t.now??Date.now)(),M=t.maxAgeMs??DEFAULT_MAX_AGE_MS;let a;try{a=fs.readdirSync(e).filter(r=>r.endsWith(TICKET_SUFFIX))}catch{return[]}const u=[];for(const r of a){const o=path.join(e,r);let l;try{l=fs.statSync(o,{bigint:!0})}catch{continue}const y=ticketPid(r);if(y===void 0||!s(y)||f-Number(l.mtimeMs)>M){try{fs.unlinkSync(o)}catch{}continue}u.push({name:r,at:l.mtimeNs})}return u.sort((r,o)=>r.at<o.at?-1:r.at>o.at?1:r.name<o.name?-1:r.name>o.name?1:0),u.map(r=>r.name)}c(liveTickets,"liveTickets"),i(liveTickets,"liveTickets"),n(liveTickets,"liveTickets");let ticketSeq=0;function machineTypecheckQueue(e={}){const t=e.dir??typecheckQueueDir(),s=Math.max(1,e.slots??typecheckSlots()),f=e.pollMs??DEFAULT_POLL_MS,M=e.settleMs??DEFAULT_SETTLE_MS,a=e.pid??process.pid,u=e.minFreeMb??typecheckMinFreeMb(),r=e.availableMb??availableMemoryMb,o=e.holdPollMs??DEFAULT_HOLD_POLL_MS,l=n(()=>liveTickets(t,e),"scan"),y=n(()=>{if(u<=0)return;const m=r();return m!==void 0&&m<u?{availableMb:m,minFreeMb:u}:void 0},"memoryHold");return(m,L,A)=>{const S=`${a}-${(ticketSeq++).toString(36)}-${Math.random().toString(36).slice(2,8)}${TICKET_SUFFIX}`,E=path.join(t,S);let p=!1,v=!1,T=!1,d;const _=n(()=>{p||v||(v=!0,L())},"turn"),F=n(()=>{try{return fs.mkdirSync(t,{recursive:!0}),fs.writeFileSync(E,JSON.stringify({pid:a,label:m,at:(e.now??Date.now)()})),!0}catch{return!1}},"write"),h=n(b=>{d=setTimeout(k,b),d.unref?.()},"later");function k(){if(p||v)return;const b=l().indexOf(S);if(b===-1)return F()?h(M):_();if(b<s){const N=y();if(!N)return _();if(!T){T=!0;try{A?.onHold?.(N)}catch{}}return h(o)}h(f)}return c(k,"T"),i(k,"L"),n(k,"look"),F()?(h(M),{release(){if(!p){p=!0,d&&clearTimeout(d);try{fs.unlinkSync(E)}catch{}}}}):(_(),{release(){p=!0}})}}c(machineTypecheckQueue,"machineTypecheckQueue"),i(machineTypecheckQueue,"machineTypecheckQueue"),n(machineTypecheckQueue,"machineTypecheckQueue");const immediateQueue=n((e,t)=>(t(),{release(){}}),"immediateQueue");exports.immediateQueue=immediateQueue;
|
package/worker-guard.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var p=Object.defineProperty;var c=(e,r)=>p(e,"name",{value:r,configurable:!0});var n=Object.defineProperty,o=c((e,r)=>n(e,"name",{value:r,configurable:!0}),"o"),t=Object.defineProperty,s=o((e,r)=>t(e,"name",{value:r,configurable:!0}),"s");Object.defineProperty(exports,"__esModule",{value:!0});const worker_retire_1=require("./worker-retire"),orphanMs=(()=>{const e=Number(process.env.LENSMCP_WORKER_ORPHAN_MS);return Number.isFinite(e)&&e>=0&&process.env.LENSMCP_WORKER_ORPHAN_MS!==""?e:1e4})();if(typeof process.send=="function"&&process.channel){process.once("disconnect",()=>{for(const r of[process.stdout,process.stderr])r.on("error",()=>{});setTimeout(()=>process.exit(0),orphanMs).unref(),process.kill(process.pid,"SIGTERM")});const e=s(r=>{(0,worker_retire_1.isRetireMessage)(r)&&(process.off("message",e),(0,worker_retire_1.exitWhenIdle)({graceMs:(0,worker_retire_1.retireGraceMs)(),exit:s(i=>{try{process.stderr.write(`[worker-guard] ${i}
|
|
2
2
|
`)}catch{}process.exit(0)},"exit")}))},"onRetire");process.on("message",e),process.channel.unref()}
|
package/worker-retire.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var u=Object.defineProperty;var i=(e,t)=>u(e,"name",{value:t,configurable:!0});var _=Object.defineProperty,s=i((e,t)=>_(e,"name",{value:t,configurable:!0}),"s"),R=Object.defineProperty,n=s((e,t)=>R(e,"name",{value:t,configurable:!0}),"n");Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_RETIRE_GRACE_MS=exports.RETIRE_GRACE_ENV=exports.RETIRE_MESSAGE=void 0,exports.isRetireMessage=isRetireMessage,exports.retireGraceMs=retireGraceMs,exports.exitWhenIdle=exitWhenIdle,exports.RETIRE_MESSAGE="lensmcp-worker-retire",exports.RETIRE_GRACE_ENV="LENSMCP_WORKER_RETIRE_GRACE_MS",exports.DEFAULT_RETIRE_GRACE_MS=5e3;const POLL_MS=250;function isRetireMessage(e){return!!e&&typeof e=="object"&&e.type===exports.RETIRE_MESSAGE}i(isRetireMessage,"isRetireMessage"),s(isRetireMessage,"isRetireMessage"),n(isRetireMessage,"isRetireMessage");function retireGraceMs(e=process.env){const t=e[exports.RETIRE_GRACE_ENV]?.trim(),r=t?Number(t):NaN;return Number.isFinite(r)&&r>=0?r:exports.DEFAULT_RETIRE_GRACE_MS}i(retireGraceMs,"retireGraceMs"),s(retireGraceMs,"retireGraceMs"),n(retireGraceMs,"retireGraceMs");function exitWhenIdle(e){const t=e.globals??globalThis,r=t.__lensmcpActiveWork;if(typeof r!="function")return;const a=t.__lensmcpStopWorkIntake;if(typeof a=="function")try{a(Number.MAX_SAFE_INTEGER)}catch{}const l=e.now??Date.now;let o;const E=setInterval(()=>{let c;try{c=Number(r()?.count)}catch{return}if(Number.isFinite(c)){if(c>0){o=void 0;return}o??=l(),!(l()-o<e.graceMs)&&(clearInterval(E),e.exit(`retired: no job in flight for ${e.graceMs}ms and still running \u2014 exiting (its shutdown left a handle open)`))}},POLL_MS);return E.unref?.(),{cancel:n(()=>clearInterval(E),"cancel")}}i(exitWhenIdle,"exitWhenIdle"),s(exitWhenIdle,"exitWhenIdle"),n(exitWhenIdle,"exitWhenIdle");
|
package/worker-supervisor.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`):void 0)}a(buildWorkerCrashedEvent,"buildWorkerCrashedEvent"),i(buildWorkerCrashedEvent,"buildWorkerCrashedEvent");function buildWorkerExitedEvent(r,e,t=Date.now(),n=makeId){const s=e.reason??`it ended on its own (code 0) after ${spanOf(e.ranMs)}`;return envelope(r,"worker-exited","warning",`${r.service} worker ${r.worker} is not running \u2014 ${s}; not started again until the next build`,{ranMs:e.ranMs,...e.reason?{reason:e.reason}:{}},t,n)}a(buildWorkerExitedEvent,"buildWorkerExitedEvent"),i(buildWorkerExitedEvent,"buildWorkerExitedEvent");function buildWorkerStoppedEvent(r,e,t=Date.now(),n=makeId){return envelope(r,"worker-stopped","info",`${r.service} worker ${r.worker} stopped \u2014 ${e.reason}`,{reason:e.reason},t,n)}a(buildWorkerStoppedEvent,"buildWorkerStoppedEvent"),i(buildWorkerStoppedEvent,"buildWorkerStoppedEvent");
|
|
1
|
+
"use strict";var E=Object.defineProperty;var p=(r,e)=>E(r,"name",{value:e,configurable:!0});var k=Object.defineProperty,a=p((r,e)=>k(r,"name",{value:e,configurable:!0}),"a"),f=Object.defineProperty,i=a((r,e)=>f(r,"name",{value:e,configurable:!0}),"i");Object.defineProperty(exports,"__esModule",{value:!0}),exports.CRASH_LINES=exports.MIN_RESPAWN_MS=exports.CRASH_LOOP_AFTER=void 0,exports.serializeWorkerSpecs=serializeWorkerSpecs,exports.parseWorkerSpecs=parseWorkerSpecs,exports.workerEnv=workerEnv,exports.workerBackoff=workerBackoff,exports.respawnDelay=respawnDelay,exports.workerExitVerdict=workerExitVerdict,exports.spanOf=spanOf,exports.crashLines=crashLines,exports.buildWorkerStartedEvent=buildWorkerStartedEvent,exports.buildWorkerUpEvent=buildWorkerUpEvent,exports.buildWorkerCrashedEvent=buildWorkerCrashedEvent,exports.buildWorkerExitedEvent=buildWorkerExitedEvent,exports.buildWorkerStoppedEvent=buildWorkerStoppedEvent;const exit_reason_1=require("./exit-reason"),child_process_env_1=require("./child-process-env"),NAME_RE=/^[\w.-]+$/,ENV_KEY_RE=/^[A-Za-z_][A-Za-z0-9_]*$/;function serializeWorkerSpecs(r){return JSON.stringify(r.map(e=>({name:e.name,...e.env&&typeof e.env=="object"?{env:e.env}:{},...e.port!==void 0?{port:e.port}:{}})))}p(serializeWorkerSpecs,"serializeWorkerSpecs"),a(serializeWorkerSpecs,"serializeWorkerSpecs"),i(serializeWorkerSpecs,"serializeWorkerSpecs");function parseWorkerSpecs(r){const e=[];let t;try{t=JSON.parse(r||"[]")}catch{return{specs:[],problems:[`WORKERS is not JSON: ${String(r).slice(0,80)}`]}}if(!Array.isArray(t))return{specs:[],problems:["WORKERS is not a list"]};const n=[];for(const s of t){const o=typeof s=="string"?{name:s}:s,c=typeof o?.name=="string"?o.name:"";if(!NAME_RE.test(c)){e.push(`worker ${JSON.stringify(o?.name??s)} is not a plain file name \u2014 not started`);continue}if(n.some(l=>l.name===c)){e.push(`worker "${c}" is declared twice \u2014 started once`);continue}const u={};for(const[l,v]of Object.entries(o?.env&&typeof o.env=="object"?o.env:{})){if(!ENV_KEY_RE.test(l)){e.push(`worker "${c}": env ${JSON.stringify(l)} is not a variable name \u2014 left out`);continue}typeof v=="string"||typeof v=="number"||typeof v=="boolean"?u[l]=String(v):e.push(`worker "${c}": env ${l} is not a string, number or boolean \u2014 left out`)}let d=0;o?.port!==void 0&&(Number.isInteger(o.port)&&o.port>=0&&o.port<=65535?d=o.port:e.push(`worker "${c}": port ${JSON.stringify(o.port)} is not a port \u2014 it gets 0 (a free one)`)),n.push({name:c,env:u,port:d})}return{specs:n,problems:e}}p(parseWorkerSpecs,"parseWorkerSpecs"),a(parseWorkerSpecs,"parseWorkerSpecs"),i(parseWorkerSpecs,"parseWorkerSpecs");function workerEnv(r,e){const t={...r,PORT:String(e.port),...e.env,LENSMCP_WORKER:e.name};return delete t.WORKERS,(0,child_process_env_1.childProcessEnv)(t)}p(workerEnv,"workerEnv"),a(workerEnv,"workerEnv"),i(workerEnv,"workerEnv"),exports.CRASH_LOOP_AFTER=3;function envMs(r,e,t){const n=Number(r[e]);return r[e]!==void 0&&r[e]!==""&&Number.isFinite(n)&&n>=0?Math.floor(n):t}p(envMs,"envMs"),a(envMs,"envMs"),i(envMs,"envMs"),exports.MIN_RESPAWN_MS=100;function workerBackoff(r=process.env){const e=Math.max(exports.MIN_RESPAWN_MS,envMs(r,"LENSMCP_WORKER_BACKOFF_MS",1e3));return{baseMs:e,maxMs:Math.max(e,envMs(r,"LENSMCP_WORKER_BACKOFF_MAX_MS",6e4)),stableMs:envMs(r,"LENSMCP_WORKER_STABLE_MS",3e4)}}p(workerBackoff,"workerBackoff"),a(workerBackoff,"workerBackoff"),i(workerBackoff,"workerBackoff");function respawnDelay(r,e){const t=Math.max(1,Math.floor(r));return Math.min(e.maxMs,e.baseMs*2**Math.min(t-1,30))}p(respawnDelay,"respawnDelay"),a(respawnDelay,"respawnDelay"),i(respawnDelay,"respawnDelay");function workerExitVerdict(r,e,t){return t?{kind:"stopped"}:r===0&&!e?{kind:"exited"}:{kind:"crashed",external:e==="SIGTERM"||e==="SIGINT"||e==="SIGHUP"}}p(workerExitVerdict,"workerExitVerdict"),a(workerExitVerdict,"workerExitVerdict"),i(workerExitVerdict,"workerExitVerdict");function spanOf(r){return r<1e4?`${Math.round(r/100)/10} s`:r<12e4?`${Math.round(r/1e3)} s`:`${Math.round(r/6e4)} min`}p(spanOf,"spanOf"),a(spanOf,"spanOf"),i(spanOf,"spanOf"),exports.CRASH_LINES=12;const STACK_FRAMES=3,ANSI_SGR=/\x1b\[[0-9;]*m/g;function crashLines(r,e=exports.CRASH_LINES){const t=[];let n=0,s=0;const o=i(()=>{s&&t.push(` \u2026 ${s} more frame${s===1?"":"s"}`),s=0},"fold");for(const c of r){const u=c.replace(ANSI_SGR,"");if(/^\s+at\s/.test(u)){if(n+=1,n>STACK_FRAMES){s+=1;continue}}else o(),n=0;t.push(u)}return o(),t.slice(-e)}p(crashLines,"crashLines"),a(crashLines,"crashLines"),i(crashLines,"crashLines");let idCounter=0;function makeId(){return idCounter=(idCounter+1)%65535,`${Date.now().toString(36)}${idCounter.toString(36)}${Math.random().toString(36).slice(2,8)}`}p(makeId,"makeId"),a(makeId,"makeId"),i(makeId,"makeId");function envelope(r,e,t,n,s,o,c,u){const d="pending";return{id:c(),sessionId:d,timestamp:o,source:"gateway",category:"cluster",severity:t,context:{sessionId:d,projectName:r.project},fingerprint:`cluster-${e}:${r.service}`,title:n,...u?{message:u}:{},raw:{kind:e,project:r.project,service:r.service,worker:r.worker,pid:r.pid,podGeneration:r.podGeneration,...s}}}p(envelope,"envelope"),a(envelope,"envelope"),i(envelope,"envelope");function buildWorkerStartedEvent(r,e,t=Date.now(),n=makeId){const s=e.why==="respawn"?`started again (restart ${e.restarts})`:e.why==="reload"?"started on the new build":"started";return envelope(r,"worker-started","info",`${r.service} worker ${r.worker} ${s} \u2014 pid ${r.pid}`,{why:e.why,port:e.port,restarts:e.restarts},t,n)}p(buildWorkerStartedEvent,"buildWorkerStartedEvent"),a(buildWorkerStartedEvent,"buildWorkerStartedEvent"),i(buildWorkerStartedEvent,"buildWorkerStartedEvent");function buildWorkerUpEvent(r,e,t=Date.now(),n=makeId){return envelope(r,"worker-up","info",`${r.service} worker ${r.worker} is up again \u2014 ${spanOf(e.ranMs)} without a crash, after ${e.afterCrashes} in a row`,{ranMs:e.ranMs,afterCrashes:e.afterCrashes},t,n)}p(buildWorkerUpEvent,"buildWorkerUpEvent"),a(buildWorkerUpEvent,"buildWorkerUpEvent"),i(buildWorkerUpEvent,"buildWorkerUpEvent");function buildWorkerCrashedEvent(r,e,t=Date.now(),n=makeId){const s=e.crashes>=exports.CRASH_LOOP_AFTER,o=e.signal?e.signal:`exit ${e.code}`,c=s?`${r.service} worker ${r.worker} is crash-looping \u2014 ${e.crashes} crashes in a row (${o}); next start in ${spanOf(e.nextInMs)}`:`${r.service} worker ${r.worker} crashed (${o}${e.external?", a signal from outside its devserver":""}) after ${spanOf(e.ranMs)} \u2014 starting it again in ${spanOf(e.nextInMs)}`,u=e.external?`stopped by ${e.signal} from outside its devserver (\`kill\`, Activity Monitor)`:(0,exit_reason_1.describeExit)(e.code,e.signal),d=crashLines(e.lines);return envelope(r,"worker-crashed","error",c,{exitCode:e.code,signal:e.signal,ranMs:e.ranMs,crashes:e.crashes,restarts:e.restarts,nextInMs:e.nextInMs,crashLooping:s,external:e.external,...u?{reading:u}:{},lines:d},t,n,d.length?d.join(`
|
|
2
|
+
`):void 0)}p(buildWorkerCrashedEvent,"buildWorkerCrashedEvent"),a(buildWorkerCrashedEvent,"buildWorkerCrashedEvent"),i(buildWorkerCrashedEvent,"buildWorkerCrashedEvent");function buildWorkerExitedEvent(r,e,t=Date.now(),n=makeId){const s=e.reason??`it ended on its own (code 0) after ${spanOf(e.ranMs)}`;return envelope(r,"worker-exited","warning",`${r.service} worker ${r.worker} is not running \u2014 ${s}; not started again until the next build`,{ranMs:e.ranMs,...e.reason?{reason:e.reason}:{}},t,n)}p(buildWorkerExitedEvent,"buildWorkerExitedEvent"),a(buildWorkerExitedEvent,"buildWorkerExitedEvent"),i(buildWorkerExitedEvent,"buildWorkerExitedEvent");function buildWorkerStoppedEvent(r,e,t=Date.now(),n=makeId){return envelope(r,"worker-stopped","info",`${r.service} worker ${r.worker} stopped \u2014 ${e.reason}`,{reason:e.reason},t,n)}p(buildWorkerStoppedEvent,"buildWorkerStoppedEvent"),a(buildWorkerStoppedEvent,"buildWorkerStoppedEvent"),i(buildWorkerStoppedEvent,"buildWorkerStoppedEvent");
|
package/workspace-paths.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var v=Object.defineProperty;var d=(t,e)=>v(t,"name",{value:e,configurable:!0});var x=Object.defineProperty,f=d((t,e)=>x(t,"name",{value:e,configurable:!0}),"f"),h=Object.defineProperty,u=f((t,e)=>h(t,"name",{value:e,configurable:!0}),"u");Object.defineProperty(exports,"__esModule",{value:!0}),exports.WorkspacePathsResolverPlugin=void 0,exports.readWorkspacePaths=readWorkspacePaths,exports.hasPathMappings=hasPathMappings,exports.workspacePathCandidates=workspacePathCandidates;const tslib_1=require("tslib"),fs=tslib_1.__importStar(require("node:fs")),node_module_1=require("node:module"),path=tslib_1.__importStar(require("node:path"));function loadTypeScript(t){try{return(0,node_module_1.createRequire)(path.join(t,"package.json"))("typescript")}catch{return require("typescript")}}d(loadTypeScript,"loadTypeScript"),f(loadTypeScript,"loadTypeScript"),u(loadTypeScript,"loadTypeScript");function readWorkspacePaths(t,e){const i=path.resolve(e,t);if(!fs.existsSync(i))return null;try{const n=loadTypeScript(e),s=n.readJsonConfigFile(i,o=>n.sys.readFile(o)),a={...n.sys,readDirectory:u(()=>[],"readDirectory")},{options:r}=n.parseJsonSourceFileConfigFileContent(s,a,path.dirname(i),void 0,i),l=new Map,g=[];for(const[o,c]of Object.entries(r.paths??{})){if(!Array.isArray(c))continue;const p=o.indexOf("*");p===-1?l.set(o,c):o.indexOf("*",p+1)===-1&&g.push({key:o,prefix:o.slice(0,p),suffix:o.slice(p+1),targets:c})}return{configFiles:[i,...(s.extendedSourceFiles??[]).map(o=>path.resolve(o))],baseDir:r.baseUrl??r.pathsBasePath??path.dirname(i),...r.baseUrl?{baseUrl:r.baseUrl}:{},exact:l,patterns:g}}catch{return null}}d(readWorkspacePaths,"readWorkspacePaths"),f(readWorkspacePaths,"readWorkspacePaths"),u(readWorkspacePaths,"readWorkspacePaths");function hasPathMappings(t){return!!t&&(t.exact.size>0||t.patterns.length>0)}d(hasPathMappings,"hasPathMappings"),f(hasPathMappings,"hasPathMappings"),u(hasPathMappings,"hasPathMappings");function workspacePathCandidates(t,e){const i=[],n=t.exact.get(e);if(n)for(const s of n)i.push({file:path.resolve(t.baseDir,s),via:e});else{let s;for(const a of t.patterns)e.length<a.prefix.length+a.suffix.length||!e.startsWith(a.prefix)||!e.endsWith(a.suffix)||(!s||a.prefix.length>s.prefix.length)&&(s=a);if(s){const a=e.slice(s.prefix.length,e.length-s.suffix.length);for(const r of s.targets){const l=r.indexOf("*"),g=l===-1?r:r.slice(0,l)+a+r.slice(l+1);i.push({file:path.resolve(t.baseDir,g),via:s.key})}}}return t.baseUrl&&i.push({file:path.resolve(t.baseUrl,e),via:"baseUrl"}),i}d(workspacePathCandidates,"workspacePathCandidates"),f(workspacePathCandidates,"workspacePathCandidates"),u(workspacePathCandidates,"workspacePathCandidates");class WorkspacePathsResolverPlugin{static{d(this,"WorkspacePathsResolverPlugin")}static{f(this,"WorkspacePathsResolverPlugin")}static{u(this,"WorkspacePathsResolverPlugin")}constructor(e){this.paths=e}apply(e){const i=e.ensureHook("internal-resolve");e.getHook("normal-resolve").tapAsync("WorkspacePathsResolverPlugin",(n,s,a)=>{const r=n.request;if(!r||r.startsWith(".")||path.isAbsolute(r))return a();const l=workspacePathCandidates(this.paths,r);let g=0;const o=u(()=>{const c=l[g++];if(!c)return a();e.doResolve(i,{...n,request:c.file,fullySpecified:!1},`aliased with mapping '${c.via}' (tsconfig paths): '${r}' to '${c.file}'`,s,(p,P)=>{if(p)return a(p);if(P)return a(null,P);o()})},"attempt");o()})}}exports.WorkspacePathsResolverPlugin=WorkspacePathsResolverPlugin;
|