@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.
Files changed (144) hide show
  1. package/basic-ssl.js +1 -1
  2. package/build-host.js +1 -1
  3. package/build-scope-patterns.js +1 -1
  4. package/bundle-parent.js +1 -1
  5. package/checkout-cache.js +1 -1
  6. package/child-process-env.js +1 -1
  7. package/compile-retry.js +1 -1
  8. package/config-files.d.ts +34 -0
  9. package/config-files.js +1 -0
  10. package/create-webpack-dev.js +1 -1
  11. package/create-webpack-prod.js +1 -1
  12. package/dev-devtool.js +1 -1
  13. package/devserver-host.js +1 -1
  14. package/devserver-notifier.d.ts +3 -1
  15. package/devserver-notifier.js +1 -1
  16. package/devserver-transport.js +1 -1
  17. package/error-stack-release.js +1 -1
  18. package/executors/build/build.impl.js +1 -1
  19. package/executors/gateway/body-stall.js +1 -1
  20. package/executors/gateway/canonical-path.js +1 -1
  21. package/executors/gateway/client-ip.js +1 -1
  22. package/executors/gateway/gateway-errors.js +1 -1
  23. package/executors/gateway/gateway.impl.js +1 -1
  24. package/executors/gateway/gateway.lib.js +1 -1
  25. package/executors/gateway/health-check.js +1 -1
  26. package/executors/gateway/jwks-verify.d.ts +15 -0
  27. package/executors/gateway/jwks-verify.js +1 -1
  28. package/executors/gateway/jwt-claims.js +1 -1
  29. package/executors/gateway/main.prod-gateway.js +2 -2
  30. package/executors/gateway/main.rollout.js +4 -4
  31. package/executors/gateway/manifest.js +1 -1
  32. package/executors/gateway/metrics.js +1 -1
  33. package/executors/gateway/otel-tracing.js +1 -1
  34. package/executors/gateway/prod-config.js +1 -1
  35. package/executors/gateway/prod-gateway.lib.js +1 -1
  36. package/executors/gateway/prod-runtime/access-log.js +1 -1
  37. package/executors/gateway/prod-runtime/app.js +1 -1
  38. package/executors/gateway/prod-runtime/auth.js +1 -1
  39. package/executors/gateway/prod-runtime/body-stall.js +1 -1
  40. package/executors/gateway/prod-runtime/cors.js +1 -1
  41. package/executors/gateway/prod-runtime/edge.js +1 -1
  42. package/executors/gateway/prod-runtime/handler.js +1 -1
  43. package/executors/gateway/prod-runtime/hooks.js +1 -1
  44. package/executors/gateway/prod-runtime/observability.js +1 -1
  45. package/executors/gateway/prod-runtime/rollout.js +1 -1
  46. package/executors/gateway/prod-runtime/routing.js +1 -1
  47. package/executors/gateway/prod-runtime/server.js +1 -1
  48. package/executors/gateway/prod-runtime/trust.js +1 -1
  49. package/executors/gateway/prod-runtime/types.d.ts +6 -2
  50. package/executors/gateway/prod-runtime/upgrade.js +7 -7
  51. package/executors/gateway/prod-runtime/upstream.js +1 -1
  52. package/executors/gateway/providers-prod.js +1 -1
  53. package/executors/gateway/rate-limit.js +2 -2
  54. package/executors/gateway/registry-source.js +1 -1
  55. package/executors/gateway/rollout-ops.js +2 -2
  56. package/executors/gateway/runtime/act.js +1 -1
  57. package/executors/gateway/runtime/auth.js +1 -1
  58. package/executors/gateway/runtime/chooser.js +12 -12
  59. package/executors/gateway/runtime/control.js +2 -2
  60. package/executors/gateway/runtime/dev-auth.js +1 -1
  61. package/executors/gateway/runtime/discovery.js +1 -1
  62. package/executors/gateway/runtime/edge.js +1 -1
  63. package/executors/gateway/runtime/guest-graph.js +2 -2
  64. package/executors/gateway/runtime/guest-replay.js +2 -2
  65. package/executors/gateway/runtime/handler.js +1 -1
  66. package/executors/gateway/runtime/hmr-reload.js +1 -1
  67. package/executors/gateway/runtime/hooks.js +1 -1
  68. package/executors/gateway/runtime/hosted-dashboard.js +1 -1
  69. package/executors/gateway/runtime/instance.js +2 -2
  70. package/executors/gateway/runtime/lens-children.js +1 -1
  71. package/executors/gateway/runtime/lifecycle.js +3 -3
  72. package/executors/gateway/runtime/observability.js +3 -3
  73. package/executors/gateway/runtime/orphan-reaper.js +2 -2
  74. package/executors/gateway/runtime/own-log.js +6 -6
  75. package/executors/gateway/runtime/pod-env.js +2 -2
  76. package/executors/gateway/runtime/pod-output.js +1 -1
  77. package/executors/gateway/runtime/pod-probe.js +1 -1
  78. package/executors/gateway/runtime/process-names.js +1 -1
  79. package/executors/gateway/runtime/project-graph-store.js +1 -1
  80. package/executors/gateway/runtime/proxy.js +1 -1
  81. package/executors/gateway/runtime/registration-guards.js +1 -1
  82. package/executors/gateway/runtime/route-registry.js +1 -1
  83. package/executors/gateway/runtime/scope.js +1 -1
  84. package/executors/gateway/runtime/serve-launch.js +3 -3
  85. package/executors/gateway/runtime/server.js +2 -2
  86. package/executors/gateway/runtime/service-keys.js +1 -1
  87. package/executors/gateway/runtime/shared-build.js +3 -3
  88. package/executors/gateway/runtime/source-poller.js +1 -1
  89. package/executors/gateway/runtime/types.js +1 -1
  90. package/executors/gateway/runtime/upgrade.js +1 -1
  91. package/executors/gateway/runtime/warm-start.js +1 -1
  92. package/executors/gateway/runtime/workspace-log.js +1 -1
  93. package/executors/gateway/runtime/workspace-middleware.js +1 -1
  94. package/executors/gateway/runtime/workspace-registry.js +1 -1
  95. package/executors/gateway/ssrf-guard.js +1 -1
  96. package/executors/serve/serve.impl.js +1 -1
  97. package/executors/serve/stop-on-signal.js +1 -1
  98. package/executors/trust/hostname.js +1 -1
  99. package/executors/trust/trust.impl.js +3 -3
  100. package/exit-reason.js +2 -2
  101. package/fork-ts-check-reporter.js +1 -1
  102. package/gateway.js +1 -1
  103. package/gc-notice.js +1 -1
  104. package/graph-snapshot.js +1 -1
  105. package/handoff-retire.js +1 -1
  106. package/heap-snapshot.js +1 -1
  107. package/hot-swap-registries.js +1 -1
  108. package/index.js +1 -1
  109. package/inspector-secret.js +1 -1
  110. package/main.devserver.js +11 -11
  111. package/notice-generation.js +1 -1
  112. package/package.json +4 -4
  113. package/perf/heavy-barrel-import.js +1 -1
  114. package/perf/perf-config.js +1 -1
  115. package/perf/perf-rule-events.js +2 -2
  116. package/perf/perf-rules-analysis.js +1 -1
  117. package/perf/perf-rules-plugin.js +1 -1
  118. package/perf/source-scan.js +5 -5
  119. package/perf/workspace-libraries.js +2 -2
  120. package/pod-memory-events.js +2 -2
  121. package/pod-memory.js +1 -1
  122. package/pod-sock.js +1 -1
  123. package/process-name.js +1 -1
  124. package/redis-disconnect-fix.js +1 -1
  125. package/schema-first-instance.js +1 -1
  126. package/serve-runner.js +1 -1
  127. package/service-build-events.d.ts +2 -2
  128. package/service-build-events.js +2 -2
  129. package/shared-build/attach.js +2 -2
  130. package/shared-build/host.d.ts +14 -1
  131. package/shared-build/host.js +3 -4
  132. package/shared-build/protocol.js +1 -1
  133. package/shared-build/shared-compilation.js +3 -3
  134. package/shared-build/signature.js +1 -1
  135. package/stdio-guard.js +1 -1
  136. package/swap-mode.js +1 -1
  137. package/swap-recycle.js +1 -1
  138. package/tsgo-check-plugin.js +4 -4
  139. package/typecheck-bus.js +3 -3
  140. package/typecheck-queue.js +1 -1
  141. package/worker-guard.js +1 -1
  142. package/worker-retire.js +1 -1
  143. package/worker-supervisor.js +2 -2
  144. package/workspace-paths.js +1 -1
