harperdb 4.5.9 → 4.6.0-alpha.2

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 (60) hide show
  1. package/README.md +1 -1
  2. package/bin/harperdb.js +79 -80
  3. package/bin/lite.js +68 -69
  4. package/config/yaml/defaultConfig.yaml +1 -0
  5. package/index.d.ts +8 -8
  6. package/index.js +5 -5
  7. package/json/systemSchema.json +13 -1
  8. package/launchServiceScripts/launchInstallNATSServer.js +3 -3
  9. package/launchServiceScripts/launchNatsIngestService.js +68 -69
  10. package/launchServiceScripts/launchNatsReplyService.js +68 -69
  11. package/launchServiceScripts/launchUpdateNodes4-0-0.js +68 -69
  12. package/npm-shrinkwrap.json +7 -7
  13. package/package.json +2 -2
  14. package/resources/DatabaseTransaction.d.ts +8 -8
  15. package/resources/ErrorResource.d.ts +2 -2
  16. package/resources/IterableEventQueue.d.ts +1 -1
  17. package/resources/RecordEncoder.d.ts +6 -6
  18. package/resources/Resource.d.ts +17 -17
  19. package/resources/ResourceInterface.d.ts +27 -12
  20. package/resources/Resources.d.ts +7 -5
  21. package/resources/Table.d.ts +73 -73
  22. package/resources/analytics/hostnames.d.ts +483 -0
  23. package/resources/analytics/metadata.d.ts +9 -0
  24. package/resources/analytics/read.d.ts +26 -0
  25. package/resources/{analytics.d.ts → analytics/write.d.ts} +33 -27
  26. package/resources/auditStore.d.ts +15 -15
  27. package/resources/crdt.d.ts +4 -4
  28. package/resources/databases.d.ts +102 -102
  29. package/resources/indexes/HierarchicalNavigableSmallWorld.d.ts +84 -0
  30. package/resources/indexes/customIndexes.d.ts +4 -0
  31. package/resources/indexes/vector.d.ts +2 -0
  32. package/resources/search.d.ts +8 -8
  33. package/resources/tracked.d.ts +6 -6
  34. package/resources/transaction.d.ts +3 -3
  35. package/resources/transactionBroadcast.d.ts +5 -5
  36. package/security/auth.d.ts +9 -0
  37. package/security/tokenAuthentication.d.ts +35 -0
  38. package/server/Server.d.ts +5 -2
  39. package/server/jobs/jobProcess.js +68 -69
  40. package/server/operationsServer.d.ts +30 -0
  41. package/server/replication/knownNodes.d.ts +35 -0
  42. package/server/replication/nodeIdMapping.d.ts +6 -0
  43. package/server/replication/replicationConnection.d.ts +58 -0
  44. package/server/replication/replicator.d.ts +65 -0
  45. package/server/replication/setNode.d.ts +15 -0
  46. package/server/replication/subscriptionManager.d.ts +13 -0
  47. package/server/serverHelpers/Headers.d.ts +2 -2
  48. package/server/serverHelpers/OperationFunctionObject.d.ts +8 -0
  49. package/server/serverHelpers/contentTypes.d.ts +7 -7
  50. package/server/serverHelpers/serverUtilities.d.ts +23 -0
  51. package/server/status.d.ts +12 -0
  52. package/server/threads/threadServer.js +45 -46
  53. package/studio/build-local/asset-manifest.json +2 -2
  54. package/studio/build-local/index.html +1 -1
  55. package/studio/build-local/static/js/main.5dea46bb.js +2 -0
  56. package/utility/hdbTerms.d.ts +7 -0
  57. package/utility/password.d.ts +20 -0
  58. package/utility/scripts/restartHdb.js +68 -69
  59. package/studio/build-local/static/js/main.491129ee.js +0 -2
  60. /package/studio/build-local/static/js/{main.491129ee.js.LICENSE.txt → main.5dea46bb.js.LICENSE.txt} +0 -0
@@ -22,6 +22,7 @@ authentication:
22
22
  refreshTokenTimeout: 30d
23
23
  analytics:
24
24
  aggregatePeriod: 60
25
+ replicate: false
25
26
  replication:
26
27
  securePort: 9933
27
28
  enableRootCAs: true
package/index.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  export { Resource } from './resources/Resource';
2
- import { Resource as Resource_import } from './resources/Resource';
2
+ import { Resource as ResourceImport } from './resources/Resource.ts';
3
3
  export { Query, Context, SubscriptionRequest } from './resources/ResourceInterface';
