@medplum/agent 5.1.10 → 5.1.11

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 (2) hide show
  1. package/dist/cjs/index.cjs +67 -11
  2. package/package.json +5 -5
@@ -54664,7 +54664,7 @@ function st(r6) {
54664
54664
  return r6.bareCriteria ? [r6.bareCriteria, ...r6.criteriaWithProps] : r6.criteriaWithProps;
54665
54665
  }
54666
54666
  var Ha = new z(1e3);
54667
- var ln = "5.1.10-051724e";
54667
+ var ln = "5.1.11-0b5234d";
54668
54668
  var za = O.FHIR_JSON + ", */*; q=0.1";
54669
54669
  var Ja = "https://api.medplum.com/";
54670
54670
  var Ka = 1e3;
@@ -55389,12 +55389,20 @@ var Zt = class extends te {
55389
55389
  return this.fetchTokens(i);
55390
55390
  }
55391
55391
  refreshIfExpired(t) {
55392
- return !this.refreshPromise && this.accessTokenExpires !== void 0 && !this.isAuthenticated(t) && this.refresh(), this.refreshPromise ?? Promise.resolve();
55392
+ return !this.refreshPromise && this.accessTokenExpires !== void 0 && !this.isAuthenticated(t) && this.refresh(t), this.refreshPromise ?? Promise.resolve();
55393
55393
  }
55394
- refresh() {
55394
+ refresh(t) {
55395
55395
  if (this.refreshPromise) return this.refreshPromise;
55396
- if (this.refreshToken) return this.refreshPromise = this.fetchTokens({ grant_type: He.RefreshToken, client_id: this.clientId ?? "", refresh_token: this.refreshToken }), this.refreshPromise;
55397
- if (this.clientId && this.clientSecret) return this.refreshPromise = this.startClientLogin(this.clientId, this.clientSecret), this.refreshPromise;
55396
+ if (!(!this.refreshToken && !(this.clientId && this.clientSecret))) return this.refreshPromise = this.runRefreshWithLock(t), this.refreshPromise;
55397
+ }
55398
+ async runRefreshWithLock(t) {
55399
+ let n = () => {
55400
+ let s = this.getActiveLogin();
55401
+ return s?.accessToken && s.accessToken !== this.accessToken && this.setAccessToken(s.accessToken, s.refreshToken), this.isAuthenticated(t) ? Promise.resolve(this.getProfile()) : this.refreshToken ? this.fetchTokens({ grant_type: He.RefreshToken, client_id: this.clientId ?? "", refresh_token: this.refreshToken }) : this.clientId && this.clientSecret ? this.startClientLogin(this.clientId, this.clientSecret) : Promise.resolve(void 0);
55402
+ }, i = typeof navigator < "u" ? navigator.locks : void 0;
55403
+ if (!i?.request) return n();
55404
+ let o2 = `medplum-refresh:${this.storage.makeKey("activeLogin")}`;
55405
+ return i.request(o2, n);
55398
55406
  }
55399
55407
  async startClientLogin(t, n) {
55400
55408
  return this.clientId = t, this.clientSecret = n, this.fetchTokens({ grant_type: He.ClientCredentials, client_id: t, client_secret: n });
@@ -74717,11 +74725,12 @@ var _App = class _App {
74717
74725
  }
74718
74726
  });