package/basic-ssl.js CHANGED
@@ -1 +1 @@
1
- "use strict";var f=Object.defineProperty;var c=(e,r)=>f(e,"name",{value:r,configurable:!0});var 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")}c(caDir,"caDir"),a(caDir,"caDir");function caCertPath(){return path.join(caDir(),exports.CA_CERT_FILE)}c(caCertPath,"caCertPath"),a(caCertPath,"caCertPath");function getCertificateSync(e,r="lensmcp.dev",t=[]){const n=require("node-forge");fs.mkdirSync(e,{recursive:!0});const l=loadOrCreateCa(n,e),o=n.pki.certificateToPem(l.cert),i=crypto.createHash("sha256").update([r,...[...t].sort()].join("|")).digest("hex").slice(0,12),s=path.join(e,`_leaf-${i}.pem`);try{const u=fs.statSync(s);if(Date.now()-u.ctimeMs<LEAF_MAX_AGE_MS){const m=fs.readFileSync(s,"utf8");if(m.includes(o))return m}}catch{}const y=createLeafCertificate(n,l,r,t);fs.writeFileSync(s,y);for(const u of fs.readdirSync(e))if(/^_leaf-.*\.pem$/.test(u)&&u!==`_leaf-${i}.pem`||/^_cert.*\.pem$/.test(u)||/-dev\.crt$/.test(u)||u===LEGACY_CA_CERT_FILE)try{fs.unlinkSync(path.join(e,u))}catch{}return y}c(getCertificateSync,"getCertificateSync"),a(getCertificateSync,"getCertificateSync");function ensureCaSync(e){const r=require("node-forge");return loadOrCreateCa(r,e),caCertPath()}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{}}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 l=r&&r!==t?readCaPair(r,e):void 0,o=l??mintCa(e);try{fs.writeFileSync(path.join(t,CA_KEY_FILE),e.pki.privateKeyToPem(o.key),{mode:384,flag:"wx"})}catch(i){if(i.code!=="EEXIST")throw i;const s=spinReadCaPair(t,e);if(s)return s;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(o.cert)),l&&console.log(`[ssl] promoted the existing workspace dev CA to the machine store (${t}) \u2014 keychain trust carries over.`),o}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)}}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}}c(mintCa,"mintCa"),a(mintCa,"mintCa");function createLeafCertificate(e,r,t,n,l=30){const o=e.pki.rsa.generateKeyPair(2048),i=e.pki.createCertificate();i.publicKey=o.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()+l),i.setSubject([{name:"commonName",value:t},{name:"organizationName",value:"lensmcp"},{shortName:"OU",value:"dev"}]),i.setIssuer(r.cert.subject.attributes);const s=[{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:s},{name:"subjectKeyIdentifier"}]),i.sign(r.key,e.md.sha256.create()),e.pki.privateKeyToPem(o.privateKey)+e.pki.certificateToPem(i)+e.pki.certificateToPem(r.cert)}c(createLeafCertificate,"createLeafCertificate"),a(createLeafCertificate,"createLeafCertificate");
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 u=Object.defineProperty;var p=(s,t)=>u(s,"name",{value:t,configurable:!0});var 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,l=0)=>{i||(i=!0,console.log(`stopping (${e})`),c.stop().finally(()=>process.exit(l)),setTimeout(()=>process.exit(l),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})}p(main,"main"),o(main,"main"),require.main===module&&main();
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();
@@ -1 +1 @@
1
- "use strict";var l=Object.defineProperty;var i=(n,s)=>l(n,"name",{value:s,configurable:!0});var a=Object.defineProperty,u=i((n,s)=>a(n,"name",{value:s,configurable:!0}),"u");Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildScopePatterns=buildScopePatterns;function buildScopePatterns(n){const s=[],p=[],r=[];for(const e of n){if(!e)continue;const o=e.match(/^\/(.+)\/([gimsuy]*)$/);if(o){const t=o[2].replace("g",""),c=new RegExp(o[1],t);s.push(c),r.push(c)}else if(e.includes("/")){const t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");s.push(new RegExp(`^${t}`)),p.push(e)}else if(e.startsWith("@")){const t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");s.push(new RegExp(`^${t}/`)),p.push(e.endsWith("/")?e:`${e}/`)}else{const t=e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),c=new RegExp(`^${t}(/|$)`);s.push(c),r.push(c)}}return{allowlistPatterns:s,scopePrefixes:p,scopePatterns:r}}i(buildScopePatterns,"buildScopePatterns"),u(buildScopePatterns,"buildScopePatterns");
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 l=Object.defineProperty;var o=(e,t)=>l(e,"name",{value:t,configurable:!0});var 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}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}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,a,...u){return t.call(this,r,loadParentFor(a),...u)},"lensmcpBundleParent")}o(routeBundleRequires,"routeBundleRequires"),n(routeBundleRequires,"routeBundleRequires");
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 a=Object.defineProperty;var t=(e,r)=>a(e,"name",{value:r,configurable:!0});var 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,i]of[[path.join(e,"node_modules"),n],[path.join(e,"node_modules",".cache"),path.join(n,".cache")]]){let c;try{c=fs.realpathSync(s)}catch{continue}if(c!==i)return!1}return!0}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)}t(checkoutCacheDir,"checkoutCacheDir"),o(checkoutCacheDir,"checkoutCacheDir");
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");
@@ -1 +1 @@
1
- "use strict";var o=Object.defineProperty;var c=(t,e)=>o(t,"name",{value:e,configurable:!0});var 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}c(childProcessEnv,"childProcessEnv"),n(childProcessEnv,"childProcessEnv");
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 c=Object.defineProperty;var u=(t,r)=>c(t,"name",{value:r,configurable:!0});var 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 i=0,e,a=!1;return{failed(){i+=1;const o=r[Math.min(i,r.length)-1]??6e4;return e&&clearTimeout(e),a||(e=setTimeout(()=>{e=void 0,a||t()},o),e.unref?.()),{delayMs:o,retry:i}},succeeded(){const o=i;return i=0,e&&(clearTimeout(e),e=void 0),o},dispose(){a=!0,e&&(clearTimeout(e),e=void 0)}}}u(createFailureRetry,"createFailureRetry"),s(createFailureRetry,"createFailureRetry");
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 {};
@@ -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;
@@ -1 +1 @@
1
- "use strict";var T=Object.defineProperty;var p=(r,e)=>T(r,"name",{value:e,configurable:!0});var O=Object.defineProperty,c=p((r,e)=>O(r,"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{p(this,"DevServerReloadPlugin")}static{c(this,"DevServerReloadPlugin")}constructor(e,i=!1,a,o=Number(process.env.LENSMCP_GATEWAY_PID??0)>0){this.notifier=new devserver_notifier_1.DevserverNotifier(e,i,a,o)}snapshot(){return this.notifier.snapshot()}apply(e){const i="DevServerReloadPlugin";let a=!1;e.hooks.watchRun?.tap(i,o=>{const s=[...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",l=>this.notifier.degrade(`watcher error: ${l?.message??String(l)}`)))}this.notifier.watchRun(s)}),e.hooks.watchClose?.tap(i,()=>this.notifier.degrade("watch closed")),e.hooks.failed?.tap(i,o=>this.notifier.failed(`compiler failed: ${o?.message??String(o)}`)),e.hooks.done.tap(i,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 r of[path.join(__dirname,"package.json"),path.join(__dirname,"..","package.json")])try{const e=JSON.parse(fs.readFileSync(r,"utf8"));if(e.name==="@lensmcp/cluster"&&e.version)return e.version}catch{}return"unknown"}p(clusterVersion,"clusterVersion"),c(clusterVersion,"clusterVersion");function devCacheOptions(r,e){const{appName:i,appRoot:a,workspaceRoot:o,tsConfig:s,webpackConfigPath:n}=r,l=clusterVersion(),_=JSON.stringify({lensmcp:l,devtool:e,buildLibsFromSource:r.buildLibsFromSource??!0,orgScopes:r.orgScopes??[],bundlePackages:r.bundlePackages??[],nodeExternalsConfig:r.nodeExternalsConfig??null}),f=c(g=>g.filter(d=>fs.existsSync(d)),"existing"),k=(0,workspace_paths_1.readWorkspacePaths)(s,o)?.configFiles??[path.resolve(o,s)],v={lensmcp:[__filename],lockfile:f(LOCKFILES.map(g=>path.join(o,g))),tsconfig:f([...new Set([...k,path.join(o,"tsconfig.base.json")])])};return n&&(v.overrides=[path.resolve(a,n)]),{type:"filesystem",cacheDirectory:(0,checkout_cache_1.checkoutCacheDir)(o,"lensmcp-webpack"),name:i.replace(/[^\w.-]+/g,"_"),version:`${l}-${(0,node_crypto_1.createHash)("sha256").update(_).digest("hex").slice(0,16)}`,buildDependencies:v,maxMemoryGenerations:DEV_CACHE_MEMORY_GENERATIONS,maxAge:DEV_CACHE_MAX_AGE_MS}}p(devCacheOptions,"devCacheOptions"),c(devCacheOptions,"devCacheOptions");function devModuleFilename(r){const e=r.absoluteResourcePath;return path.isAbsolute(e)?`file://${e}`:e}p(devModuleFilename,"devModuleFilename"),c(devModuleFilename,"devModuleFilename");class DevBuildFinalizePlugin{static{p(this,"DevBuildFinalizePlugin")}static{c(this,"DevBuildFinalizePlugin")}constructor(e){this.options=e}apply(e){const{cache:i}=this.options;e.options.cache={...i,buildDependencies:{...i.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 s=e.options.resolve;s.plugins=s.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(r){const{appRoot:e,outputDir:i,main:a,tsConfig:o,workspaceRoot:s,assets:n=[],port:l,memoryLimit:_=8192,buildLibsFromSource:f=!0,orgScopes:k=[],bundlePackages:v=[],additionalEntryPoints:g=[],nodeExternalsConfig:d,webpackConfigPath:b}=r,{allowlistPatterns:y,scopePrefixes:x,scopePatterns:M}=(0,build_scope_patterns_1.buildScopePatterns)(k),C=process.env.LENSMCP_TYPECHECK,S=C==="tsgo"?(0,tsgo_check_plugin_1.resolveTsgoBin)(s,process.env.LENSMCP_TSGO_BIN):null;if(C==="tsgo"&&!S){const t=`${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] ${r.appName}: LENSMCP_TYPECHECK=tsgo but ${t}.`),(0,tsgo_check_plugin_1.reportTsgoUnavailable)({appName:r.appName,tsConfig:o,workspaceRoot:s,detail:t})}const w=!!S,P=(0,dev_devtool_1.resolveDevDevtool)(r.devtool);P.rejected&&console.warn(`[serve] ${r.appName}: '${P.rejected}' (devtool / ${dev_devtool_1.DEV_DEVTOOL_ENV}) is not a webpack devtool \u2014 building with '${dev_devtool_1.DEFAULT_DEV_DEVTOOL}'.`);const h=P.devtool,E=f?(0,workspace_paths_1.readWorkspacePaths)(o,s):null,D=v.map(t=>new RegExp(`^${t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(/|$)`)),R=[/webpack\/hot\/poll\?100/,...y,...D,...d?.allowlist||[]],N={output:{path:i,...process.env.NODE_ENV!=="production"&&{devtoolModuleFilenameTemplate:devModuleFilename},clean:!0},externals:[(0,webpack_node_externals_1.default)({allowlist:R,additionalModuleDirs:d?.additionalModuleDirs||[],...d?.importType&&{importType:d.importType}}),({request:t},m)=>{if(t&&path.isAbsolute(t)&&t.startsWith(s)&&!t.includes("node_modules")||t&&(t.startsWith(path.join(s,"apps"))||t.startsWith(path.join(s,"libs")))||t&&x.some(u=>t.startsWith(u))||t&&M.some(u=>u.test(t))||t&&D.some(u=>u.test(t)))return m();if(t&&!(t.startsWith("./")||t.startsWith(".."))){const u=t.startsWith("@")?t.split("/").slice(0,2).join("/"):t.split("/")[0];return fs.existsSync(path.join(s,"node_modules",u))?m(null,`commonjs ${t}`):m()}return m()}],mode:"development",devtool:h,...(0,workspace_paths_1.hasPathMappings)(E)&&{resolve:{plugins:[new workspace_paths_1.WorkspacePathsResolverPlugin(E)]}},plugins:[new webpack.HotModuleReplacementPlugin,new app_plugin_1.NxAppWebpackPlugin({target:"node22",compiler:"tsc",main:a,additionalEntryPoints:g,verbose:!0,sourceMap:h,mergeExternals:!0,externalDependencies:[],memoryLimit:_,tsConfig:o,assets:n,optimization:!1,progress:!1,outputHashing:"none",generatePackageJson:!1,watchDependencies:!0,typeCheckOptions:process.env.LENSMCP_TYPECHECK==="off"||w?!1:{async:!0},buildLibsFromSource:f}),new DevBuildFinalizePlugin({cache:devCacheOptions(r,h),tsSourceMaps:(0,dev_devtool_1.bundleCarriesSourceMaps)(h)}),new DevServerReloadPlugin(l,r.httpsReload===!0,(0,devserver_notifier_1.devserverControlSock)(r.serviceName)),new perf_rules_plugin_1.PerfRulesPlugin({project:process.env.LENSMCP_PROJECT||r.appName,workspaceRoot:s,tsConfig:o}),...w?[new tsgo_check_plugin_1.TsgoCheckPlugin({appName:r.appName,tsConfig:o,workspaceRoot:s,...process.env.LENSMCP_TSGO_BIN?{binPath:process.env.LENSMCP_TSGO_BIN}:{}})]:process.env.LENSMCP_TYPECHECK==="off"?[]:[new fork_ts_check_reporter_1.ForkTsCheckReporterPlugin({appName:r.appName,tsConfig:o,workspaceRoot:s})]],snapshot:{managedPaths:[/^(.+?[\\/])?node_modules[\\/]/]},watch:!0,watchOptions:{ignored:["**/*.env.template","**/config.template.json","**/*.md","**/dist/**","**/migrations/**"]}};if(b){const t=require(path.resolve(e,b));return(t.default||t)(N)}return N}p(createDevWebpackConfig,"createDevWebpackConfig"),c(createDevWebpackConfig,"createDevWebpackConfig");
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");
@@ -1 +1 @@
1
- "use strict";var A=Object.defineProperty;var d=(o,n)=>A(o,"name",{value:n,configurable:!0});var F=Object.defineProperty,m=d((o,n)=>F(o,"name",{value:n,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:n,outputDir:P,main:_,tsConfig:g,workspaceRoot:r,assets:k=[],additionalEntryPoints:x=[],runtimeDependencies:C=[],memoryLimit:b=8192,generatePackageJson:j=!0,buildLibsFromSource:f=!1,ormConfigPath:c,migrationsDir:W="./src/migrations",orgScopes:w=[],bundlePackages:S=[],nodeExternalsConfig:a,webpackConfigPath:h}=o,{allowlistPatterns:v,scopePrefixes:D,scopePatterns:q}=(0,build_scope_patterns_1.buildScopePatterns)(w),y=S.map(e=>new RegExp(`^${e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}(/|$)`)),E=[...v,...y,...a?.allowlist||[]];let s;if(c!==void 0)s=c?path.join(n,c):null;else{const e=path.join(n,"./src/ormconfig.ts");s=fs.existsSync(e)?e:null}const $=s&&fs.existsSync(s),p=[],u={externals:[(0,webpack_node_externals_1.default)({allowlist:E,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(t=>e.startsWith(t))||e&&q.some(t=>t.test(e))||e&&y.some(t=>t.test(e)))return i();if(e&&!(e.startsWith("./")||e.startsWith(".."))){const t=e.startsWith("@")?e.split("/").slice(0,2).join("/"):e.split("/")[0];return fs.existsSync(path.join(r,"node_modules",t))?i(null,`commonjs ${e}`):i()}return i()}],output:{path:P,clean:!1},devtool:"inline-source-map",mode:"production",plugins:[new app_plugin_1.NxAppWebpackPlugin({target:"node22",compiler:"tsc",main:_,additionalEntryPoints:x,externalDependencies:[],mergeExternals:!0,memoryLimit:b,tsConfig:g,assets:k,namedChunks:!0,optimization:!0,outputHashing:"none",generatePackageJson:j,runtimeDependencies:C,buildLibsFromSource:f,typeCheckOptions:{async:!1},sourceMap:"inline-source-map",progress:!1})]};if(p.push(u),$&&s){const e=[],i=path.join(n,W,"*.ts");(0,glob_1.globSync)(i).forEach(l=>{const M=path.basename(l,".ts");e.push({entryName:`migrations/${M}`,entryPath:l})});const t="./"+path.relative(n,s),L={...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:t,externalDependencies:[],additionalEntryPoints:e,mergeExternals:!0,tsConfig:g,assets:[],namedChunks:!0,memoryLimit:b,optimization:!1,outputHashing:"none",generatePackageJson:!1,buildLibsFromSource:f,skipTypeChecking:!0,sourceMap:!1,progress:!process.env.CI})]};p.push(L)}if(h){const e=require(path.resolve(n,h)),i=e.default||e;return p.map(t=>i(t))}return p}d(createProdWebpackConfig,"createProdWebpackConfig"),m(createProdWebpackConfig,"createProdWebpackConfig");
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 D=Object.defineProperty;var E=(e,o)=>D(e,"name",{value:o,configurable:!0});var t=Object.defineProperty,s=E((e,o)=>t(e,"name",{value:o,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,o=process.env){const r=e===!1?"false":(e??o[exports.DEV_DEVTOOL_ENV]??"").trim();return r?NO_DEVTOOL.test(r)?{devtool:!1}:DEVTOOL_PATTERN.test(r)?{devtool:r}:{devtool:exports.DEFAULT_DEV_DEVTOOL,rejected:r}:{devtool:exports.DEFAULT_DEV_DEVTOOL}}E(resolveDevDevtool,"resolveDevDevtool"),s(resolveDevDevtool,"resolveDevDevtool");function bundleCarriesSourceMaps(e){return typeof e=="string"&&e.includes("source-map")&&!e.startsWith("hidden-")}E(bundleCarriesSourceMaps,"bundleCarriesSourceMaps"),s(bundleCarriesSourceMaps,"bundleCarriesSourceMaps");function sourceMapExecArgv(e=process.env){return e[exports.DEV_SOURCE_MAPS_ENV]==="1"?["--enable-source-maps"]:[]}E(sourceMapExecArgv,"sourceMapExecArgv"),s(sourceMapExecArgv,"sourceMapExecArgv");
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 n=Object.defineProperty;var s=(r,o)=>n(r,"name",{value:o,configurable:!0});var t=Object.defineProperty,e=s((r,o)=>t(r,"name",{value:o,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)}s(exitCodeForSignal,"exitCodeForSignal"),e(exitCodeForSignal,"exitCodeForSignal");function markServeRunner(){flags[RUNNER_KEY]=!0}s(markServeRunner,"markServeRunner"),e(markServeRunner,"markServeRunner");function devserverInProcessOffered(r=process.env){return flags[RUNNER_KEY]===!0&&r[exports.DEVSERVER_IN_PROCESS_ENV]?.trim()!=="0"}s(devserverInProcessOffered,"devserverInProcessOffered"),e(devserverInProcessOffered,"devserverInProcessOffered");function markDevserverInProcess(){flags[IN_PROCESS_KEY]=!0}s(markDevserverInProcess,"markDevserverInProcess"),e(markDevserverInProcess,"markDevserverInProcess");function devserverOwnsExit(){return flags[IN_PROCESS_KEY]===!0}s(devserverOwnsExit,"devserverOwnsExit"),e(devserverOwnsExit,"devserverOwnsExit");function devserverStopExitCode(r){if(!devserverOwnsExit())return 0;const o=os.constants.signals[r];return o===void 0?0:128+o}s(devserverStopExitCode,"devserverStopExitCode"),e(devserverStopExitCode,"devserverStopExitCode");function resetDevserverHostForTests(){delete flags[RUNNER_KEY],delete flags[IN_PROCESS_KEY]}s(resetDevserverHostForTests,"resetDevserverHostForTests"),e(resetDevserverHostForTests,"resetDevserverHostForTests");
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");
@@ -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
  }
@@ -1 +1 @@
1
- "use strict";var p=Object.defineProperty;var u=(h,t)=>p(h,"name",{value:t,configurable:!0});var m=Object.defineProperty,a=u((h,t)=>m(h,"name",{value:t,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{u(this,"DevserverNotifier")}static{a(this,"DevserverNotifier")}static{this.RECENT_PATH_CAP=32}static{this.BUILD_PATH_CAP=50}constructor(t,e=!1,s,n=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=n,this.secure=e,this.base=`${e?"https":"http"}://localhost:${t}`,this.controlSock=s,this.generation=c}post(t,e){const s=JSON.stringify(e),n={"content-type":"application/json",...this.generation!==void 0?{[notice_generation_1.NOTICE_GENERATION_HEADER]:String(this.generation)}:{}},c=a((i,o,r)=>{if(i.statusCode!==409||this.generation===void 0){i.resume(),i.on("end",o);return}let d="";i.setEncoding("utf8"),i.on("data",l=>{d+=l}),i.on("end",()=>{let l;try{l=JSON.parse(d).generation}catch{}r(new notice_generation_1.NotThisGeneration(this.generation,l))})},"answered"),v=a(()=>new Promise((i,o)=>{const r=(this.secure?require("node:https"):require("node:http")).request(`${this.base}${t}`,{method:"POST",headers:n,rejectUnauthorized:!1},d=>c(d,i,o));r.on("error",o),r.end(s)}),"viaTcp"),g=this.controlSock;return!g||!fs.existsSync(g)?this.managed?Promise.reject(new Error("the devserver control socket is not up yet")):v():new Promise((i,o)=>{const r=require("node:http").request({socketPath:g,path:t,method:"POST",headers:n},d=>c(d,i,o));r.on("error",o),r.end(s)}).catch(i=>{if(this.managed||i instanceof notice_generation_1.NotThisGeneration)throw i;return v()})}snapshot(){return{...this.testimony,recentPaths:[...this.testimony.recentPaths]}}watchRun(t){if(this.testimony.lastWatchRunAt=Date.now(),t.length){const e=[...this.testimony.recentPaths,...t];this.testimony.recentPaths=e.slice(-DevserverNotifier.RECENT_PATH_CAP)}this.building??={startedAt:this.testimony.lastWatchRunAt,changed:new Set,more:0};for(const e of t)this.building.changed.has(e)||(this.building.changed.size>=DevserverNotifier.BUILD_PATH_CAP?this.building.more+=1:this.building.changed.add(e));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(t){const e=Date.now(),s=this.buildAccount()??(t!==void 0?{startedAt:e,changedFiles:[]}:void 0);this.building=void 0,delete this.testimony.building,this.testimony.lastFailedAt=e;const n=s?{...s,endedAt:e,...t?{error:t.slice(0,FAILURE_TEXT_CAP)}:{}}:void 0;this.post("/webpack/watching",{...this.testimony,...n?{failed:n}:{}}).catch(()=>{})}degrade(t){this.testimony.degraded=t,this.tellWatching()}tellWatching(){this.post("/webpack/watching",this.testimony).catch(()=>{})}async built(t=!0){this.testimony.lastBuildAt=Date.now(),this.testimony.buildsSinceSpawn+=1;const e=this.buildAccount();if(this.building=void 0,delete this.testimony.building,!t){this.tellWatching();return}try{await this.post("/webpack/reload",{watcher:this.testimony,...e?{build:{...e,endedAt:this.testimony.lastBuildAt}}:{}}),console.log("[DevServerReloadPlugin] notified devserver to reload")}catch(s){s instanceof notice_generation_1.NotThisGeneration?console.log(`[DevServerReloadPlugin] not this generation's devserver (${s.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(h,t=process.env){const e=t.LENSMCP_SOCK_NS||t.LENSMCP_WS_KEY||"",s=e?path.join(os.tmpdir(),e,`${h}-devserver`):path.join(os.tmpdir(),`${h}-devserver`);return path.join(s,"parent.sock")}u(devserverControlSock,"devserverControlSock"),a(devserverControlSock,"devserverControlSock");
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");
@@ -1 +1 @@
1
- "use strict";var o=Object.defineProperty;var a=(e,r)=>o(e,"name",{value:r,configurable:!0});var 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}}a(isOwnerOnlyTransport,"isOwnerOnlyTransport"),t(isOwnerOnlyTransport,"isOwnerOnlyTransport");function gatewayManaged(e=process.env){return Number(e.LENSMCP_GATEWAY_PID??0)>0}a(gatewayManaged,"gatewayManaged"),t(gatewayManaged,"gatewayManaged");function mayDriveThePool(e,r=gatewayManaged()){return!r||isOwnerOnlyTransport(e)}a(mayDriveThePool,"mayDriveThePool"),t(mayDriveThePool,"mayDriveThePool");
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");
@@ -1 +1 @@
1
- "use strict";var A=Object.defineProperty;var l=(t,r)=>A(t,"name",{value:r,configurable:!0});var 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")}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 f=r.maxDepth??5,u=r.maxPerRoot??4e3,E=r.maxNodes??4e5;let a=0,o=0;for(const n of t){if(a>=E)break;if(!walkable(n))continue;let S=0;const c=[[n,0]];for(let b=0;b<c.length&&S<u&&a<E;b++){const[e,R]=c[b];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)||R>=f)continue;const m=Object.getPrototypeOf(e);if(walkable(m)&&c.push([m,R+1]),Array.isArray(e)){const i=Math.min(e.length,MAX_ARRAY_ITEMS);for(let s=0;s<i;s++){const d=e[s];walkable(d)&&c.push([d,R+1])}continue}const h=Reflect.ownKeys(e),g=Math.min(h.length,MAX_KEYS_PER_OBJECT);for(let i=0;i<g;i++){const s=Reflect.getOwnPropertyDescriptor(e,h[i]);s&&"value"in s&&walkable(s.value)&&c.push([s.value,R+1])}}catch{}}}}return{visited:a,errors:o}}l(readStacksReachableFrom,"readStacksReachableFrom"),y(readStacksReachableFrom,"readStacksReachableFrom");function createErrorFrameReleaser(t,r={}){const p=r.global??globalThis,f=new Set,u=new Set(Reflect.ownKeys(p)),E=new WeakSet;return()=>{const a=[];for(const o of Object.keys(t))if(!f.has(o)&&(f.add(o),!r.skip?.(o)))try{a.push(t[o]?.exports)}catch{}for(const o of Reflect.ownKeys(p)){if(u.has(o))continue;u.add(o);const n=Reflect.getOwnPropertyDescriptor(p,o);n&&"value"in n&&a.push(n.value)}return readStacksReachableFrom(a,r,E)}}l(createErrorFrameReleaser,"createErrorFrameReleaser"),y(createErrorFrameReleaser,"createErrorFrameReleaser");
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 x=Object.defineProperty;var d=(e,o)=>x(e,"name",{value:o,configurable:!0});var _=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 m=o.projectsConfigurations.projects[o.projectName],n=o.root,a=path.join(n,m.root),c=e.outputPath?path.join(n,e.outputPath):path.join(n,"dist",m.root),y=e.entryFile||"./src/deployments/service/main.ts",P=e.tsConfigFile||"./tsconfig.app.json",k=path.resolve(a,y),h=path.resolve(a,P),u=(0,create_webpack_prod_1.createProdWebpackConfig)({appName:o.projectName,appRoot:a,outputDir:c,main:k,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}),j=Array.isArray(u)?u:[u];for(const r of j){const{watch:l,...t}=r,s=webpack(t),i=await new Promise((w,C)=>{s.run((b,S)=>{if(b)return C(b);s.close(g=>{g&&console.error("[build] webpack close error:",g)}),w(S)})});if(console.info(i.toString(r.stats||{colors:!0,chunks:!1})),i.hasErrors()){yield{success:!1};return}}const f=e.workers||[];if(f.length>0){const{minify:r}=require("terser");for(const l of f){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")}}d(buildExecutor,"buildExecutor"),p(buildExecutor,"buildExecutor"),exports.default=buildExecutor,module.exports=buildExecutor,module.exports.default=buildExecutor;
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 l=Object.defineProperty;var d=(s,o)=>l(s,"name",{value:o,configurable:!0});var u=Object.defineProperty,r=d((s,o)=>u(s,"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(s){const o=s.headers["content-length"];return String(s.headers["transfer-encoding"]??"").toLowerCase().includes("chunked")||typeof o=="string"&&Number(o)>0}d(requestCarriesBody,"requestCarriesBody"),r(requestCarriesBody,"requestCarriesBody");function requestBodyArriving(s){return requestCarriesBody(s)&&!s.complete&&!s.destroyed}d(requestBodyArriving,"requestBodyArriving"),r(requestBodyArriving,"requestBodyArriving");function createBodyStallGuard(s){if(!Number.isFinite(s)||s<=0)return OFF;const o=new Map,c=new Map,y=Math.max(500,Math.min(s,5e3)),a=setInterval(r(()=>{if(o.size===0&&c.size===0)return;const e=Date.now();for(const[t,n]of o){if(t.complete||t.destroyed||!t.socket||t.socket.destroyed){o.delete(t);continue}const i=t.socket.bytesRead;if(i!==n.bytes){n.bytes=i,n.since=e;continue}e-n.since>=s&&(o.delete(t),t.socket.destroy())}for(const[t,n]of c){const i=t.socket;if(t.writableEnded||t.destroyed||!i||i.destroyed){c.delete(t);continue}if(i.writableLength===0){n.bytes=i.bytesWritten,n.since=e;continue}if(i.bytesWritten!==n.bytes){n.bytes=i.bytesWritten,n.since=e;continue}e-n.since>=s&&(c.delete(t),i.destroy())}},"tick"),y);return a.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 n=r(()=>{c.delete(e)},"done");e.on("finish",n),e.on("close",n)},stop(){clearInterval(a),o.clear(),c.clear()}}}d(createBodyStallGuard,"createBodyStallGuard"),r(createBodyStallGuard,"createBodyStallGuard");
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 x=Object.defineProperty;var f=(e,t)=>x(e,"name",{value:t,configurable:!0});var 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
+ "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 u=Object.defineProperty;var f=(e,r)=>u(e,"name",{value:r,configurable:!0});var a=Object.defineProperty,o=f((e,r)=>a(e,"name",{value:r,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(e=>{const r=Array.isArray(e)?e[0]:e;return typeof r=="string"&&r.length>0?r:void 0},"first"),normalizePeer=o(e=>e.startsWith("::ffff:")&&e.indexOf(":",7)===-1?e.slice(7):e,"normalizePeer");exports.normalizePeer=normalizePeer;const stripPort=o(e=>{if(e.startsWith("[")){const p=e.indexOf("]");return p===-1?e:e.slice(1,p)}const r=e.indexOf(":");return r!==-1&&e.indexOf(":",r+1)===-1?e.slice(0,r):e},"stripPort");exports.stripPort=stripPort;function createClientIpResolver(e={}){const r=e.clientIpHeader?.toLowerCase(),p=e.clientIpTrustedProxies??[],l=Math.max(0,Math.floor(e.trustProxyHops??0)),c=o(t=>{if(!t)return!1;const s=t.startsWith("::ffff:")?t.slice(7):t;return p.length===0?s==="127.0.0.1"||t==="::1":p.some(i=>(0,manifest_1.matchCidr)(s,i))},"peerTrusted"),d=o(t=>String(t.headers["x-forwarded-for"]??"").split(",").map(s=>s.trim()).filter(Boolean),"forwardedChain");return{clientIpOf:o((t,s)=>{if(r&&c(t.socket?.remoteAddress??void 0)){const i=first(t.headers[r]);if(i){const n=(0,exports.stripPort)(i.split(",")[0].trim());if(n)return n}}if(l>0){const i=d(t),n=i.length-l;if(n>=0&&i[n])return(0,exports.stripPort)(i[n])}return(0,exports.normalizePeer)(s)},"clientIpOf"),forwardedFor:o((t,s)=>{const i=(0,exports.normalizePeer)(s);if(l>0||r&&c(s)){const n=d(t);return n.length?`${n.join(", ")}, ${i}`:i}return i},"forwardedFor"),peerTrusted:c,trustProxyHops:l}}f(createClientIpResolver,"createClientIpResolver"),o(createClientIpResolver,"createClientIpResolver");function clientIpOptionsFromEnv(e=process.env){const r=Number(e.LENSMCP_TRUST_PROXY),p=String(e.LENSMCP_CLIENT_IP_TRUSTED_PROXIES??"").split(",").map(l=>l.trim()).filter(Boolean);return{...Number.isFinite(r)&&r>0?{trustProxyHops:Math.floor(r)}:{},...e.LENSMCP_CLIENT_IP_HEADER?{clientIpHeader:e.LENSMCP_CLIENT_IP_HEADER}:{},...p.length?{clientIpTrustedProxies:p}:{}}}f(clientIpOptionsFromEnv,"clientIpOptionsFromEnv"),o(clientIpOptionsFromEnv,"clientIpOptionsFromEnv");
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 d=Object.defineProperty;var n=(e,t)=>d(e,"name",{value:t,configurable:!0});var 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}n(ensureRequestId,"ensureRequestId"),r(ensureRequestId,"ensureRequestId");function gatewayErrorBody(e,t,a,o,i){return JSON.stringify({...i??{},key:exports.GATEWAY_ERROR_KEY[t],status:e,traceId:a,...o?{message:o}:{}})}n(gatewayErrorBody,"gatewayErrorBody"),r(gatewayErrorBody,"gatewayErrorBody"),exports.GATEWAY_ERROR_CONTENT_TYPE="application/json; charset=utf-8";
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 w=Object.defineProperty;var i=(t,r)=>w(t,"name",{value:r,configurable:!0});var 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 p=(0,own_log_1.takeOverGatewayLog)();p&&console.log(`[gateway] ${new Date().toISOString()} writing ${p.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 l;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(d=>d.target)])):void 0;l=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`),l.stop().then(()=>e({success:!0}))},"stop");process.on("SIGINT",()=>s("SIGINT")),process.on("SIGTERM",()=>s("SIGTERM"))})}i(gatewayExecutor,"gatewayExecutor"),c(gatewayExecutor,"gatewayExecutor"),module.exports=gatewayExecutor,module.exports.default=gatewayExecutor,module.exports.startGateway=gateway_lib_1.startGateway;
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 s=Object.defineProperty;var n=(t,r)=>s(t,"name",{value:r,configurable:!0});var 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
+ "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 g=Object.defineProperty;var c=(a,h)=>g(a,"name",{value:h,configurable:!0});var C=Object.defineProperty,n=c((a,h)=>C(a,"name",{value:h,configurable:!0}),"n");Object.defineProperty(exports,"__esModule",{value:!0}),exports.createHealthChecker=createHealthChecker;function createHealthChecker(a={}){const h=a.path??"/healthz",f=a.intervalMs??5e3,y=a.timeoutMs??2e3,p=Math.max(1,a.unhealthyThreshold??2),u=Math.max(1,a.healthyThreshold??1),d=a.fetchImpl??globalThis.fetch,l=new Map;let r;const k=n(t=>t.replace(/\/+$/,"")+(h.startsWith("/")?h:"/"+h),"probeUrl"),m=n(async t=>{const e=l.get(t);if(!e)return;let s=!1;const i=new AbortController,b=setTimeout(()=>i.abort(),y);try{s=(await d(k(t),{method:"GET",signal:i.signal,redirect:"manual"})).status<500}catch{}finally{clearTimeout(b)}e.lastCheckedAt=Date.now(),s?(e.oks+=1,e.fails=0,!e.healthy&&e.oks>=u&&(e.healthy=!0,a.onChange?.(t,!0))):(e.fails+=1,e.oks=0,e.healthy&&e.fails>=p&&(e.healthy=!1,a.onChange?.(t,!1)))},"probe"),o=n(()=>Promise.allSettled([...l.keys()].map(m)).then(()=>{}),"probeOnce");return{track(t){const e=new Set(t);for(const s of t)l.has(s)||l.set(s,{healthy:!0,fails:0,oks:0,lastCheckedAt:null});for(const s of[...l.keys()])e.has(s)||l.delete(s)},isHealthy:n(t=>l.get(t)?.healthy??!0,"isHealthy"),snapshot:n(()=>[...l.entries()].map(([t,e])=>({url:t,healthy:e.healthy,fails:e.fails,lastCheckedAt:e.lastCheckedAt})),"snapshot"),probeOnce:o,start(){r||(r=setInterval(()=>{o()},f),r.unref?.(),o())},stop(){r&&clearInterval(r),r=void 0}}}c(createHealthChecker,"createHealthChecker"),n(createHealthChecker,"createHealthChecker");
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 K=Object.defineProperty;var p=(s,u)=>K(s,"name",{value:u,configurable:!0});var J=Object.defineProperty,a=p((s,u)=>J(s,"name",{value:u,configurable:!0}),"a");Object.defineProperty(exports,"__esModule",{value:!0}),exports.createJwksVerifier=createJwksVerifier;const node_crypto_1=require("node:crypto"),jwt_claims_js_1=require("./jwt-claims.js"),ALG_TO_HASH={RS256:"sha256",RS384:"sha384",RS512:"sha512"},b64urlJsonSafe=a(s=>JSON.parse(Buffer.from(s,"base64url").toString("utf8")),"b64urlJsonSafe");function createJwksVerifier(s){const u=(s.algorithms??["RS256"]).filter(e=>e in ALG_TO_HASH),T=s.cacheMaxAgeMs??6e5,b=s.missRefreshMs??3e4,j=s.missWaitMs??2e3,v=s.fetchTimeoutMs??1e4,P=s.clockToleranceSec??60,A=s.fetchImpl??globalThis.fetch,k=s.audience===void 0?void 0:Array.isArray(s.audience)?s.audience:[s.audience];let l=new Map,f,d,_=0,w=!1;const h=new Map,R=a(async e=>{const r=await A(s.jwksUrl,{headers:{accept:"application/json"},signal:e});if(!r.ok)throw new Error(`JWKS ${s.jwksUrl} \u2192 HTTP ${r.status}`);const t=await r.json(),n=new Map;for(const i of t.keys??[])if(!(i.kty!=="RSA"||!i.n||!i.e)&&!(i.use&&i.use!=="sig"))try{const c=(0,node_crypto_1.createPublicKey)({key:i,format:"jwk"});n.set(i.kid??"__single__",c)}catch{}n.size>0&&(l=n)},"load"),m=a(()=>{if(!f){const e=new AbortController;f=new Promise((r,t)=>{const n=setTimeout(()=>{e.abort(),t(new Error(`JWKS ${s.jwksUrl} \u2192 no answer in ${v} ms`))},v);n.unref?.(),R(e.signal).then(()=>{clearTimeout(n),r()},i=>{clearTimeout(n),t(i)})}).finally(()=>{f=void 0})}return f},"refresh"),g=a(()=>{if(d)return d;if(!(!f&&Date.now()<_))return d=m().catch(()=>{}).finally(()=>{d=void 0,_=Date.now()+b}),d},"refreshOnMiss"),S=setInterval(()=>{m().catch(()=>{})},T);S.unref?.();const M=a(e=>{const r=e.split(".");if(r.length!==3)return;let t;try{t=b64urlJsonSafe(r[0])}catch{return}if(!(!t.alg||!u.includes(t.alg)))return{parts:r,header:t}},"parse"),y=a(e=>e.kid!==void 0?l.get(e.kid):l.get("__single__")??(l.size===1?[...l.values()][0]:void 0),"keyFor"),x=a(e=>{const r=M(e);if(!r)return;const{parts:t,header:n}=r,i=y(n);if(!i){g();return}let c;try{c=(0,node_crypto_1.verify)(ALG_TO_HASH[n.alg],Buffer.from(`${t[0]}.${t[1]}`),i,Buffer.from(t[2],"base64url"))}catch{return}if(!c)return;let o;try{o=b64urlJsonSafe(t[1])}catch{return}if((0,jwt_claims_js_1.checkStandardClaims)(o,{...s.issuer?{issuer:s.issuer}:{},...k?{audience:k}:{},clockToleranceS:P}))return o},"verify"),$=a(async e=>{const r=M(e);if(!r)return!1;if(y(r.header))return!0;const t=g();if(!t)return!1;let n;return await Promise.race([t,new Promise(i=>{n=setTimeout(i,j),n.unref?.()})]),clearTimeout(n),y(r.header)!==void 0},"awaitKey"),D=a(e=>new Promise(r=>{const t=setTimeout(()=>{h.delete(t),r()},e);t.unref?.(),h.set(t,r)}),"sleep");return{verify:x,refresh:m,awaitKey:$,warm:a(async(e={})=>{const r=Math.max(1,e.attempts??8),t=e.baseDelayMs??1e3,n=e.maxDelayMs??3e4;for(let i=1;!w;i++)try{return await m(),!0}catch(c){if(w)return!1;const o=i<r?Math.min(n,t*2**(i-1)):void 0;try{e.onError?.(c,i,o)}catch{}if(o===void 0)return!1;await D(o)}return!1},"warm"),stop:a(()=>{w=!0,clearInterval(S);for(const[e,r]of h)clearTimeout(e),r();h.clear()},"stop")}}p(createJwksVerifier,"createJwksVerifier"),a(createJwksVerifier,"createJwksVerifier");
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 o=Object.defineProperty;var t=(e,n)=>o(e,"name",{value:n,configurable:!0});var c=Object.defineProperty,u=t((e,n)=>c(e,"name",{value:n,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,n){const s=n.clockToleranceS??exports.DEFAULT_CLOCK_TOLERANCE_S,a=Date.now()/1e3;if(typeof e.exp=="number"&&a>e.exp+s||typeof e.nbf=="number"&&a<e.nbf-s||n.issuer&&e.iss!==n.issuer)return!1;if(n.audience&&n.audience.length>0){const r=e.aud;if(!(Array.isArray(r)?r:[r]).some(i=>typeof i=="string"&&n.audience.includes(i)))return!1}return!0}t(checkStandardClaims,"checkStandardClaims"),u(checkStandardClaims,"checkStandardClaims");
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");