4
4
  export { server } from './server/Server';
5
- import { server as server_import } from './server/Server';
5
+ import { server as serverImport } from './server/Server.ts';
6
6
  export { tables, databases } from './resources/databases';
7
- import { tables as db_tables, databases as db_databases } from './resources/databases';
8
- import { BlobCreationOptions } from './resources/blob';
7
+ import { tables as dbTables, databases as dbDatabases } from './resources/databases.ts';
8
+ import { BlobCreationOptions } from './resources/blob.ts';
9
9
  declare global {
10
- const tables: typeof db_tables;
11
- const databases: typeof db_databases;
12
- const server: typeof server_import;
13
- const Resource: typeof Resource_import;
10
+ const tables: typeof dbTables;
11
+ const databases: typeof dbDatabases;
12
+ const server: typeof serverImport;
13
+ const Resource: typeof ResourceImport;
14
14
  const createBlob: (source: Uint8Array | NodeJS.ReadableStream | string | Iterable<Uint8Array> | AsyncIterator<Uint8Array>, options?: BlobCreationOptions) => Blob;
15
15
  }
package/index.js CHANGED
@@ -1,10 +1,10 @@
1
- const worker_threads = require('node:worker_threads');
2
- if (!worker_threads.isMainThread) {
1
+ const workerThreads = require('node:worker_threads');
2
+ if (!workerThreads.isMainThread) {
3
3
  // Prevents server from starting in worker threads if this was directly imported from a non-server user thread
4
- if (!worker_threads.workerData) worker_threads.workerData = {};
5
- worker_threads.workerData.noServerStart = true;
4
+ if (!workerThreads.workerData) workerThreads.workerData = {};
5
+ workerThreads.workerData.noServerStart = true;
6
6
  }
7
- const { globals } = require('./server/threads/threadServer');
7
+ const { globals } = require('./server/threads/threadServer.js');
8
8
  // these are all overwritten by the globals, but need to be here so that Node's static
9
9
  // exports parser can analyze them
10
10
  exports.Resource = undefined;
@@ -197,11 +197,23 @@
197
197
  }
198
198
  ]
199
199
  },
