@openstax/ts-utils 1.43.1 → 1.43.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.
- package/dist/cjs/aws/ssmService.js +2 -2
- package/dist/cjs/config/awsParameterConfig.d.ts +1 -1
- package/dist/cjs/config/awsParameterConfig.js +7 -7
- package/dist/cjs/config/envConfig.d.ts +1 -1
- package/dist/cjs/config/envConfig.js +2 -2
- package/dist/cjs/config/index.d.ts +5 -5
- package/dist/cjs/config/index.js +5 -5
- package/dist/cjs/config/lambdaParameterConfig.d.ts +1 -1
- package/dist/cjs/config/lambdaParameterConfig.js +10 -10
- package/dist/cjs/config/replaceConfig.d.ts +1 -1
- package/dist/cjs/config/replaceConfig.js +3 -3
- package/dist/cjs/config/resolveConfigValue.d.ts +1 -1
- package/dist/cjs/errors/index.d.ts +1 -1
- package/dist/cjs/fetch/fetchStatusRetry.d.ts +2 -2
- package/dist/cjs/fetch/fetchStatusRetry.js +2 -2
- package/dist/cjs/fetch/index.d.ts +1 -1
- package/dist/cjs/index.d.ts +4 -4
- package/dist/cjs/index.js +4 -4
- package/dist/cjs/middleware/apiErrorHandler.d.ts +3 -3
- package/dist/cjs/middleware/apiErrorHandler.js +12 -12
- package/dist/cjs/middleware/apiSlowResponseMiddleware.d.ts +3 -3
- package/dist/cjs/middleware/apiSlowResponseMiddleware.js +9 -9
- package/dist/cjs/middleware/index.d.ts +1 -1
- package/dist/cjs/middleware/lambdaCorsResponseMiddleware.d.ts +2 -2
- package/dist/cjs/middleware/lambdaCorsResponseMiddleware.js +5 -5
- package/dist/cjs/middleware/throwNotFoundMiddleware.js +2 -2
- package/dist/cjs/misc/helpers.d.ts +1 -1
- package/dist/cjs/misc/jwks.js +3 -3
- package/dist/cjs/misc/merge.d.ts +1 -1
- package/dist/cjs/misc/merge.js +2 -2
- package/dist/cjs/pagination/index.d.ts +1 -1
- package/dist/cjs/pagination/index.js +10 -10
- package/dist/cjs/routing/helpers.d.ts +1 -1
- package/dist/cjs/routing/helpers.js +7 -7
- package/dist/cjs/routing/index.d.ts +2 -2
- package/dist/cjs/routing/index.js +6 -6
- package/dist/cjs/routing/lambdaBatchRequestHandler.d.ts +2 -2
- package/dist/cjs/routing/lambdaBatchRequestHandler.js +6 -6
- package/dist/cjs/routing/validators/zod.js +2 -2
- package/dist/cjs/services/accountsGateway/index.d.ts +5 -5
- package/dist/cjs/services/accountsGateway/index.js +18 -18
- package/dist/cjs/services/apiGateway/index.d.ts +5 -5
- package/dist/cjs/services/apiGateway/index.js +12 -12
- package/dist/cjs/services/authProvider/browser.d.ts +4 -4
- package/dist/cjs/services/authProvider/browser.js +13 -13
- package/dist/cjs/services/authProvider/decryption.d.ts +3 -3
- package/dist/cjs/services/authProvider/decryption.js +17 -17
- package/dist/cjs/services/authProvider/index.d.ts +3 -3
- package/dist/cjs/services/authProvider/index.js +7 -7
- package/dist/cjs/services/authProvider/launchToken.d.ts +4 -4
- package/dist/cjs/services/authProvider/launchToken.js +6 -6
- package/dist/cjs/services/authProvider/subrequest.d.ts +3 -3
- package/dist/cjs/services/authProvider/subrequest.js +12 -12
- package/dist/cjs/services/authProvider/utils/decryptAndVerify.d.ts +1 -1
- package/dist/cjs/services/authProvider/utils/decryptAndVerify.js +3 -3
- package/dist/cjs/services/authProvider/utils/embeddedAuthProvider.d.ts +2 -2
- package/dist/cjs/services/authProvider/utils/userRoleValidator.d.ts +3 -3
- package/dist/cjs/services/authProvider/utils/userRoleValidator.js +7 -7
- package/dist/cjs/services/authProvider/utils/userSubrequest.d.ts +2 -2
- package/dist/cjs/services/documentStore/dynamoEncoding.d.ts +1 -1
- package/dist/cjs/services/documentStore/dynamoEncoding.js +2 -2
- package/dist/cjs/services/documentStore/unversioned/dynamodb.d.ts +2 -2
- package/dist/cjs/services/documentStore/unversioned/dynamodb.js +30 -30
- package/dist/cjs/services/documentStore/unversioned/file-system.d.ts +2 -2
- package/dist/cjs/services/documentStore/unversioned/file-system.js +13 -13
- package/dist/cjs/services/documentStore/unversioned/index.d.ts +1 -1
- package/dist/cjs/services/documentStore/versioned/dynamodb.d.ts +3 -3
- package/dist/cjs/services/documentStore/versioned/dynamodb.js +17 -17
- package/dist/cjs/services/documentStore/versioned/file-system.d.ts +3 -3
- package/dist/cjs/services/documentStore/versioned/file-system.js +2 -2
- package/dist/cjs/services/documentStore/versioned/index.d.ts +2 -2
- package/dist/cjs/services/exercisesGateway/index.d.ts +2 -2
- package/dist/cjs/services/exercisesGateway/index.js +14 -14
- package/dist/cjs/services/fileServer/index.js +3 -3
- package/dist/cjs/services/fileServer/localFileServer.d.ts +2 -2
- package/dist/cjs/services/fileServer/localFileServer.js +11 -11
- package/dist/cjs/services/fileServer/s3FileServer.d.ts +2 -2
- package/dist/cjs/services/fileServer/s3FileServer.js +13 -13
- package/dist/cjs/services/httpMessageVerifier/index.d.ts +1 -1
- package/dist/cjs/services/httpMessageVerifier/index.js +19 -19
- package/dist/cjs/services/launchParams/index.d.ts +2 -2
- package/dist/cjs/services/launchParams/index.js +4 -4
- package/dist/cjs/services/launchParams/signer.d.ts +2 -2
- package/dist/cjs/services/launchParams/signer.js +9 -9
- package/dist/cjs/services/launchParams/verifier.d.ts +1 -1
- package/dist/cjs/services/launchParams/verifier.js +11 -11
- package/dist/cjs/services/logger/console.d.ts +1 -1
- package/dist/cjs/services/logger/console.js +2 -2
- package/dist/cjs/services/logger/index.d.ts +1 -1
- package/dist/cjs/services/lrsGateway/addStatementDefaultFields.d.ts +1 -1
- package/dist/cjs/services/lrsGateway/attempt-utils.d.ts +7 -7
- package/dist/cjs/services/lrsGateway/batching.d.ts +2 -2
- package/dist/cjs/services/lrsGateway/batching.js +2 -2
- package/dist/cjs/services/lrsGateway/file-system.d.ts +3 -3
- package/dist/cjs/services/lrsGateway/file-system.js +10 -10
- package/dist/cjs/services/lrsGateway/index.d.ts +5 -5
- package/dist/cjs/services/lrsGateway/index.js +23 -23
- package/dist/cjs/services/lrsGateway/xapiUtils.d.ts +4 -4
- package/dist/cjs/services/lrsGateway/xapiUtils.js +8 -8
- package/dist/cjs/services/postgresConnection/index.d.ts +2 -2
- package/dist/cjs/services/postgresConnection/index.js +14 -14
- package/dist/cjs/services/queueProvider/local.d.ts +2 -2
- package/dist/cjs/services/queueProvider/local.js +6 -6
- package/dist/cjs/services/queueProvider/sqs.d.ts +2 -2
- package/dist/cjs/services/queueProvider/sqs.js +7 -7
- package/dist/cjs/services/searchProvider/memorySearchTheBadWay.d.ts +1 -1
- package/dist/cjs/services/searchProvider/memorySearchTheBadWay.js +9 -9
- package/dist/cjs/services/searchProvider/openSearch.d.ts +2 -2
- package/dist/cjs/services/searchProvider/openSearch.js +8 -8
- package/dist/cjs/services/searchProvider/streamIndexer.d.ts +2 -2
- package/dist/cjs/services/searchProvider/streamIndexer.js +3 -3
- package/dist/cjs/tsconfig.without-specs.cjs.tsbuildinfo +1 -1
- package/dist/esm/aws/ssmService.js +1 -1
- package/dist/esm/config/awsParameterConfig.d.ts +1 -1
- package/dist/esm/config/awsParameterConfig.js +3 -3
- package/dist/esm/config/envConfig.d.ts +1 -1
- package/dist/esm/config/envConfig.js +1 -1
- package/dist/esm/config/index.d.ts +5 -5
- package/dist/esm/config/index.js +5 -5
- package/dist/esm/config/lambdaParameterConfig.d.ts +1 -1
- package/dist/esm/config/lambdaParameterConfig.js +4 -4
- package/dist/esm/config/replaceConfig.d.ts +1 -1
- package/dist/esm/config/replaceConfig.js +1 -1
- package/dist/esm/config/resolveConfigValue.d.ts +1 -1
- package/dist/esm/errors/index.d.ts +1 -1
- package/dist/esm/fetch/fetchStatusRetry.d.ts +2 -2
- package/dist/esm/fetch/fetchStatusRetry.js +1 -1
- package/dist/esm/fetch/index.d.ts +1 -1
- package/dist/esm/index.d.ts +4 -4
- package/dist/esm/index.js +4 -4
- package/dist/esm/middleware/apiErrorHandler.d.ts +3 -3
- package/dist/esm/middleware/apiErrorHandler.js +3 -3
- package/dist/esm/middleware/apiSlowResponseMiddleware.d.ts +3 -3
- package/dist/esm/middleware/apiSlowResponseMiddleware.js +4 -4
- package/dist/esm/middleware/index.d.ts +1 -1
- package/dist/esm/middleware/lambdaCorsResponseMiddleware.d.ts +2 -2
- package/dist/esm/middleware/lambdaCorsResponseMiddleware.js +3 -3
- package/dist/esm/middleware/throwNotFoundMiddleware.js +1 -1
- package/dist/esm/misc/helpers.d.ts +1 -1
- package/dist/esm/misc/jwks.js +1 -1
- package/dist/esm/misc/merge.d.ts +1 -1
- package/dist/esm/misc/merge.js +1 -1
- package/dist/esm/pagination/index.d.ts +1 -1
- package/dist/esm/pagination/index.js +3 -3
- package/dist/esm/routing/helpers.d.ts +1 -1
- package/dist/esm/routing/helpers.js +3 -3
- package/dist/esm/routing/index.d.ts +2 -2
- package/dist/esm/routing/index.js +3 -3
- package/dist/esm/routing/lambdaBatchRequestHandler.d.ts +2 -2
- package/dist/esm/routing/lambdaBatchRequestHandler.js +3 -3
- package/dist/esm/routing/validators/zod.js +1 -1
- package/dist/esm/services/accountsGateway/index.d.ts +5 -5
- package/dist/esm/services/accountsGateway/index.js +5 -5
- package/dist/esm/services/apiGateway/index.d.ts +5 -5
- package/dist/esm/services/apiGateway/index.js +5 -5
- package/dist/esm/services/authProvider/browser.d.ts +4 -4
- package/dist/esm/services/authProvider/browser.js +5 -5
- package/dist/esm/services/authProvider/decryption.d.ts +3 -3
- package/dist/esm/services/authProvider/decryption.js +7 -7
- package/dist/esm/services/authProvider/index.d.ts +3 -3
- package/dist/esm/services/authProvider/index.js +2 -2
- package/dist/esm/services/authProvider/launchToken.d.ts +4 -4
- package/dist/esm/services/authProvider/launchToken.js +2 -2
- package/dist/esm/services/authProvider/subrequest.d.ts +3 -3
- package/dist/esm/services/authProvider/subrequest.js +5 -5
- package/dist/esm/services/authProvider/utils/decryptAndVerify.d.ts +1 -1
- package/dist/esm/services/authProvider/utils/decryptAndVerify.js +1 -1
- package/dist/esm/services/authProvider/utils/embeddedAuthProvider.d.ts +2 -2
- package/dist/esm/services/authProvider/utils/userRoleValidator.d.ts +3 -3
- package/dist/esm/services/authProvider/utils/userRoleValidator.js +4 -4
- package/dist/esm/services/authProvider/utils/userSubrequest.d.ts +2 -2
- package/dist/esm/services/documentStore/dynamoEncoding.d.ts +1 -1
- package/dist/esm/services/documentStore/dynamoEncoding.js +1 -1
- package/dist/esm/services/documentStore/unversioned/dynamodb.d.ts +2 -2
- package/dist/esm/services/documentStore/unversioned/dynamodb.js +5 -5
- package/dist/esm/services/documentStore/unversioned/file-system.d.ts +2 -2
- package/dist/esm/services/documentStore/unversioned/file-system.js +4 -4
- package/dist/esm/services/documentStore/unversioned/index.d.ts +1 -1
- package/dist/esm/services/documentStore/versioned/dynamodb.d.ts +3 -3
- package/dist/esm/services/documentStore/versioned/dynamodb.js +4 -4
- package/dist/esm/services/documentStore/versioned/file-system.d.ts +3 -3
- package/dist/esm/services/documentStore/versioned/file-system.js +1 -1
- package/dist/esm/services/documentStore/versioned/index.d.ts +2 -2
- package/dist/esm/services/exercisesGateway/index.d.ts +2 -2
- package/dist/esm/services/exercisesGateway/index.js +5 -5
- package/dist/esm/services/fileServer/index.js +1 -1
- package/dist/esm/services/fileServer/localFileServer.d.ts +2 -2
- package/dist/esm/services/fileServer/localFileServer.js +4 -4
- package/dist/esm/services/fileServer/s3FileServer.d.ts +2 -2
- package/dist/esm/services/fileServer/s3FileServer.js +4 -4
- package/dist/esm/services/httpMessageVerifier/index.d.ts +1 -1
- package/dist/esm/services/httpMessageVerifier/index.js +5 -5
- package/dist/esm/services/launchParams/index.d.ts +2 -2
- package/dist/esm/services/launchParams/index.js +2 -2
- package/dist/esm/services/launchParams/signer.d.ts +2 -2
- package/dist/esm/services/launchParams/signer.js +3 -3
- package/dist/esm/services/launchParams/verifier.d.ts +1 -1
- package/dist/esm/services/launchParams/verifier.js +5 -5
- package/dist/esm/services/logger/console.d.ts +1 -1
- package/dist/esm/services/logger/console.js +1 -1
- package/dist/esm/services/logger/index.d.ts +1 -1
- package/dist/esm/services/lrsGateway/addStatementDefaultFields.d.ts +1 -1
- package/dist/esm/services/lrsGateway/attempt-utils.d.ts +7 -7
- package/dist/esm/services/lrsGateway/batching.d.ts +2 -2
- package/dist/esm/services/lrsGateway/batching.js +1 -1
- package/dist/esm/services/lrsGateway/file-system.d.ts +3 -3
- package/dist/esm/services/lrsGateway/file-system.js +5 -5
- package/dist/esm/services/lrsGateway/index.d.ts +5 -5
- package/dist/esm/services/lrsGateway/index.js +10 -10
- package/dist/esm/services/lrsGateway/xapiUtils.d.ts +4 -4
- package/dist/esm/services/lrsGateway/xapiUtils.js +2 -2
- package/dist/esm/services/postgresConnection/index.d.ts +2 -2
- package/dist/esm/services/postgresConnection/index.js +4 -4
- package/dist/esm/services/queueProvider/local.d.ts +2 -2
- package/dist/esm/services/queueProvider/local.js +3 -3
- package/dist/esm/services/queueProvider/sqs.d.ts +2 -2
- package/dist/esm/services/queueProvider/sqs.js +3 -3
- package/dist/esm/services/searchProvider/memorySearchTheBadWay.d.ts +1 -1
- package/dist/esm/services/searchProvider/memorySearchTheBadWay.js +3 -3
- package/dist/esm/services/searchProvider/openSearch.d.ts +2 -2
- package/dist/esm/services/searchProvider/openSearch.js +3 -3
- package/dist/esm/services/searchProvider/streamIndexer.d.ts +2 -2
- package/dist/esm/services/searchProvider/streamIndexer.js +1 -1
- package/dist/esm/tsconfig.without-specs.esm.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ssmService = void 0;
|
|
4
4
|
const client_ssm_1 = require("@aws-sdk/client-ssm");
|
|
5
|
-
const
|
|
5
|
+
const index_js_1 = require("../index.js");
|
|
6
6
|
/**
|
|
7
7
|
* A memoized instance of the AWS SSM client.
|
|
8
8
|
*/
|
|
9
|
-
exports.ssmService = (0,
|
|
9
|
+
exports.ssmService = (0, index_js_1.once)(() => new client_ssm_1.SSM({ apiVersion: '2012-08-10' }));
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.awsParameterConfig = void 0;
|
|
4
4
|
const client_ssm_1 = require("@aws-sdk/client-ssm");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
5
|
+
const index_js_1 = require("../assertions/index.js");
|
|
6
|
+
const ssmService_js_1 = require("../aws/ssmService.js");
|
|
7
|
+
const resolveConfigValue_js_1 = require("./resolveConfigValue.js");
|
|
8
8
|
/**
|
|
9
9
|
* Returns a value from the AWS Parameter Store.
|
|
10
10
|
*
|
|
@@ -15,12 +15,12 @@ const resolveConfigValue_1 = require("./resolveConfigValue");
|
|
|
15
15
|
*/
|
|
16
16
|
const awsParameterConfig = (parameterName) => {
|
|
17
17
|
return async () => {
|
|
18
|
-
const command = new client_ssm_1.GetParameterCommand({ Name: await (0,
|
|
18
|
+
const command = new client_ssm_1.GetParameterCommand({ Name: await (0, resolveConfigValue_js_1.resolveConfigValue)(parameterName), WithDecryption: true });
|
|
19
19
|
// send() throws ParameterNotFound if the parameter is missing,
|
|
20
20
|
// so it's not clear what missing Parameter or Value mean
|
|
21
|
-
const response = await (0,
|
|
22
|
-
const parameter = (0,
|
|
23
|
-
return (0,
|
|
21
|
+
const response = await (0, ssmService_js_1.ssmService)().send(command);
|
|
22
|
+
const parameter = (0, index_js_1.assertDefined)(response.Parameter, `aws GetParameter response missing Parameter key for ${parameterName}"`);
|
|
23
|
+
return (0, index_js_1.assertDefined)(parameter.Value, `aws GetParameter response missing Parameter.Value key for ${parameterName}"`);
|
|
24
24
|
};
|
|
25
25
|
};
|
|
26
26
|
exports.awsParameterConfig = awsParameterConfig;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.envConfig = exports.ENV_BUILD_CONFIGS = void 0;
|
|
4
|
-
const
|
|
4
|
+
const resolveConfigValue_js_1 = require("./resolveConfigValue.js");
|
|
5
5
|
/**
|
|
6
6
|
* A list of environment variables that were requested at build time. Used by webpack to
|
|
7
7
|
* capture build-time environment variables values.
|
|
@@ -46,7 +46,7 @@ const envConfig = (name, type, defaultValue) => {
|
|
|
46
46
|
throw new Error(`expected to find environment variable with name: ${name}`);
|
|
47
47
|
}
|
|
48
48
|
else {
|
|
49
|
-
return (0,
|
|
49
|
+
return (0, resolveConfigValue_js_1.resolveConfigValue)(defaultValue);
|
|
50
50
|
}
|
|
51
51
|
}
|
|
52
52
|
else {
|
|
@@ -34,7 +34,7 @@ export type ConfigForConfigProvider<T> = T extends ConfigValue ? T : T extends C
|
|
|
34
34
|
export type ConfigProviderForConfig<T> = T extends ConfigValue ? ConfigValueProvider<T> : T extends Config ? {
|
|
35
35
|
[key in keyof T]: ConfigProviderForConfig<T[key]>;
|
|
36
36
|
} : never;
|
|
37
|
-
export * from './resolveConfigValue';
|
|
37
|
+
export * from './resolveConfigValue.js';
|
|
38
38
|
/**
|
|
39
39
|
* stub, mostly for testing. sometimes it helps please typescript to use this if you have
|
|
40
40
|
* two configs you want to have the same type but one is a fixed string and one is a complicated provider
|
|
@@ -42,7 +42,7 @@ export * from './resolveConfigValue';
|
|
|
42
42
|
* @example const config = { configValue: stubConfig('just-a-string') };
|
|
43
43
|
*/
|
|
44
44
|
export declare const stubConfig: <V extends ConfigValue>(configValue: V) => ConfigValueProvider<V>;
|
|
45
|
-
export * from './envConfig';
|
|
46
|
-
export * from './replaceConfig';
|
|
47
|
-
export * from './awsParameterConfig';
|
|
48
|
-
export * from './lambdaParameterConfig';
|
|
45
|
+
export * from './envConfig.js';
|
|
46
|
+
export * from './replaceConfig.js';
|
|
47
|
+
export * from './awsParameterConfig.js';
|
|
48
|
+
export * from './lambdaParameterConfig.js';
|
package/dist/cjs/config/index.js
CHANGED
|
@@ -15,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.stubConfig = void 0;
|
|
18
|
-
__exportStar(require("./resolveConfigValue"), exports);
|
|
18
|
+
__exportStar(require("./resolveConfigValue.js"), exports);
|
|
19
19
|
/*
|
|
20
20
|
* ===========
|
|
21
21
|
* re-usable config providers
|
|
@@ -29,7 +29,7 @@ __exportStar(require("./resolveConfigValue"), exports);
|
|
|
29
29
|
*/
|
|
30
30
|
const stubConfig = (configValue) => configValue;
|
|
31
31
|
exports.stubConfig = stubConfig;
|
|
32
|
-
__exportStar(require("./envConfig"), exports);
|
|
33
|
-
__exportStar(require("./replaceConfig"), exports);
|
|
34
|
-
__exportStar(require("./awsParameterConfig"), exports);
|
|
35
|
-
__exportStar(require("./lambdaParameterConfig"), exports);
|
|
32
|
+
__exportStar(require("./envConfig.js"), exports);
|
|
33
|
+
__exportStar(require("./replaceConfig.js"), exports);
|
|
34
|
+
__exportStar(require("./awsParameterConfig.js"), exports);
|
|
35
|
+
__exportStar(require("./lambdaParameterConfig.js"), exports);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConfigValueProvider } from './index';
|
|
1
|
+
import { ConfigValueProvider } from './index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Returns a value from the AWS Parameter Store. Can only be used during in AWS Lambda, and
|
|
4
4
|
* requires that the AWS Parameters and Secrets Lambda Extension Layer be included in the Lambda.
|
|
@@ -5,10 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.lambdaParameterConfig = void 0;
|
|
7
7
|
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
8
|
+
const index_js_1 = require("../assertions/index.js");
|
|
9
|
+
const helpers_js_1 = require("../misc/helpers.js");
|
|
10
|
+
const envConfig_js_1 = require("./envConfig.js");
|
|
11
|
+
const index_js_2 = require("./index.js");
|
|
12
12
|
const lambdaExtensionUrl = 'http://localhost:2773';
|
|
13
13
|
let lambdaExtensionReadyPromise;
|
|
14
14
|
/**
|
|
@@ -22,21 +22,21 @@ let lambdaExtensionReadyPromise;
|
|
|
22
22
|
* @returns the configuration value provider for the value
|
|
23
23
|
*/
|
|
24
24
|
const lambdaParameterConfig = (parameterName) => async () => {
|
|
25
|
-
const token = await (0,
|
|
26
|
-
const name = await (0,
|
|
25
|
+
const token = await (0, index_js_2.resolveConfigValue)((0, envConfig_js_1.envConfig)('AWS_SESSION_TOKEN', 'runtime'));
|
|
26
|
+
const name = await (0, index_js_2.resolveConfigValue)(parameterName);
|
|
27
27
|
if (!lambdaExtensionReadyPromise) {
|
|
28
28
|
// This request will return 400 Bad Request,
|
|
29
29
|
// but we only care that it'll block until the extension is ready
|
|
30
|
-
lambdaExtensionReadyPromise = (0,
|
|
30
|
+
lambdaExtensionReadyPromise = (0, helpers_js_1.retryWithDelay)(() => (0, node_fetch_1.default)(lambdaExtensionUrl));
|
|
31
31
|
}
|
|
32
32
|
await lambdaExtensionReadyPromise;
|
|
33
|
-
const resp = await (0,
|
|
33
|
+
const resp = await (0, helpers_js_1.retryWithDelay)(() => (0, node_fetch_1.default)(
|
|
34
34
|
// Port 2773 is the default port for the extension
|
|
35
35
|
`${lambdaExtensionUrl}/systemsmanager/parameters/get?name=${name}&withDecryption=true`, { headers: { 'X-Aws-Parameters-Secrets-Token': token } }));
|
|
36
36
|
if (resp.ok) {
|
|
37
37
|
const response = await resp.json();
|
|
38
|
-
const parameter = (0,
|
|
39
|
-
return (0,
|
|
38
|
+
const parameter = (0, index_js_1.assertDefined)(response.Parameter, `aws GetParameter response missing Parameter key for ${name}"`);
|
|
39
|
+
return (0, index_js_1.assertDefined)(parameter.Value, `aws GetParameter response missing Parameter.Value key for ${name}"`);
|
|
40
40
|
}
|
|
41
41
|
else {
|
|
42
42
|
throw new Error(`HTTP Error Response ${resp.status} ${resp.statusText} while fetching parameter ${name}`);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.replaceConfig = void 0;
|
|
4
|
-
const
|
|
4
|
+
const resolveConfigValue_js_1 = require("./resolveConfigValue.js");
|
|
5
5
|
/**
|
|
6
6
|
* Substitutes configuration values into a provided string.
|
|
7
7
|
* Performs a string substitution using configuration values
|
|
@@ -15,8 +15,8 @@ const resolveConfigValue_1 = require("./resolveConfigValue");
|
|
|
15
15
|
const replaceConfig = (base, replacements) => {
|
|
16
16
|
return async () => {
|
|
17
17
|
const resolved = await Promise.all(Object.entries(replacements)
|
|
18
|
-
.map(async ([token, replacement]) => [token, await (0,
|
|
19
|
-
return resolved.reduce((result, [token, replacement]) => result.replace(token, replacement), await (0,
|
|
18
|
+
.map(async ([token, replacement]) => [token, await (0, resolveConfigValue_js_1.resolveConfigValue)(replacement)]));
|
|
19
|
+
return resolved.reduce((result, [token, replacement]) => result.replace(token, replacement), await (0, resolveConfigValue_js_1.resolveConfigValue)(base));
|
|
20
20
|
};
|
|
21
21
|
};
|
|
22
22
|
exports.replaceConfig = replaceConfig;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { RetryOptions } from '../misc/helpers';
|
|
2
|
-
import { GenericFetch } from './index';
|
|
1
|
+
import { RetryOptions } from '../misc/helpers.js';
|
|
2
|
+
import { GenericFetch } from './index.js';
|
|
3
3
|
interface Options extends RetryOptions {
|
|
4
4
|
status?: number[];
|
|
5
5
|
timeout?: number;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.fetchStatusRetry = void 0;
|
|
4
|
-
const
|
|
4
|
+
const helpers_js_1 = require("../misc/helpers.js");
|
|
5
5
|
const fetchStatusRetry = (base, options) => {
|
|
6
|
-
return (...params) => (0,
|
|
6
|
+
return (...params) => (0, helpers_js_1.retryWithDelay)(() => {
|
|
7
7
|
const fetchPromise = base(...params).then(r => {
|
|
8
8
|
var _a;
|
|
9
9
|
if ((_a = options.status) === null || _a === void 0 ? void 0 : _a.includes(r.status)) {
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './misc/partitionSequence';
|
|
2
|
-
export * from './misc/helpers';
|
|
3
|
-
export * from './misc/merge';
|
|
4
|
-
export * from './misc/hashValue';
|
|
1
|
+
export * from './misc/partitionSequence.js';
|
|
2
|
+
export * from './misc/helpers.js';
|
|
3
|
+
export * from './misc/merge.js';
|
|
4
|
+
export * from './misc/hashValue.js';
|
package/dist/cjs/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./misc/partitionSequence"), exports);
|
|
18
|
-
__exportStar(require("./misc/helpers"), exports);
|
|
19
|
-
__exportStar(require("./misc/merge"), exports);
|
|
20
|
-
__exportStar(require("./misc/hashValue"), exports);
|
|
17
|
+
__exportStar(require("./misc/partitionSequence.js"), exports);
|
|
18
|
+
__exportStar(require("./misc/helpers.js"), exports);
|
|
19
|
+
__exportStar(require("./misc/merge.js"), exports);
|
|
20
|
+
__exportStar(require("./misc/hashValue.js"), exports);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ForbiddenError, InvalidRequestError, NotFoundError, SessionExpiredError, UnauthorizedError, ValidationError } from '../errors/index';
|
|
2
|
-
import type { ApiResponse } from '../routing/index';
|
|
3
|
-
import type { Logger } from '../services/logger/index';
|
|
1
|
+
import { ForbiddenError, InvalidRequestError, NotFoundError, SessionExpiredError, UnauthorizedError, ValidationError } from '../errors/index.js';
|
|
2
|
+
import type { ApiResponse } from '../routing/index.js';
|
|
3
|
+
import type { Logger } from '../services/logger/index.js';
|
|
4
4
|
export type DefaultErrors = {
|
|
5
5
|
InvalidRequestError: InvalidRequestError;
|
|
6
6
|
UnauthorizedError: UnauthorizedError;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createErrorHandler = exports.defaultHandlers = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
4
|
+
const index_js_1 = require("../errors/index.js");
|
|
5
|
+
const index_js_2 = require("../routing/index.js");
|
|
6
|
+
const index_js_3 = require("../services/logger/index.js");
|
|
7
7
|
exports.defaultHandlers = {
|
|
8
|
-
InvalidRequestError: (e) => (0,
|
|
9
|
-
UnauthorizedError: (e) => (0,
|
|
10
|
-
ForbiddenError: (e) => (0,
|
|
11
|
-
NotFoundError: (e) => (0,
|
|
12
|
-
ValidationError: (e) => (0,
|
|
13
|
-
SessionExpiredError: (e) => (0,
|
|
8
|
+
InvalidRequestError: (e) => (0, index_js_2.apiTextResponse)(400, `400 ${e.message}`),
|
|
9
|
+
UnauthorizedError: (e) => (0, index_js_2.apiTextResponse)(401, `401 ${e.message}`),
|
|
10
|
+
ForbiddenError: (e) => (0, index_js_2.apiTextResponse)(403, `403 ${e.message}`),
|
|
11
|
+
NotFoundError: (e) => (0, index_js_2.apiTextResponse)(404, `404 ${e.message}`),
|
|
12
|
+
ValidationError: (e) => (0, index_js_2.apiJsonResponse)(422, e.getData()),
|
|
13
|
+
SessionExpiredError: (e) => (0, index_js_2.apiTextResponse)(440, `440 ${e.message}`),
|
|
14
14
|
};
|
|
15
15
|
/**
|
|
16
16
|
* Creates an error handler. Provides default handlers for `UnauthorizedError`,
|
|
@@ -23,9 +23,9 @@ exports.defaultHandlers = {
|
|
|
23
23
|
const createErrorHandler = (inputHandlers) => {
|
|
24
24
|
const handlers = { ...exports.defaultHandlers, ...inputHandlers };
|
|
25
25
|
return async (e, logger) => {
|
|
26
|
-
const name = (0,
|
|
26
|
+
const name = (0, index_js_1.isAppError)(e) ? e.constructor.TYPE : e.constructor.name;
|
|
27
27
|
const handler = handlers[name];
|
|
28
|
-
const logLevel = handler ?
|
|
28
|
+
const logLevel = handler ? index_js_3.Level.Info : index_js_3.Level.Error;
|
|
29
29
|
logger.logEvent(logLevel, {
|
|
30
30
|
name: e.name,
|
|
31
31
|
message: e.message,
|
|
@@ -36,7 +36,7 @@ const createErrorHandler = (inputHandlers) => {
|
|
|
36
36
|
// we looked up based on the errors name is very annoying
|
|
37
37
|
return handler(e, logger);
|
|
38
38
|
}
|
|
39
|
-
return (0,
|
|
39
|
+
return (0, index_js_2.apiTextResponse)(500, '500 Error');
|
|
40
40
|
};
|
|
41
41
|
};
|
|
42
42
|
exports.createErrorHandler = createErrorHandler;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ConfigProviderForConfig } from '../config/index';
|
|
2
|
-
import type { ApiResponse } from '../routing/index';
|
|
3
|
-
import type { Logger } from '../services/logger/index';
|
|
1
|
+
import type { ConfigProviderForConfig } from '../config/index.js';
|
|
2
|
+
import type { ApiResponse } from '../routing/index.js';
|
|
3
|
+
import type { Logger } from '../services/logger/index.js';
|
|
4
4
|
type Config = {
|
|
5
5
|
logResponseSlowerThan: string;
|
|
6
6
|
timeoutResponseAfter: string;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createSlowResponseMiddleware = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
4
|
+
const resolveConfigValue_js_1 = require("../config/resolveConfigValue.js");
|
|
5
|
+
const helpers_js_1 = require("../misc/helpers.js");
|
|
6
|
+
const index_js_1 = require("../routing/index.js");
|
|
7
|
+
const index_js_2 = require("../services/logger/index.js");
|
|
8
8
|
/**
|
|
9
9
|
* Creates response middleware that logs slow responses and times out responses that take too long. lambda functions have a timeout setting, but when a lambda times out there is no way to log anything helpful before it exists. this middleware allows the logger context to show up for timeout requests. just make sure that the `timeoutResponseAfter` is set to something slightly shorter than the lambda timeout so that it has time to run.
|
|
10
10
|
*
|
|
@@ -18,8 +18,8 @@ const index_2 = require("../services/logger/index");
|
|
|
18
18
|
* });
|
|
19
19
|
*/
|
|
20
20
|
const createSlowResponseMiddleware = (config) => {
|
|
21
|
-
const getSlowThreshold = (0,
|
|
22
|
-
const getTimeoutAfter = (0,
|
|
21
|
+
const getSlowThreshold = (0, helpers_js_1.once)(() => (0, resolveConfigValue_js_1.resolveConfigValue)(config.logResponseSlowerThan).then(result => parseInt(result, 10)));
|
|
22
|
+
const getTimeoutAfter = (0, helpers_js_1.once)(() => (0, resolveConfigValue_js_1.resolveConfigValue)(config.timeoutResponseAfter).then(result => parseInt(result, 10)));
|
|
23
23
|
return () => (response, { logger }) => {
|
|
24
24
|
const start = Date.now();
|
|
25
25
|
if (!response) {
|
|
@@ -30,10 +30,10 @@ const createSlowResponseMiddleware = (config) => {
|
|
|
30
30
|
const timeoutPromise = isNaN(timeoutAfter)
|
|
31
31
|
? undefined
|
|
32
32
|
: new Promise(resolve => timeout = setTimeout(() => {
|
|
33
|
-
logger.logEvent(
|
|
33
|
+
logger.logEvent(index_js_2.Level.Error, {
|
|
34
34
|
message: 'request processing timed out',
|
|
35
35
|
});
|
|
36
|
-
resolve((0,
|
|
36
|
+
resolve((0, index_js_1.apiTextResponse)(504, '504 Gateway Timeout'));
|
|
37
37
|
}, timeoutAfter));
|
|
38
38
|
const requestPromise = response.finally(() => {
|
|
39
39
|
const time = Date.now() - start;
|
|
@@ -41,7 +41,7 @@ const createSlowResponseMiddleware = (config) => {
|
|
|
41
41
|
clearTimeout(timeout);
|
|
42
42
|
}
|
|
43
43
|
if (time > slowThreshold) {
|
|
44
|
-
logger.logEvent(
|
|
44
|
+
logger.logEvent(index_js_2.Level.Warn, {
|
|
45
45
|
message: 'slow response',
|
|
46
46
|
time,
|
|
47
47
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { TupleZip } from '../types';
|
|
1
|
+
import { TupleZip } from '../types.js';
|
|
2
2
|
export type MiddlewareProvider<Sa, M, A extends any[], R> = (app: Sa, appBinder?: ((app: Sa, provider: MiddlewareProvider<Sa, M, A, R>) => (middleware: M, ...args: A) => R)) => (middleware: M, ...args: A) => R;
|
|
3
3
|
export type MiddlewareTransformProvider<Sa, M, A extends any[], R> = (app: Sa) => (middleware: M, ...args: A) => Omit<M, keyof R> & R;
|
|
4
4
|
export type MiddlewareInput<S> = S extends MiddlewareProvider<any, infer M, any, any> ? M : never;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { APIGatewayProxyEventV2 } from 'aws-lambda';
|
|
2
|
-
import { ConfigProviderForConfig } from '../config/index';
|
|
3
|
-
import { ApiResponse } from '../routing/index';
|
|
2
|
+
import { ConfigProviderForConfig } from '../config/index.js';
|
|
3
|
+
import { ApiResponse } from '../routing/index.js';
|
|
4
4
|
type Config = {
|
|
5
5
|
corsAllowedHostRegex: string;
|
|
6
6
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createLambdaCorsResponseMiddleware = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
4
|
+
const resolveConfigValue_js_1 = require("../config/resolveConfigValue.js");
|
|
5
|
+
const helpers_js_1 = require("../misc/helpers.js");
|
|
6
|
+
const index_js_1 = require("../routing/index.js");
|
|
7
7
|
/**
|
|
8
8
|
* Creates response middleware that adds CORS headers to responses from approved hosts.
|
|
9
9
|
*
|
|
@@ -15,7 +15,7 @@ const index_1 = require("../routing/index");
|
|
|
15
15
|
* }),
|
|
16
16
|
*/
|
|
17
17
|
const createLambdaCorsResponseMiddleware = (config) => () => (responsePromise, { request }) => {
|
|
18
|
-
const getAllowedHostRegex = (0,
|
|
18
|
+
const getAllowedHostRegex = (0, helpers_js_1.once)(() => (0, resolveConfigValue_js_1.resolveConfigValue)(config.corsAllowedHostRegex));
|
|
19
19
|
const cors = async () => {
|
|
20
20
|
const allowedHost = await getAllowedHostRegex();
|
|
21
21
|
if (request.headers.origin && request.headers.origin !== 'null' && new URL(request.headers.origin).hostname.match(new RegExp(allowedHost))) {
|
|
@@ -37,7 +37,7 @@ const createLambdaCorsResponseMiddleware = (config) => () => (responsePromise, {
|
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
39
|
if (request.requestContext.http.method === 'OPTIONS') {
|
|
40
|
-
return cors().then(headers => (0,
|
|
40
|
+
return cors().then(headers => (0, index_js_1.apiTextResponse)(200, '', headers));
|
|
41
41
|
}
|
|
42
42
|
return responsePromise;
|
|
43
43
|
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createThrowNotFoundMiddleware = void 0;
|
|
4
|
-
const
|
|
4
|
+
const index_js_1 = require("../errors/index.js");
|
|
5
5
|
/**
|
|
6
6
|
* Creates response middleware that throws a `NotFoundError` if the response is undefined.
|
|
7
7
|
*/
|
|
8
8
|
const createThrowNotFoundMiddleware = () => () => (response) => {
|
|
9
9
|
if (!response) {
|
|
10
|
-
throw new
|
|
10
|
+
throw new index_js_1.NotFoundError('not found');
|
|
11
11
|
}
|
|
12
12
|
return response;
|
|
13
13
|
};
|
package/dist/cjs/misc/jwks.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getJwksKey = exports.getJwksClient = void 0;
|
|
4
4
|
const jwks_rsa_1 = require("jwks-rsa");
|
|
5
|
-
const
|
|
6
|
-
exports.getJwksClient = (0,
|
|
5
|
+
const helpers_js_1 = require("./helpers.js");
|
|
6
|
+
exports.getJwksClient = (0, helpers_js_1.memoize)((jwksUri, fetcher) => {
|
|
7
7
|
return new jwks_rsa_1.JwksClient({ jwksUri, fetcher });
|
|
8
8
|
});
|
|
9
|
-
exports.getJwksKey = (0,
|
|
9
|
+
exports.getJwksKey = (0, helpers_js_1.memoize)(async (iss, kid, fetcher) => {
|
|
10
10
|
const jwksUri = new URL('/.well-known/jwks.json', iss).toString();
|
|
11
11
|
const client = (0, exports.getJwksClient)(jwksUri, fetcher);
|
|
12
12
|
return client.getSigningKey(kid);
|
package/dist/cjs/misc/merge.d.ts
CHANGED
package/dist/cjs/misc/merge.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.merge = exports.getCommonProperties = void 0;
|
|
4
|
-
const
|
|
4
|
+
const index_js_1 = require("../guards/index.js");
|
|
5
5
|
/**
|
|
6
6
|
* Takes two objects and returns an array of the keys that are common to both, with a type
|
|
7
7
|
* limited to those keys.
|
|
@@ -34,7 +34,7 @@ const merge = (...[thing1, ...tail]) => {
|
|
|
34
34
|
...mergedTail,
|
|
35
35
|
...(0, exports.getCommonProperties)(thing1, mergedTail).reduce((result, property) => ({
|
|
36
36
|
...result,
|
|
37
|
-
...((0,
|
|
37
|
+
...((0, index_js_1.isPlainObject)(thing1[property]) && (0, index_js_1.isPlainObject)(mergedTail[property])
|
|
38
38
|
? { [property]: (0, exports.merge)(thing1[property], mergedTail[property]) }
|
|
39
39
|
: (Array.isArray(thing1[property]) && Array.isArray(mergedTail[property]))
|
|
40
40
|
? { [property]: [...thing1[property], ...mergedTail[property]] }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { QueryParams, RouteMatchRecord } from '../routing/index';
|
|
1
|
+
import { QueryParams, RouteMatchRecord } from '../routing/index.js';
|
|
2
2
|
export type PaginationHandler<Pa, Q extends QueryParams> = <R>(queryParams: Q, match: RouteMatchRecord<R>) => Pa & {
|
|
3
3
|
getUnusedQueryParams: () => Q;
|
|
4
4
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.pageNumberPagination = exports.loadMorePagination = exports.createPaginationMiddleware = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
4
|
+
const index_js_1 = require("../assertions/index.js");
|
|
5
|
+
const index_js_2 = require("../errors/index.js");
|
|
6
|
+
const index_js_3 = require("../routing/index.js");
|
|
7
7
|
/**
|
|
8
8
|
* helper to create middleware with the given paginator. aside from taking care of annoying to write pagination logic, these helpers also make
|
|
9
9
|
* sure that all item list responses have the same formatting.
|
|
@@ -38,7 +38,7 @@ const loadMorePagination = (queryParams, { route, params }) => {
|
|
|
38
38
|
getUnusedQueryParams: () => otherParams,
|
|
39
39
|
getPageTokenString: () => pageToken,
|
|
40
40
|
getPageTokenNumber: () => pageToken && typeof pageToken === 'string'
|
|
41
|
-
? (0,
|
|
41
|
+
? (0, index_js_1.notNaN)(parseInt(pageToken, 10), () => { throw new index_js_2.InvalidRequestError(); })
|
|
42
42
|
: undefined,
|
|
43
43
|
getPaginationResponse: ({ items, ...meta }) => {
|
|
44
44
|
return {
|
|
@@ -46,7 +46,7 @@ const loadMorePagination = (queryParams, { route, params }) => {
|
|
|
46
46
|
meta,
|
|
47
47
|
links: {
|
|
48
48
|
nextPage: meta.nextPageToken
|
|
49
|
-
? (0,
|
|
49
|
+
? (0, index_js_3.renderAnyRouteUrl)(route, params, { ...queryParams, pageToken: meta.nextPageToken.toString() })
|
|
50
50
|
: undefined,
|
|
51
51
|
}
|
|
52
52
|
};
|
|
@@ -57,7 +57,7 @@ exports.loadMorePagination = loadMorePagination;
|
|
|
57
57
|
const pageNumberPagination = (queryParams, { route, params }) => {
|
|
58
58
|
const { page, ...otherParams } = queryParams;
|
|
59
59
|
const numberPage = page && typeof page === 'string'
|
|
60
|
-
? (0,
|
|
60
|
+
? (0, index_js_1.notNaN)(parseInt(page, 10), () => { throw new index_js_2.InvalidRequestError(); })
|
|
61
61
|
: undefined;
|
|
62
62
|
return {
|
|
63
63
|
getUnusedQueryParams: () => otherParams,
|
|
@@ -67,13 +67,13 @@ const pageNumberPagination = (queryParams, { route, params }) => {
|
|
|
67
67
|
items,
|
|
68
68
|
meta,
|
|
69
69
|
links: {
|
|
70
|
-
firstPage: (0,
|
|
71
|
-
lastPage: (0,
|
|
70
|
+
firstPage: (0, index_js_3.renderAnyRouteUrl)(route, params, { ...queryParams, page: '1' }),
|
|
71
|
+
lastPage: (0, index_js_3.renderAnyRouteUrl)(route, params, { ...queryParams, page: meta.totalPages.toString() }),
|
|
72
72
|
nextPage: meta.currentPage < meta.totalPages
|
|
73
|
-
? (0,
|
|
73
|
+
? (0, index_js_3.renderAnyRouteUrl)(route, params, { ...queryParams, page: (meta.currentPage + 1).toString() })
|
|
74
74
|
: undefined,
|
|
75
75
|
prevPage: meta.currentPage > 1
|
|
76
|
-
? (0,
|
|
76
|
+
? (0, index_js_3.renderAnyRouteUrl)(route, params, { ...queryParams, page: (meta.currentPage - 1).toString() })
|
|
77
77
|
: undefined
|
|
78
78
|
}
|
|
79
79
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.requestPayloadProvider = exports.unsafePayloadValidator = exports.getRequestBody = exports.getHeader = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
4
|
+
const index_js_1 = require("../assertions/index.js");
|
|
5
|
+
const index_js_2 = require("../errors/index.js");
|
|
6
|
+
const index_js_3 = require("../guards/index.js");
|
|
7
7
|
/**
|
|
8
8
|
* Get the value of a header, case insensitive; note if there are multiple headers of the same
|
|
9
9
|
* value, this only returns the first value
|
|
@@ -26,7 +26,7 @@ exports.getHeader = getHeader;
|
|
|
26
26
|
*/
|
|
27
27
|
const getRequestBody = (request) => {
|
|
28
28
|
if ((0, exports.getHeader)(request.headers, 'content-type') !== 'application/json') {
|
|
29
|
-
throw new
|
|
29
|
+
throw new index_js_2.InvalidRequestError('unknown content type: ' + (0, exports.getHeader)(request.headers, 'content-type'));
|
|
30
30
|
}
|
|
31
31
|
if (!request.body) {
|
|
32
32
|
return {};
|
|
@@ -37,7 +37,7 @@ const getRequestBody = (request) => {
|
|
|
37
37
|
catch (error) {
|
|
38
38
|
// Since the body is provided by the user, invalid JSON in the body is an invalid request
|
|
39
39
|
// We return the message which tells them why the JSON is invalid, but no backtrace
|
|
40
|
-
throw new
|
|
40
|
+
throw new index_js_2.InvalidRequestError((0, index_js_1.assertErrorInstanceOf)(error, SyntaxError).message);
|
|
41
41
|
}
|
|
42
42
|
};
|
|
43
43
|
exports.getRequestBody = getRequestBody;
|
|
@@ -46,7 +46,7 @@ exports.getRequestBody = getRequestBody;
|
|
|
46
46
|
* stub validator because writing validators is annoying
|
|
47
47
|
*/
|
|
48
48
|
const unsafePayloadValidator = () => (input) => {
|
|
49
|
-
return (0,
|
|
49
|
+
return (0, index_js_3.isPlainObject)(input) && Object.keys(input).length > 0;
|
|
50
50
|
};
|
|
51
51
|
exports.unsafePayloadValidator = unsafePayloadValidator;
|
|
52
52
|
/**
|
|
@@ -83,7 +83,7 @@ const requestPayloadProvider = (validator) => () => (requestServices) => {
|
|
|
83
83
|
const payload = (0, exports.getRequestBody)(requestServices.request);
|
|
84
84
|
// for more precise error messages, throw your own InvalidRequestError from your validator function
|
|
85
85
|
if (!validator(payload)) {
|
|
86
|
-
throw new
|
|
86
|
+
throw new index_js_2.InvalidRequestError();
|
|
87
87
|
}
|
|
88
88
|
return { ...requestServices, payload };
|
|
89
89
|
};
|