@lensmcp/cluster 1.25.34 → 1.25.36
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/config-files.d.ts +34 -0
- package/config-files.js +1 -0
- 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.d.ts +3 -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.d.ts +15 -0
- 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/types.d.ts +6 -2
- 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.d.ts +2 -2
- package/service-build-events.js +2 -2
- package/shared-build/attach.js +2 -2
- package/shared-build/host.d.ts +14 -1
- package/shared-build/host.js +3 -4
- 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
package/basic-ssl.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var C=Object.defineProperty;var o=(e,r)=>C(e,"name",{value:r,configurable:!0});var f=Object.defineProperty,c=o((e,r)=>f(e,"name",{value:r,configurable:!0}),"c"),p=Object.defineProperty,a=c((e,r)=>p(e,"name",{value:r,configurable:!0}),"a");Object.defineProperty(exports,"__esModule",{value:!0}),exports.CA_CERT_FILE=void 0,exports.caDir=caDir,exports.caCertPath=caCertPath,exports.getCertificateSync=getCertificateSync,exports.ensureCaSync=ensureCaSync;const tslib_1=require("tslib"),crypto=tslib_1.__importStar(require("node:crypto")),fs=tslib_1.__importStar(require("node:fs")),os=tslib_1.__importStar(require("node:os")),path=tslib_1.__importStar(require("node:path")),LEAF_MAX_AGE_MS=600*60*60*1e3,CA_TTL_DAYS=3650,CA_MIN_REMAINING_MS=720*60*60*1e3;exports.CA_CERT_FILE="lensmcp-local-ca.crt";const LEGACY_CA_CERT_FILE="davnx-local-ca.crt",CA_KEY_FILE="_ca-key.pem";function caDir(){const e=process.env.LENSMCP_HOME||os.homedir();return path.join(e,".lensmcp","ca")}o(caDir,"caDir"),c(caDir,"caDir"),a(caDir,"caDir");function caCertPath(){return path.join(caDir(),exports.CA_CERT_FILE)}o(caCertPath,"caCertPath"),c(caCertPath,"caCertPath"),a(caCertPath,"caCertPath");function getCertificateSync(e,r="lensmcp.dev",t=[]){const n=require("node-forge");fs.mkdirSync(e,{recursive:!0});const m=loadOrCreateCa(n,e),s=n.pki.certificateToPem(m.cert),i=crypto.createHash("sha256").update([r,...[...t].sort()].join("|")).digest("hex").slice(0,12),u=path.join(e,`_leaf-${i}.pem`);try{const l=fs.statSync(u);if(Date.now()-l.ctimeMs<LEAF_MAX_AGE_MS){const d=fs.readFileSync(u,"utf8");if(d.includes(s))return d}}catch{}const y=createLeafCertificate(n,m,r,t);fs.writeFileSync(u,y);for(const l of fs.readdirSync(e))if(/^_leaf-.*\.pem$/.test(l)&&l!==`_leaf-${i}.pem`||/^_cert.*\.pem$/.test(l)||/-dev\.crt$/.test(l)||l===LEGACY_CA_CERT_FILE)try{fs.unlinkSync(path.join(e,l))}catch{}return y}o(getCertificateSync,"getCertificateSync"),c(getCertificateSync,"getCertificateSync"),a(getCertificateSync,"getCertificateSync");function ensureCaSync(e){const r=require("node-forge");return loadOrCreateCa(r,e),caCertPath()}o(ensureCaSync,"ensureCaSync"),c(ensureCaSync,"ensureCaSync"),a(ensureCaSync,"ensureCaSync");function readCaPair(e,r){try{const t=r.pki.certificateFromPem(fs.readFileSync(path.join(e,exports.CA_CERT_FILE),"utf8")),n=r.pki.privateKeyFromPem(fs.readFileSync(path.join(e,CA_KEY_FILE),"utf8"));if(t.validity.notAfter.getTime()-Date.now()>CA_MIN_REMAINING_MS)return{cert:t,key:n}}catch{}}o(readCaPair,"readCaPair"),c(readCaPair,"readCaPair"),a(readCaPair,"readCaPair");function loadOrCreateCa(e,r){const t=caDir();fs.mkdirSync(t,{recursive:!0});const n=readCaPair(t,e);if(n)return n;for(const i of[CA_KEY_FILE,exports.CA_CERT_FILE])try{fs.unlinkSync(path.join(t,i))}catch{}const m=r&&r!==t?readCaPair(r,e):void 0,s=m??mintCa(e);try{fs.writeFileSync(path.join(t,CA_KEY_FILE),e.pki.privateKeyToPem(s.key),{mode:384,flag:"wx"})}catch(i){if(i.code!=="EEXIST")throw i;const u=spinReadCaPair(t,e);if(u)return u;throw new Error(`machine dev CA at ${t} is claimed but unreadable \u2014 remove the directory and retry`,{cause:i})}return fs.writeFileSync(path.join(t,exports.CA_CERT_FILE),e.pki.certificateToPem(s.cert)),m&&console.log(`[ssl] promoted the existing workspace dev CA to the machine store (${t}) \u2014 keychain trust carries over.`),s}o(loadOrCreateCa,"loadOrCreateCa"),c(loadOrCreateCa,"loadOrCreateCa"),a(loadOrCreateCa,"loadOrCreateCa");function spinReadCaPair(e,r){const t=Date.now()+2e3;for(;;){const n=readCaPair(e,r);if(n||Date.now()>=t)return n;Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,25)}}o(spinReadCaPair,"spinReadCaPair"),c(spinReadCaPair,"spinReadCaPair"),a(spinReadCaPair,"spinReadCaPair");function mintCa(e){const r=e.pki.rsa.generateKeyPair(2048),t=e.pki.createCertificate();t.publicKey=r.publicKey,t.serialNumber=`00${Date.now().toString(16)}`,t.validity.notBefore=new Date(Date.now()-1440*60*1e3),t.validity.notAfter=new Date,t.validity.notAfter.setDate(t.validity.notAfter.getDate()+CA_TTL_DAYS);const n=[{name:"commonName",value:"lensmcp local dev CA"},{name:"organizationName",value:"lensmcp"},{shortName:"OU",value:"dev"}];return t.setSubject(n),t.setIssuer(n),t.setExtensions([{name:"basicConstraints",cA:!0,critical:!0},{name:"keyUsage",keyCertSign:!0,cRLSign:!0,critical:!0},{name:"subjectKeyIdentifier"}]),t.sign(r.privateKey,e.md.sha256.create()),{cert:t,key:r.privateKey}}o(mintCa,"mintCa"),c(mintCa,"mintCa"),a(mintCa,"mintCa");function createLeafCertificate(e,r,t,n,m=30){const s=e.pki.rsa.generateKeyPair(2048),i=e.pki.createCertificate();i.publicKey=s.publicKey,i.serialNumber=`00${Date.now().toString(16)}`,i.validity.notBefore=new Date(Date.now()-1440*60*1e3),i.validity.notAfter=new Date,i.validity.notAfter.setDate(i.validity.notAfter.getDate()+m),i.setSubject([{name:"commonName",value:t},{name:"organizationName",value:"lensmcp"},{shortName:"OU",value:"dev"}]),i.setIssuer(r.cert.subject.attributes);const u=[{type:2,value:"localhost"},{type:2,value:"*.localhost"},{type:7,ip:"127.0.0.1"},{type:7,ip:"::1"},...[...new Set(n)].filter(y=>y&&y!=="localhost").map(y=>({type:2,value:y}))];return i.setExtensions([{name:"basicConstraints",cA:!1},{name:"keyUsage",digitalSignature:!0,keyEncipherment:!0,critical:!0},{name:"extKeyUsage",serverAuth:!0,clientAuth:!0},{name:"subjectAltName",altNames:u},{name:"subjectKeyIdentifier"}]),i.sign(r.key,e.md.sha256.create()),e.pki.privateKeyToPem(s.privateKey)+e.pki.certificateToPem(i)+e.pki.certificateToPem(r.cert)}o(createLeafCertificate,"createLeafCertificate"),c(createLeafCertificate,"createLeafCertificate"),a(createLeafCertificate,"createLeafCertificate");
|
package/build-host.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var m=Object.defineProperty;var l=(s,t)=>m(s,"name",{value:t,configurable:!0});var u=Object.defineProperty,p=l((s,t)=>u(s,"name",{value:t,configurable:!0}),"p"),d=Object.defineProperty,o=p((s,t)=>d(s,"name",{value:t,configurable:!0}),"o");Object.defineProperty(exports,"__esModule",{value:!0});const host_1=require("./shared-build/host"),protocol_1=require("./shared-build/protocol"),STOP_SIGNALS=["SIGTERM","SIGINT","SIGHUP"],GATEWAY_POLL_MS=5e3;function main(){const s=process.argv.find(e=>e.startsWith(protocol_1.BUILD_HOST_ROOT_FLAG))?.slice(protocol_1.BUILD_HOST_ROOT_FLAG.length);(!s||typeof process.send!="function")&&(console.error("[build-host] started without a workspace root or a gateway channel \u2014 only the dev gateway starts this process"),process.exit(1)),process.env.NODE_ENV="development";const t=o(e=>{if(process.connected)try{process.send(e,void 0,void 0,()=>{})}catch{}},"send"),n=Number(process.env.LENSMCP_BUILD_HOST_PAUSE_MS),c=new host_1.BuildHost({root:s,send:t,log:o(e=>console.log(e),"log"),...Number.isFinite(n)&&n>=0&&process.env.LENSMCP_BUILD_HOST_PAUSE_MS?{pauseMs:n}:{}});let i=!1;const a=o((e,_=0)=>{i||(i=!0,console.log(`stopping (${e})`),c.stop().finally(()=>process.exit(_)),setTimeout(()=>process.exit(_),8e3).unref())},"stop");for(const e of STOP_SIGNALS)process.on(e,()=>a(e));process.on("disconnect",()=>a("the gateway is gone"));const r=Number(process.env.LENSMCP_GATEWAY_PID??0);Number.isInteger(r)&&r>0&&setInterval(()=>{try{process.kill(r,0)}catch(e){e.code!=="EPERM"&&a(`gateway pid ${r} is gone`)}},GATEWAY_POLL_MS).unref(),process.on("message",e=>{i||!e||typeof e!="object"||(e.type==="join"?c.join(e.member,e.join):e.type==="leave"&&c.leave(e.member))}),t({type:"ready",pid:process.pid})}l(main,"main"),p(main,"main"),o(main,"main"),require.main===module&&main();
|
package/build-scope-patterns.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var $=Object.defineProperty;var f=(s,e)=>$(s,"name",{value:e,configurable:!0});var l=Object.defineProperty,i=f((s,e)=>l(s,"name",{value:e,configurable:!0}),"i"),a=Object.defineProperty,u=i((s,e)=>a(s,"name",{value:e,configurable:!0}),"u");Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildScopePatterns=buildScopePatterns;function buildScopePatterns(s){const e=[],c=[],p=[];for(const t of s){if(!t)continue;const o=t.match(/^\/(.+)\/([gimsuy]*)$/);if(o){const n=o[2].replace("g",""),r=new RegExp(o[1],n);e.push(r),p.push(r)}else if(t.includes("/")){const n=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");e.push(new RegExp(`^${n}`)),c.push(t)}else if(t.startsWith("@")){const n=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");e.push(new RegExp(`^${n}/`)),c.push(t.endsWith("/")?t:`${t}/`)}else{const n=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),r=new RegExp(`^${n}(/|$)`);e.push(r),p.push(r)}}return{allowlistPatterns:e,scopePrefixes:c,scopePatterns:p}}f(buildScopePatterns,"buildScopePatterns"),i(buildScopePatterns,"buildScopePatterns"),u(buildScopePatterns,"buildScopePatterns");
|
package/bundle-parent.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var i=Object.defineProperty;var a=(e,t)=>i(e,"name",{value:t,configurable:!0});var l=Object.defineProperty,o=a((e,t)=>l(e,"name",{value:t,configurable:!0}),"o"),d=Object.defineProperty,n=o((e,t)=>d(e,"name",{value:t,configurable:!0}),"n");Object.defineProperty(exports,"__esModule",{value:!0}),exports.loadParentFor=loadParentFor,exports.routeBundleRequires=routeBundleRequires;const tslib_1=require("tslib"),nodeModule=tslib_1.__importStar(require("node:module")),path=tslib_1.__importStar(require("node:path")),ModuleCtor=nodeModule.Module,standIns=new Map,isStandIn=new WeakSet;let wrapped=!1;function standInFor(e){const t=standIns.get(e);if(t)return t;const r=new ModuleCtor(e,null);return r.filename=e,r.paths=ModuleCtor._nodeModulePaths(path.dirname(e)),r.loaded=!0,standIns.set(e,r),isStandIn.add(r),r}a(standInFor,"standInFor"),o(standInFor,"standInFor"),n(standInFor,"standInFor");function loadParentFor(e){if(!e||typeof e!="object"||isStandIn.has(e))return e;const t=e.filename;return typeof t=="string"?standIns.get(t)??e:e}a(loadParentFor,"loadParentFor"),o(loadParentFor,"loadParentFor"),n(loadParentFor,"loadParentFor");function routeBundleRequires(...e){for(const r of e)standInFor(r);if(wrapped)return;wrapped=!0;const t=ModuleCtor._load;ModuleCtor._load=n(function(r,u,...s){return t.call(this,r,loadParentFor(u),...s)},"lensmcpBundleParent")}a(routeBundleRequires,"routeBundleRequires"),o(routeBundleRequires,"routeBundleRequires"),n(routeBundleRequires,"routeBundleRequires");
|
package/checkout-cache.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var l=Object.defineProperty;var c=(e,r)=>l(e,"name",{value:r,configurable:!0});var a=Object.defineProperty,t=c((e,r)=>a(e,"name",{value:r,configurable:!0}),"t"),u=Object.defineProperty,o=t((e,r)=>u(e,"name",{value:r,configurable:!0}),"o");Object.defineProperty(exports,"__esModule",{value:!0}),exports.ownsNodeModules=ownsNodeModules,exports.checkoutCacheDir=checkoutCacheDir;const tslib_1=require("tslib"),fs=tslib_1.__importStar(require("node:fs")),path=tslib_1.__importStar(require("node:path"));function ownsNodeModules(e){let r;try{r=fs.realpathSync(e)}catch{return!0}const n=path.join(r,"node_modules");for(const[s,d]of[[path.join(e,"node_modules"),n],[path.join(e,"node_modules",".cache"),path.join(n,".cache")]]){let i;try{i=fs.realpathSync(s)}catch{continue}if(i!==d)return!1}return!0}c(ownsNodeModules,"ownsNodeModules"),t(ownsNodeModules,"ownsNodeModules"),o(ownsNodeModules,"ownsNodeModules");function checkoutCacheDir(e,r){return ownsNodeModules(e)?path.join(e,"node_modules",".cache",r):path.join(e,".lensmcp","cache",r)}c(checkoutCacheDir,"checkoutCacheDir"),t(checkoutCacheDir,"checkoutCacheDir"),o(checkoutCacheDir,"checkoutCacheDir");
|
package/child-process-env.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var i=Object.defineProperty;var s=(t,e)=>i(t,"name",{value:e,configurable:!0});var o=Object.defineProperty,c=s((t,e)=>o(t,"name",{value:e,configurable:!0}),"c"),r=Object.defineProperty,n=c((t,e)=>r(t,"name",{value:e,configurable:!0}),"n");Object.defineProperty(exports,"__esModule",{value:!0}),exports.childProcessEnv=childProcessEnv;function childProcessEnv(t){const e={...t};return e.FORCE_COLOR!==void 0&&(delete e.NO_COLOR,delete e.NODE_DISABLE_COLORS),e}s(childProcessEnv,"childProcessEnv"),c(childProcessEnv,"childProcessEnv"),n(childProcessEnv,"childProcessEnv");
|
package/compile-retry.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var n=Object.defineProperty;var l=(t,r)=>n(t,"name",{value:r,configurable:!0});var c=Object.defineProperty,u=l((t,r)=>c(t,"name",{value:r,configurable:!0}),"u"),d=Object.defineProperty,s=u((t,r)=>d(t,"name",{value:r,configurable:!0}),"s");Object.defineProperty(exports,"__esModule",{value:!0}),exports.RETRY_AFTER_FAILURE_MS=void 0,exports.createFailureRetry=createFailureRetry,exports.RETRY_AFTER_FAILURE_MS=[2e3,5e3,15e3,3e4,6e4];function createFailureRetry(t,r=exports.RETRY_AFTER_FAILURE_MS){let a=0,e,i=!1;return{failed(){a+=1;const o=r[Math.min(a,r.length)-1]??6e4;return e&&clearTimeout(e),i||(e=setTimeout(()=>{e=void 0,i||t()},o),e.unref?.()),{delayMs:o,retry:a}},succeeded(){const o=a;return a=0,e&&(clearTimeout(e),e=void 0),o},dispose(){i=!0,e&&(clearTimeout(e),e=void 0)}}}l(createFailureRetry,"createFailureRetry"),u(createFailureRetry,"createFailureRetry"),s(createFailureRetry,"createFailureRetry");
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { DevWebpackOptions } from './create-webpack-dev';
|
|
2
|
+
/** The tsconfig, every file it extends (the `paths` may come from any of them), and the webpack override. */
|
|
3
|
+
export declare function configFilesOf(options: Pick<DevWebpackOptions, 'tsConfig' | 'workspaceRoot' | 'appRoot' | 'webpackConfigPath'>): string[];
|
|
4
|
+
export interface ConfigFilesPluginOptions {
|
|
5
|
+
/** The files to watch — read on every compilation, so a set that grows is watched as it grows. */
|
|
6
|
+
files(): Iterable<string>;
|
|
7
|
+
/** Some of them changed: called before the compile the change started (`watchRun`), with the ones that did. */
|
|
8
|
+
changed(paths: string[]): void;
|
|
9
|
+
}
|
|
10
|
+
/** The webpack hooks this taps. */
|
|
11
|
+
interface ConfigFilesCompiler {
|
|
12
|
+
hooks: {
|
|
13
|
+
watchRun: {
|
|
14
|
+
tap(name: string, fn: (compiler: {
|
|
15
|
+
modifiedFiles?: ReadonlySet<string>;
|
|
16
|
+
removedFiles?: ReadonlySet<string>;
|
|
17
|
+
}) => void): void;
|
|
18
|
+
};
|
|
19
|
+
afterCompile: {
|
|
20
|
+
tap(name: string, fn: (compilation: {
|
|
21
|
+
fileDependencies: {
|
|
22
|
+
add(file: string): void;
|
|
23
|
+
};
|
|
24
|
+
}) => void): void;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/** Watches {@link ConfigFilesPluginOptions.files} beside the modules, and says when one of them changed. */
|
|
29
|
+
export declare class ConfigFilesPlugin {
|
|
30
|
+
private readonly options;
|
|
31
|
+
constructor(options: ConfigFilesPluginOptions);
|
|
32
|
+
apply(compiler: ConfigFilesCompiler): void;
|
|
33
|
+
}
|
|
34
|
+
export {};
|
package/config-files.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var c=Object.defineProperty;var n=(e,i)=>c(e,"name",{value:i,configurable:!0});var a=Object.defineProperty,s=n((e,i)=>a(e,"name",{value:i,configurable:!0}),"s"),l=Object.defineProperty,t=s((e,i)=>l(e,"name",{value:i,configurable:!0}),"t");Object.defineProperty(exports,"__esModule",{value:!0}),exports.ConfigFilesPlugin=void 0,exports.configFilesOf=configFilesOf;const tslib_1=require("tslib"),path=tslib_1.__importStar(require("node:path")),workspace_paths_1=require("./workspace-paths");function configFilesOf(e){const i=((0,workspace_paths_1.readWorkspacePaths)(e.tsConfig,e.workspaceRoot)?.configFiles??[path.resolve(e.workspaceRoot,e.tsConfig)]).filter(o=>!o.split(path.sep).includes("node_modules"));return e.webpackConfigPath&&i.push(path.resolve(e.appRoot,e.webpackConfigPath)),[...new Set(i)]}n(configFilesOf,"configFilesOf"),s(configFilesOf,"configFilesOf"),t(configFilesOf,"configFilesOf");class ConfigFilesPlugin{static{n(this,"ConfigFilesPlugin")}static{s(this,"ConfigFilesPlugin")}static{t(this,"ConfigFilesPlugin")}constructor(i){this.options=i}apply(i){i.hooks.afterCompile.tap("LensmcpConfigFiles",o=>{for(const r of this.options.files())o.fileDependencies.add(r)}),i.hooks.watchRun.tap("LensmcpConfigFiles",o=>{if(!o.modifiedFiles&&!o.removedFiles)return;const r=new Set(this.options.files()),f=[...o.modifiedFiles??[],...o.removedFiles??[]].filter(p=>r.has(p));f.length>0&&this.options.changed([...new Set(f)])})}}exports.ConfigFilesPlugin=ConfigFilesPlugin;
|
package/create-webpack-dev.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var j=Object.defineProperty;var l=(t,e)=>j(t,"name",{value:e,configurable:!0});var T=Object.defineProperty,p=l((t,e)=>T(t,"name",{value:e,configurable:!0}),"p"),O=Object.defineProperty,c=p((t,e)=>O(t,"name",{value:e,configurable:!0}),"c");Object.defineProperty(exports,"__esModule",{value:!0}),exports.DevBuildFinalizePlugin=exports.DevServerReloadPlugin=exports.devserverControlSock=exports.DevserverNotifier=void 0,exports.devCacheOptions=devCacheOptions,exports.devModuleFilename=devModuleFilename,exports.createDevWebpackConfig=createDevWebpackConfig;const tslib_1=require("tslib"),app_plugin_1=require("@nx/webpack/app-plugin"),node_crypto_1=require("node:crypto"),fs=tslib_1.__importStar(require("node:fs")),path=tslib_1.__importStar(require("node:path")),webpack_node_externals_1=tslib_1.__importDefault(require("webpack-node-externals")),build_scope_patterns_1=require("./build-scope-patterns"),checkout_cache_1=require("./checkout-cache"),dev_devtool_1=require("./dev-devtool"),tsgo_check_plugin_1=require("./tsgo-check-plugin"),fork_ts_check_reporter_1=require("./fork-ts-check-reporter"),perf_rules_plugin_1=require("./perf/perf-rules-plugin"),devserver_notifier_1=require("./devserver-notifier"),workspace_paths_1=require("./workspace-paths");var devserver_notifier_2=require("./devserver-notifier");Object.defineProperty(exports,"DevserverNotifier",{enumerable:!0,get:c(function(){return devserver_notifier_2.DevserverNotifier},"get")}),Object.defineProperty(exports,"devserverControlSock",{enumerable:!0,get:c(function(){return devserver_notifier_2.devserverControlSock},"get")});const webpack=require("webpack");class DevServerReloadPlugin{static{l(this,"DevServerReloadPlugin")}static{p(this,"DevServerReloadPlugin")}static{c(this,"DevServerReloadPlugin")}constructor(e,r=!1,a,o=Number(process.env.LENSMCP_GATEWAY_PID??0)>0){this.notifier=new devserver_notifier_1.DevserverNotifier(e,r,a,o)}snapshot(){return this.notifier.snapshot()}apply(e){const r="DevServerReloadPlugin";let a=!1;e.hooks.watchRun?.tap(r,o=>{const i=[...o?.modifiedFiles??[],...o?.removedFiles??[]].filter(n=>typeof n=="string");if(!a){const n=o?.watchFileSystem?.watcher;n&&typeof n.on=="function"&&(a=!0,n.on("error",u=>this.notifier.degrade(`watcher error: ${u?.message??String(u)}`)))}this.notifier.watchRun(i)}),e.hooks.watchClose?.tap(r,()=>this.notifier.degrade("watch closed")),e.hooks.failed?.tap(r,o=>this.notifier.failed(`compiler failed: ${o?.message??String(o)}`)),e.hooks.done.tap(r,async o=>{if(o.hasErrors()){this.notifier.failed();return}await this.notifier.built()})}}exports.DevServerReloadPlugin=DevServerReloadPlugin;const DEV_CACHE_MEMORY_GENERATIONS=5,DEV_CACHE_MAX_AGE_MS=10080*60*1e3,LOCKFILES=["yarn.lock","package-lock.json","pnpm-lock.yaml","bun.lock"];function clusterVersion(){for(const t of[path.join(__dirname,"package.json"),path.join(__dirname,"..","package.json")])try{const e=JSON.parse(fs.readFileSync(t,"utf8"));if(e.name==="@lensmcp/cluster"&&e.version)return e.version}catch{}return"unknown"}l(clusterVersion,"clusterVersion"),p(clusterVersion,"clusterVersion"),c(clusterVersion,"clusterVersion");function devCacheOptions(t,e){const{appName:r,appRoot:a,workspaceRoot:o,tsConfig:i,webpackConfigPath:n}=t,u=clusterVersion(),k=JSON.stringify({lensmcp:u,devtool:e,buildLibsFromSource:t.buildLibsFromSource??!0,orgScopes:t.orgScopes??[],bundlePackages:t.bundlePackages??[],nodeExternalsConfig:t.nodeExternalsConfig??null}),f=c(g=>g.filter(v=>fs.existsSync(v)),"existing"),P=(0,workspace_paths_1.readWorkspacePaths)(i,o)?.configFiles??[path.resolve(o,i)],h={lensmcp:[__filename],lockfile:f(LOCKFILES.map(g=>path.join(o,g))),tsconfig:f([...new Set([...P,path.join(o,"tsconfig.base.json")])])};return n&&(h.overrides=[path.resolve(a,n)]),{type:"filesystem",cacheDirectory:(0,checkout_cache_1.checkoutCacheDir)(o,"lensmcp-webpack"),name:r.replace(/[^\w.-]+/g,"_"),version:`${u}-${(0,node_crypto_1.createHash)("sha256").update(k).digest("hex").slice(0,16)}`,buildDependencies:h,maxMemoryGenerations:DEV_CACHE_MEMORY_GENERATIONS,maxAge:DEV_CACHE_MAX_AGE_MS}}l(devCacheOptions,"devCacheOptions"),p(devCacheOptions,"devCacheOptions"),c(devCacheOptions,"devCacheOptions");function devModuleFilename(t){const e=t.absoluteResourcePath;return path.isAbsolute(e)?`file://${e}`:e}l(devModuleFilename,"devModuleFilename"),p(devModuleFilename,"devModuleFilename"),c(devModuleFilename,"devModuleFilename");class DevBuildFinalizePlugin{static{l(this,"DevBuildFinalizePlugin")}static{p(this,"DevBuildFinalizePlugin")}static{c(this,"DevBuildFinalizePlugin")}constructor(e){this.options=e}apply(e){const{cache:r}=this.options;e.options.cache={...r,buildDependencies:{...r.buildDependencies}},e.options.context&&(e.context=e.options.context);const a=e.options.resolve?.plugins??[];if(a.some(o=>o instanceof workspace_paths_1.WorkspacePathsResolverPlugin)){const o=new Set(a);e.hooks.afterPlugins.tap("DevBuildFinalizePlugin",()=>{const i=e.options.resolve;i.plugins=i.plugins.filter(n=>o.has(n)||n?.constructor?.name!=="TsconfigPathsPlugin")})}if(this.options.tsSourceMaps)for(const o of e.options.module?.rules??[])typeof o?.loader!="string"||!/[\\/]ts-loader[\\/]/.test(o.loader)||(o.options={...o.options,compilerOptions:{...o.options?.compilerOptions,sourceMap:!0,inlineSourceMap:!1}})}}exports.DevBuildFinalizePlugin=DevBuildFinalizePlugin;function createDevWebpackConfig(t){const{appRoot:e,outputDir:r,main:a,tsConfig:o,workspaceRoot:i,assets:n=[],port:u,memoryLimit:k=8192,buildLibsFromSource:f=!0,orgScopes:P=[],bundlePackages:h=[],additionalEntryPoints:g=[],nodeExternalsConfig:v,webpackConfigPath:C}=t,{allowlistPatterns:x,scopePrefixes:M,scopePatterns:R}=(0,build_scope_patterns_1.buildScopePatterns)(P),S=process.env.LENSMCP_TYPECHECK,w=S==="tsgo"?(0,tsgo_check_plugin_1.resolveTsgoBin)(i,process.env.LENSMCP_TSGO_BIN):null;if(S==="tsgo"&&!w){const s=`${tsgo_check_plugin_1.TSGO_MISSING_CAUSE}. Fell back to fork-ts-checker, which reports to the console only \u2014 so typecheck:// has no producer for this project until it is fixed`;console.warn(`[serve] ${t.appName}: LENSMCP_TYPECHECK=tsgo but ${s}.`),(0,tsgo_check_plugin_1.reportTsgoUnavailable)({appName:t.appName,tsConfig:o,workspaceRoot:i,detail:s})}const E=!!w,b=(0,dev_devtool_1.resolveDevDevtool)(t.devtool);b.rejected&&console.warn(`[serve] ${t.appName}: '${b.rejected}' (devtool / ${dev_devtool_1.DEV_DEVTOOL_ENV}) is not a webpack devtool \u2014 building with '${dev_devtool_1.DEFAULT_DEV_DEVTOOL}'.`);const m=b.devtool,D=f?(0,workspace_paths_1.readWorkspacePaths)(o,i):null,N=h.map(s=>new RegExp(`^${s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(/|$)`)),F=[/webpack\/hot\/poll\?100/,...x,...N,...v?.allowlist||[]],y={output:{path:r,...process.env.NODE_ENV!=="production"&&{devtoolModuleFilenameTemplate:devModuleFilename},clean:!0},externals:[(0,webpack_node_externals_1.default)({allowlist:F,additionalModuleDirs:v?.additionalModuleDirs||[],...v?.importType&&{importType:v.importType}}),({request:s},_)=>{if(s&&path.isAbsolute(s)&&s.startsWith(i)&&!s.includes("node_modules")||s&&(s.startsWith(path.join(i,"apps"))||s.startsWith(path.join(i,"libs")))||s&&M.some(d=>s.startsWith(d))||s&&R.some(d=>d.test(s))||s&&N.some(d=>d.test(s)))return _();if(s&&!(s.startsWith("./")||s.startsWith(".."))){const d=s.startsWith("@")?s.split("/").slice(0,2).join("/"):s.split("/")[0];return fs.existsSync(path.join(i,"node_modules",d))?_(null,`commonjs ${s}`):_()}return _()}],mode:"development",devtool:m,...(0,workspace_paths_1.hasPathMappings)(D)&&{resolve:{plugins:[new workspace_paths_1.WorkspacePathsResolverPlugin(D)]}},plugins:[new webpack.HotModuleReplacementPlugin,new app_plugin_1.NxAppWebpackPlugin({target:"node22",compiler:"tsc",main:a,additionalEntryPoints:g,verbose:!0,sourceMap:m,mergeExternals:!0,externalDependencies:[],memoryLimit:k,tsConfig:o,assets:n,optimization:!1,progress:!1,outputHashing:"none",generatePackageJson:!1,watchDependencies:!0,typeCheckOptions:process.env.LENSMCP_TYPECHECK==="off"||E?!1:{async:!0},buildLibsFromSource:f}),new DevBuildFinalizePlugin({cache:devCacheOptions(t,m),tsSourceMaps:(0,dev_devtool_1.bundleCarriesSourceMaps)(m)}),new DevServerReloadPlugin(u,t.httpsReload===!0,(0,devserver_notifier_1.devserverControlSock)(t.serviceName)),new perf_rules_plugin_1.PerfRulesPlugin({project:process.env.LENSMCP_PROJECT||t.appName,workspaceRoot:i,tsConfig:o}),...E?[new tsgo_check_plugin_1.TsgoCheckPlugin({appName:t.appName,tsConfig:o,workspaceRoot:i,...process.env.LENSMCP_TSGO_BIN?{binPath:process.env.LENSMCP_TSGO_BIN}:{}})]:process.env.LENSMCP_TYPECHECK==="off"?[]:[new fork_ts_check_reporter_1.ForkTsCheckReporterPlugin({appName:t.appName,tsConfig:o,workspaceRoot:i})]],snapshot:{managedPaths:[/^(.+?[\\/])?node_modules[\\/]/]},watch:!0,watchOptions:{ignored:["**/*.env.template","**/config.template.json","**/*.md","**/dist/**","**/migrations/**"]}};if(C){const s=require(path.resolve(e,C));return(s.default||s)(y)}return y}l(createDevWebpackConfig,"createDevWebpackConfig"),p(createDevWebpackConfig,"createDevWebpackConfig"),c(createDevWebpackConfig,"createDevWebpackConfig");
|
package/create-webpack-prod.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var T=Object.defineProperty;var g=(o,t)=>T(o,"name",{value:t,configurable:!0});var A=Object.defineProperty,d=g((o,t)=>A(o,"name",{value:t,configurable:!0}),"d"),F=Object.defineProperty,m=d((o,t)=>F(o,"name",{value:t,configurable:!0}),"m");Object.defineProperty(exports,"__esModule",{value:!0}),exports.createProdWebpackConfig=createProdWebpackConfig;const tslib_1=require("tslib"),app_plugin_1=require("@nx/webpack/app-plugin"),fs=tslib_1.__importStar(require("node:fs")),path=tslib_1.__importStar(require("node:path")),glob_1=require("glob"),webpack_node_externals_1=tslib_1.__importDefault(require("webpack-node-externals")),build_scope_patterns_1=require("./build-scope-patterns");function createProdWebpackConfig(o){const{appRoot:t,outputDir:k,main:_,tsConfig:b,workspaceRoot:r,assets:x=[],additionalEntryPoints:C=[],runtimeDependencies:j=[],memoryLimit:f=8192,generatePackageJson:W=!0,buildLibsFromSource:h=!1,ormConfigPath:c,migrationsDir:v="./src/migrations",orgScopes:w=[],bundlePackages:S=[],nodeExternalsConfig:a,webpackConfigPath:y}=o,{allowlistPatterns:q,scopePrefixes:D,scopePatterns:E}=(0,build_scope_patterns_1.buildScopePatterns)(w),P=S.map(e=>new RegExp(`^${e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(/|$)`)),L=[...q,...P,...a?.allowlist||[]];let s;if(c!==void 0)s=c?path.join(t,c):null;else{const e=path.join(t,"./src/ormconfig.ts");s=fs.existsSync(e)?e:null}const $=s&&fs.existsSync(s),p=[],u={externals:[(0,webpack_node_externals_1.default)({allowlist:L,additionalModuleDirs:a?.additionalModuleDirs||[],...a?.importType&&{importType:a.importType}}),({request:e},i)=>{if(e&&path.isAbsolute(e)&&e.startsWith(r)&&!e.includes("node_modules")||e&&(e.startsWith(path.join(r,"apps"))||e.startsWith(path.join(r,"libs")))||e&&D.some(n=>e.startsWith(n))||e&&E.some(n=>n.test(e))||e&&P.some(n=>n.test(e)))return i();if(e&&!(e.startsWith("./")||e.startsWith(".."))){const n=e.startsWith("@")?e.split("/").slice(0,2).join("/"):e.split("/")[0];return fs.existsSync(path.join(r,"node_modules",n))?i(null,`commonjs ${e}`):i()}return i()}],output:{path:k,clean:!1},devtool:"inline-source-map",mode:"production",plugins:[new app_plugin_1.NxAppWebpackPlugin({target:"node22",compiler:"tsc",main:_,additionalEntryPoints:C,externalDependencies:[],mergeExternals:!0,memoryLimit:f,tsConfig:b,assets:x,namedChunks:!0,optimization:!0,outputHashing:"none",generatePackageJson:W,runtimeDependencies:j,buildLibsFromSource:h,typeCheckOptions:{async:!1},sourceMap:"inline-source-map",progress:!1})]};if(p.push(u),$&&s){const e=[],i=path.join(t,v,"*.ts");(0,glob_1.globSync)(i).forEach(l=>{const O=path.basename(l,".ts");e.push({entryName:`migrations/${O}`,entryPath:l})});const n="./"+path.relative(t,s),M={...u,output:{...u.output,filename:m(l=>l.runtime==="main"?"ormconfig.js":"[name].js","filename"),library:{type:"commonjs"},clean:!1},devtool:!1,plugins:[new app_plugin_1.NxAppWebpackPlugin({target:"node22",compiler:"tsc",main:n,externalDependencies:[],additionalEntryPoints:e,mergeExternals:!0,tsConfig:b,assets:[],namedChunks:!0,memoryLimit:f,optimization:!1,outputHashing:"none",generatePackageJson:!1,buildLibsFromSource:h,skipTypeChecking:!0,sourceMap:!1,progress:!process.env.CI})]};p.push(M)}if(y){const e=require(path.resolve(t,y)),i=e.default||e;return p.map(n=>i(n))}return p}g(createProdWebpackConfig,"createProdWebpackConfig"),d(createProdWebpackConfig,"createProdWebpackConfig"),m(createProdWebpackConfig,"createProdWebpackConfig");
|
package/dev-devtool.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var n=(e,r)=>a(e,"name",{value:r,configurable:!0});var D=Object.defineProperty,E=n((e,r)=>D(e,"name",{value:r,configurable:!0}),"E"),t=Object.defineProperty,s=E((e,r)=>t(e,"name",{value:r,configurable:!0}),"s");Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEV_SOURCE_MAPS_ENV=exports.DEV_DEVTOOL_ENV=exports.DEFAULT_DEV_DEVTOOL=void 0,exports.resolveDevDevtool=resolveDevDevtool,exports.bundleCarriesSourceMaps=bundleCarriesSourceMaps,exports.sourceMapExecArgv=sourceMapExecArgv,exports.DEFAULT_DEV_DEVTOOL="eval",exports.DEV_DEVTOOL_ENV="LENSMCP_DEV_DEVTOOL",exports.DEV_SOURCE_MAPS_ENV="LENSMCP_DEV_SOURCE_MAPS";const DEVTOOL_PATTERN=/^(?:eval|(?:inline-|hidden-|eval-)?(?:nosources-)?(?:cheap-(?:module-)?)?source-map(?:-debugids)?)$/,NO_DEVTOOL=/^(?:false|off|none|0)$/i;function resolveDevDevtool(e,r=process.env){const o=e===!1?"false":(e??r[exports.DEV_DEVTOOL_ENV]??"").trim();return o?NO_DEVTOOL.test(o)?{devtool:!1}:DEVTOOL_PATTERN.test(o)?{devtool:o}:{devtool:exports.DEFAULT_DEV_DEVTOOL,rejected:o}:{devtool:exports.DEFAULT_DEV_DEVTOOL}}n(resolveDevDevtool,"resolveDevDevtool"),E(resolveDevDevtool,"resolveDevDevtool"),s(resolveDevDevtool,"resolveDevDevtool");function bundleCarriesSourceMaps(e){return typeof e=="string"&&e.includes("source-map")&&!e.startsWith("hidden-")}n(bundleCarriesSourceMaps,"bundleCarriesSourceMaps"),E(bundleCarriesSourceMaps,"bundleCarriesSourceMaps"),s(bundleCarriesSourceMaps,"bundleCarriesSourceMaps");function sourceMapExecArgv(e=process.env){return e[exports.DEV_SOURCE_MAPS_ENV]==="1"?["--enable-source-maps"]:[]}n(sourceMapExecArgv,"sourceMapExecArgv"),E(sourceMapExecArgv,"sourceMapExecArgv"),s(sourceMapExecArgv,"sourceMapExecArgv");
|
package/devserver-host.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var i=Object.defineProperty;var o=(r,v)=>i(r,"name",{value:v,configurable:!0});var n=Object.defineProperty,s=o((r,v)=>n(r,"name",{value:v,configurable:!0}),"s"),t=Object.defineProperty,e=s((r,v)=>t(r,"name",{value:v,configurable:!0}),"e");Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEVSERVER_IN_PROCESS_ENV=void 0,exports.exitCodeForSignal=exitCodeForSignal,exports.markServeRunner=markServeRunner,exports.devserverInProcessOffered=devserverInProcessOffered,exports.markDevserverInProcess=markDevserverInProcess,exports.devserverOwnsExit=devserverOwnsExit,exports.devserverStopExitCode=devserverStopExitCode,exports.resetDevserverHostForTests=resetDevserverHostForTests;const tslib_1=require("tslib"),os=tslib_1.__importStar(require("node:os"));exports.DEVSERVER_IN_PROCESS_ENV="LENSMCP_DEVSERVER_IN_PROCESS";const RUNNER_KEY="__lensmcpServeRunner",IN_PROCESS_KEY="__lensmcpDevserverInProcess",flags=globalThis;function exitCodeForSignal(r){return 128+(os.constants.signals[r]??0)}o(exitCodeForSignal,"exitCodeForSignal"),s(exitCodeForSignal,"exitCodeForSignal"),e(exitCodeForSignal,"exitCodeForSignal");function markServeRunner(){flags[RUNNER_KEY]=!0}o(markServeRunner,"markServeRunner"),s(markServeRunner,"markServeRunner"),e(markServeRunner,"markServeRunner");function devserverInProcessOffered(r=process.env){return flags[RUNNER_KEY]===!0&&r[exports.DEVSERVER_IN_PROCESS_ENV]?.trim()!=="0"}o(devserverInProcessOffered,"devserverInProcessOffered"),s(devserverInProcessOffered,"devserverInProcessOffered"),e(devserverInProcessOffered,"devserverInProcessOffered");function markDevserverInProcess(){flags[IN_PROCESS_KEY]=!0}o(markDevserverInProcess,"markDevserverInProcess"),s(markDevserverInProcess,"markDevserverInProcess"),e(markDevserverInProcess,"markDevserverInProcess");function devserverOwnsExit(){return flags[IN_PROCESS_KEY]===!0}o(devserverOwnsExit,"devserverOwnsExit"),s(devserverOwnsExit,"devserverOwnsExit"),e(devserverOwnsExit,"devserverOwnsExit");function devserverStopExitCode(r){if(!devserverOwnsExit())return 0;const v=os.constants.signals[r];return v===void 0?0:128+v}o(devserverStopExitCode,"devserverStopExitCode"),s(devserverStopExitCode,"devserverStopExitCode"),e(devserverStopExitCode,"devserverStopExitCode");function resetDevserverHostForTests(){delete flags[RUNNER_KEY],delete flags[IN_PROCESS_KEY]}o(resetDevserverHostForTests,"resetDevserverHostForTests"),s(resetDevserverHostForTests,"resetDevserverHostForTests"),e(resetDevserverHostForTests,"resetDevserverHostForTests");
|
package/devserver-notifier.d.ts
CHANGED
|
@@ -63,7 +63,9 @@ export declare class DevserverNotifier {
|
|
|
63
63
|
tellWatching(): void;
|
|
64
64
|
/**
|
|
65
65
|
* A build without errors finished. `reload: false` — the bundle this devserver loads did not change (a shared
|
|
66
|
-
* compilation rebuilt for another service): the testimony is updated, the pods are left alone
|
|
66
|
+
* compilation rebuilt for another service): the testimony is updated, the pods are left alone, and the build it
|
|
67
|
+
* ends goes with it as `unchanged` — announced as started, it ended in neither a swap nor a failure, and read as
|
|
68
|
+
* running for good (issues/closed/foodguard-114).
|
|
67
69
|
*/
|
|
68
70
|
built(reload?: boolean): Promise<void>;
|
|
69
71
|
}
|
package/devserver-notifier.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var A=Object.defineProperty;var g=(s,e)=>A(s,"name",{value:e,configurable:!0});var p=Object.defineProperty,u=g((s,e)=>p(s,"name",{value:e,configurable:!0}),"u"),m=Object.defineProperty,a=u((s,e)=>m(s,"name",{value:e,configurable:!0}),"a");Object.defineProperty(exports,"__esModule",{value:!0}),exports.DevserverNotifier=void 0,exports.devserverControlSock=devserverControlSock;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")),notice_generation_1=require("./notice-generation");class DevserverNotifier{static{g(this,"DevserverNotifier")}static{u(this,"DevserverNotifier")}static{a(this,"DevserverNotifier")}static{this.RECENT_PATH_CAP=32}static{this.BUILD_PATH_CAP=50}constructor(e,t=!1,i,o=Number(process.env.LENSMCP_GATEWAY_PID??0)>0,c=(0,notice_generation_1.generationFromEnv)()){this.testimony={schemaVersion:1,lastWatchRunAt:0,lastBuildAt:0,buildsSinceSpawn:0,degraded:!1,recentPaths:[]},this.managed=o,this.secure=t,this.base=`${t?"https":"http"}://localhost:${e}`,this.controlSock=i,this.generation=c}post(e,t){const i=JSON.stringify(t),o={"content-type":"application/json",...this.generation!==void 0?{[notice_generation_1.NOTICE_GENERATION_HEADER]:String(this.generation)}:{}},c=a((n,r,d)=>{if(n.statusCode!==409||this.generation===void 0){n.resume(),n.on("end",r);return}let h="";n.setEncoding("utf8"),n.on("data",l=>{h+=l}),n.on("end",()=>{let l;try{l=JSON.parse(h).generation}catch{}d(new notice_generation_1.NotThisGeneration(this.generation,l))})},"answered"),b=a(()=>new Promise((n,r)=>{const d=(this.secure?require("node:https"):require("node:http")).request(`${this.base}${e}`,{method:"POST",headers:o,rejectUnauthorized:!1},h=>c(h,n,r));d.on("error",r),d.end(i)}),"viaTcp"),v=this.controlSock;return!v||!fs.existsSync(v)?this.managed?Promise.reject(new Error("the devserver control socket is not up yet")):b():new Promise((n,r)=>{const d=require("node:http").request({socketPath:v,path:e,method:"POST",headers:o},h=>c(h,n,r));d.on("error",r),d.end(i)}).catch(n=>{if(this.managed||n instanceof notice_generation_1.NotThisGeneration)throw n;return b()})}snapshot(){return{...this.testimony,recentPaths:[...this.testimony.recentPaths]}}watchRun(e){if(this.testimony.lastWatchRunAt=Date.now(),e.length){const t=[...this.testimony.recentPaths,...e];this.testimony.recentPaths=t.slice(-DevserverNotifier.RECENT_PATH_CAP)}this.building??={startedAt:this.testimony.lastWatchRunAt,changed:new Set,more:0};for(const t of e)this.building.changed.has(t)||(this.building.changed.size>=DevserverNotifier.BUILD_PATH_CAP?this.building.more+=1:this.building.changed.add(t));this.testimony.building=this.buildAccount(),this.tellWatching()}buildAccount(){if(this.building)return{startedAt:this.building.startedAt,changedFiles:[...this.building.changed],...this.building.more>0?{moreChanged:this.building.more}:{}}}failed(e){const t=Date.now(),i=this.buildAccount()??(e!==void 0?{startedAt:t,changedFiles:[]}:void 0);this.building=void 0,delete this.testimony.building,this.testimony.lastFailedAt=t;const o=i?{...i,endedAt:t,...e?{error:e.slice(0,FAILURE_TEXT_CAP)}:{}}:void 0;this.post("/webpack/watching",{...this.testimony,...o?{failed:o}:{}}).catch(()=>{})}degrade(e){this.testimony.degraded=e,this.tellWatching()}tellWatching(){this.post("/webpack/watching",this.testimony).catch(()=>{})}async built(e=!0){this.testimony.lastBuildAt=Date.now(),this.testimony.buildsSinceSpawn+=1;const t=this.buildAccount();if(this.building=void 0,delete this.testimony.building,!e){const i=t?{...t,endedAt:this.testimony.lastBuildAt}:void 0;this.post("/webpack/watching",{...this.testimony,...i?{unchanged:i}:{}}).catch(()=>{});return}try{await this.post("/webpack/reload",{watcher:this.testimony,...t?{build:{...t,endedAt:this.testimony.lastBuildAt}}:{}}),console.log("[DevServerReloadPlugin] notified devserver to reload")}catch(i){i instanceof notice_generation_1.NotThisGeneration?console.log(`[DevServerReloadPlugin] not this generation's devserver (${i.message}) \u2014 not reloaded; this generation's devserver loads the build when it starts`):console.log("[DevServerReloadPlugin] devserver not running yet")}}}exports.DevserverNotifier=DevserverNotifier;const FAILURE_TEXT_CAP=500;function devserverControlSock(s,e=process.env){const t=e.LENSMCP_SOCK_NS||e.LENSMCP_WS_KEY||"",i=t?path.join(os.tmpdir(),t,`${s}-devserver`):path.join(os.tmpdir(),`${s}-devserver`);return path.join(i,"parent.sock")}g(devserverControlSock,"devserverControlSock"),u(devserverControlSock,"devserverControlSock"),a(devserverControlSock,"devserverControlSock");
|
package/devserver-transport.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var i=Object.defineProperty;var s=(e,r)=>i(e,"name",{value:r,configurable:!0});var o=Object.defineProperty,a=s((e,r)=>o(e,"name",{value:r,configurable:!0}),"a"),n=Object.defineProperty,t=a((e,r)=>n(e,"name",{value:r,configurable:!0}),"t");Object.defineProperty(exports,"__esModule",{value:!0}),exports.isOwnerOnlyTransport=isOwnerOnlyTransport,exports.gatewayManaged=gatewayManaged,exports.mayDriveThePool=mayDriveThePool;function isOwnerOnlyTransport(e){try{return typeof e.socket?.server?.address?.()=="string"}catch{return!1}}s(isOwnerOnlyTransport,"isOwnerOnlyTransport"),a(isOwnerOnlyTransport,"isOwnerOnlyTransport"),t(isOwnerOnlyTransport,"isOwnerOnlyTransport");function gatewayManaged(e=process.env){return Number(e.LENSMCP_GATEWAY_PID??0)>0}s(gatewayManaged,"gatewayManaged"),a(gatewayManaged,"gatewayManaged"),t(gatewayManaged,"gatewayManaged");function mayDriveThePool(e,r=gatewayManaged()){return!r||isOwnerOnlyTransport(e)}s(mayDriveThePool,"mayDriveThePool"),a(mayDriveThePool,"mayDriveThePool"),t(mayDriveThePool,"mayDriveThePool");
|
package/error-stack-release.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var F=Object.defineProperty;var f=(t,r)=>F(t,"name",{value:r,configurable:!0});var A=Object.defineProperty,l=f((t,r)=>A(t,"name",{value:r,configurable:!0}),"l"),k=Object.defineProperty,y=l((t,r)=>k(t,"name",{value:r,configurable:!0}),"y");Object.defineProperty(exports,"__esModule",{value:!0}),exports.errorFrameReleaseEnabled=errorFrameReleaseEnabled,exports.readStacksReachableFrom=readStacksReachableFrom,exports.createErrorFrameReleaser=createErrorFrameReleaser;const node_util_1=require("node:util");function errorFrameReleaseEnabled(t=process.env){const r=(t.LENSMCP_SWAP_RELEASE_ERROR_FRAMES??"").trim().toLowerCase();return!(r==="0"||r==="false"||r==="no"||r==="off")}f(errorFrameReleaseEnabled,"errorFrameReleaseEnabled"),l(errorFrameReleaseEnabled,"errorFrameReleaseEnabled"),y(errorFrameReleaseEnabled,"errorFrameReleaseEnabled");const BUILTINS=new Set([Object.prototype,Function.prototype,Array.prototype,Error.prototype,TypeError.prototype,RangeError.prototype,SyntaxError.prototype,ReferenceError.prototype,EvalError.prototype,URIError.prototype,AggregateError.prototype,Promise.prototype,Map.prototype,Set.prototype,WeakMap.prototype,WeakSet.prototype,RegExp.prototype,Date.prototype,Symbol.prototype,String.prototype,Number.prototype,Boolean.prototype,BigInt.prototype,Object,Function,Array,Error,Promise,Map,Set,Symbol,globalThis,process]),MAX_KEYS_PER_OBJECT=512,MAX_ARRAY_ITEMS=64,walkable=y(t=>typeof t=="object"&&t!==null||typeof t=="function","walkable");function readStacksReachableFrom(t,r={},p=new WeakSet){const u=r.maxDepth??5,E=r.maxPerRoot??4e3,R=r.maxNodes??4e5;let a=0,o=0;for(const n of t){if(a>=R)break;if(!walkable(n))continue;let S=0;const c=[[n,0]];for(let m=0;m<c.length&&S<E&&a<R;m++){const[e,b]=c[m];if(!(p.has(e)||BUILTINS.has(e))){p.add(e),a+=1,S+=1;try{if(node_util_1.types.isNativeError(e)){e.stack,o+=1;continue}if(node_util_1.types.isProxy(e)||node_util_1.types.isModuleNamespaceObject(e)||node_util_1.types.isPromise(e)||ArrayBuffer.isView(e)||node_util_1.types.isAnyArrayBuffer(e)||node_util_1.types.isMap(e)||node_util_1.types.isSet(e)||node_util_1.types.isWeakMap(e)||node_util_1.types.isWeakSet(e)||b>=u)continue;const d=Object.getPrototypeOf(e);if(walkable(d)&&c.push([d,b+1]),Array.isArray(e)){const i=Math.min(e.length,MAX_ARRAY_ITEMS);for(let s=0;s<i;s++){const g=e[s];walkable(g)&&c.push([g,b+1])}continue}const h=Reflect.ownKeys(e),v=Math.min(h.length,MAX_KEYS_PER_OBJECT);for(let i=0;i<v;i++){const s=Reflect.getOwnPropertyDescriptor(e,h[i]);s&&"value"in s&&walkable(s.value)&&c.push([s.value,b+1])}}catch{}}}}return{visited:a,errors:o}}f(readStacksReachableFrom,"readStacksReachableFrom"),l(readStacksReachableFrom,"readStacksReachableFrom"),y(readStacksReachableFrom,"readStacksReachableFrom");function createErrorFrameReleaser(t,r={}){const p=r.global??globalThis,u=new Set,E=new Set(Reflect.ownKeys(p)),R=new WeakSet;return()=>{const a=[];for(const o of Object.keys(t))if(!u.has(o)&&(u.add(o),!r.skip?.(o)))try{a.push(t[o]?.exports)}catch{}for(const o of Reflect.ownKeys(p)){if(E.has(o))continue;E.add(o);const n=Reflect.getOwnPropertyDescriptor(p,o);n&&"value"in n&&a.push(n.value)}return readStacksReachableFrom(a,r,R)}}f(createErrorFrameReleaser,"createErrorFrameReleaser"),l(createErrorFrameReleaser,"createErrorFrameReleaser"),y(createErrorFrameReleaser,"createErrorFrameReleaser");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var S=Object.defineProperty;var m=(e,o)=>S(e,"name",{value:o,configurable:!0});var x=Object.defineProperty,d=m((e,o)=>x(e,"name",{value:o,configurable:!0}),"d"),_=Object.defineProperty,p=d((e,o)=>_(e,"name",{value:o,configurable:!0}),"p");Object.defineProperty(exports,"__esModule",{value:!0});const tslib_1=require("tslib"),fs=tslib_1.__importStar(require("node:fs")),path=tslib_1.__importStar(require("node:path")),create_webpack_prod_1=require("../../create-webpack-prod"),webpack=require("webpack");async function*buildExecutor(e,o){process.env.NODE_ENV="production";const f=o.projectsConfigurations.projects[o.projectName],n=o.root,a=path.join(n,f.root),c=e.outputPath?path.join(n,e.outputPath):path.join(n,"dist",f.root),P=e.entryFile||"./src/deployments/service/main.ts",k=e.tsConfigFile||"./tsconfig.app.json",j=path.resolve(a,P),h=path.resolve(a,k),u=(0,create_webpack_prod_1.createProdWebpackConfig)({appName:o.projectName,appRoot:a,outputDir:c,main:j,tsConfig:h,assets:e.assets||[],additionalEntryPoints:[...(e.workers||[]).map(r=>({entryName:r.name,entryPath:r.entryPath})),...e.additionalEntryPoints||[]],runtimeDependencies:e.runtimeDependencies||[],memoryLimit:e.memoryLimit||8192,generatePackageJson:e.generatePackageJson!==!1,buildLibsFromSource:e.buildLibsFromSource||!1,ormConfigPath:e.ormConfigPath,migrationsDir:e.migrationsDir||"./src/migrations",workspaceRoot:n,orgScopes:e.orgScopes||[],bundlePackages:e.bundlePackages||[],nodeExternalsConfig:e.nodeExternalsConfig,webpackConfigPath:e.webpackConfigPath}),w=Array.isArray(u)?u:[u];for(const r of w){const{watch:l,...t}=r,s=webpack(t),i=await new Promise((v,C)=>{s.run((g,E)=>{if(g)return C(g);s.close(y=>{y&&console.error("[build] webpack close error:",y)}),v(E)})});if(console.info(i.toString(r.stats||{colors:!0,chunks:!1})),i.hasErrors()){yield{success:!1};return}}const b=e.workers||[];if(b.length>0){const{minify:r}=require("terser");for(const l of b){const t=path.join(c,`${l.name}.js`);if(fs.existsSync(t)){const s=fs.readFileSync(t,"utf-8"),i=await r(s,{keep_classnames:!0,sourceMap:{content:"inline",url:"inline"}});i.code&&(fs.writeFileSync(t,i.code),console.info(`[build] minified ${l.name}.js`))}}}yield{success:!0,outfile:path.join(c,"main.js")}}m(buildExecutor,"buildExecutor"),d(buildExecutor,"buildExecutor"),p(buildExecutor,"buildExecutor"),exports.default=buildExecutor,module.exports=buildExecutor,module.exports.default=buildExecutor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var b=Object.defineProperty;var a=(n,o)=>b(n,"name",{value:o,configurable:!0});var l=Object.defineProperty,d=a((n,o)=>l(n,"name",{value:o,configurable:!0}),"d"),u=Object.defineProperty,r=d((n,o)=>u(n,"name",{value:o,configurable:!0}),"r");Object.defineProperty(exports,"__esModule",{value:!0}),exports.requestCarriesBody=requestCarriesBody,exports.requestBodyArriving=requestBodyArriving,exports.createBodyStallGuard=createBodyStallGuard;const OFF={arm:r(()=>{},"arm"),armResponse:r(()=>{},"armResponse"),stop:r(()=>{},"stop")};function requestCarriesBody(n){const o=n.headers["content-length"];return String(n.headers["transfer-encoding"]??"").toLowerCase().includes("chunked")||typeof o=="string"&&Number(o)>0}a(requestCarriesBody,"requestCarriesBody"),d(requestCarriesBody,"requestCarriesBody"),r(requestCarriesBody,"requestCarriesBody");function requestBodyArriving(n){return requestCarriesBody(n)&&!n.complete&&!n.destroyed}a(requestBodyArriving,"requestBodyArriving"),d(requestBodyArriving,"requestBodyArriving"),r(requestBodyArriving,"requestBodyArriving");function createBodyStallGuard(n){if(!Number.isFinite(n)||n<=0)return OFF;const o=new Map,c=new Map,f=Math.max(500,Math.min(n,5e3)),y=setInterval(r(()=>{if(o.size===0&&c.size===0)return;const e=Date.now();for(const[t,s]of o){if(t.complete||t.destroyed||!t.socket||t.socket.destroyed){o.delete(t);continue}const i=t.socket.bytesRead;if(i!==s.bytes){s.bytes=i,s.since=e;continue}e-s.since>=n&&(o.delete(t),t.socket.destroy())}for(const[t,s]of c){const i=t.socket;if(t.writableEnded||t.destroyed||!i||i.destroyed){c.delete(t);continue}if(i.writableLength===0){s.bytes=i.bytesWritten,s.since=e;continue}if(i.bytesWritten!==s.bytes){s.bytes=i.bytesWritten,s.since=e;continue}e-s.since>=n&&(c.delete(t),i.destroy())}},"tick"),f);return y.unref?.(),{arm(e){if(!requestCarriesBody(e)||e.complete||!e.socket)return;o.set(e,{bytes:e.socket.bytesRead,since:Date.now()});const t=r(()=>{o.delete(e)},"done");e.on("end",t),e.on("close",t),e.on("aborted",t)},armResponse(e){const t=e.socket;if(!t||e.writableEnded||e.destroyed)return;c.set(e,{bytes:t.bytesWritten,since:Date.now()});const s=r(()=>{c.delete(e)},"done");e.on("finish",s),e.on("close",s)},stop(){clearInterval(y),o.clear(),c.clear()}}}a(createBodyStallGuard,"createBodyStallGuard"),d(createBodyStallGuard,"createBodyStallGuard"),r(createBodyStallGuard,"createBodyStallGuard");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var E=Object.defineProperty;var R=(e,t)=>E(e,"name",{value:t,configurable:!0});var x=Object.defineProperty,f=R((e,t)=>x(e,"name",{value:t,configurable:!0}),"f"),u=Object.defineProperty,r=f((e,t)=>u(e,"name",{value:t,configurable:!0}),"r");Object.defineProperty(exports,"__esModule",{value:!0}),exports.canonicalPath=exports.rememberRawTarget=exports.rawTargetOf=exports.RAW_TARGET=exports.canonicalize=exports.ENCODED_STRUCTURE=void 0,exports.ENCODED_STRUCTURE=/%2e|%2f|%5c|%00|\\/i;const NEEDS_NORMALIZE=/[%;#\\]|\/\/|(?:^|\/)\.{1,2}(?:\/|$)/,canonicalize=r(e=>{if(e.charCodeAt(0)!==47)return;const t=e.indexOf("?"),a=t===-1?e:e.slice(0,t),s=t===-1?"":e.slice(t);if(a.indexOf("\0")!==-1)return;if(!NEEDS_NORMALIZE.test(a))return{path:a,policy:a,query:s};if(exports.ENCODED_STRUCTURE.test(a))return;const c=a.split("#")[0].split("/").map(n=>n.split(";")[0]),i=[],p=[];for(const n of c){let o;try{o=decodeURIComponent(n)}catch{return}if(o.indexOf("\0")!==-1)return;if(!(o===""||o===".")){if(o==="..")return;i.push(n),p.push(o)}}const l=c[c.length-1],T=i.length>0&&(l===""||l===".")?"/":"";return{path:"/"+i.join("/")+T,policy:"/"+p.join("/")+T,query:s}},"canonicalize");exports.canonicalize=canonicalize,exports.RAW_TARGET=Symbol.for("lensmcp.gateway.rawTarget");const rawTargetOf=r(e=>e[exports.RAW_TARGET],"rawTargetOf");exports.rawTargetOf=rawTargetOf;const rememberRawTarget=r((e,t)=>{e[exports.RAW_TARGET]=t},"rememberRawTarget");exports.rememberRawTarget=rememberRawTarget;const canonicalPath=r(e=>(0,exports.canonicalize)(e)?.policy,"canonicalPath");exports.canonicalPath=canonicalPath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var m=Object.defineProperty;var c=(r,e)=>m(r,"name",{value:e,configurable:!0});var u=Object.defineProperty,f=c((r,e)=>u(r,"name",{value:e,configurable:!0}),"f"),a=Object.defineProperty,o=f((r,e)=>a(r,"name",{value:e,configurable:!0}),"o");Object.defineProperty(exports,"__esModule",{value:!0}),exports.stripPort=exports.normalizePeer=void 0,exports.createClientIpResolver=createClientIpResolver,exports.clientIpOptionsFromEnv=clientIpOptionsFromEnv;const manifest_1=require("./manifest"),first=o(r=>{const e=Array.isArray(r)?r[0]:r;return typeof e=="string"&&e.length>0?e:void 0},"first"),normalizePeer=o(r=>r.startsWith("::ffff:")&&r.indexOf(":",7)===-1?r.slice(7):r,"normalizePeer");exports.normalizePeer=normalizePeer;const stripPort=o(r=>{if(r.startsWith("[")){const p=r.indexOf("]");return p===-1?r:r.slice(1,p)}const e=r.indexOf(":");return e!==-1&&r.indexOf(":",e+1)===-1?r.slice(0,e):r},"stripPort");exports.stripPort=stripPort;function createClientIpResolver(r={}){const e=r.clientIpHeader?.toLowerCase(),p=r.clientIpTrustedProxies??[],l=Math.max(0,Math.floor(r.trustProxyHops??0)),d=o(t=>{if(!t)return!1;const n=t.startsWith("::ffff:")?t.slice(7):t;return p.length===0?n==="127.0.0.1"||t==="::1":p.some(i=>(0,manifest_1.matchCidr)(n,i))},"peerTrusted"),P=o(t=>String(t.headers["x-forwarded-for"]??"").split(",").map(n=>n.trim()).filter(Boolean),"forwardedChain");return{clientIpOf:o((t,n)=>{if(e&&d(t.socket?.remoteAddress??void 0)){const i=first(t.headers[e]);if(i){const s=(0,exports.stripPort)(i.split(",")[0].trim());if(s)return s}}if(l>0){const i=P(t),s=i.length-l;if(s>=0&&i[s])return(0,exports.stripPort)(i[s])}return(0,exports.normalizePeer)(n)},"clientIpOf"),forwardedFor:o((t,n)=>{const i=(0,exports.normalizePeer)(n);if(l>0||e&&d(n)){const s=P(t);return s.length?`${s.join(", ")}, ${i}`:i}return i},"forwardedFor"),peerTrusted:d,trustProxyHops:l}}c(createClientIpResolver,"createClientIpResolver"),f(createClientIpResolver,"createClientIpResolver"),o(createClientIpResolver,"createClientIpResolver");function clientIpOptionsFromEnv(r=process.env){const e=Number(r.LENSMCP_TRUST_PROXY),p=String(r.LENSMCP_CLIENT_IP_TRUSTED_PROXIES??"").split(",").map(l=>l.trim()).filter(Boolean);return{...Number.isFinite(e)&&e>0?{trustProxyHops:Math.floor(e)}:{},...r.LENSMCP_CLIENT_IP_HEADER?{clientIpHeader:r.LENSMCP_CLIENT_IP_HEADER}:{},...p.length?{clientIpTrustedProxies:p}:{}}}c(clientIpOptionsFromEnv,"clientIpOptionsFromEnv"),f(clientIpOptionsFromEnv,"clientIpOptionsFromEnv"),o(clientIpOptionsFromEnv,"clientIpOptionsFromEnv");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var y=Object.defineProperty;var o=(e,t)=>y(e,"name",{value:t,configurable:!0});var d=Object.defineProperty,n=o((e,t)=>d(e,"name",{value:t,configurable:!0}),"n"),s=Object.defineProperty,r=n((e,t)=>s(e,"name",{value:t,configurable:!0}),"r");Object.defineProperty(exports,"__esModule",{value:!0}),exports.GATEWAY_ERROR_CONTENT_TYPE=exports.GATEWAY_ERROR_KEY=void 0,exports.ensureRequestId=ensureRequestId,exports.gatewayErrorBody=gatewayErrorBody,exports.GATEWAY_ERROR_KEY={bad_request:"gateway.badRequest",unauthorized:"gateway.unauthorized",forbidden:"gateway.forbidden",not_found:"gateway.notFound",rate_limited:"gateway.rateLimited",starting:"gateway.starting",unavailable:"gateway.unavailable",internal:"gateway.internal"};const headerValue=r(e=>typeof e=="string"&&e!==""?e:Array.isArray(e)?e[0]:void 0,"headerValue"),mintId=r(()=>Date.now().toString(36)+Math.random().toString(36).slice(2,12),"mintId");function ensureRequestId(e){const t=headerValue(e.headers["x-request-id"]);if(t)return t;const a=mintId();return e.headers["x-request-id"]=a,a}o(ensureRequestId,"ensureRequestId"),n(ensureRequestId,"ensureRequestId"),r(ensureRequestId,"ensureRequestId");function gatewayErrorBody(e,t,a,i,u){return JSON.stringify({...u??{},key:exports.GATEWAY_ERROR_KEY[t],status:e,traceId:a,...i?{message:i}:{}})}o(gatewayErrorBody,"gatewayErrorBody"),n(gatewayErrorBody,"gatewayErrorBody"),r(gatewayErrorBody,"gatewayErrorBody"),exports.GATEWAY_ERROR_CONTENT_TYPE="application/json; charset=utf-8";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var y=Object.defineProperty;var p=(t,r)=>y(t,"name",{value:r,configurable:!0});var w=Object.defineProperty,i=p((t,r)=>w(t,"name",{value:r,configurable:!0}),"i"),u=Object.defineProperty,c=i((t,r)=>u(t,"name",{value:r,configurable:!0}),"c");Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=gatewayExecutor;const gateway_lib_1=require("./gateway.lib"),own_log_1=require("./runtime/own-log"),project_graph_store_1=require("./runtime/project-graph-store"),server_1=require("./runtime/server");async function gatewayExecutor(t,r){const l=(0,own_log_1.takeOverGatewayLog)();l&&console.log(`[gateway] ${new Date().toISOString()} writing ${l.file} itself (pid ${process.pid}) \u2014 a line a full disk refuses is counted, and the next line that lands says how many were lost`),process.on("uncaughtException",e=>{if((e.syscall==="read"||e.syscall==="write")&&server_1.BENIGN_SOCKET_ERRNOS.has(e.code??"")){console.warn(`[gateway] survived a stray socket ${e.syscall} error (${e.code}) \u2014 one connection dropped, the daemon lives`);return}console.error(e),process.exit(1)});let d;try{const e=(0,project_graph_store_1.createProjectGraphStore)(r.root,()=>(0,project_graph_store_1.computeProjectGraphInProcess)(r.root)),o=(await e.refresh())?.projectGraph,s=o?Object.fromEntries(Object.entries(o.dependencies).map(([n,a])=>[n,a.map(g=>g.target)])):void 0;d=await(0,gateway_lib_1.startGateway)(t,{...r,...s?{projectDependencies:s}:{},projectGraphStore:e})}catch(e){return console.error(e.message),{success:!1}}return new Promise(e=>{let o=!1;const s=c(n=>{if(o)return;o=!0;let a=!0;try{process.kill(process.ppid,0)}catch{a=!1}console.log(`[gateway] received ${n} (pid ${process.pid}, parent ${process.ppid} ${a?"alive":"gone \u2014 orphaned"}) \u2014 shutting down`),d.stop().then(()=>e({success:!0}))},"stop");process.on("SIGINT",()=>s("SIGINT")),process.on("SIGTERM",()=>s("SIGTERM"))})}p(gatewayExecutor,"gatewayExecutor"),i(gatewayExecutor,"gatewayExecutor"),c(gatewayExecutor,"gatewayExecutor"),module.exports=gatewayExecutor,module.exports.default=gatewayExecutor,module.exports.startGateway=gateway_lib_1.startGateway;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var c=Object.defineProperty;var i=(t,r)=>c(t,"name",{value:r,configurable:!0});var s=Object.defineProperty,n=i((t,r)=>s(t,"name",{value:r,configurable:!0}),"n"),o=Object.defineProperty,e=n((t,r)=>o(t,"name",{value:r,configurable:!0}),"e");Object.defineProperty(exports,"__esModule",{value:!0}),exports.projectSourceRoots=exports.discoverRoutes=exports.pickSock=exports.readLensScope=exports.deriveMcpHttpPort=exports.baseDomainOf=exports.stampIdentity=exports.verifyDevJwt=exports.startGateway=exports.hostMatches=void 0;var manifest_1=require("./manifest");Object.defineProperty(exports,"hostMatches",{enumerable:!0,get:e(function(){return manifest_1.hostMatches},"get")});var server_1=require("./runtime/server");Object.defineProperty(exports,"startGateway",{enumerable:!0,get:e(function(){return server_1.startGateway},"get")});var dev_auth_1=require("./runtime/dev-auth");Object.defineProperty(exports,"verifyDevJwt",{enumerable:!0,get:e(function(){return dev_auth_1.verifyDevJwt},"get")}),Object.defineProperty(exports,"stampIdentity",{enumerable:!0,get:e(function(){return dev_auth_1.stampIdentity},"get")});var scope_1=require("./runtime/scope");Object.defineProperty(exports,"baseDomainOf",{enumerable:!0,get:e(function(){return scope_1.baseDomainOf},"get")}),Object.defineProperty(exports,"deriveMcpHttpPort",{enumerable:!0,get:e(function(){return scope_1.deriveMcpHttpPort},"get")}),Object.defineProperty(exports,"readLensScope",{enumerable:!0,get:e(function(){return scope_1.readLensScope},"get")});var discovery_1=require("./runtime/discovery");Object.defineProperty(exports,"pickSock",{enumerable:!0,get:e(function(){return discovery_1.pickSock},"get")}),Object.defineProperty(exports,"discoverRoutes",{enumerable:!0,get:e(function(){return discovery_1.discoverRoutes},"get")}),Object.defineProperty(exports,"projectSourceRoots",{enumerable:!0,get:e(function(){return discovery_1.projectSourceRoots},"get")});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var H=Object.defineProperty;var i=(t,l)=>H(t,"name",{value:l,configurable:!0});var g=Object.defineProperty,c=i((t,l)=>g(t,"name",{value:l,configurable:!0}),"c"),C=Object.defineProperty,n=c((t,l)=>C(t,"name",{value:l,configurable:!0}),"n");Object.defineProperty(exports,"__esModule",{value:!0}),exports.createHealthChecker=createHealthChecker;function createHealthChecker(t={}){const l=t.path??"/healthz",y=t.intervalMs??5e3,u=t.timeoutMs??2e3,p=Math.max(1,t.unhealthyThreshold??2),d=Math.max(1,t.healthyThreshold??1),k=t.fetchImpl??globalThis.fetch,s=new Map;let r;const m=n(a=>a.replace(/\/+$/,"")+(l.startsWith("/")?l:"/"+l),"probeUrl"),b=n(async a=>{const e=s.get(a);if(!e)return;let h=!1;const f=new AbortController,v=setTimeout(()=>f.abort(),u);try{h=(await k(m(a),{method:"GET",signal:f.signal,redirect:"manual"})).status<500}catch{}finally{clearTimeout(v)}e.lastCheckedAt=Date.now(),h?(e.oks+=1,e.fails=0,!e.healthy&&e.oks>=d&&(e.healthy=!0,t.onChange?.(a,!0))):(e.fails+=1,e.oks=0,e.healthy&&e.fails>=p&&(e.healthy=!1,t.onChange?.(a,!1)))},"probe"),o=n(()=>Promise.allSettled([...s.keys()].map(b)).then(()=>{}),"probeOnce");return{track(a){const e=new Set(a);for(const h of a)s.has(h)||s.set(h,{healthy:!0,fails:0,oks:0,lastCheckedAt:null});for(const h of[...s.keys()])e.has(h)||s.delete(h)},isHealthy:n(a=>s.get(a)?.healthy??!0,"isHealthy"),snapshot:n(()=>[...s.entries()].map(([a,e])=>({url:a,healthy:e.healthy,fails:e.fails,lastCheckedAt:e.lastCheckedAt})),"snapshot"),probeOnce:o,start(){r||(r=setInterval(()=>{o()},y),r.unref?.(),o())},stop(){r&&clearInterval(r),r=void 0}}}i(createHealthChecker,"createHealthChecker"),c(createHealthChecker,"createHealthChecker"),n(createHealthChecker,"createHealthChecker");
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { IncomingMessage } from 'node:http';
|
|
1
2
|
export interface JwksVerifierOptions {
|
|
2
3
|
/** The IdP JWKS endpoint, e.g. `https://issuer/.well-known/jwks.json`. */
|
|
3
4
|
jwksUrl: string;
|
|
@@ -52,6 +53,14 @@ export interface JwksVerifier extends JwtVerifier {
|
|
|
52
53
|
* fetch nor a wait. True when the token's key is now cached. Never rejects.
|
|
53
54
|
*/
|
|
54
55
|
awaitKey(token: string): Promise<boolean>;
|
|
56
|
+
/**
|
|
57
|
+
* `verify`, except that a `kid` miss the shared refresh could still fix waits for it — the same ONE refresh, the
|
|
58
|
+
* same `missWaitMs` bound and the same cooldown as `awaitKey` — and is then verified against the refreshed set.
|
|
59
|
+
* Everything else is answered SYNCHRONOUSLY, never as a promise: a hit, a token refused before any key lookup, a
|
|
60
|
+
* miss inside the cooldown with nothing in flight. So a hot-path caller awaits only an `instanceof Promise` answer
|
|
61
|
+
* and a hit costs it no microtask. The promise never rejects.
|
|
62
|
+
*/
|
|
63
|
+
verifyOrAwait(token: string): Record<string, unknown> | undefined | Promise<Record<string, unknown> | undefined>;
|
|
55
64
|
/**
|
|
56
65
|
* Load the key set in the background, retrying with a capped exponential backoff until it lands or the attempts run
|
|
57
66
|
* out. For a boot whose IdP may not be up yet: it never throws, the caller never waits on it, and `stop()` cancels
|
|
@@ -59,4 +68,10 @@ export interface JwksVerifier extends JwtVerifier {
|
|
|
59
68
|
*/
|
|
60
69
|
warm(opts?: JwksWarmOptions): Promise<boolean>;
|
|
61
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* The prod gateway's `identify` over a JWKS verifier: the verified claims of the `Authorization: Bearer` token, a
|
|
73
|
+
* promise only on a `kid` miss the shared refresh could still fix ({@link JwksVerifier.verifyOrAwait}). One function
|
|
74
|
+
* for the entry (`main.prod-gateway.ts`) and the specs, so they drive the gateway through what the entry wires.
|
|
75
|
+
*/
|
|
76
|
+
export declare function bearerIdentify(verifier: Pick<JwksVerifier, 'verifyOrAwait'>): (req: IncomingMessage) => Record<string, unknown> | undefined | Promise<Record<string, unknown> | undefined>;
|
|
62
77
|
export declare function createJwksVerifier(opts: JwksVerifierOptions): JwksVerifier;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var V=Object.defineProperty;var m=(n,o)=>V(n,"name",{value:o,configurable:!0});var D=Object.defineProperty,w=m((n,o)=>D(n,"name",{value:o,configurable:!0}),"w"),W=Object.defineProperty,i=w((n,o)=>W(n,"name",{value:o,configurable:!0}),"i");Object.defineProperty(exports,"__esModule",{value:!0}),exports.bearerIdentify=bearerIdentify,exports.createJwksVerifier=createJwksVerifier;const node_crypto_1=require("node:crypto"),jwt_claims_js_1=require("./jwt-claims.js");function bearerIdentify(n){return o=>{const d=String(o.headers.authorization??"");return d.startsWith("Bearer ")?n.verifyOrAwait(d.slice(7)):void 0}}m(bearerIdentify,"bearerIdentify"),w(bearerIdentify,"bearerIdentify"),i(bearerIdentify,"bearerIdentify");const ALG_TO_HASH={RS256:"sha256",RS384:"sha384",RS512:"sha512"},b64urlJsonSafe=i(n=>JSON.parse(Buffer.from(n,"base64url").toString("utf8")),"b64urlJsonSafe");function createJwksVerifier(n){const o=(n.algorithms??["RS256"]).filter(r=>r in ALG_TO_HASH),d=n.cacheMaxAgeMs??6e5,J=n.missRefreshMs??3e4,O=n.missWaitMs??2e3,S=n.fetchTimeoutMs??1e4,P=n.clockToleranceSec??60,I=n.fetchImpl??globalThis.fetch,M=n.audience===void 0?void 0:Array.isArray(n.audience)?n.audience:[n.audience];let c=new Map,u,f,T=0,v=!1;const h=new Map,x=i(async r=>{const e=await I(n.jwksUrl,{headers:{accept:"application/json"},signal:r});if(!e.ok)throw new Error(`JWKS ${n.jwksUrl} \u2192 HTTP ${e.status}`);const t=await e.json(),a=new Map;for(const s of t.keys??[])if(!(s.kty!=="RSA"||!s.n||!s.e)&&!(s.use&&s.use!=="sig"))try{const b=(0,node_crypto_1.createPublicKey)({key:s,format:"jwk"});a.set(s.kid??"__single__",b)}catch{}a.size>0&&(c=a)},"load"),y=i(()=>{if(!u){const r=new AbortController;u=new Promise((e,t)=>{const a=setTimeout(()=>{r.abort(),t(new Error(`JWKS ${n.jwksUrl} \u2192 no answer in ${S} ms`))},S);a.unref?.(),x(r.signal).then(()=>{clearTimeout(a),e()},s=>{clearTimeout(a),t(s)})}).finally(()=>{u=void 0})}return u},"refresh"),p=i(()=>{if(f)return f;if(!(!u&&Date.now()<T))return f=y().catch(()=>{}).finally(()=>{f=void 0,T=Date.now()+J}),f},"refreshOnMiss"),j=setInterval(()=>{y().catch(()=>{})},d);j.unref?.();const g=i(r=>{const e=r.split(".");if(e.length!==3)return;let t;try{t=b64urlJsonSafe(e[0])}catch{return}if(!(!t.alg||!o.includes(t.alg)))return{parts:e,header:t}},"parse"),l=i(r=>r.kid!==void 0?c.get(r.kid):c.get("__single__")??(c.size===1?[...c.values()][0]:void 0),"keyFor"),k=i(({parts:r,header:e},t)=>{let a;try{a=(0,node_crypto_1.verify)(ALG_TO_HASH[e.alg],Buffer.from(`${r[0]}.${r[1]}`),t,Buffer.from(r[2],"base64url"))}catch{return}if(!a)return;let s;try{s=b64urlJsonSafe(r[1])}catch{return}if((0,jwt_claims_js_1.checkStandardClaims)(s,{...n.issuer?{issuer:n.issuer}:{},...M?{audience:M}:{},clockToleranceS:P}))return s},"verifyWith"),R=i(r=>{const e=g(r);if(!e)return;const t=l(e.header);if(!t){p();return}return k(e,t)},"verify"),A=i(async r=>{let e;await Promise.race([r,new Promise(t=>{e=setTimeout(t,O),e.unref?.()})]),clearTimeout(e)},"waitBounded"),$=i(async r=>{const e=g(r);if(!e)return!1;if(l(e.header))return!0;const t=p();return t?(await A(t),l(e.header)!==void 0):!1},"awaitKey"),B=i(r=>{const e=g(r);if(!e)return;const t=l(e.header);if(t)return k(e,t);const a=p();if(a)return A(a).then(()=>{const s=l(e.header);return s?k(e,s):void 0})},"verifyOrAwait"),K=i(r=>new Promise(e=>{const t=setTimeout(()=>{h.delete(t),e()},r);t.unref?.(),h.set(t,e)}),"sleep");return{verify:R,refresh:y,awaitKey:$,verifyOrAwait:B,warm:i(async(r={})=>{const e=Math.max(1,r.attempts??8),t=r.baseDelayMs??1e3,a=r.maxDelayMs??3e4;for(let s=1;!v;s++)try{return await y(),!0}catch(b){if(v)return!1;const _=s<e?Math.min(a,t*2**(s-1)):void 0;try{r.onError?.(b,s,_)}catch{}if(_===void 0)return!1;await K(_)}return!1},"warm"),stop:i(()=>{v=!0,clearInterval(j);for(const[r,e]of h)clearTimeout(r),e();h.clear()},"stop")}}m(createJwksVerifier,"createJwksVerifier"),w(createJwksVerifier,"createJwksVerifier"),i(createJwksVerifier,"createJwksVerifier");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var f=Object.defineProperty;var n=(e,r)=>f(e,"name",{value:r,configurable:!0});var o=Object.defineProperty,t=n((e,r)=>o(e,"name",{value:r,configurable:!0}),"t"),c=Object.defineProperty,u=t((e,r)=>c(e,"name",{value:r,configurable:!0}),"u");Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_CLOCK_TOLERANCE_S=void 0,exports.checkStandardClaims=checkStandardClaims,exports.DEFAULT_CLOCK_TOLERANCE_S=60;function checkStandardClaims(e,r){const s=r.clockToleranceS??exports.DEFAULT_CLOCK_TOLERANCE_S,i=Date.now()/1e3;if(typeof e.exp=="number"&&i>e.exp+s||typeof e.nbf=="number"&&i<e.nbf-s||r.issuer&&e.iss!==r.issuer)return!1;if(r.audience&&r.audience.length>0){const a=e.aud;if(!(Array.isArray(a)?a:[a]).some(d=>typeof d=="string"&&r.audience.includes(d)))return!1}return!0}n(checkStandardClaims,"checkStandardClaims"),t(checkStandardClaims,"checkStandardClaims"),u(checkStandardClaims,"checkStandardClaims");
|