@medplum/agent 3.2.2 → 3.2.3
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/dist/cjs/index.cjs +29 -30
- package/package.json +5 -5
package/dist/cjs/index.cjs
CHANGED
|
@@ -42637,7 +42637,7 @@ function cn(r6) {
|
|
|
42637
42637
|
var Qt = class {
|
|
42638
42638
|
constructor(e) {
|
|
42639
42639
|
if (!e.snapshot?.element || e.snapshot.element.length === 0) throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);
|
|
42640
|
-
this.root = e.snapshot.element[0], this.elements = e.snapshot.element.slice(1), this.elementIndex = /* @__PURE__ */ Object.create(null), this.index = 0, this.resourceSchema = { name: e.name, title: e.title, type: e.type, url: e.url, kind: e.kind, description:
|
|
42640
|
+
this.root = e.snapshot.element[0], this.elements = e.snapshot.element.slice(1), this.elementIndex = /* @__PURE__ */ Object.create(null), this.index = 0, this.resourceSchema = { name: e.name, title: e.title, type: e.type, url: e.url, kind: e.kind, description: Li(e), elements: {}, constraints: this.parseElementDefinition(this.root).constraints, innerTypes: [], summaryProperties: /* @__PURE__ */ new Set(), mandatoryProperties: /* @__PURE__ */ new Set() }, this.innerTypes = [];
|
|
42641
42641
|
}
|
|
42642
42642
|
parse() {
|
|
42643
42643
|
let e = this.next();
|
|
@@ -42677,7 +42677,7 @@ var Qt = class {
|
|
|
42677
42677
|
this.backboneContext = { type: { name: Kt(e), title: e.label, description: e.definition, elements: {}, constraints: this.parseElementDefinition(e).constraints, innerTypes: [] }, path: e.path ?? "", parent: ve(this.backboneContext?.path, e.path) ? this.backboneContext : this.backboneContext?.parent };
|
|
42678
42678
|
}
|
|
42679
42679
|
enterSlice(e, t) {
|
|
42680
|
-
|
|
42680
|
+
_i(e) && !this.peek()?.sliceName || (t.slicing = { discriminator: (e.slicing?.discriminator ?? []).map((n) => {
|
|
42681
42681
|
if (n.type !== "value" && n.type !== "pattern" && n.type !== "type") throw new Error(`Unsupported slicing discriminator type: ${n.type}`);
|
|
42682
42682
|
return { path: n.path, type: n.type };
|
|
42683
42683
|
}), slices: [], ordered: e.slicing?.ordered ?? false, rule: e.slicing?.rules }, this.slicingContext = { field: t.slicing, path: e.path ?? "" });
|
|
@@ -42737,11 +42737,11 @@ function ve(r6, e) {
|
|
|
42737
42737
|
function nn(r6) {
|
|
42738
42738
|
return Array.isArray(r6) && r6.length > 0 ? r6[0] : S(r6) ? void 0 : r6;
|
|
42739
42739
|
}
|
|
42740
|
-
function
|
|
42740
|
+
function _i(r6) {
|
|
42741
42741
|
let e = r6.slicing?.discriminator;
|
|
42742
42742
|
return !!(r6.type?.some((t) => t.code === "Extension") && e?.length === 1 && e[0].type === "value" && e[0].path === "url");
|
|
42743
42743
|
}
|
|
42744
|
-
function
|
|
42744
|
+
function Li(r6) {
|
|
42745
42745
|
let e = r6.description;
|
|
42746
42746
|
return e?.startsWith(`Base StructureDefinition for ${r6.name} Type: `) && (e = e.substring(`Base StructureDefinition for ${r6.name} Type: `.length)), e;
|
|
42747
42747
|
}
|
|
@@ -42923,10 +42923,8 @@ function eo(r6) {
|
|
|
42923
42923
|
let e = ro(r6);
|
|
42924
42924
|
if (e) return e;
|
|
42925
42925
|
}
|
|
42926
|
-
if (r6.resourceType === "MedicationRequest")
|
|
42927
|
-
|
|
42928
|
-
if (e) return rt(e);
|
|
42929
|
-
}
|
|
42926
|
+
if (r6.resourceType === "MedicationRequest" && r6.medicationCodeableConcept) return rt(r6.medicationCodeableConcept);
|
|
42927
|
+
if (r6.resourceType === "Subscription" && r6.criteria) return r6.criteria;
|
|
42930
42928
|
if (r6.resourceType === "User" && r6.email) return r6.email;
|
|
42931
42929
|
if ("name" in r6 && r6.name && typeof r6.name == "string") return r6.name;
|
|
42932
42930
|
if ("code" in r6 && r6.code) {
|
|
@@ -43219,10 +43217,10 @@ var O = { empty: (r6, e) => d(e.length === 0 || e.every((t) => S(t.value))), has
|
|
|
43219
43217
|
if (n) return [{ type: l.time, value: Pe("T" + n[1]) }];
|
|
43220
43218
|
}
|
|
43221
43219
|
return [];
|
|
43222
|
-
}, convertsToTime: (r6, e) => e.length === 0 ? [] : d(O.toTime(r6, e).length === 1), indexOf: (r6, e, t) =>
|
|
43220
|
+
}, convertsToTime: (r6, e) => e.length === 0 ? [] : d(O.toTime(r6, e).length === 1), indexOf: (r6, e, t) => _((n, i) => n.indexOf(i), r6, e, t), substring: (r6, e, t, n) => _((i, o, s) => {
|
|
43223
43221
|
let a2 = o, c = s ? a2 + s : i.length;
|
|
43224
43222
|
return a2 < 0 || a2 >= i.length ? void 0 : i.substring(a2, c);
|
|
43225
|
-
}, r6, e, t, n), startsWith: (r6, e, t) =>
|
|
43223
|
+
}, r6, e, t, n), startsWith: (r6, e, t) => _((n, i) => n.startsWith(i), r6, e, t), endsWith: (r6, e, t) => _((n, i) => n.endsWith(i), r6, e, t), contains: (r6, e, t) => _((n, i) => n.includes(i), r6, e, t), upper: (r6, e) => _((t) => t.toUpperCase(), r6, e), lower: (r6, e) => _((t) => t.toLowerCase(), r6, e), replace: (r6, e, t, n) => _((i, o, s) => i.replaceAll(o, s), r6, e, t, n), matches: (r6, e, t) => _((n, i) => !!new RegExp(i).exec(n), r6, e, t), replaceMatches: (r6, e, t, n) => _((i, o, s) => i.replaceAll(o, s), r6, e, t, n), length: (r6, e) => _((t) => t.length, r6, e), toChars: (r6, e) => _((t) => t ? t.split("") : void 0, r6, e), encode: Q, decode: Q, escape: Q, unescape: Q, trim: Q, split: Q, join: (r6, e, t) => {
|
|
43226
43224
|
let n = t?.eval(r6, de(r6))[0]?.value ?? "";
|
|
43227
43225
|
if (typeof n != "string") throw new Error("Separator must be a string.");
|
|
43228
43226
|
return [{ type: l.string, value: e.map((i) => i.value?.toString() ?? "").join(n) }];
|
|
@@ -43276,7 +43274,7 @@ var O = { empty: (r6, e) => d(e.length === 0 || e.every((t) => S(t.value))), has
|
|
|
43276
43274
|
}
|
|
43277
43275
|
return [];
|
|
43278
43276
|
} };
|
|
43279
|
-
function
|
|
43277
|
+
function _(r6, e, t, ...n) {
|
|
43280
43278
|
if (t.length === 0) return [];
|
|
43281
43279
|
let [{ value: i }] = W(t, 1);
|
|
43282
43280
|
if (typeof i != "string") throw new Error("String function cannot be called with non-string");
|
|
@@ -43300,7 +43298,7 @@ function de(r6) {
|
|
|
43300
43298
|
for (; e.parent?.variables.$this; ) e = e.parent;
|
|
43301
43299
|
return [e.variables.$this];
|
|
43302
43300
|
}
|
|
43303
|
-
var
|
|
43301
|
+
var L = class {
|
|
43304
43302
|
constructor(e) {
|
|
43305
43303
|
this.value = e;
|
|
43306
43304
|
}
|
|
@@ -43541,9 +43539,9 @@ var he = class {
|
|
|
43541
43539
|
return `${this.left.toString()}[${this.expr.toString()}]`;
|
|
43542
43540
|
}
|
|
43543
43541
|
};
|
|
43544
|
-
var
|
|
43542
|
+
var _e = ["!=", "!~", "<=", ">=", "{}", "->"];
|
|
43545
43543
|
var y = { FunctionCall: 0, Dot: 1, Indexer: 2, UnaryAdd: 3, UnarySubtract: 3, Multiply: 4, Divide: 4, IntegerDivide: 4, Modulo: 4, Add: 5, Subtract: 5, Ampersand: 5, Is: 6, As: 6, Union: 7, GreaterThan: 8, GreaterThanOrEquals: 8, LessThan: 8, LessThanOrEquals: 8, Equals: 9, Equivalent: 9, NotEquals: 9, NotEquivalent: 9, In: 10, Contains: 10, And: 11, Xor: 12, Or: 12, Implies: 13, Arrow: 100, Semicolon: 200 };
|
|
43546
|
-
var
|
|
43544
|
+
var Lo = { parse(r6) {
|
|
43547
43545
|
let e = r6.consumeAndParse();
|
|
43548
43546
|
if (!r6.match(")")) throw new Error("Parse error: expected `)` got `" + r6.peek()?.value + "`");
|
|
43549
43547
|
return e;
|
|
@@ -43563,10 +43561,10 @@ function qo(r6) {
|
|
|
43563
43561
|
let e = r6.split(" "), t = parseFloat(e[0]), n = e[1];
|
|
43564
43562
|
return n?.startsWith("'") && n.endsWith("'") ? n = n.substring(1, n.length - 1) : n = "{" + n + "}", { value: t, unit: n };
|
|
43565
43563
|
}
|
|
43566
|
-
function
|
|
43567
|
-
return new He().registerPrefix("String", { parse: (r6, e) => new
|
|
43564
|
+
function Le() {
|
|
43565
|
+
return new He().registerPrefix("String", { parse: (r6, e) => new L({ type: l.string, value: e.value }) }).registerPrefix("DateTime", { parse: (r6, e) => new L({ type: l.dateTime, value: Pe(e.value) }) }).registerPrefix("Quantity", { parse: (r6, e) => new L({ type: l.Quantity, value: qo(e.value) }) }).registerPrefix("Number", { parse: (r6, e) => new L({ type: e.value.includes(".") ? l.decimal : l.integer, value: parseFloat(e.value) }) }).registerPrefix("true", { parse: () => new L({ type: l.boolean, value: true }) }).registerPrefix("false", { parse: () => new L({ type: l.boolean, value: false }) }).registerPrefix("Symbol", { parse: (r6, e) => new U(e.value) }).registerPrefix("{}", { parse: () => new at() }).registerPrefix("(", Lo).registerInfix("[", Uo).registerInfix("(", Bo).prefix("+", y.UnaryAdd, (r6, e) => new ct("+", e, (t) => t)).prefix("-", y.UnarySubtract, (r6, e) => new V("-", e, e, (t, n) => -n)).infixLeft(".", y.Dot, (r6, e, t) => new re(r6, t)).infixLeft("/", y.Divide, (r6, e, t) => new V("/", r6, t, (n, i) => n / i)).infixLeft("*", y.Multiply, (r6, e, t) => new V("*", r6, t, (n, i) => n * i)).infixLeft("+", y.Add, (r6, e, t) => new V("+", r6, t, (n, i) => n + i)).infixLeft("-", y.Subtract, (r6, e, t) => new V("-", r6, t, (n, i) => n - i)).infixLeft("|", y.Union, (r6, e, t) => new Ce(r6, t)).infixLeft("=", y.Equals, (r6, e, t) => new dt(r6, t)).infixLeft("!=", y.NotEquals, (r6, e, t) => new ft(r6, t)).infixLeft("~", y.Equivalent, (r6, e, t) => new mt(r6, t)).infixLeft("!~", y.NotEquivalent, (r6, e, t) => new ht(r6, t)).infixLeft("<", y.LessThan, (r6, e, t) => new V("<", r6, t, (n, i) => n < i)).infixLeft("<=", y.LessThanOrEquals, (r6, e, t) => new V("<=", r6, t, (n, i) => n <= i)).infixLeft(">", y.GreaterThan, (r6, e, t) => new V(">", r6, t, (n, i) => n > i)).infixLeft(">=", y.GreaterThanOrEquals, (r6, e, t) => new V(">=", r6, t, (n, i) => n >= i)).infixLeft("&", y.Ampersand, (r6, e, t) => new ut(r6, t)).infixLeft("and", y.And, (r6, e, t) => new yt(r6, t)).infixLeft("as", y.As, (r6, e, t) => new fe(r6, t)).infixLeft("contains", y.Contains, (r6, e, t) => new lt(r6, t)).infixLeft("div", y.Divide, (r6, e, t) => new V("div", r6, t, (n, i) => n / i | 0)).infixLeft("in", y.In, (r6, e, t) => new pt(r6, t)).infixLeft("is", y.Is, (r6, e, t) => new me(r6, t)).infixLeft("mod", y.Modulo, (r6, e, t) => new V("mod", r6, t, (n, i) => n % i)).infixLeft("or", y.Or, (r6, e, t) => new gt(r6, t)).infixLeft("xor", y.Xor, (r6, e, t) => new xt(r6, t)).infixLeft("implies", y.Implies, (r6, e, t) => new vt(r6, t));
|
|
43568
43566
|
}
|
|
43569
|
-
var jo =
|
|
43567
|
+
var jo = Le();
|
|
43570
43568
|
var Un = ((p2) => (p2.BOOLEAN = "BOOLEAN", p2.NUMBER = "NUMBER", p2.QUANTITY = "QUANTITY", p2.TEXT = "TEXT", p2.REFERENCE = "REFERENCE", p2.CANONICAL = "CANONICAL", p2.DATE = "DATE", p2.DATETIME = "DATETIME", p2.PERIOD = "PERIOD", p2.UUID = "UUID", p2))(Un || {});
|
|
43571
43569
|
var Wn = ((T) => (T.EQUALS = "eq", T.NOT_EQUALS = "ne", T.GREATER_THAN = "gt", T.LESS_THAN = "lt", T.GREATER_THAN_OR_EQUALS = "ge", T.LESS_THAN_OR_EQUALS = "le", T.STARTS_AFTER = "sa", T.ENDS_BEFORE = "eb", T.APPROXIMATELY = "ap", T.CONTAINS = "contains", T.EXACT = "exact", T.TEXT = "text", T.NOT = "not", T.ABOVE = "above", T.BELOW = "below", T.IN = "in", T.NOT_IN = "not-in", T.OF_TYPE = "of-type", T.MISSING = "missing", T.PRESENT = "present", T.IDENTIFIER = "identifier", T.ITERATE = "iterate", T))(Wn || {});
|
|
43572
43570
|
var vs = ((E) => (E.READ = "read", E.VREAD = "vread", E.UPDATE = "update", E.PATCH = "patch", E.DELETE = "delete", E.HISTORY = "history", E.HISTORY_INSTANCE = "history-instance", E.HISTORY_TYPE = "history-type", E.HISTORY_SYSTEM = "history-system", E.CREATE = "create", E.SEARCH = "search", E.SEARCH_TYPE = "search-type", E.SEARCH_SYSTEM = "search-system", E.SEARCH_COMPARTMENT = "search-compartment", E.CAPABILITIES = "capabilities", E.TRANSACTION = "transaction", E.BATCH = "batch", E.OPERATION = "operation", E))(vs || {});
|
|
@@ -44052,10 +44050,10 @@ var At = class {
|
|
|
44052
44050
|
return this.masterSubEmitter || (this.masterSubEmitter = new qe(...Array.from(this.criteriaEntries.keys()))), this.masterSubEmitter;
|
|
44053
44051
|
}
|
|
44054
44052
|
};
|
|
44055
|
-
var fd = "3.2.
|
|
44053
|
+
var fd = "3.2.3-3f9cbed69";
|
|
44056
44054
|
var Fs = D.FHIR_JSON + ", */*; q=0.1";
|
|
44057
|
-
var
|
|
44058
|
-
var
|
|
44055
|
+
var _s = "https://api.medplum.com/";
|
|
44056
|
+
var Ls = 1e3;
|
|
44059
44057
|
var Us = 6e4;
|
|
44060
44058
|
var Bs = 0;
|
|
44061
44059
|
var qs = "Binary/";
|
|
@@ -44069,7 +44067,7 @@ var Ot = class extends z {
|
|
|
44069
44067
|
super();
|
|
44070
44068
|
this.initComplete = true;
|
|
44071
44069
|
if (t?.baseUrl && !t.baseUrl.startsWith("http")) throw new Error("Base URL must start with http or https");
|
|
44072
|
-
this.options = t ?? {}, this.fetch = t?.fetch ?? Hs(), this.storage = t?.storage ?? new Be(), this.createPdfImpl = t?.createPdf, this.baseUrl = dr(t?.baseUrl ??
|
|
44070
|
+
this.options = t ?? {}, this.fetch = t?.fetch ?? Hs(), this.storage = t?.storage ?? new Be(), this.createPdfImpl = t?.createPdf, this.baseUrl = dr(t?.baseUrl ?? _s), this.fhirBaseUrl = j(this.baseUrl, t?.fhirUrlPath ?? "fhir/R4"), this.authorizeUrl = j(this.baseUrl, t?.authorizeUrl ?? "oauth2/authorize"), this.tokenUrl = j(this.baseUrl, t?.tokenUrl ?? "oauth2/token"), this.logoutUrl = j(this.baseUrl, t?.logoutUrl ?? "oauth2/logout"), this.clientId = t?.clientId ?? "", this.clientSecret = t?.clientSecret ?? "", this.onUnauthenticated = t?.onUnauthenticated, this.cacheTime = t?.cacheTime ?? (typeof window > "u" ? Bs : Us), this.cacheTime > 0 ? this.requestCache = new bt(t?.resourceCacheSize ?? Ls) : this.requestCache = void 0, t?.autoBatchTime ? (this.autoBatchTime = t.autoBatchTime, this.autoBatchQueue = []) : (this.autoBatchTime = 0, this.autoBatchQueue = void 0), t?.accessToken && this.setAccessToken(t.accessToken), this.storage.getInitPromise === void 0 ? (t?.accessToken || this.attemptResumeActiveLogin().catch(console.error), this.initPromise = Promise.resolve(), this.dispatchEvent({ type: "storageInitialized" })) : (this.initComplete = false, this.initPromise = this.storage.getInitPromise(), this.initPromise.then(() => {
|
|
44073
44071
|
t?.accessToken || this.attemptResumeActiveLogin().catch(console.error), this.initComplete = true, this.dispatchEvent({ type: "storageInitialized" });
|
|
44074
44072
|
}).catch((n) => {
|
|
44075
44073
|
console.error(n), this.initComplete = true, this.dispatchEvent({ type: "storageInitFailed", payload: { error: n } });
|
|
@@ -44381,8 +44379,9 @@ var Ot = class extends z {
|
|
|
44381
44379
|
let i = await this.put(this.fhirUrl(t.resourceType, t.id), t, void 0, n);
|
|
44382
44380
|
return i || (i = t), this.cacheResource(i), this.invalidateUrl(this.fhirUrl(t.resourceType, t.id, "_history")), this.invalidateSearches(t.resourceType), i;
|
|
44383
44381
|
}
|
|
44384
|
-
patchResource(t, n, i, o) {
|
|
44385
|
-
|
|
44382
|
+
async patchResource(t, n, i, o) {
|
|
44383
|
+
let s = await this.patch(this.fhirUrl(t, n), i, o);
|
|
44384
|
+
return this.cacheResource(s), this.invalidateUrl(this.fhirUrl(t, n, "_history")), this.invalidateSearches(t), s;
|
|
44386
44385
|
}
|
|
44387
44386
|
deleteResource(t, n, i) {
|
|
44388
44387
|
return this.deleteCacheEntry(this.fhirUrl(t, n).toString()), this.invalidateSearches(t), this.delete(this.fhirUrl(t, n), i);
|
|
@@ -44764,10 +44763,10 @@ function Ks(r6) {
|
|
|
44764
44763
|
function zs(r6, e, t, n) {
|
|
44765
44764
|
return Ks(r6) ? r6 : { docDefinition: r6, filename: e, tableLayouts: t, fonts: n };
|
|
44766
44765
|
}
|
|
44767
|
-
var aa = [...
|
|
44768
|
-
var la =
|
|
44769
|
-
var Ca = [...
|
|
44770
|
-
var Oa =
|
|
44766
|
+
var aa = [..._e, "->", "<<", ">>", "=="];
|
|
44767
|
+
var la = Le().registerInfix("->", { precedence: y.Arrow }).registerInfix(";", { precedence: y.Semicolon });
|
|
44768
|
+
var Ca = [..._e, "eq", "ne", "co"];
|
|
44769
|
+
var Oa = Le();
|
|
44771
44770
|
var se = class {
|
|
44772
44771
|
constructor(e = "\r", t = "|", n = "^", i = "~", o = "\\", s = "&") {
|
|
44773
44772
|
this.segmentSeparator = e;
|
|
@@ -44870,7 +44869,7 @@ function ka(r6) {
|
|
|
44870
44869
|
let e = r6 instanceof Date ? r6 : new Date(r6), n = e.toISOString().replace(/[-:T]/g, "").replace(/(\.\d+)?Z$/, ""), i = e.getUTCMilliseconds();
|
|
44871
44870
|
return i > 0 && (n += "." + i.toString()), n;
|
|
44872
44871
|
}
|
|
44873
|
-
var
|
|
44872
|
+
var _r = ((o) => (o[o.NONE = 0] = "NONE", o[o.ERROR = 1] = "ERROR", o[o.WARN = 2] = "WARN", o[o.INFO = 3] = "INFO", o[o.DEBUG = 4] = "DEBUG", o))(_r || {});
|
|
44874
44873
|
var Ai = class r4 {
|
|
44875
44874
|
constructor(e, t = {}, n = 3, i) {
|
|
44876
44875
|
this.write = e;
|
|
@@ -44901,11 +44900,11 @@ var Ai = class r4 {
|
|
|
44901
44900
|
}
|
|
44902
44901
|
log(e, t, n) {
|
|
44903
44902
|
e > this.level || (n instanceof Error && (n = { error: n.toString(), stack: n.stack?.split(`
|
|
44904
|
-
`) }), this.write(JSON.stringify({ level:
|
|
44903
|
+
`) }), this.write(JSON.stringify({ level: _r[e], timestamp: (/* @__PURE__ */ new Date()).toISOString(), msg: this.prefix ? `${this.prefix}${t}` : t, ...n, ...this.metadata })));
|
|
44905
44904
|
}
|
|
44906
44905
|
};
|
|
44907
44906
|
function Cf(r6) {
|
|
44908
|
-
let e =
|
|
44907
|
+
let e = _r[r6.toUpperCase()];
|
|
44909
44908
|
if (e === void 0) throw new Error(`Invalid log level: ${r6}`);
|
|
44910
44909
|
return e;
|
|
44911
44910
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@medplum/agent",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.3",
|
|
4
4
|
"description": "Medplum Agent",
|
|
5
5
|
"homepage": "https://www.medplum.com/",
|
|
6
6
|
"bugs": {
|
|
@@ -23,15 +23,15 @@
|
|
|
23
23
|
"test": "jest"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@medplum/core": "3.2.
|
|
27
|
-
"@medplum/hl7": "3.2.
|
|
26
|
+
"@medplum/core": "3.2.3",
|
|
27
|
+
"@medplum/hl7": "3.2.3",
|
|
28
28
|
"dcmjs-dimse": "0.1.27",
|
|
29
29
|
"iconv-lite": "0.6.3",
|
|
30
30
|
"ws": "8.18.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@medplum/fhirtypes": "3.2.
|
|
34
|
-
"@medplum/mock": "3.2.
|
|
33
|
+
"@medplum/fhirtypes": "3.2.3",
|
|
34
|
+
"@medplum/mock": "3.2.3",
|
|
35
35
|
"@types/async-eventemitter": "0.2.4",
|
|
36
36
|
"@types/ws": "8.5.11",
|
|
37
37
|
"mock-socket": "9.3.1",
|