harperdb 4.7.21 → 4.7.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/harperdb.js +1 -1
- package/bin/lite.js +1 -1
- package/launchServiceScripts/launchNatsIngestService.js +1 -1
- package/launchServiceScripts/launchNatsReplyService.js +1 -1
- package/launchServiceScripts/launchUpdateNodes4-0-0.js +1 -1
- package/npm-shrinkwrap.json +41 -82
- package/package.json +1 -1
- package/server/jobs/jobProcess.js +1 -1
- package/server/threads/threadServer.js +1 -1
- package/studio/web/assets/{index-cZbhNKPv.js → index-BlG-cpH9.js} +2 -2
- package/studio/web/assets/{index-cZbhNKPv.js.map → index-BlG-cpH9.js.map} +1 -1
- package/studio/web/assets/{index-BMKHXWrK.js → index-BpmqvC1O.js} +5 -5
- package/studio/web/assets/{index-BMKHXWrK.js.map → index-BpmqvC1O.js.map} +1 -1
- package/studio/web/assets/{index-DP5O80Ld.js → index-DFovvBYL.js} +2 -2
- package/studio/web/assets/{index-DP5O80Ld.js.map → index-DFovvBYL.js.map} +1 -1
- package/studio/web/assets/{index.lazy-_WqXCxX6.js → index.lazy-BhReIK4y.js} +2 -2
- package/studio/web/assets/{index.lazy-_WqXCxX6.js.map → index.lazy-BhReIK4y.js.map} +1 -1
- package/studio/web/assets/{profiler-CiZIC7ZI.js → profiler-BhXa8xgR.js} +2 -2
- package/studio/web/assets/{profiler-CiZIC7ZI.js.map → profiler-BhXa8xgR.js.map} +1 -1
- package/studio/web/assets/{react-redux-D8H6oZRQ.js → react-redux-DkN7OdDj.js} +2 -2
- package/studio/web/assets/{react-redux-D8H6oZRQ.js.map → react-redux-DkN7OdDj.js.map} +1 -1
- package/studio/web/assets/{startRecording-oz3NQO5N.js → startRecording-Da15t52a.js} +2 -2
- package/studio/web/assets/{startRecording-oz3NQO5N.js.map → startRecording-Da15t52a.js.map} +1 -1
- package/studio/web/index.html +1 -1
- package/utility/scripts/restartHdb.js +1 -1
package/studio/web/index.html
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<link rel="icon" type="dynamic-favicon" href="/favicon_purple.png" />
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
8
8
|
<title>Harper Fabric</title>
|
|
9
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-BpmqvC1O.js"></script>
|
|
10
10
|
<link rel="stylesheet" crossorigin href="/assets/index-Y2g_iFpU.css">
|
|
11
11
|
</head>
|
|
12
12
|
|
|
@@ -97,7 +97,7 @@ MCowBQYDK2VwAyEAO301jvpO12znGdK/Izrre518pgmQNk9hSMXf4wDMucM=
|
|
|
97
97
|
`:this.pem=`-----BEGIN PUBLIC KEY-----
|
|
98
98
|
MCowBQYDK2VwAyEAMtpzMn9YfS0fGaDLcAmYQx2OH8kVevwbNyQ1RIj5cvw=
|
|
99
99
|
-----END PUBLIC KEY-----
|
|
100
|
-
`}getKey(){return(0,Vy.createPublicKey)(this.pem)}toString(){return this.pem}},qy=class extends TypeError{static{a(this,"LicenseEncodingError")}},Of=class extends TypeError{static{a(this,"InvalidLicenseError")}},IL=class extends Of{static{a(this,"InvalidLicenseSignatureError")}},lE=class extends Of{static{a(this,"InvalidHeaderError")}},$y=class extends Of{static{a(this,"InvalidPayloadError")}},K_e=new AL(tz.get(U.LICENSE_MODE));a(Y_e,"validateLicenseSignature");a(W_e,"validateLicenseHeader");a(j_e,"valid");a(z_e,"validateLicensePayload");a(rz,"validateLicense")});var Ky={};Re(Ky,{getActiveLicense:()=>PL,getUsageLicenses:()=>mz,getUsageLicensesOp:()=>DL,installUsageLicense:()=>OL,installUsageLicenseOp:()=>CL,isActiveLicense:()=>dz,isLicensed:()=>LL,loadAndWatchLicensesDir:()=>X_e,recordUsage:()=>fz});async function CL(e){let t=e.license;try{await OL(t)}catch(r){let n=new oz.ClientError("Failed to install usage license; "+r.message);throw n.cause=r,n}return"Successfully installed usage license"}async function OL(e){let t=rz(e),{id:r}=t;if(await xe.system.hdb_license.get(r))throw new NL(`A usage license with ${r} already exists`);return yo.info?.("Installing usage license:",t),xe.system.hdb_license.put(r,t)}function dz(e){return(e.reads===-1||(e.usedReads??0)<e.reads)&&(e.readBytes===-1||(e.usedReadBytes??0)<e.readBytes)&&(e.writes===-1||(e.usedWrites??0)<e.writes)&&(e.writeBytes===-1||(e.usedWriteBytes??0)<e.writeBytes)&&(e.realTimeMessages===-1||(e.usedRealTimeMessages??0)<e.realTimeMessages)&&(e.realTimeBytes===-1||(e.usedRealTimeBytes??0)<e.realTimeBytes)&&(e.cpuTime===-1||(e.usedCpuTime??0)<e.cpuTime)&&(e.storage===-1||(e.usedStorage??0)<e.storage)}async function PL(){let e=az.get(U.LICENSE_REGION),t={sort:{attribute:"__createdtime__"},conditions:[{attribute:"expiration",comparator:"greater_than",value:new Date().toISOString()}]};e!==void 0&&t.conditions.push({attribute:"region",comparator:"equals",value:e});let r=xe.system.hdb_license?.search(t);for await(let n of r??[])if(dz(n))return n}async function LL(){return await PL()!==void 0}async function fz(e){Na=yo.forComponent("license"),Na.trace?.("Recording usage into license from analytics");let t,r=(await PL())?.id;if(r){Na.trace?.("Found license to record usage into:",r);let n={};It(n,()=>{t=xe.system.hdb_license.update(r,n);for(let s of e)switch(Na.trace?.("Processing analytics record:",s),s.metric){case"db-read":Na.trace?.("Recording read usage into license"),t.addTo("usedReads",s.count),t.addTo("usedReadBytes",s.mean*s.count);break;case"db-write":Na.trace?.("Recording write usage into license"),t.addTo("usedWrites",s.count),t.addTo("usedWriteBytes",s.mean*s.count);break;case"db-message":Na.trace?.("Recording message usage into license"),t.addTo("usedRealTimeMessages",s.count),t.addTo("usedRealTimeBytes",s.mean*s.count);break;case"cpu-usage":s.path==="user"&&(Na.trace?.("Recording CPU usage into license"),t.addTo("usedCpuTime",s.mean*s.count/3600));break;default:Na.trace?.("Skipping metric:",s.metric)}})}else if(!process.env.DEV_MODE){let n="This server does not have valid usage licenses, this should only be used for educational and development purposes.";sz||(console.error(n),sz=!0),iz===void 0&&(iz=setInterval(()=>{yo.notify(n)},Q_e).unref())}}function DL(e){let t={};return e.region&&(t.region=e.region),mz(t)}function mz(e){let t=[],r=typeof e=="object"?Object.keys(e):[];return r.length>0&&r.forEach(n=>{t.push({attribute:n,comparator:"equals",value:e[n]})}),xe.system.hdb_license.search({sort:{attribute:"__createdtime__"},conditions:t})}async function J_e(e){yo.trace?.("Loading usage license from file:",e);let t=await lz.readFile(e,{encoding:"utf-8"});try{await OL(t)}catch(r){yo.error?.("Failed to install usage license from file:",e,r)}}function X_e(){let e=wL.default.join(wL.default.dirname(cz.getConfigFilePath()),"licenses");(0,uz.watch)(e,{persistent:!1,ignoreInitial:!1,depth:0,ignored:a((r,n)=>n?.isFile()&&!r.endsWith(".txt"),"ignored")}).on("add",J_e)}var oz,yo,az,wL,cz,lz,uz,NL,sz,iz,Q_e,Na,uE=ie(()=>{nz();oz=b(ge()),yo=b(ee());Hn();Za();az=b(fe());$();Oe();wL=b(require("node:path")),cz=b(At()),lz=b(require("node:fs/promises")),uz=require("chokidar"),NL=class extends Error{static{a(this,"ExistingLicenseError")}};a(CL,"installUsageLicenseOp");a(OL,"installUsageLicense");sz=!1,Q_e=6e5;a(dz,"isActiveLicense");a(PL,"getActiveLicense");a(LL,"isLicensed");a(fz,"recordUsage");bI(fz);a(DL,"getUsageLicensesOp");a(mz,"getUsageLicenses");a(J_e,"loadLicenseFile");a(X_e,"loadAndWatchLicensesDir")});var Jy={};Re(Jy,{deliverSocket:()=>Iz,getHttpOptions:()=>rge,getRequestId:()=>Oz,handleApplication:()=>tge,httpServer:()=>HL,logRequest:()=>mE,proxyRequest:()=>nge,registerServer:()=>FL,suppressHandleApplicationWarning:()=>ege});function tge(e){pE=e.options.getAll(),e.options.on("change",t=>{pE=e.options.getAll()})}function rge(){return pE}function Iz(e,t,r){let n=e?.read?e:new gz.Socket({fd:e,readable:!0,writable:!0,allowHalfOpen:!0}),s=Cf[t];if(s.isSecure&&(n.startTime=performance.now()),s)typeof s=="function"?s(n):s.emit("connection",n),r&&n.emit("data",r);else{let i=a(o=>{setTimeout(()=>{let c=Cf[t];c?(typeof c=="function"?c(n):c.emit("connection",n),r&&n.emit("data",r)):o<5?i(o+1):(Ca.default.error(`Server on port ${t} was not registered`),n.destroy())},1e3)},"retry");i(1)}return n}function nge(e){let{port:t,event:r,data:n,requestId:s}=e,i;switch(i=pz.get(s),r){case"connection":i=Iz(void 0,t),pz.set(s,i),i.write=(c,l,u)=>(Wy.parentPort.postMessage({requestId:s,event:"data",data:c.toString("latin1")}),u&&u(),!0),i.end=(c,l,u)=>(Wy.parentPort.postMessage({requestId:s,event:"end",data:c?.toString("latin1")}),u&&u(),!0);let o=i.destroy;i.destroy=()=>{o.call(i),Wy.parentPort.postMessage({requestId:s,event:"destroy"})};break;case"data":i._readableState.destroyed||i.emit("data",Buffer.from(n,"latin1"));break;case"drain":i._readableState.destroyed||i.emit("drain",{});break;case"end":i._readableState.destroyed||i.emit("end",{});break;case"error":i._readableState.destroyed||i.emit("error",{});break}}function FL(e,t,r=!0){t||(t=Mr.default.get(U.HTTP_PORT));let n=Cf[t];if(n){let s=n.lastServer||n;if(s===e)throw new Error(`Can not register the same server twice for the same port ${t}`);if(r&&!!s.sessionIdContext!=!!e.sessionIdContext&&+t)throw new Error(`Can not mix secure HTTPS and insecure HTTP on the same port ${t}`);s.off("unhandled",_z),s.on("unhandled",(i,o)=>{e.cantCleanupProperly&&(n.cantCleanupProperly=!0),e.emit("request",i,o)}),n.lastServer=e}else Cf[t]=e;e.on("unhandled",_z)}function kL(e){let t=[],r=e?.securePort;return r&&t.push({port:r,secure:!0}),r=e?.port,r&&t.push({port:r,secure:!1}),t.length===0&&(t=[],Mr.default.get(U.HTTP_PORT)!=null&&t.push({port:Mr.default.get(U.HTTP_PORT),secure:Mr.default.get(U.CUSTOMFUNCTIONS_NETWORK_HTTPS)}),Mr.default.get(U.HTTP_SECUREPORT)!=null&&t.push({port:Mr.default.get(U.HTTP_SECUREPORT),secure:!0})),e?.isOperationsServer&&Mr.default.get(U.OPERATIONSAPI_NETWORK_DOMAINSOCKET)&&t.push({port:(0,Sz.resolvePath)(Mr.default.get(U.OPERATIONSAPI_NETWORK_DOMAINSOCKET)),secure:!1}),t}function HL(e,t){let r=[];for(let{port:n,secure:s}of kL(t))r.push(wz(n,s,t)),typeof e=="function"?xL[t?.runFirst?"unshift":"push"]({listener:e,port:t?.port||n}):(e.isSecure=s,FL(e,n,!1)),jy[n]=zy(xL,n);return r}function wz(e,t,r){let{mtls:n,usageType:s}=r||{},i=s==="operations-api";if(Gy(e,{protocol_name:t?"HTTPS":"HTTP",name:Xy()}),!Yy[e]){let o=i?"operationsApi_network":"http",c=Mr.default.get(o+"_keepAliveTimeout"),l=Mr.default.get(o+"_timeout"),u=Mr.default.get(o+"_headersTimeout"),d={keepAliveTimeout:c,headersTimeout:u,requestTimeout:l,highWaterMark:128*1024,noDelay:!0,keepAlive:!0,keepAliveInitialDelay:600,maxHeaderSize:Mr.default.get(U.HTTP_MAXHEADERSIZE)},f=Mr.default.get(o+"_mtls"),m=Mr.default.get(o+"_mtls_required"),p;if(t){let R=Mr.default.get("tls");p=Mr.default.get(o+"_http2"),Object.assign(d,{allowHTTP1:!0,rejectUnauthorized:!!m,requestCert:!!(f||n),ticketKeys:(0,Tz.getTicketKeys)(),SNICallback:(0,yz.createTLSSelector)(s??"server",f),ciphers:R.ciphers??R[0]?.ciphers})}let h=a(async(R,S)=>{let y=performance.now(),I=0;try{let M=new _c(R,S);i&&(M.isOperationsServer=!0),pE.logging?.id&&(M.requestId=I=Oz());let k=await jy[e](M);if(!k){if(M._nodeResponse.statusCode){mE(R,M._nodeResponse.statusCode,I,performance.now()-y);return}k=Nz(M)}if(k.headers?.set||(k.headers=new $s(k.headers)),await LL()?k.headers.set("Server","HarperDB"):k.headers.set("Server","Unlicensed HarperDB, this should only be used for educational and development purposes"),k.status===-1){for(let Se of k.headers||[])S.setHeader(Se[0],Se[1]);return R.baseRequest=M,S.baseResponse=k,Yy[e].emit("unhandled",R,S)}let X=k.status||200;S.statusCode=X;let J=performance.now(),Y=J-y,H=k.body,ae,le=!1;if(!k.handlesHeaders){let Se=k.headers||new $s;H?H.length>=0?(typeof H=="string"?Se.set("Content-Length",Buffer.byteLength(H)):Se.set("Content-Length",H.length),ae=!0):H instanceof xs&&(H.size?Se.set("Content-Length",H.size):H.on&&(le=!0,H.on("size",et=>{S.headersSent||S.setHeader("Content-Length",et)})),H=H.stream()):(M.method!=="HEAD"&&Se.set("Content-Length","0"),ae=!0);let Me=`hdb;dur=${Y.toFixed(2)}`;if(k.wasCacheMiss&&(Me+=", miss"),Fp(Se,"Server-Timing",Me,!0),!S.headersSent)if(le){if(Se)if(Se[Symbol.iterator])for(let[et,$e]of Se)S.setHeader(et,$e);else for(let et in Se)S.setHeader(et,Se[et])}else S.writeHead(X,Se&&(Se[Symbol.iterator]?Array.from(Se):Se));ae&&S.end(H)}let oe=M.handlerPath,Ee=M.method;if(qe(Y,"duration",oe,Ee,k.wasCacheMiss==null?void 0:k.wasCacheMiss?"cache-miss":"cache-hit"),rn(X<400,"success",oe,Ee),rn(1,"response_"+X,oe,Ee),mE(R,X,I,Y),!ae)if(H instanceof ReadableStream&&(H=UL.Readable.fromWeb(H)),(H[Symbol.iterator]||H[Symbol.asyncIterator])&&(H=UL.Readable.from(H)),H?.pipe){H.pipe(S),H.destroy&&S.on("close",()=>{H.destroy()});let Se=0;H.on("data",Me=>{Se+=Me.length}),H.on("end",()=>{qe(performance.now()-J,"transfer",oe,Ee),qe(Se,"bytes-sent",oe,Ee)})}else H?.then?H.then(Se=>{S.end(Se)},w):S.end(H)}catch(M){w(M)}function w(M){let k=M.headers,X=M.statusCode||500;try{S.writeHead(X,k&&(k[Symbol.iterator]?Array.from(k):k))}catch{}S.end(Z_e(M)),mE(R,X,I,performance.now()-y),M.statusCode?M.statusCode===500?Ca.default.warn(M):Ca.default.info(M):Ca.default.error(M)}a(w,"onError")},"requestHandler"),E=lS(h,(R,S)=>{S.statusCode=503,S.end("Service unavailable, exceeded request queue limit"),qe(!0,"service-unavailable",e)},Mr.default.get(o+"_requestQueueLimit")),_=Yy[e]=(t?p?Rz.createSecureServer:bz.createServer:Qy.createServer)(d,(R,S)=>{let y=R.method;y==="GET"||y==="OPTIONS"||y==="HEAD"?h(R,S):E(R,S)});c>=0&&(_.keepAliveTimeout=c),u>=0&&(_.headersTimeout=u),t&&(_.ports||(_.ports=[]),_.ports.push(e),d.SNICallback.initialize(_),f&&(_.mtlsConfig=f),_.on("secureConnection",R=>{R._parent.startTime&&qe(performance.now()-R._parent.startTime,"tls-handshake",e),qe(R.isSessionReused(),"tls-reused",e)}),_.isSecure=!0),FL(_,e)}return Yy[e]}function zy(e,t){let r=Nz;for(let n=e.length;n>0;){let{listener:s,port:i}=e[--n];if(i===t||i==="all"){let o=r;r=a((...c)=>s(...c,o),"nextCallback")}}return r}function Nz(e){return e.user&&(e._nodeRequest.user=e.user),{status:-1,body:"Not found",headers:new $s}}function sge(e,t){HL(e,{requestOnly:!0,...t})}function Cz(e,t){for(let{port:r}of kL(t))hz[t?.runFirst?"unshift":"push"]({listener:e,port:r}),BL[r]=zy(hz,r)}function ige(e,t){let r=[];for(let{port:n,secure:s}of kL(t)){Gy(n,{protocol_name:s?"WSS":"WS",name:Xy()});let i=wz(n,s,t);dE[n]||(dE[n]=new Az.WebSocketServer({noServer:!0,maxPayload:t.maxPayload??100*1024*1024}),dE[n].on("connection",(o,c)=>{try{let l=new _c(c);l.isWebSocket=!0;let u=jy[n](l);Ca.default.debug("Received WS connection, calling listeners",vL),Ez[n](o,l,u)}catch(l){Ca.default.warn("Error in handling WS connection",l)}}),Cz((o,c,l,u)=>o.__harperdbRequestUpgraded?u(o,c,l):dE[n].handleUpgrade(o,c,l,d=>{o.__harperdbRequestUpgraded=!0,u(o,c,l),dE[n].emit("connection",d,o)}),{port:n}),i.on("upgrade",(o,c,l)=>{BL[n]&&BL[n](o,c,l)})),r.push(i),vL[t?.runFirst?"unshift":"push"]({listener:e,port:n}),Ez[n]=zy(vL,n),jy[n]=zy(xL,n)}return r}function _z(e,t){t.headersSent||t.writableEnded||(t.writeHead(404),t.end(`Not found
|
|
100
|
+
`}getKey(){return(0,Vy.createPublicKey)(this.pem)}toString(){return this.pem}},qy=class extends TypeError{static{a(this,"LicenseEncodingError")}},Of=class extends TypeError{static{a(this,"InvalidLicenseError")}},IL=class extends Of{static{a(this,"InvalidLicenseSignatureError")}},lE=class extends Of{static{a(this,"InvalidHeaderError")}},$y=class extends Of{static{a(this,"InvalidPayloadError")}},K_e=new AL(tz.get(U.LICENSE_MODE));a(Y_e,"validateLicenseSignature");a(W_e,"validateLicenseHeader");a(j_e,"valid");a(z_e,"validateLicensePayload");a(rz,"validateLicense")});var Ky={};Re(Ky,{getActiveLicense:()=>PL,getUsageLicenses:()=>mz,getUsageLicensesOp:()=>DL,installUsageLicense:()=>OL,installUsageLicenseOp:()=>CL,isActiveLicense:()=>dz,isLicensed:()=>LL,loadAndWatchLicensesDir:()=>X_e,recordUsage:()=>fz});async function CL(e){let t=e.license;try{await OL(t)}catch(r){let n=new oz.ClientError("Failed to install usage license; "+r.message);throw n.cause=r,n}return"Successfully installed usage license"}async function OL(e){let t=rz(e),{id:r}=t;if(await xe.system.hdb_license.get(r))throw new NL(`A usage license with ${r} already exists`);return yo.info?.("Installing usage license:",t),xe.system.hdb_license.put(r,t)}function dz(e){return(e.reads===-1||(e.usedReads??0)<e.reads)&&(e.readBytes===-1||(e.usedReadBytes??0)<e.readBytes)&&(e.writes===-1||(e.usedWrites??0)<e.writes)&&(e.writeBytes===-1||(e.usedWriteBytes??0)<e.writeBytes)&&(e.realTimeMessages===-1||(e.usedRealTimeMessages??0)<e.realTimeMessages)&&(e.realTimeBytes===-1||(e.usedRealTimeBytes??0)<e.realTimeBytes)&&(e.cpuTime===-1||(e.usedCpuTime??0)<e.cpuTime)&&(e.storage===-1||(e.usedStorage??0)<e.storage)}async function PL(){let e=az.get(U.LICENSE_REGION),t={sort:{attribute:"__createdtime__"},conditions:[{attribute:"expiration",comparator:"greater_than",value:new Date().toISOString()}]};e!==void 0&&t.conditions.push({attribute:"region",comparator:"equals",value:e});let r=xe.system.hdb_license?.search(t);for await(let n of r??[])if(dz(n))return n}async function LL(){return await PL()!==void 0}async function fz(e){Na=yo.forComponent("license"),Na.trace?.("Recording usage into license from analytics");let t,r=(await PL())?.id;if(r){Na.trace?.("Found license to record usage into:",r);let n={};It(n,()=>{t=xe.system.hdb_license.update(r,n);for(let s of e)switch(Na.trace?.("Processing analytics record:",s),s.metric){case"db-read":Na.trace?.("Recording read usage into license"),t.addTo("usedReads",s.count),t.addTo("usedReadBytes",s.mean*s.count);break;case"db-write":Na.trace?.("Recording write usage into license"),t.addTo("usedWrites",s.count),t.addTo("usedWriteBytes",s.mean*s.count);break;case"db-message":Na.trace?.("Recording message usage into license"),t.addTo("usedRealTimeMessages",s.count),t.addTo("usedRealTimeBytes",s.mean*s.count);break;case"cpu-usage":s.path==="user"&&(Na.trace?.("Recording CPU usage into license"),t.addTo("usedCpuTime",s.mean*s.count/3600));break;default:Na.trace?.("Skipping metric:",s.metric)}})}else if(!process.env.DEV_MODE){let n="This server does not have valid usage licenses, this should only be used for educational and development purposes.";sz||(console.error(n),sz=!0),iz===void 0&&(iz=setInterval(()=>{yo.notify(n)},Q_e).unref())}}function DL(e){let t={};return e.region&&(t.region=e.region),mz(t)}function mz(e){let t=[],r=typeof e=="object"?Object.keys(e):[];return r.length>0&&r.forEach(n=>{t.push({attribute:n,comparator:"equals",value:e[n]})}),xe.system.hdb_license.search({sort:{attribute:"__createdtime__"},conditions:t})}async function J_e(e){yo.trace?.("Loading usage license from file:",e);let t=await lz.readFile(e,{encoding:"utf-8"});try{await OL(t)}catch(r){yo.error?.("Failed to install usage license from file:",e,r)}}function X_e(){let e=wL.default.join(wL.default.dirname(cz.getConfigFilePath()),"licenses");(0,uz.watch)(e,{persistent:!1,ignoreInitial:!1,depth:0,ignored:a((r,n)=>n?.isFile()&&!r.endsWith(".txt"),"ignored")}).on("add",J_e)}var oz,yo,az,wL,cz,lz,uz,NL,sz,iz,Q_e,Na,uE=ie(()=>{nz();oz=b(ge()),yo=b(ee());Hn();Za();az=b(fe());$();Oe();wL=b(require("node:path")),cz=b(At()),lz=b(require("node:fs/promises")),uz=require("chokidar"),NL=class extends Error{static{a(this,"ExistingLicenseError")}};a(CL,"installUsageLicenseOp");a(OL,"installUsageLicense");sz=!1,Q_e=6e5;a(dz,"isActiveLicense");a(PL,"getActiveLicense");a(LL,"isLicensed");a(fz,"recordUsage");bI(fz);a(DL,"getUsageLicensesOp");a(mz,"getUsageLicenses");a(J_e,"loadLicenseFile");a(X_e,"loadAndWatchLicensesDir")});var Jy={};Re(Jy,{deliverSocket:()=>Iz,getHttpOptions:()=>rge,getRequestId:()=>Oz,handleApplication:()=>tge,httpServer:()=>HL,logRequest:()=>mE,proxyRequest:()=>nge,registerServer:()=>FL,suppressHandleApplicationWarning:()=>ege});function tge(e){pE=e.options.getAll(),e.options.on("change",t=>{pE=e.options.getAll()})}function rge(){return pE}function Iz(e,t,r){let n=e?.read?e:new gz.Socket({fd:e,readable:!0,writable:!0,allowHalfOpen:!0}),s=Cf[t];if(s.isSecure&&(n.startTime=performance.now()),s)typeof s=="function"?s(n):s.emit("connection",n),r&&n.emit("data",r);else{let i=a(o=>{setTimeout(()=>{let c=Cf[t];c?(typeof c=="function"?c(n):c.emit("connection",n),r&&n.emit("data",r)):o<5?i(o+1):(Ca.default.error(`Server on port ${t} was not registered`),n.destroy())},1e3)},"retry");i(1)}return n}function nge(e){let{port:t,event:r,data:n,requestId:s}=e,i;switch(i=pz.get(s),r){case"connection":i=Iz(void 0,t),pz.set(s,i),i.write=(c,l,u)=>(Wy.parentPort.postMessage({requestId:s,event:"data",data:c.toString("latin1")}),u&&u(),!0),i.end=(c,l,u)=>(Wy.parentPort.postMessage({requestId:s,event:"end",data:c?.toString("latin1")}),u&&u(),!0);let o=i.destroy;i.destroy=()=>{o.call(i),Wy.parentPort.postMessage({requestId:s,event:"destroy"})};break;case"data":i._readableState.destroyed||i.emit("data",Buffer.from(n,"latin1"));break;case"drain":i._readableState.destroyed||i.emit("drain",{});break;case"end":i._readableState.destroyed||i.emit("end",{});break;case"error":i._readableState.destroyed||i.emit("error",{});break}}function FL(e,t,r=!0){t||(t=Mr.default.get(U.HTTP_PORT));let n=Cf[t];if(n){let s=n.lastServer||n;if(s===e)throw new Error(`Can not register the same server twice for the same port ${t}`);if(r&&!!s.sessionIdContext!=!!e.sessionIdContext&&+t)throw new Error(`Can not mix secure HTTPS and insecure HTTP on the same port ${t}`);s.off("unhandled",_z),s.on("unhandled",(i,o)=>{e.cantCleanupProperly&&(n.cantCleanupProperly=!0),e.emit("request",i,o)}),n.lastServer=e}else Cf[t]=e;e.on("unhandled",_z)}function kL(e){let t=[],r=e?.securePort;return r&&t.push({port:r,secure:!0}),r=e?.port,r&&t.push({port:r,secure:!1}),t.length===0&&(t=[],Mr.default.get(U.HTTP_PORT)!=null&&t.push({port:Mr.default.get(U.HTTP_PORT),secure:Mr.default.get(U.CUSTOMFUNCTIONS_NETWORK_HTTPS)}),Mr.default.get(U.HTTP_SECUREPORT)!=null&&t.push({port:Mr.default.get(U.HTTP_SECUREPORT),secure:!0})),e?.usageType==="operations-api"&&Mr.default.get(U.OPERATIONSAPI_NETWORK_DOMAINSOCKET)&&t.push({port:(0,Sz.resolvePath)(Mr.default.get(U.OPERATIONSAPI_NETWORK_DOMAINSOCKET)),secure:!1}),t}function HL(e,t){let r=[];for(let{port:n,secure:s}of kL(t))r.push(wz(n,s,t)),typeof e=="function"?xL[t?.runFirst?"unshift":"push"]({listener:e,port:t?.port||n}):(e.isSecure=s,FL(e,n,!1)),jy[n]=zy(xL,n);return r}function wz(e,t,r){let{mtls:n,usageType:s}=r||{},i=s==="operations-api";if(Gy(e,{protocol_name:t?"HTTPS":"HTTP",name:Xy()}),!Yy[e]){let o=i?"operationsApi_network":"http",c=Mr.default.get(o+"_keepAliveTimeout"),l=Mr.default.get(o+"_timeout"),u=Mr.default.get(o+"_headersTimeout"),d={keepAliveTimeout:c,headersTimeout:u,requestTimeout:l,highWaterMark:128*1024,noDelay:!0,keepAlive:!0,keepAliveInitialDelay:600,maxHeaderSize:Mr.default.get(U.HTTP_MAXHEADERSIZE)},f=Mr.default.get(o+"_mtls"),m=Mr.default.get(o+"_mtls_required"),p;if(t){let R=Mr.default.get("tls");p=Mr.default.get(o+"_http2"),Object.assign(d,{allowHTTP1:!0,rejectUnauthorized:!!m,requestCert:!!(f||n),ticketKeys:(0,Tz.getTicketKeys)(),SNICallback:(0,yz.createTLSSelector)(s??"server",f),ciphers:R.ciphers??R[0]?.ciphers})}let h=a(async(R,S)=>{let y=performance.now(),I=0;try{let M=new _c(R,S);i&&(M.isOperationsServer=!0),pE.logging?.id&&(M.requestId=I=Oz());let k=await jy[e](M);if(!k){if(M._nodeResponse.statusCode){mE(R,M._nodeResponse.statusCode,I,performance.now()-y);return}k=Nz(M)}if(k.headers?.set||(k.headers=new $s(k.headers)),await LL()?k.headers.set("Server","HarperDB"):k.headers.set("Server","Unlicensed HarperDB, this should only be used for educational and development purposes"),k.status===-1){for(let Se of k.headers||[])S.setHeader(Se[0],Se[1]);return R.baseRequest=M,S.baseResponse=k,Yy[e].emit("unhandled",R,S)}let X=k.status||200;S.statusCode=X;let J=performance.now(),Y=J-y,H=k.body,ae,le=!1;if(!k.handlesHeaders){let Se=k.headers||new $s;H?H.length>=0?(typeof H=="string"?Se.set("Content-Length",Buffer.byteLength(H)):Se.set("Content-Length",H.length),ae=!0):H instanceof xs&&(H.size?Se.set("Content-Length",H.size):H.on&&(le=!0,H.on("size",et=>{S.headersSent||S.setHeader("Content-Length",et)})),H=H.stream()):(M.method!=="HEAD"&&Se.set("Content-Length","0"),ae=!0);let Me=`hdb;dur=${Y.toFixed(2)}`;if(k.wasCacheMiss&&(Me+=", miss"),Fp(Se,"Server-Timing",Me,!0),!S.headersSent)if(le){if(Se)if(Se[Symbol.iterator])for(let[et,$e]of Se)S.setHeader(et,$e);else for(let et in Se)S.setHeader(et,Se[et])}else S.writeHead(X,Se&&(Se[Symbol.iterator]?Array.from(Se):Se));ae&&S.end(H)}let oe=M.handlerPath,Ee=M.method;if(qe(Y,"duration",oe,Ee,k.wasCacheMiss==null?void 0:k.wasCacheMiss?"cache-miss":"cache-hit"),rn(X<400,"success",oe,Ee),rn(1,"response_"+X,oe,Ee),mE(R,X,I,Y),!ae)if(H instanceof ReadableStream&&(H=UL.Readable.fromWeb(H)),(H[Symbol.iterator]||H[Symbol.asyncIterator])&&(H=UL.Readable.from(H)),H?.pipe){H.pipe(S),H.destroy&&S.on("close",()=>{H.destroy()});let Se=0;H.on("data",Me=>{Se+=Me.length}),H.on("end",()=>{qe(performance.now()-J,"transfer",oe,Ee),qe(Se,"bytes-sent",oe,Ee)})}else H?.then?H.then(Se=>{S.end(Se)},w):S.end(H)}catch(M){w(M)}function w(M){let k=M.headers,X=M.statusCode||500;try{S.writeHead(X,k&&(k[Symbol.iterator]?Array.from(k):k))}catch{}S.end(Z_e(M)),mE(R,X,I,performance.now()-y),M.statusCode?M.statusCode===500?Ca.default.warn(M):Ca.default.info(M):Ca.default.error(M)}a(w,"onError")},"requestHandler"),E=lS(h,(R,S)=>{S.statusCode=503,S.end("Service unavailable, exceeded request queue limit"),qe(!0,"service-unavailable",e)},Mr.default.get(o+"_requestQueueLimit")),_=Yy[e]=(t?p?Rz.createSecureServer:bz.createServer:Qy.createServer)(d,(R,S)=>{let y=R.method;y==="GET"||y==="OPTIONS"||y==="HEAD"?h(R,S):E(R,S)});c>=0&&(_.keepAliveTimeout=c),u>=0&&(_.headersTimeout=u),t&&(_.ports||(_.ports=[]),_.ports.push(e),d.SNICallback.initialize(_),f&&(_.mtlsConfig=f),_.on("secureConnection",R=>{R._parent.startTime&&qe(performance.now()-R._parent.startTime,"tls-handshake",e),qe(R.isSessionReused(),"tls-reused",e)}),_.isSecure=!0),FL(_,e)}return Yy[e]}function zy(e,t){let r=Nz;for(let n=e.length;n>0;){let{listener:s,port:i}=e[--n];if(i===t||i==="all"){let o=r;r=a((...c)=>s(...c,o),"nextCallback")}}return r}function Nz(e){return e.user&&(e._nodeRequest.user=e.user),{status:-1,body:"Not found",headers:new $s}}function sge(e,t){HL(e,{requestOnly:!0,...t})}function Cz(e,t){for(let{port:r}of kL(t))hz[t?.runFirst?"unshift":"push"]({listener:e,port:r}),BL[r]=zy(hz,r)}function ige(e,t){let r=[];for(let{port:n,secure:s}of kL(t)){Gy(n,{protocol_name:s?"WSS":"WS",name:Xy()});let i=wz(n,s,t);dE[n]||(dE[n]=new Az.WebSocketServer({noServer:!0,maxPayload:t.maxPayload??100*1024*1024}),dE[n].on("connection",(o,c)=>{try{let l=new _c(c);l.isWebSocket=!0;let u=jy[n](l);Ca.default.debug("Received WS connection, calling listeners",vL),Ez[n](o,l,u)}catch(l){Ca.default.warn("Error in handling WS connection",l)}}),Cz((o,c,l,u)=>o.__harperdbRequestUpgraded?u(o,c,l):dE[n].handleUpgrade(o,c,l,d=>{o.__harperdbRequestUpgraded=!0,u(o,c,l),dE[n].emit("connection",d,o)}),{port:n}),i.on("upgrade",(o,c,l)=>{BL[n]&&BL[n](o,c,l)})),r.push(i),vL[t?.runFirst?"unshift":"push"]({listener:e,port:n}),Ez[n]=zy(vL,n),jy[n]=zy(xL,n)}return r}function _z(e,t){t.headersSent||t.writableEnded||(t.writeHead(404),t.end(`Not found
|
|
101
101
|
`),mE(e,404,0,e.requestId))}function mE(e,t,r,n){let s=pE.logging;if(s){ML||(ML=Ca.default.forComponent("http"));let i=t<400?"info":t===500?"error":"warn";ML[i]?.(`${e.method} ${e.url} ${e.socket.encrypted?"HTTPS":"HTTP"}/${e.httpVersion}${s.headers?" "+oge(e.headers):""} ${t}${s.timing&&n?" "+n.toFixed(2)+"ms":""}${r?" id: "+r:""}`)}}function oge(e){let t=[];for(let r in e)t.push(`${r}: ${e[r]}`);return t.join(", ")}function Oz(){return fE||(fE=new BigInt64Array([1n]),fE=new BigInt64Array(databases.system.hdb_analytics.primaryStore.getUserSharedBuffer("next-request-id",fE.buffer))),Number(Atomics.add(fE,0,1n))}var gz,Ca,Wy,Mr,Sz,Tz,yz,Rz,bz,Qy,UL,Az,Z_e,dE,Yy,jy,xL,pE,ege,pz,hz,BL,vL,Ez,ML,fE,GL=ie(()=>{gz=require("node:net"),Ca=b(ee()),Wy=require("node:worker_threads"),Mr=b(fe());$();Sz=b(At()),Tz=b(at()),yz=b(bs()),Rz=require("node:http2"),bz=require("node:https"),Qy=require("node:http");oh();kp();cs();Hn();UL=require("node:stream");qr();bL();Pf();uN();Az=require("ws");uE();({errorToString:Z_e}=Ca.default);Ue.http=HL;Ue.request=sge;Ue.ws=ige;Ue.upgrade=Cz;dE={},Yy={},jy={},xL=[],pE={},ege=!0;a(tge,"handleApplication");a(rge,"getHttpOptions");a(Iz,"deliverSocket");pz=new Map;a(nge,"proxyRequest");a(FL,"registerServer");a(kL,"getPorts");a(HL,"httpServer");a(wz,"getHTTPServer");a(zy,"makeCallbackChain");a(Nz,"unhandled");a(sge,"onRequest");Object.defineProperty(Qy.IncomingMessage.prototype,"upgrade",{get(){return"connection"in this.headers&&"upgrade"in this.headers&&this.headers.connection.toLowerCase().includes("upgrade")&&this.headers.upgrade.toLowerCase()=="websocket"},set(e){}});hz=[],BL={};a(Cz,"onUpgrade");vL=[],Ez={};a(ige,"onWebSocket");a(_z,"defaultNotFound");a(mE,"logRequest");a(oge,"headersToString");a(Oz,"getRequestId")});var $L=x(_E=>{"use strict";vA();var{isMainThread:qL,parentPort:Pz,threadId:Zy,workerData:age}=require("node:worker_threads"),{createServer:cge}=require("node:net"),{unlinkSync:lge,existsSync:uge}=require("fs"),vz;_E.whenComponentsLoaded=new Promise(e=>{vz=e});var Ci=ee(),Ro=fe(),bo=($(),L(Q)),{server:dge}=(qr(),L(Tm)),{createServer:fge}=require("node:tls"),{restartNumber:mge,getWorkerIndex:EE}=at(),{createReuseportFd:hE}=(oh(),L(b$)),{createTLSSelector:pge}=bs(),{startupLog:hge}=eR(),{SERVERS:Lf,setPortServerMap:Lz,portServer:Ege}=(bL(),L(ez)),Dz=(GL(),L(Jy)),_ge=fi(),Mz=Ro.get(bo.CONFIG_PARAMS.THREADS_DEBUG),gge=Ro.get(bo.CONFIG_PARAMS.HTTP_SESSIONAFFINITY);dge.socket=Sge;if(Mz){let e;if(qL)e=Ro.get(bo.CONFIG_PARAMS.THREADS_DEBUG_PORT)??9229,process.on(["SIGINT","SIGTERM","SIGQUIT","exit"],()=>{try{require("inspector").close()}catch(t){Ci.info("Could not close debugger",t)}});else{let t=Ro.get(bo.CONFIG_PARAMS.THREADS_DEBUG_STARTINGPORT);t&&EE()>=0&&(e=t+EE())}if(e){let t=Ro.get(bo.CONFIG_PARAMS.THREADS_DEBUG_HOST),r=Ro.get(bo.CONFIG_PARAMS.THREADS_DEBUG_WAITFORDEBUGGER);try{require("inspector").open(e,t,r)}catch(n){Ci.trace(`Could not start debugging on port ${e}, you may already be debugging:`,n.message)}}}else if(process.env.DEV_MODE&&qL)try{require("inspector").open(9229)}catch(e){mge<=1&&Ci.trace("Could not start debugging on port 9229, you may already be debugging:",e.message)}process.on("uncaughtException",e=>{e.isHandled||e.code==="ECONNRESET"||e.code==="ECONNREFUSED"||e.message!=="write EIO"&&Ci.error("uncaughtException",e)});Ro.initSync();_E.globals=_ge;_E.listenOnPorts=xz;_E.startServers=Uz;function Uz(){let e=Ro.get(bo.CONFIG_PARAMS.ROOTPATH);if(e)try{process.chdir(e)}catch{}let t=tR().loadRootComponents(!0).then(()=>{Pz?.on("message",n=>{let{port:s,fd:i,data:o}=n;if(i)Dz.deliverSocket(i,s,o);else if(n.requestId)Dz.proxyRequest(n);else if(n.type===bo.ITC_EVENT_TYPES.SHUTDOWN){Ci.trace("received shutdown request",Zy);for(let c in Lf){let l=Lf[c],u;if(l.closeIdleConnections){let f=Object.getOwnPropertySymbols(l).find(h=>h.description.includes("connections")),m=0,p=setInterval(()=>{m++;let h=m>=100;if(!l[f]){h&&l.closeAllConnections?.(),clearInterval(p);return}let E=l[f][h?"all":"idle"]?.()||[];if(E.length===0){h&&clearInterval(p);return}m===1?Ci.info(`Closing ${E.length} idle connections`):h&&Ci.warn(`Forcefully closing ${E.length} active connections`);for(let _=0,R=E.length;_<R;_++){let S=E[_].socket;S._httpMessage&&!S._httpMessage.finished&&!h||(h?S.destroySoon():S.end(`HTTP/1.1 408 Request Timeout\r
|
|
102
102
|
Connection: close\r
|
|
103
103
|
\r
|