74719
74727
  this.webSocket.addEventListener("message", async (e) => {
74728
+ let command;
74720
74729
  try {
74721
74730
  const data2 = e.data;
74722
74731
  const str2 = data2.toString("utf8");
74723
74732
  this.log.debug(`Received from WebSocket: ${str2.replaceAll("\r", "\n")}`);
74724
- const command = JSON.parse(str2);
74733
+ command = JSON.parse(str2);
74725
74734
  switch (command.type) {
74726
74735
  // @ts-expect-error - Deprecated message type
74727
74736
  case "connected":
@@ -74790,11 +74799,28 @@ var _App = class _App {
74790
74799
  case "agent:error":
74791
74800
  this.log.error(command.body);
74792
74801
  break;
74793
- default:
74794
- this.log.error(`Unknown message type: ${command.type}`);
74802
+ default: {
74803
+ const errMsg = `Unknown message type: ${command.type}`;
74804
+ this.log.error(errMsg);
74805
+ await this.sendToWebSocket({
74806
+ type: "agent:error",
74807
+ body: errMsg,
74808
+ callback: command.callback
74809
+ });
74810
+ }
74795
74811
  }
74796
74812
  } catch (err2) {
74797
- this.log.error(`WebSocket error on incoming message: ${_e(err2)}`);
74813
+ const errMsg = `WebSocket error on incoming message: ${_e(err2)}`;
74814
+ this.log.error(errMsg);
74815
+ try {
74816
+ await this.sendToWebSocket({
74817
+ type: "agent:error",
74818
+ body: errMsg,
74819
+ callback: command?.callback
74820
+ });
74821
+ } catch (sendErr) {
74822
+ this.log.error(`Failed to send agent:error response: ${_e(sendErr)}`);
74823
+ }
74798
74824
  }
74799
74825
  });
74800
74826
  return new Promise((resolve2) => {
@@ -75244,6 +75270,20 @@ ${result}`);
75244
75270
  }
75245
75271
  (0, import_node_fs4.unlinkSync)(UPGRADE_MANIFEST_PATH);
75246
75272
  }
75273
+ try {
75274
+ const release = await Cn("agent-upgrader", targetVersion);
75275
+ parseDownloadUrl(release, (0, import_node_os4.platform)());
75276
+ } catch (err2) {
75277
+ const versionTag = message.version ? `v${message.version}` : "latest";
75278
+ const errMsg = `Error during upgrading to version '${versionTag}': ${_e(err2)}`;
75279
+ this.log.error(errMsg);
75280
+ await this.sendToWebSocket({
75281
+ type: "agent:error",
75282
+ callback: message.callback,
75283
+ body: errMsg
75284
+ });
75285
+ return;
75286
+ }
75247
75287
  try {
75248
75288
  const command = __filename;
75249
75289
  const logFile = (0, import_node_fs4.openSync)(UPGRADER_LOG_PATH, "w+");
@@ -75353,7 +75393,13 @@ ${result}`);
75353
75393
  }
75354
75394
  pushMessage(message) {
75355
75395
  if (!message.remote) {
75356
- this.log.error("Missing remote address");
75396
+ const errMsg = "Missing remote address";
75397
+ this.log.error(errMsg);
75398
+ this.addToWebSocketQueue({
75399
+ type: "agent:error",
75400
+ callback: message.callback,
75401
+ body: errMsg
75402
+ });
75357
75403
  return;
75358
75404
  }
75359
75405
  const address = new URL(message.remote);
@@ -75409,7 +75455,17 @@ ${result}`);
75409
75455
  const requestMsg = vo.parse(message.body);
75410
75456
  const msh10 = requestMsg.getSegment("MSH")?.getField(10);
75411
75457
  if (!msh10) {
75412
- this.log.error("MSH.10 is missing but required");
75458
+ const errMsg = "MSH.10 is missing but required";
75459
+ this.log.error(errMsg);
75460
+ this.addToWebSocketQueue({
75461
+ type: "agent:transmit:response",
75462
+ channel: message.channel,
75463
+ remote: message.remote,
75464
+ callback: message.callback,
75465
+ contentType: O.TEXT,
75466
+ statusCode: 400,
75467
+ body: errMsg
75468
+ });
75413
75469
  return;
75414
75470
  }
75415
75471
  this.log.info(`[Request -- ID: ${msh10}]: ${requestMsg.toString().replaceAll("\r", "\n")}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medplum/agent",
3
- "version": "5.1.10",
3
+ "version": "5.1.11",
4
4
  "description": "Medplum Agent",
5
5
  "homepage": "https://www.medplum.com/",
6
6
  "bugs": {
@@ -26,8 +26,8 @@
26
26
  "test": "jest --runInBand"
27
27
  },
28
28
  "dependencies": {
29
- "@medplum/core": "5.1.10",
30
- "@medplum/hl7": "5.1.10",
29
+ "@medplum/core": "5.1.11",
30
+ "@medplum/hl7": "5.1.11",
31
31
  "dcmjs-dimse": "0.3.3",
32
32
  "iconv-lite": "0.7.2",
33
33
  "semver": "7.7.4",
@@ -36,8 +36,8 @@
36
36
  "ws": "8.20.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@medplum/fhirtypes": "5.1.10",
40
- "@medplum/mock": "5.1.10",
39
+ "@medplum/fhirtypes": "5.1.11",
40
+ "@medplum/mock": "5.1.11",
41
41
  "@types/async-eventemitter": "0.2.4",
42
42
  "@types/ws": "8.18.1",
43
43
  "mock-socket": "9.3.1",