200
+ "hdb_analytics_hostname": {
201
+ "hash_attribute": "id",
202
+ "name": "hdb_analytics_hostname",
203
+ "schema": "system",
204
+ "attributes": [
205
+ {
206
+ "attribute": "id"
207
+ },
208
+ {
209
+ "attribute": "hostname"
210
+ }
211
+ ]
212
+ },
200
213
  "hdb_analytics": {
201
214
  "hash_attribute": "id",
202
215
  "name": "hdb_analytics",
203
216
  "schema": "system",
204
- "audit": false,
205
217
  "attributes": [
206
218
  {
207
219
  "attribute": "id"
@@ -1,3 +1,3 @@
1
- "use strict";var K=Object.defineProperty;var a=(e,t)=>K(e,"name",{value:t,configurable:!0});var O=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var C=O((Le,U)=>{var{join:ee,dirname:L}=require("node:path"),{existsSync:te,readFileSync:re}=require("node:fs");function ne(){let t=__dirname,r,n=0;for(;!te(r=ee(t,"package.json"));)if(t===(t=L(t))||n++>10)throw new Error("Could not find package root");return r}a(ne,"findPackageJson");var M=ne(),se=JSON.parse(re(M,"utf8")),oe=L(M);U.exports={packageJson:se,PACKAGE_ROOT:oe}});var V=O((Ue,F)=>{if(__filename.endsWith("dev.js")){let e=require("fast-glob"),{tmpdir:t}=require("node:os"),{relative:r,join:n}=require("node:path"),{existsSync:_,statSync:p,readFileSync:w,writeFileSync:x,unlinkSync:I}=require("node:fs"),{isMainThread:m}=require("node:worker_threads"),{spawnSync:N,spawn:Q}=require("node:child_process");process.setSourceMapsEnabled(!0);let{PACKAGE_ROOT:i}=C(),b=["bin","components","dataLayer","resources","server","sqlTranslator","upgrade","utility","validation"],g="ts-build";if(m){let R=!1,S=!1;if(S=_(n(i,g))){let l=new Set;e.sync(b.map(s=>`${s}/**/*.ts`),{cwd:i}).forEach(s=>{let d=0,c=0;try{l.add(s),d=p(n(i,s)).mtimeMs-5e3,c=p(n(i,g,s.replace(/.ts$/,".js"))).mtimeMs}catch{}d>c&&(R=!0)}),e.sync(b.map(s=>`${s}/**/*.js`),{cwd:n(i,g)}).forEach(s=>{if(!l.has(s.replace(/.js$/,".ts")))try{I(n(i,g,s))}catch{}})}else R=!0;if(R){console.log("Compiling TypeScript...");let l=N("npx",["tsc"],{cwd:i});if(l.stdout?.length&&console.log(l.stdout.toString()),l.stderr?.length&&console.log(l.stderr.toString()),S){let s=n(t(),"harperdb-tsc.pid"),d=!1;if(_(s))try{process.kill(+w(s,"utf8"),0),d=!0}catch{}if(!d){console.log("Starting background TypeScript compilation...");let c=Q("npx",["tsc","--watch"],{detached:!0,cwd:i,stdio:"ignore"});c.on("error",h=>{console.error("Error trying to compile TypeScript",h)}),c.pid&&x(s,String(c.pid),"utf-8"),c.unref()}}}}let q=F.constructor,Z=q._findPath;q._findPath=function(R,S,l){if(R.startsWith(".")&&!l&&S.length===1&&S[0].startsWith(i)&&!S[0].includes("node_modules")){let s=r(i,S[0]),d;s.startsWith(g)?d=n(i,r(g,s)):d=n(i,g,s);let c=n(d,R),h=c+".js";if(_(h))return h;if(c.includes(".")&&_(c))return c}return Z(R,S,l)}}});var k=O((Ve,G)=>{"use strict";var{platform:Fe}=require("os"),ie="nats-server.zip",D="nats-server",ce=process.platform==="win32"?`${D}.exe`:D,ae=/^[^\s.,*>]+$/,j="__request__",le=a(e=>`${e}.${j}`,"REQUEST_SUBJECT"),de={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},ue={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},Se={HUB:"hub.pid",LEAF:"leaf.pid"},Ee={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},_e={SUCCESS:"success",ERROR:"error"},pe={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},ge={TXN:"txn",MSGID:"msgid"},A={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},Re={[A.ERR]:1,[A.WRN]:2,[A.INF]:3,[A.DBG]:4,[A.TRC]:5},fe={debug:"-D",trace:"-DVV"};G.exports={NATS_SERVER_ZIP:ie,NATS_SERVER_NAME:D,NATS_BINARY_NAME:ce,PID_FILES:Se,NATS_CONFIG_FILES:ue,SERVER_SUFFIX:Ee,NATS_TERM_CONSTRAINTS_RX:ae,REQUEST_SUFFIX:j,UPDATE_REMOTE_RESPONSE_STATUSES:_e,CLUSTER_STATUS_STATUSES:pe,REQUEST_SUBJECT:le,SUBJECT_PREFIXES:ge,MSG_HEADERS:de,LOG_LEVELS:A,LOG_LEVEL_FLAGS:fe,LOG_LEVEL_HIERARCHY:Re}});var Y=O((Ge,X)=>{"use strict";var f=require("fs-extra"),E=require("path"),o=require("chalk"),Te=require("needle"),H=require("node-stream-zip"),B=require("semver"),T=k(),Ae=require("util"),we=require("child_process"),{platform:me}=require("os"),Ne=Ae.promisify(we.exec),{packageJson:z,PACKAGE_ROOT:he}=C(),u=E.join(he,"dependencies"),ye=E.join(u,T.NATS_SERVER_ZIP),$=z.engines["go-lang"],v=z.engines[T.NATS_SERVER_NAME],ve=`${process.platform}-${process.arch}`,P=E.join(u,ve,`${T.NATS_BINARY_NAME}`),Ie=`https://github.com/nats-io/nats-server/releases/download/v${v}/nats-server-v${v}-`,W={"linux-x64":"linux-amd64.zip","linux-arm64":"linux-arm64.zip","darwin-x64":"darwin-amd64.zip","darwin-arm64":"darwin-arm64.zip","win32-x64":"windows-amd64.zip"},Oe=Object.keys(W).map(e=>e.split("-"));async function y(e,t=void 0){let{stdout:r,stderr:n}=await Ne(e,{cwd:t});if(n)throw new Error(n.replace(`
2
- `,""));return r.replace(`
3
- `,"")}a(y,"runCommand");async function $e(){try{await f.access(P)}catch{return!1}let e=await y(`${P} --version`,void 0),t=e.substring(e.lastIndexOf("v")+1,e.length);return B.eq(t,v)}a($e,"checkNATSServerInstalled");async function Pe(){console.log(o.green(`Verifying go v${$} is on system.`));let e;try{e=(await y("go version",void 0)).match(/[\d.]+/)[0]}catch{throw Error("go does not appear to be installed or is not in the PATH, cannot install clustering dependencies.")}if(!B.gte(e,$))throw Error(`go version ${$} or higher must be installed.`);console.log(o.green(`go v${$} is on the system.`))}a(Pe,"checkGoVersion");async function xe(){console.log(o.green("Extracting NATS Server source code."));let e=new H.async({file:ye}),t=E.join(u,`${T.NATS_SERVER_NAME}-src`),r=await e.extract(null,u);return console.log(o.green(`Extracted ${r} entries.`)),await e.close(),t}a(xe,"extractNATSServer");async function Ce(e){let t=E.join(e,T.NATS_BINARY_NAME),r=E.join(u,"pkg");await f.move(t,P,{overwrite:!0}),await f.remove(e),await f.remove(r)}a(Ce,"cleanUp");async function J(e,t){let r=e&&t?`${e}-${t}`:`${process.platform}-${process.arch}`,n=W[r];if(n===void 0)throw Error(`unknown platform - architecture: ${r}`);let _=`${Ie}${n}`,p=E.join(u,r,n);await f.ensureFile(p),console.log(o.green(`****Downloading install of NATS Server: ${_}****`)),await Te("get",_,{output:p,follow_max:5}),console.log(o.green("Successfully downloaded and saved nats-server zip.")),console.log(o.green("Extracting nats-server zip."));let w=new H.async({file:p}),x=await w.entries(),I=e==="win32"||process.platform==="win32"?`${T.NATS_SERVER_NAME}.exe`:T.NATS_SERVER_NAME,m=E.join(u,r,I);for(let N of Object.values(x))!N.isDirectory&&N.name.endsWith(I)&&(await w.extract(N.name,m),console.log(o.green(`Successfully extracted nats-server zip to ${m}.`)));await w.close(),await f.remove(p),await f.chmod(m,511)}a(J,"downloadNATSServer");async function De(){if(console.log(o.green("****Starting install of NATS Server.****")),await $e()){console.log(o.green(`****NATS Server v${v} installed.****`));return}try{await J();try{let r=await y(`${P} --version`,void 0);console.log(o.green(`****Successfully extracted ${r}.****`))}catch(r){if(r.toString().includes("file busy"))console.warn("Error checking NATS versions",r);else throw r}return}catch(r){console.error(o.red(`Error: ${r.message}. Failed to download NATS server. Building from source`))}try{await Pe()}catch(r){console.error(o.red(r.message)),process.exit(1)}let t=await xe();console.log(o.green("Building NATS Server binary.")),me()=="win32"?await y(`set GOPATH=${u}&& go build`,t):await y(`export GOPATH=${u} && go build`,t),console.log(o.green("Building NATS Server binary complete.")),await Ce(t),console.log(o.green(`****NATS Server v${v} is installed.****`))}a(De,"installer");X.exports={installer:De,downloadNATSServer:J,ALL_SUPPORTED_PLATFORM_ARCHITECTURES:Oe}});V();var He=require("fs"),Be=require("path"),be=Y();(async()=>{try{await be.installer()}catch(e){console.error(e)}})();
1
+ "use strict";var Q=Object.defineProperty;var a=(e,t)=>Q(e,"name",{value:t,configurable:!0});var I=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var C=I((Fe,b)=>{"use strict";var{join:ee,dirname:F}=require("node:path"),{existsSync:te,readFileSync:ne}=require("node:fs");function re(){let t=__dirname,n,r=0;for(;!te(n=ee(t,"package.json"));)if(t===(t=F(t))||r++>10)throw new Error("Could not find package root");return n}a(re,"findPackageJson");var U=re(),oe=JSON.parse(ne(U,"utf8")),se=F(U);b.exports={packageJson:oe,PACKAGE_ROOT:se}});var q=I((be,V)=>{"use strict";if(__filename.endsWith("dev.js")&&!process.env.HARPER_SKIP_COMPILE){let e=require("fast-glob"),{tmpdir:t}=require("node:os"),{relative:n,join:r}=require("node:path"),{existsSync:p,statSync:_,readFileSync:w,writeFileSync:x,unlinkSync:P}=require("node:fs"),{isMainThread:m}=require("node:worker_threads"),{spawnSync:N,spawn:Z}=require("node:child_process");process.setSourceMapsEnabled(!0);let{PACKAGE_ROOT:i}=C(),L=["bin","components","dataLayer","resources","server","sqlTranslator","upgrade","utility","validation"],R="ts-build";if(m){let l=!1,E=!1;if(E=p(r(i,R))){let d=new Set;e.sync(L.map(o=>`${o}/**/*.ts`),{cwd:i}).forEach(o=>{let S=0,c=0;try{d.add(o),S=_(r(i,o)).mtimeMs-5e3,c=_(r(i,R,o.replace(/.ts$/,".js"))).mtimeMs}catch{}S>c&&(l=!0)}),e.sync(L.map(o=>`${o}/**/*.js`),{cwd:r(i,R)}).forEach(o=>{if(!d.has(o.replace(/.js$/,".ts")))try{P(r(i,R,o))}catch{}})}else l=!0;if(l){console.log("Compiling TypeScript...");let d=N("npx",["tsc"],{cwd:i});if(d.stdout?.length&&console.log(d.stdout.toString()),d.stderr?.length&&console.log(d.stderr.toString()),E){let o=r(t(),"harperdb-tsc.pid"),S=!1;if(p(o))try{process.kill(+w(o,"utf8"),0),S=!0}catch{}if(!S){console.log("Starting background TypeScript compilation...");let c=Z("npx",["tsc","--watch"],{detached:!0,cwd:i,stdio:"ignore"});c.on("error",h=>{console.error("Error trying to compile TypeScript",h)}),c.pid&&x(o,String(c.pid),"utf-8"),c.unref()}}}}let M=V.constructor,K=M._findPath;M._findPath=function(l,E,d){if(l.startsWith(".")&&!d&&E.length===1&&E[0].startsWith(i)&&!E[0].includes("node_modules")){let o=n(i,E[0]),S;o.startsWith(R)?S=r(i,n(R,o)):S=r(i,R,o),(l.endsWith(".js")||l.endsWith(".ts"))&&(l=l.slice(0,-3));let c=r(S,l),h=c+".js";if(p(h))return h;if(c.includes(".")&&p(c))return c}return K(l,E,d)}}});var k=I((qe,G)=>{"use strict";var{platform:Ve}=require("os"),ie="nats-server.zip",D="nats-server",ce=process.platform==="win32"?`${D}.exe`:D,ae=/^[^\s.,*>]+$/,j="__request__",le=a(e=>`${e}.${j}`,"REQUEST_SUBJECT"),de={NATS_MSG_ID:"Nats-Msg-Id",ORIGIN:"origin",TRANSACTED_NODES:"transacted_nodes"},Se={HUB_SERVER:"hub.json",LEAF_SERVER:"leaf.json"},ue={HUB:"hub.pid",LEAF:"leaf.pid"},Ee={HUB:"-hub",LEAF:"-leaf",ADMIN:"-admin"},ge={SUCCESS:"success",ERROR:"error"},pe={OPEN:"open",CLOSED:"closed",NO_RESPONDERS:"NoResponders",TIMEOUT:"Timeout"},_e={TXN:"txn",MSGID:"msgid"},A={ERR:"error",WRN:"warn",INF:"info",DBG:"debug",TRC:"trace"},Re={[A.ERR]:1,[A.WRN]:2,[A.INF]:3,[A.DBG]:4,[A.TRC]:5},Te={debug:"-D",trace:"-DVV"};G.exports={NATS_SERVER_ZIP:ie,NATS_SERVER_NAME:D,NATS_BINARY_NAME:ce,PID_FILES:ue,NATS_CONFIG_FILES:Se,SERVER_SUFFIX:Ee,NATS_TERM_CONSTRAINTS_RX:ae,REQUEST_SUFFIX:j,UPDATE_REMOTE_RESPONSE_STATUSES:ge,CLUSTER_STATUS_STATUSES:pe,REQUEST_SUBJECT:le,SUBJECT_PREFIXES:_e,MSG_HEADERS:de,LOG_LEVELS:A,LOG_LEVEL_FLAGS:Te,LOG_LEVEL_HIERARCHY:Re}});var Y=I((Ge,X)=>{"use strict";var T=require("fs-extra"),g=require("path"),s=require("chalk"),fe=require("needle"),B=require("node-stream-zip"),H=require("semver"),f=k(),Ae=require("util"),we=require("child_process"),{platform:me}=require("os"),Ne=Ae.promisify(we.exec),{packageJson:z,PACKAGE_ROOT:he}=C(),u=g.join(he,"dependencies"),ye=g.join(u,f.NATS_SERVER_ZIP),O=z.engines["go-lang"],v=z.engines[f.NATS_SERVER_NAME],ve=`${process.platform}-${process.arch}`,$=g.join(u,ve,`${f.NATS_BINARY_NAME}`),Pe=`https://github.com/nats-io/nats-server/releases/download/v${v}/nats-server-v${v}-`,W={"linux-x64":"linux-amd64.zip","linux-arm64":"linux-arm64.zip","darwin-x64":"darwin-amd64.zip","darwin-arm64":"darwin-arm64.zip","win32-x64":"windows-amd64.zip"},Ie=Object.keys(W).map(e=>e.split("-"));async function y(e,t=void 0){let{stdout:n,stderr:r}=await Ne(e,{cwd:t});if(r)throw new Error(r.replace(`
2
+ `,""));return n.replace(`
3
+ `,"")}a(y,"runCommand");async function Oe(){try{await T.access($)}catch{return!1}let e=await y(`${$} --version`,void 0),t=e.substring(e.lastIndexOf("v")+1,e.length);return H.eq(t,v)}a(Oe,"checkNATSServerInstalled");async function $e(){console.log(s.green(`Verifying go v${O} is on system.`));let e;try{e=(await y("go version",void 0)).match(/[\d.]+/)[0]}catch{throw Error("go does not appear to be installed or is not in the PATH, cannot install clustering dependencies.")}if(!H.gte(e,O))throw Error(`go version ${O} or higher must be installed.`);console.log(s.green(`go v${O} is on the system.`))}a($e,"checkGoVersion");async function xe(){console.log(s.green("Extracting NATS Server source code."));let e=new B.async({file:ye}),t=g.join(u,`${f.NATS_SERVER_NAME}-src`),n=await e.extract(null,u);return console.log(s.green(`Extracted ${n} entries.`)),await e.close(),t}a(xe,"extractNATSServer");async function Ce(e){let t=g.join(e,f.NATS_BINARY_NAME),n=g.join(u,"pkg");await T.move(t,$,{overwrite:!0}),await T.remove(e),await T.remove(n)}a(Ce,"cleanUp");async function J(e,t){let n=e&&t?`${e}-${t}`:`${process.platform}-${process.arch}`,r=W[n];if(r===void 0)throw Error(`unknown platform - architecture: ${n}`);let p=`${Pe}${r}`,_=g.join(u,n,r);await T.ensureFile(_),console.log(s.green(`****Downloading install of NATS Server: ${p}****`)),await fe("get",p,{output:_,follow_max:5}),console.log(s.green("Successfully downloaded and saved nats-server zip.")),console.log(s.green("Extracting nats-server zip."));let w=new B.async({file:_}),x=await w.entries(),P=e==="win32"||process.platform==="win32"?`${f.NATS_SERVER_NAME}.exe`:f.NATS_SERVER_NAME,m=g.join(u,n,P);for(let N of Object.values(x))!N.isDirectory&&N.name.endsWith(P)&&(await w.extract(N.name,m),console.log(s.green(`Successfully extracted nats-server zip to ${m}.`)));await w.close(),await T.remove(_),await T.chmod(m,511)}a(J,"downloadNATSServer");async function De(){if(console.log(s.green("****Starting install of NATS Server.****")),await Oe()){console.log(s.green(`****NATS Server v${v} installed.****`));return}try{await J();try{let n=await y(`${$} --version`,void 0);console.log(s.green(`****Successfully extracted ${n}.****`))}catch(n){if(n.toString().includes("file busy"))console.warn("Error checking NATS versions",n);else throw n}return}catch(n){console.error(s.red(`Error: ${n.message}. Failed to download NATS server. Building from source`))}try{await $e()}catch(n){console.error(s.red(n.message)),process.exit(1)}let t=await xe();console.log(s.green("Building NATS Server binary.")),me()=="win32"?await y(`set GOPATH=${u}&& go build`,t):await y(`export GOPATH=${u} && go build`,t),console.log(s.green("Building NATS Server binary complete.")),await Ce(t),console.log(s.green(`****NATS Server v${v} is installed.****`))}a(De,"installer");X.exports={installer:De,downloadNATSServer:J,ALL_SUPPORTED_PLATFORM_ARCHITECTURES:Ie}});q();var Be=require("fs"),He=require("path"),Le=Y();(async()=>{try{await Le.installer()}catch(e){console.error(e)}})();