@openstax/ts-utils 1.1.38 → 1.1.39
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/config/lambdaParameterConfig.js +3 -2
- package/dist/cjs/misc/helpers.d.ts +7 -0
- package/dist/cjs/misc/helpers.js +13 -1
- package/dist/cjs/services/authProvider/index.d.ts +0 -1
- package/dist/cjs/tsconfig.without-specs.cjs.tsbuildinfo +1 -1
- package/dist/esm/config/lambdaParameterConfig.js +3 -2
- package/dist/esm/misc/helpers.d.ts +7 -0
- package/dist/esm/misc/helpers.js +11 -0
- package/dist/esm/services/authProvider/index.d.ts +0 -1
- package/dist/esm/tsconfig.without-specs.esm.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fetch from 'node-fetch';
|
|
2
2
|
import { assertDefined } from '../assertions';
|
|
3
|
+
import { retryWithDelay } from '../misc/helpers';
|
|
3
4
|
import { envConfig } from './envConfig';
|
|
4
5
|
import { resolveConfigValue } from '.';
|
|
5
6
|
const lambdaExtensionUrl = 'http://localhost:2773';
|
|
@@ -15,9 +16,9 @@ export const lambdaParameterConfig = (parameterName) => async () => {
|
|
|
15
16
|
lambdaExtensionReadyPromise = fetch(lambdaExtensionUrl);
|
|
16
17
|
}
|
|
17
18
|
await lambdaExtensionReadyPromise;
|
|
18
|
-
const resp = await fetch(
|
|
19
|
+
const resp = await retryWithDelay(() => fetch(
|
|
19
20
|
// Port 2773 is the default port for the extension
|
|
20
|
-
`${lambdaExtensionUrl}/systemsmanager/parameters/get?name=${name}&withDecryption=true`, { headers: { 'X-Aws-Parameters-Secrets-Token': token } });
|
|
21
|
+
`${lambdaExtensionUrl}/systemsmanager/parameters/get?name=${name}&withDecryption=true`, { headers: { 'X-Aws-Parameters-Secrets-Token': token } }));
|
|
21
22
|
if (resp.ok) {
|
|
22
23
|
const response = await resp.json();
|
|
23
24
|
const parameter = assertDefined(response.Parameter, `aws GetParameter response missing Parameter key for ${name}"`);
|
|
@@ -8,6 +8,13 @@ declare type FlowFnResult<F, A> = F extends FlowFn<A, infer R> ? R : never;
|
|
|
8
8
|
declare type FlowResult<C, A> = C extends [infer F1, ...infer Cr] ? F1 extends AnyFlowFn ? Cr extends never[] ? FlowFnResult<F1, A> : FlowResult<Cr, FlowFnResult<F1, A>> : never : never;
|
|
9
9
|
declare type FlowChainArg<C> = C extends [infer F1, ...infer _] ? F1 extends FlowFn<infer A, any> ? A : never : never;
|
|
10
10
|
export declare const flow: <C extends AnyFlowFn[]>(...chain: C) => (param: FlowChainArg<C>) => FlowResult<C, FlowChainArg<C>>;
|
|
11
|
+
declare type RetryOptions = {
|
|
12
|
+
wait?: number;
|
|
13
|
+
splay?: number;
|
|
14
|
+
retries?: number;
|
|
15
|
+
n?: number;
|
|
16
|
+
};
|
|
17
|
+
export declare const retryWithDelay: <R>(fn: () => Promise<R>, options?: RetryOptions | undefined) => Promise<R>;
|
|
11
18
|
export declare const fnIf: <T1, T2>(condition: boolean, trueValue: T1, falseValue: T2) => T1 | T2;
|
|
12
19
|
export declare const mapFind: <I, R>(array: I[], mapper: (item: I) => R, predicate?: (result: R) => boolean) => R | undefined;
|
|
13
20
|
export declare const once: <F extends (...args: any[]) => any>(fn: F) => F;
|
package/dist/esm/misc/helpers.js
CHANGED
|
@@ -25,6 +25,17 @@ export const flow = (...chain) => (param) => {
|
|
|
25
25
|
}
|
|
26
26
|
return result;
|
|
27
27
|
};
|
|
28
|
+
export const retryWithDelay = (fn, options) => {
|
|
29
|
+
const { wait, splay, retries, n } = { wait: 100, splay: 0.5, retries: 2, n: 0, ...options };
|
|
30
|
+
if (n >= retries) {
|
|
31
|
+
return fn();
|
|
32
|
+
}
|
|
33
|
+
const timeout = (n + 1) * wait + (Math.random() * 2 - 1) * splay * wait;
|
|
34
|
+
const retry = () => new Promise((resolve, reject) => {
|
|
35
|
+
setTimeout(() => retryWithDelay(fn, { ...options, n: n + 1 }).then(resolve, reject), timeout);
|
|
36
|
+
});
|
|
37
|
+
return fn().catch(retry);
|
|
38
|
+
};
|
|
28
39
|
/*
|
|
29
40
|
* a shameful helper to avoid needing to test code coverage of branches
|
|
30
41
|
*/
|