@metriport/shared 0.32.4 → 0.33.0
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/common/demographics.d.ts +1 -1
- package/dist/util/index.d.ts +0 -2
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +0 -2
- package/dist/util/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/util/__tests__/concurrency.test.d.ts +0 -2
- package/dist/util/__tests__/concurrency.test.d.ts.map +0 -1
- package/dist/util/__tests__/concurrency.test.js +0 -162
- package/dist/util/__tests__/concurrency.test.js.map +0 -1
- package/dist/util/__tests__/null-to-undefined.test.d.ts +0 -2
- package/dist/util/__tests__/null-to-undefined.test.d.ts.map +0 -1
- package/dist/util/__tests__/null-to-undefined.test.js +0 -60
- package/dist/util/__tests__/null-to-undefined.test.js.map +0 -1
- package/dist/util/concurrency.d.ts +0 -72
- package/dist/util/concurrency.d.ts.map +0 -1
- package/dist/util/concurrency.js +0 -87
- package/dist/util/concurrency.js.map +0 -1
- package/dist/util/null-to-undefined.d.ts +0 -2
- package/dist/util/null-to-undefined.d.ts.map +0 -1
- package/dist/util/null-to-undefined.js +0 -31
- package/dist/util/null-to-undefined.js.map +0 -1
|
@@ -16,7 +16,7 @@ export declare const SUFFIXES: readonly ["jr", "junior", "sr", "senior", "ii", "
|
|
|
16
16
|
export type Prefix = (typeof PREFIXES)[number];
|
|
17
17
|
export type Suffix = (typeof SUFFIXES)[number];
|
|
18
18
|
export declare const PREFIX_SET: Set<"ms" | "mr" | "mrs" | "dr" | "prof" | "rev" | "st" | "hon" | "senator" | "sen" | "rep" | "congressman" | "congresswoman" | "gov">;
|
|
19
|
-
export declare const SUFFIX_SET: Set<"
|
|
19
|
+
export declare const SUFFIX_SET: Set<"jr" | "junior" | "sr" | "senior" | "ii" | "iii" | "iv" | "v" | "vi" | "vii" | "viii" | "ix" | "x" | "2nd" | "3rd" | "4th" | "5th" | "6th" | "7th" | "8th" | "9th" | "10th">;
|
|
20
20
|
export declare function isPrefix(prefix: string): prefix is Prefix;
|
|
21
21
|
export declare function isSuffix(suffix: string): suffix is Suffix;
|
|
22
22
|
export declare function genderMapperFromDomain<G extends string>(mapFromDomain: Record<GenderAtBirth, G>, unknownGender: G): (gender: GenderAtBirth) => G;
|
package/dist/util/index.d.ts
CHANGED
package/dist/util/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,WAAW,CAAC"}
|
package/dist/util/index.js
CHANGED
|
@@ -15,9 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./base64"), exports);
|
|
18
|
-
__exportStar(require("./concurrency"), exports);
|
|
19
18
|
__exportStar(require("./duration"), exports);
|
|
20
|
-
__exportStar(require("./null-to-undefined"), exports);
|
|
21
19
|
__exportStar(require("./sqs-delay-from-uuid"), exports);
|
|
22
20
|
__exportStar(require("./uuid-v7"), exports);
|
|
23
21
|
//# sourceMappingURL=index.js.map
|
package/dist/util/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,6CAA2B;AAC3B,wDAAsC;AACtC,4CAA0B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metriport/shared",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.0",
|
|
4
4
|
"description": "Common code shared across packages - by Metriport Inc.",
|
|
5
5
|
"author": "Metriport Inc. <contact@metriport.com>",
|
|
6
6
|
"homepage": "https://metriport.com/",
|
|
@@ -131,5 +131,5 @@
|
|
|
131
131
|
"ts-jest": "29.1.1",
|
|
132
132
|
"typescript": "^4.9.5"
|
|
133
133
|
},
|
|
134
|
-
"gitHead": "
|
|
134
|
+
"gitHead": "6612dd6af36ad81fe202df575517e52dea8cbb93"
|
|
135
135
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"concurrency.test.d.ts","sourceRoot":"","sources":["../../../src/util/__tests__/concurrency.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
27
|
-
const faker_1 = require("@faker-js/faker");
|
|
28
|
-
const sleep_1 = require("../../common/sleep");
|
|
29
|
-
const sleepModule = __importStar(require("../../common/sleep"));
|
|
30
|
-
const concurrency_1 = require("../concurrency");
|
|
31
|
-
const anyNumber = expect.any(Number);
|
|
32
|
-
beforeEach(() => {
|
|
33
|
-
jest.restoreAllMocks();
|
|
34
|
-
});
|
|
35
|
-
afterAll(() => {
|
|
36
|
-
jest.restoreAllMocks();
|
|
37
|
-
});
|
|
38
|
-
describe("executeAsynchronously", () => {
|
|
39
|
-
it("fails if minJitter is lower than zero", async () => {
|
|
40
|
-
const list = ["a", "b", "c", "d", "e"];
|
|
41
|
-
const fn = jest.fn(async () => { });
|
|
42
|
-
await expect((0, concurrency_1.executeAsynchronously)(list, fn, {
|
|
43
|
-
numberOfParallelExecutions: 2,
|
|
44
|
-
minJitterMillis: faker_1.faker.number.int({ min: 1 }) * -1,
|
|
45
|
-
})).rejects.toThrow();
|
|
46
|
-
});
|
|
47
|
-
it("fails if maxJitter is lower than zero", async () => {
|
|
48
|
-
const list = ["a", "b", "c", "d", "e"];
|
|
49
|
-
const fn = jest.fn(async () => { });
|
|
50
|
-
await expect((0, concurrency_1.executeAsynchronously)(list, fn, {
|
|
51
|
-
numberOfParallelExecutions: 2,
|
|
52
|
-
maxJitterMillis: faker_1.faker.number.int({ min: 1 }) * -1,
|
|
53
|
-
})).rejects.toThrow();
|
|
54
|
-
});
|
|
55
|
-
it("fails if minJitter is higer than maxJitter", async () => {
|
|
56
|
-
const list = ["a", "b", "c", "d", "e"];
|
|
57
|
-
const fn = jest.fn(async () => { });
|
|
58
|
-
await expect((0, concurrency_1.executeAsynchronously)(list, fn, {
|
|
59
|
-
numberOfParallelExecutions: 2,
|
|
60
|
-
maxJitterMillis: faker_1.faker.number.int({ min: 0, max: 10 }),
|
|
61
|
-
minJitterMillis: faker_1.faker.number.int({ min: 11 }),
|
|
62
|
-
})).rejects.toThrow();
|
|
63
|
-
});
|
|
64
|
-
// TODO fix this test, likely need to build a "shift" function so we can mock it (or mock
|
|
65
|
-
// Array.prototype.shift)
|
|
66
|
-
// it("runs splits list and runs it asynchronously", async () => {
|
|
67
|
-
// const list = ["a", "b", "c", "d", "e"];
|
|
68
|
-
// const fn = jest.fn(async () => {
|
|
69
|
-
// await sleep(20);
|
|
70
|
-
// });
|
|
71
|
-
// await executeAsynchronously(list, fn, {
|
|
72
|
-
// numberOfParallelExecutions: 2,
|
|
73
|
-
// maxJitterMillis: 10,
|
|
74
|
-
// minJitterMillis: 10,
|
|
75
|
-
// });
|
|
76
|
-
// expect(fn).toHaveBeenNthCalledWith(1, "a", 0, 0, 2);
|
|
77
|
-
// expect(fn).toHaveBeenNthCalledWith(2, "d", 0, 1, 2);
|
|
78
|
-
// expect(fn).toHaveBeenNthCalledWith(3, "b", 1, 0, 2);
|
|
79
|
-
// expect(fn).toHaveBeenNthCalledWith(4, "e", 1, 1, 2);
|
|
80
|
-
// expect(fn).toHaveBeenNthCalledWith(5, "c", 2, 0, 2);
|
|
81
|
-
// });
|
|
82
|
-
it("defaults async runs to to number of items on list", async () => {
|
|
83
|
-
const list = new Array(21).fill(666);
|
|
84
|
-
const fn = jest.fn();
|
|
85
|
-
await (0, concurrency_1.executeAsynchronously)(list, fn);
|
|
86
|
-
expect(fn).toHaveBeenCalledTimes(list.length);
|
|
87
|
-
});
|
|
88
|
-
it("sends correct item ", async () => {
|
|
89
|
-
const list = [1, 2, 3];
|
|
90
|
-
const fn = jest.fn();
|
|
91
|
-
await (0, concurrency_1.executeAsynchronously)(list, fn);
|
|
92
|
-
expect(fn).toHaveBeenNthCalledWith(1, list[0], anyNumber, anyNumber, anyNumber);
|
|
93
|
-
expect(fn).toHaveBeenNthCalledWith(2, list[1], anyNumber, anyNumber, anyNumber);
|
|
94
|
-
expect(fn).toHaveBeenNthCalledWith(3, list[2], anyNumber, anyNumber, anyNumber);
|
|
95
|
-
});
|
|
96
|
-
it("sends correct index item ", async () => {
|
|
97
|
-
const list = [1, 2, 3];
|
|
98
|
-
const fn = jest.fn();
|
|
99
|
-
await (0, concurrency_1.executeAsynchronously)(list, fn);
|
|
100
|
-
expect(fn).toHaveBeenNthCalledWith(1, anyNumber, 0, anyNumber, anyNumber);
|
|
101
|
-
expect(fn).toHaveBeenNthCalledWith(2, anyNumber, 1, anyNumber, anyNumber);
|
|
102
|
-
expect(fn).toHaveBeenNthCalledWith(3, anyNumber, 2, anyNumber, anyNumber);
|
|
103
|
-
});
|
|
104
|
-
it("jitters before runs", async () => {
|
|
105
|
-
const sleep_mock = jest.spyOn(sleepModule, "sleep").mockImplementation(async () => { });
|
|
106
|
-
const randomNumbers = [0.1, 0.2];
|
|
107
|
-
let lastRandom = 0;
|
|
108
|
-
const random_mock = jest
|
|
109
|
-
.spyOn(Math, "random")
|
|
110
|
-
.mockImplementation(() => randomNumbers[lastRandom++] ?? 0);
|
|
111
|
-
const list = [1, 2, 3, 4];
|
|
112
|
-
const fn = jest.fn();
|
|
113
|
-
await (0, concurrency_1.executeAsynchronously)(list, fn, {
|
|
114
|
-
numberOfParallelExecutions: 2,
|
|
115
|
-
maxJitterMillis: 1000,
|
|
116
|
-
});
|
|
117
|
-
expect(random_mock).toHaveBeenCalledTimes(2);
|
|
118
|
-
expect(sleep_mock).toHaveBeenCalledTimes(2);
|
|
119
|
-
expect(sleep_mock).toHaveBeenNthCalledWith(1, 100);
|
|
120
|
-
expect(sleep_mock).toHaveBeenNthCalledWith(2, 200);
|
|
121
|
-
});
|
|
122
|
-
it("defaults jitter before run to zero", async () => {
|
|
123
|
-
const sleep_mock = jest.spyOn(sleepModule, "sleep").mockImplementation(async () => { });
|
|
124
|
-
const list = [1, 2, 3, 4];
|
|
125
|
-
const fn = jest.fn();
|
|
126
|
-
await (0, concurrency_1.executeAsynchronously)(list, fn, { numberOfParallelExecutions: 2 });
|
|
127
|
-
expect(sleep_mock).toHaveBeenCalledTimes(2);
|
|
128
|
-
expect(sleep_mock).toHaveBeenNthCalledWith(1, 0);
|
|
129
|
-
expect(sleep_mock).toHaveBeenNthCalledWith(2, 0);
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
describe("threadsafe set operations", () => {
|
|
133
|
-
it("should add numbers to a set in a thread-safe manner", async () => {
|
|
134
|
-
const set = new Set();
|
|
135
|
-
const list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20];
|
|
136
|
-
const shuffleArray = (array) => {
|
|
137
|
-
for (let i = array.length - 1; i > 0; i--) {
|
|
138
|
-
const j = Math.floor(Math.random() * (i + 1));
|
|
139
|
-
//eslint-disable-next-line
|
|
140
|
-
[array[i], array[j]] = [array[j], array[i]];
|
|
141
|
-
}
|
|
142
|
-
return array;
|
|
143
|
-
};
|
|
144
|
-
const combinedList = [list, ...Array.from({ length: 9 }, () => shuffleArray([...list]))];
|
|
145
|
-
const addToSet = async (nums) => {
|
|
146
|
-
for (const num of nums) {
|
|
147
|
-
await (0, sleep_1.sleep)(10);
|
|
148
|
-
if (!set.has(num)) {
|
|
149
|
-
set.add(num);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
await (0, concurrency_1.executeAsynchronously)(combinedList, addToSet, {
|
|
154
|
-
numberOfParallelExecutions: 20,
|
|
155
|
-
});
|
|
156
|
-
expect(set.size).toBe(20);
|
|
157
|
-
for (let i = 1; i <= 20; i++) {
|
|
158
|
-
expect(set.has(i)).toBe(true);
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
});
|
|
162
|
-
//# sourceMappingURL=concurrency.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"concurrency.test.js","sourceRoot":"","sources":["../../../src/util/__tests__/concurrency.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"null-to-undefined.test.d.ts","sourceRoot":"","sources":["../../../src/util/__tests__/null-to-undefined.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const null_to_undefined_1 = require("../null-to-undefined");
|
|
4
|
-
const metriport_error_1 = require("../../error/metriport-error");
|
|
5
|
-
describe("nullToUndefined", () => {
|
|
6
|
-
it("converts top-level null to undefined", () => {
|
|
7
|
-
expect((0, null_to_undefined_1.nullToUndefined)(null)).toBeUndefined();
|
|
8
|
-
});
|
|
9
|
-
it("leaves primitives unchanged", () => {
|
|
10
|
-
expect((0, null_to_undefined_1.nullToUndefined)("a")).toBe("a");
|
|
11
|
-
expect((0, null_to_undefined_1.nullToUndefined)(0)).toBe(0);
|
|
12
|
-
expect((0, null_to_undefined_1.nullToUndefined)(true)).toBe(true);
|
|
13
|
-
});
|
|
14
|
-
it("converts null values inside a plain object to undefined", () => {
|
|
15
|
-
const input = { a: "x", b: null, c: 1 };
|
|
16
|
-
expect((0, null_to_undefined_1.nullToUndefined)(input)).toEqual({ a: "x", b: undefined, c: 1 });
|
|
17
|
-
});
|
|
18
|
-
it("converts null elements inside an array to undefined", () => {
|
|
19
|
-
const input = ["x", null, 1];
|
|
20
|
-
expect((0, null_to_undefined_1.nullToUndefined)(input)).toEqual(["x", undefined, 1]);
|
|
21
|
-
});
|
|
22
|
-
it("recurses into nested objects and arrays", () => {
|
|
23
|
-
const input = { rows: [{ code: "x", display: null }] };
|
|
24
|
-
expect((0, null_to_undefined_1.nullToUndefined)(input)).toEqual({
|
|
25
|
-
rows: [{ code: "x", display: undefined }],
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
it("handles array of row-like objects (select result shape)", () => {
|
|
29
|
-
const rows = [
|
|
30
|
-
{ code: "10004002", display: "First", property_code: null, property_value: "1" },
|
|
31
|
-
{ code: "1002007", display: null, property_code: "parent", property_value: null },
|
|
32
|
-
];
|
|
33
|
-
expect((0, null_to_undefined_1.nullToUndefined)(rows)).toEqual([
|
|
34
|
-
{ code: "10004002", display: "First", property_code: undefined, property_value: "1" },
|
|
35
|
-
{ code: "1002007", display: undefined, property_code: "parent", property_value: undefined },
|
|
36
|
-
]);
|
|
37
|
-
});
|
|
38
|
-
it("handles single row (selectOne result shape)", () => {
|
|
39
|
-
const row = { id: 1, system: "http://snomed.info/sct", name: null };
|
|
40
|
-
expect((0, null_to_undefined_1.nullToUndefined)(row)).toEqual({
|
|
41
|
-
id: 1,
|
|
42
|
-
system: "http://snomed.info/sct",
|
|
43
|
-
name: undefined,
|
|
44
|
-
});
|
|
45
|
-
});
|
|
46
|
-
it("returns non-plain objects (Date, RegExp, Buffer) unchanged", () => {
|
|
47
|
-
const d = new Date("2025-01-01");
|
|
48
|
-
expect((0, null_to_undefined_1.nullToUndefined)(d)).toBe(d);
|
|
49
|
-
const r = /foo/;
|
|
50
|
-
expect((0, null_to_undefined_1.nullToUndefined)(r)).toBe(r);
|
|
51
|
-
});
|
|
52
|
-
it("throws MetriportError when exceeding maxDepth", () => {
|
|
53
|
-
let nested = null;
|
|
54
|
-
for (let i = 0; i < 10; i++)
|
|
55
|
-
nested = { inner: nested };
|
|
56
|
-
expect(() => (0, null_to_undefined_1.nullToUndefined)(nested, 5)).toThrow(metriport_error_1.MetriportError);
|
|
57
|
-
expect(() => (0, null_to_undefined_1.nullToUndefined)(nested, 5)).toThrow("max recursion depth reached in nullToUndefined");
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
//# sourceMappingURL=null-to-undefined.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"null-to-undefined.test.js","sourceRoot":"","sources":["../../../src/util/__tests__/null-to-undefined.test.ts"],"names":[],"mappings":";;AAAA,4DAAuD;AACvD,iEAA6D;AAE7D,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,IAAA,mCAAe,EAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,IAAA,mCAAe,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,IAAA,mCAAe,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,IAAA,mCAAe,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,KAAK,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,IAAA,mCAAe,EAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAA,mCAAe,EAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACvD,MAAM,CAAC,IAAA,mCAAe,EAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YACrC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;SAC1C,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,IAAI,GAAG;YACX,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE;YAChF,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE;SAClF,CAAC;QACF,MAAM,CAAC,IAAA,mCAAe,EAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YACpC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE;YACrF,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE;SAC5F,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,wBAAwB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpE,MAAM,CAAC,IAAA,mCAAe,EAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;YACnC,EAAE,EAAE,CAAC;YACL,MAAM,EAAE,wBAAwB;YAChC,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,MAAM,CAAC,IAAA,mCAAe,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,KAAK,CAAC;QAChB,MAAM,CAAC,IAAA,mCAAe,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,IAAI,MAAM,GAAY,IAAI,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,MAAM,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,mCAAe,EAAC,MAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gCAAc,CAAC,CAAC;QACvF,MAAM,CAAC,GAAG,EAAE,CAAC,IAAA,mCAAe,EAAC,MAA4B,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CACpE,gDAAgD,CACjD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
export type ExecuteInChunksOptions = {
|
|
2
|
-
/**
|
|
3
|
-
* How many promises should execute at the same time. Defaults to `collection.length` (all promises to run at the same time).
|
|
4
|
-
*/
|
|
5
|
-
numberOfParallelExecutions?: number;
|
|
6
|
-
/**
|
|
7
|
-
* Explict delay between runs. Defaults to 0, no delay.
|
|
8
|
-
*/
|
|
9
|
-
delay?: number;
|
|
10
|
-
/**
|
|
11
|
-
* Maximum jitter in milliseconds before each run. Makes promises
|
|
12
|
-
* start at slight different times. Defaults to 0, no jitter.
|
|
13
|
-
*/
|
|
14
|
-
maxJitterMillis?: number;
|
|
15
|
-
/**
|
|
16
|
-
* Minimum jitter in milliseconds before each run. Makes promises
|
|
17
|
-
* start at slight different times. Defaults to 0.
|
|
18
|
-
*/
|
|
19
|
-
minJitterMillis?: number;
|
|
20
|
-
/**
|
|
21
|
-
* Whether to keep executing when an error occurs. Defaults to false, which
|
|
22
|
-
* means some might finish execution when the error happens - non-deterministic.
|
|
23
|
-
*/
|
|
24
|
-
keepExecutingOnError?: boolean;
|
|
25
|
-
/**
|
|
26
|
-
* Where to log. Defaults to no logging.
|
|
27
|
-
*/
|
|
28
|
-
log?: typeof console.log;
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Function type that should be passed to `executeAsynchronously`.
|
|
32
|
-
* It receives the item to be processed, the index of the item in the array,
|
|
33
|
-
* the index of the promise that is processing the item, and the total amount
|
|
34
|
-
* of promises that are running in parallel.
|
|
35
|
-
* It should return a promise that resolves when the processing is done.
|
|
36
|
-
* It should handle errors internally.
|
|
37
|
-
* @param item the item to be processed
|
|
38
|
-
* @param itemIndex the index of the item in the array
|
|
39
|
-
* @param promiseIndex the index of the promise ("thread") that is processing the item
|
|
40
|
-
* @param promiseCount the total amount of promises that are running in parallel
|
|
41
|
-
*/
|
|
42
|
-
export type FunctionType<T> = (item: T, itemIndex: number, promiseIndex: number, promiseCount: number) => Promise<void>;
|
|
43
|
-
/**
|
|
44
|
-
* TODO #ENG-170 Set default `numberOfParallelExecutions` to 5-10 max.
|
|
45
|
-
*
|
|
46
|
-
* Process an array or items asynchronously. It doesn't throw if one of the promises fails
|
|
47
|
-
* (error handling should be done within the promise/function).
|
|
48
|
-
*
|
|
49
|
-
* For example, with an array of 19 elements and 4 parallel executions,
|
|
50
|
-
* we would have something like this being executed, where:
|
|
51
|
-
* - each row is a promise, like a thread running in parallel to the other promises;
|
|
52
|
-
* - each column is a function call with the respective item of the array, it runs in sequence
|
|
53
|
-
* to other calls on the same row;
|
|
54
|
-
*
|
|
55
|
-
* promise
|
|
56
|
-
* idx| items being executed
|
|
57
|
-
* -|---------------------------------------> time
|
|
58
|
-
* 1| item1 | item2 | item3 | item4 | item5 |
|
|
59
|
-
* -|---------------------------------------|
|
|
60
|
-
* 2| item1 | item2 | item3 | item4 | item5 |
|
|
61
|
-
* -|---------------------------------------|
|
|
62
|
-
* 3| item1 | item2 | item3 | item4 | item5 |
|
|
63
|
-
* -|---------------------------------------|
|
|
64
|
-
* 4| item1 | item2 | item3 | item4 |
|
|
65
|
-
* -|---------------------------------------> time
|
|
66
|
-
*
|
|
67
|
-
* @param collection array of elements to be processed
|
|
68
|
-
* @param fn the function to be executed asynchronously
|
|
69
|
-
* @param options additional settings
|
|
70
|
-
*/
|
|
71
|
-
export declare function executeAsynchronously<T>(collection: T[], fn: FunctionType<T>, { numberOfParallelExecutions, delay, maxJitterMillis, minJitterMillis, keepExecutingOnError, log, }?: ExecuteInChunksOptions): Promise<PromiseSettledResult<void>[]>;
|
|
72
|
-
//# sourceMappingURL=concurrency.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"concurrency.d.ts","sourceRoot":"","sources":["../../src/util/concurrency.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,sBAAsB,GAAG;IACnC;;OAEG;IACH,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAC5B,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,IAAI,CAAC,CAAC;AAInB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,EAC3C,UAAU,EAAE,CAAC,EAAE,EACf,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EACnB,EACE,0BAA8C,EAC9C,KAAS,EACT,eAAmB,EACnB,eAAmB,EACnB,oBAA4B,EAC5B,GAAG,GACJ,GAAE,sBAA2B,GAC7B,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAoCvC"}
|
package/dist/util/concurrency.js
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.executeAsynchronously = void 0;
|
|
4
|
-
const shared_1 = require("../error/shared");
|
|
5
|
-
const sleep_1 = require("../common/sleep");
|
|
6
|
-
const emptyString = "";
|
|
7
|
-
/**
|
|
8
|
-
* TODO #ENG-170 Set default `numberOfParallelExecutions` to 5-10 max.
|
|
9
|
-
*
|
|
10
|
-
* Process an array or items asynchronously. It doesn't throw if one of the promises fails
|
|
11
|
-
* (error handling should be done within the promise/function).
|
|
12
|
-
*
|
|
13
|
-
* For example, with an array of 19 elements and 4 parallel executions,
|
|
14
|
-
* we would have something like this being executed, where:
|
|
15
|
-
* - each row is a promise, like a thread running in parallel to the other promises;
|
|
16
|
-
* - each column is a function call with the respective item of the array, it runs in sequence
|
|
17
|
-
* to other calls on the same row;
|
|
18
|
-
*
|
|
19
|
-
* promise
|
|
20
|
-
* idx| items being executed
|
|
21
|
-
* -|---------------------------------------> time
|
|
22
|
-
* 1| item1 | item2 | item3 | item4 | item5 |
|
|
23
|
-
* -|---------------------------------------|
|
|
24
|
-
* 2| item1 | item2 | item3 | item4 | item5 |
|
|
25
|
-
* -|---------------------------------------|
|
|
26
|
-
* 3| item1 | item2 | item3 | item4 | item5 |
|
|
27
|
-
* -|---------------------------------------|
|
|
28
|
-
* 4| item1 | item2 | item3 | item4 |
|
|
29
|
-
* -|---------------------------------------> time
|
|
30
|
-
*
|
|
31
|
-
* @param collection array of elements to be processed
|
|
32
|
-
* @param fn the function to be executed asynchronously
|
|
33
|
-
* @param options additional settings
|
|
34
|
-
*/
|
|
35
|
-
async function executeAsynchronously(collection, fn, { numberOfParallelExecutions = collection.length, delay = 0, maxJitterMillis = 0, minJitterMillis = 0, keepExecutingOnError = false, log, } = {}) {
|
|
36
|
-
if (delay < 0)
|
|
37
|
-
throw new Error("delay must be >= 0");
|
|
38
|
-
if (minJitterMillis < 0)
|
|
39
|
-
throw new Error("minJitterMillis must be >= 0");
|
|
40
|
-
if (maxJitterMillis < 0)
|
|
41
|
-
throw new Error("maxJitterMillis must be >= 0");
|
|
42
|
-
if (minJitterMillis > maxJitterMillis) {
|
|
43
|
-
throw new Error("minJitterMillis must be <= maxJitterMillis");
|
|
44
|
-
}
|
|
45
|
-
// Copy the array so that we don't mutate the original (this only copies the references)
|
|
46
|
-
const itemsToProcess = collection.slice();
|
|
47
|
-
const amountOfPromises = Math.max(Math.min(itemsToProcess.length, numberOfParallelExecutions), 1);
|
|
48
|
-
const indexControl = { currentIndex: 0 };
|
|
49
|
-
const promises = new Array(amountOfPromises).fill(0).map(async (_, promiseIndex) => {
|
|
50
|
-
// possible jitter before each run so that they don't start at the same time
|
|
51
|
-
const jitter = Math.max(minJitterMillis, Math.random() * maxJitterMillis);
|
|
52
|
-
await (0, sleep_1.sleep)(jitter);
|
|
53
|
-
if (delay > 0)
|
|
54
|
-
await (0, sleep_1.sleep)(delay);
|
|
55
|
-
await executeSynchronously(itemsToProcess, fn, promiseIndex, amountOfPromises, indexControl, keepExecutingOnError, log);
|
|
56
|
-
});
|
|
57
|
-
if (keepExecutingOnError) {
|
|
58
|
-
return await Promise.allSettled(promises);
|
|
59
|
-
}
|
|
60
|
-
return (await Promise.all(promises)).map(p => ({ status: "fulfilled", value: p }));
|
|
61
|
-
}
|
|
62
|
-
exports.executeAsynchronously = executeAsynchronously;
|
|
63
|
-
/**
|
|
64
|
-
* Document properly before exposing this
|
|
65
|
-
*/
|
|
66
|
-
async function executeSynchronously(itemsToProcess, fn, promiseIndex, amountOfPromises, indexControl, keepExecutingOnError, log) {
|
|
67
|
-
const tabs = log ? "\t".repeat(promiseIndex) : emptyString;
|
|
68
|
-
let item;
|
|
69
|
-
while ((item = itemsToProcess.shift())) {
|
|
70
|
-
log &&
|
|
71
|
-
log(`... ${tabs}... promise ${promiseIndex} item ${indexControl.currentIndex} remaining ${itemsToProcess.length}...`);
|
|
72
|
-
try {
|
|
73
|
-
await fn(item, indexControl.currentIndex, promiseIndex, amountOfPromises);
|
|
74
|
-
indexControl.currentIndex = indexControl.currentIndex + 1;
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
if (keepExecutingOnError) {
|
|
78
|
-
log &&
|
|
79
|
-
log(`Error on item ${indexControl.currentIndex} of promise ${promiseIndex}: ${(0, shared_1.errorToString)(error)}`);
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
throw error;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=concurrency.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"concurrency.js","sourceRoot":"","sources":["../../src/util/concurrency.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"null-to-undefined.d.ts","sourceRoot":"","sources":["../../src/util/null-to-undefined.ts"],"names":[],"mappings":"AAwBA,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,SAAkB,GAAG,CAAC,CAE1E"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.nullToUndefined = void 0;
|
|
4
|
-
const metriport_error_1 = require("../error/metriport-error");
|
|
5
|
-
const defaultMaxDepth = 100;
|
|
6
|
-
function nullToUndefinedAtDepth(value, depth, maxDepth) {
|
|
7
|
-
if (depth > maxDepth)
|
|
8
|
-
throw new metriport_error_1.MetriportError("max recursion depth reached in nullToUndefined", undefined, {
|
|
9
|
-
maxDepth,
|
|
10
|
-
});
|
|
11
|
-
if (value === null)
|
|
12
|
-
return undefined;
|
|
13
|
-
if (Array.isArray(value)) {
|
|
14
|
-
return value.map(item => nullToUndefinedAtDepth(item, depth + 1, maxDepth));
|
|
15
|
-
}
|
|
16
|
-
if (typeof value === "object") {
|
|
17
|
-
if (value.constructor !== Object)
|
|
18
|
-
return value;
|
|
19
|
-
const out = {};
|
|
20
|
-
for (const [k, v] of Object.entries(value)) {
|
|
21
|
-
out[k] = nullToUndefinedAtDepth(v, depth + 1, maxDepth);
|
|
22
|
-
}
|
|
23
|
-
return out;
|
|
24
|
-
}
|
|
25
|
-
return value;
|
|
26
|
-
}
|
|
27
|
-
function nullToUndefined(value, maxDepth = defaultMaxDepth) {
|
|
28
|
-
return nullToUndefinedAtDepth(value, 0, maxDepth);
|
|
29
|
-
}
|
|
30
|
-
exports.nullToUndefined = nullToUndefined;
|
|
31
|
-
//# sourceMappingURL=null-to-undefined.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"null-to-undefined.js","sourceRoot":"","sources":["../../src/util/null-to-undefined.ts"],"names":[],"mappings":";;;AAAA,8DAA0D;AAE1D,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,SAAS,sBAAsB,CAAI,KAAQ,EAAE,KAAa,EAAE,QAAgB;IAC1E,IAAI,KAAK,GAAG,QAAQ;QAClB,MAAM,IAAI,gCAAc,CAAC,gDAAgD,EAAE,SAAS,EAAE;YACpF,QAAQ;SACT,CAAC,CAAC;IACL,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAc,CAAC;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAM,CAAC;KAClF;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,IAAI,KAAK,CAAC,WAAW,KAAK,MAAM;YAAE,OAAO,KAAK,CAAC;QAC/C,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;SACzD;QACD,OAAO,GAAQ,CAAC;KACjB;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,eAAe,CAAI,KAAQ,EAAE,QAAQ,GAAG,eAAe;IACrE,OAAO,sBAAsB,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC;AAFD,0CAEC"}
|