@salesforce/mrt-utilities 0.1.0 → 0.1.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/data-store/index.d.ts +56 -0
- package/dist/cjs/data-store/index.js +131 -0
- package/dist/cjs/data-store/index.js.map +1 -0
- package/dist/cjs/index.js +22 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/metrics/index.js +17 -1
- package/dist/cjs/metrics/index.js.map +1 -1
- package/dist/cjs/metrics/metrics-sender.js +14 -9
- package/dist/cjs/metrics/metrics-sender.js.map +1 -1
- package/dist/cjs/middleware/data-store.d.ts +3 -54
- package/dist/cjs/middleware/data-store.js +19 -116
- package/dist/cjs/middleware/data-store.js.map +1 -1
- package/dist/cjs/middleware/express.d.ts +2 -0
- package/dist/cjs/middleware/express.js +23 -0
- package/dist/cjs/middleware/express.js.map +1 -0
- package/dist/cjs/middleware/index.d.ts +2 -3
- package/dist/cjs/middleware/index.js +18 -2
- package/dist/cjs/middleware/index.js.map +1 -1
- package/dist/cjs/middleware/middleware.js +94 -44
- package/dist/cjs/middleware/middleware.js.map +1 -1
- package/dist/cjs/streaming/create-lambda-adapter.js +66 -76
- package/dist/cjs/streaming/create-lambda-adapter.js.map +1 -1
- package/dist/cjs/streaming/index.js +7 -1
- package/dist/cjs/streaming/index.js.map +1 -1
- package/dist/cjs/utils/configure-proxying.js +16 -10
- package/dist/cjs/utils/configure-proxying.js.map +1 -1
- package/dist/cjs/utils/ssr-proxying.js +43 -32
- package/dist/cjs/utils/ssr-proxying.js.map +1 -1
- package/dist/cjs/utils/utils.js +7 -2
- package/dist/cjs/utils/utils.js.map +1 -1
- package/dist/esm/data-store/index.d.ts +56 -0
- package/dist/esm/data-store/index.js +124 -0
- package/dist/esm/data-store/index.js.map +1 -0
- package/dist/esm/middleware/data-store.d.ts +3 -54
- package/dist/esm/middleware/data-store.js +3 -116
- package/dist/esm/middleware/data-store.js.map +1 -1
- package/dist/esm/middleware/express.d.ts +2 -0
- package/dist/esm/middleware/express.js +8 -0
- package/dist/esm/middleware/express.js.map +1 -0
- package/dist/esm/middleware/index.d.ts +2 -3
- package/dist/esm/middleware/index.js +2 -3
- package/dist/esm/middleware/index.js.map +1 -1
- package/dist/esm/middleware/middleware.js +15 -10
- package/dist/esm/middleware/middleware.js.map +1 -1
- package/dist/esm/streaming/create-lambda-adapter.js +39 -57
- package/dist/esm/streaming/create-lambda-adapter.js.map +1 -1
- package/package.json +26 -3
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
|
|
2
|
+
export declare class DataStoreNotFoundError extends Error {
|
|
3
|
+
constructor(message: string);
|
|
4
|
+
}
|
|
5
|
+
export declare class DataStoreServiceError extends Error {
|
|
6
|
+
constructor(message: string);
|
|
7
|
+
}
|
|
8
|
+
export declare class DataStoreUnavailableError extends Error {
|
|
9
|
+
constructor(message: string);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A class for reading entries from the data store.
|
|
13
|
+
*
|
|
14
|
+
* This class uses a singleton pattern.
|
|
15
|
+
* Use DataStore.getDataStore() to get the singleton instance.
|
|
16
|
+
*/
|
|
17
|
+
export declare class DataStore {
|
|
18
|
+
private _tableName;
|
|
19
|
+
private _ddb;
|
|
20
|
+
private static _instance;
|
|
21
|
+
/** @internal Test hook: inject a document client for unit tests */
|
|
22
|
+
static _testDocumentClient: DynamoDBDocumentClient | null;
|
|
23
|
+
/** @internal Test hook: inject logMRTError for unit tests */
|
|
24
|
+
static _testLogMRTError: ((namespace: string, err: unknown, context?: Record<string, unknown>) => void) | null;
|
|
25
|
+
private constructor();
|
|
26
|
+
/**
|
|
27
|
+
* Get or create a DynamoDB document client (for abstraction of attribute values).
|
|
28
|
+
*
|
|
29
|
+
* @private
|
|
30
|
+
* @returns The DynamoDB document client
|
|
31
|
+
* @throws {DataStoreUnavailableError} The data store is unavailable
|
|
32
|
+
*/
|
|
33
|
+
private getClient;
|
|
34
|
+
/**
|
|
35
|
+
* Get or create the singleton DataStore instance.
|
|
36
|
+
*
|
|
37
|
+
* @returns The singleton DataStore instance
|
|
38
|
+
*/
|
|
39
|
+
static getDataStore(): DataStore;
|
|
40
|
+
/**
|
|
41
|
+
* Whether the data store can be used in the current environment.
|
|
42
|
+
*
|
|
43
|
+
* @returns true if the data store is available, false otherwise
|
|
44
|
+
*/
|
|
45
|
+
isDataStoreAvailable(): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Fetch an entry from the data store.
|
|
48
|
+
*
|
|
49
|
+
* @param key The data store entry's key
|
|
50
|
+
* @returns An object containing the entry's key and value
|
|
51
|
+
* @throws {DataStoreUnavailableError} The data store is unavailable
|
|
52
|
+
* @throws {DataStoreNotFoundError} An entry with the given key cannot be found
|
|
53
|
+
* @throws {DataStoreServiceError} An internal error occurred
|
|
54
|
+
*/
|
|
55
|
+
getEntry(key: string): Promise<Record<string, unknown> | undefined>;
|
|
56
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
7
|
+
import { DynamoDBDocumentClient, GetCommand } from '@aws-sdk/lib-dynamodb';
|
|
8
|
+
import { logMRTError } from '../utils/utils.js';
|
|
9
|
+
export class DataStoreNotFoundError extends Error {
|
|
10
|
+
constructor(message) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = 'DataStoreNotFoundError';
|
|
13
|
+
Object.setPrototypeOf(this, DataStoreNotFoundError.prototype);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export class DataStoreServiceError extends Error {
|
|
17
|
+
constructor(message) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.name = 'DataStoreServiceError';
|
|
20
|
+
Object.setPrototypeOf(this, DataStoreServiceError.prototype);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class DataStoreUnavailableError extends Error {
|
|
24
|
+
constructor(message) {
|
|
25
|
+
super(message);
|
|
26
|
+
this.name = 'DataStoreUnavailableError';
|
|
27
|
+
Object.setPrototypeOf(this, DataStoreUnavailableError.prototype);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A class for reading entries from the data store.
|
|
32
|
+
*
|
|
33
|
+
* This class uses a singleton pattern.
|
|
34
|
+
* Use DataStore.getDataStore() to get the singleton instance.
|
|
35
|
+
*/
|
|
36
|
+
export class DataStore {
|
|
37
|
+
_tableName = '';
|
|
38
|
+
_ddb = null;
|
|
39
|
+
static _instance = null;
|
|
40
|
+
/** @internal Test hook: inject a document client for unit tests */
|
|
41
|
+
static _testDocumentClient = null;
|
|
42
|
+
/** @internal Test hook: inject logMRTError for unit tests */
|
|
43
|
+
static _testLogMRTError = null;
|
|
44
|
+
constructor() {
|
|
45
|
+
// Private constructor for singleton; use DataStore.getDataStore() instead.
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get or create a DynamoDB document client (for abstraction of attribute values).
|
|
49
|
+
*
|
|
50
|
+
* @private
|
|
51
|
+
* @returns The DynamoDB document client
|
|
52
|
+
* @throws {DataStoreUnavailableError} The data store is unavailable
|
|
53
|
+
*/
|
|
54
|
+
getClient() {
|
|
55
|
+
if (!this.isDataStoreAvailable()) {
|
|
56
|
+
throw new DataStoreUnavailableError('The data store is unavailable.');
|
|
57
|
+
}
|
|
58
|
+
if (DataStore._testDocumentClient) {
|
|
59
|
+
this._tableName = `DataAccessLayer-${process.env.AWS_REGION}`;
|
|
60
|
+
return DataStore._testDocumentClient;
|
|
61
|
+
}
|
|
62
|
+
if (!this._ddb) {
|
|
63
|
+
this._tableName = `DataAccessLayer-${process.env.AWS_REGION}`;
|
|
64
|
+
this._ddb = DynamoDBDocumentClient.from(new DynamoDBClient({
|
|
65
|
+
region: process.env.AWS_REGION,
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
return this._ddb;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get or create the singleton DataStore instance.
|
|
72
|
+
*
|
|
73
|
+
* @returns The singleton DataStore instance
|
|
74
|
+
*/
|
|
75
|
+
static getDataStore() {
|
|
76
|
+
if (!DataStore._instance) {
|
|
77
|
+
DataStore._instance = new DataStore();
|
|
78
|
+
}
|
|
79
|
+
return DataStore._instance;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Whether the data store can be used in the current environment.
|
|
83
|
+
*
|
|
84
|
+
* @returns true if the data store is available, false otherwise
|
|
85
|
+
*/
|
|
86
|
+
isDataStoreAvailable() {
|
|
87
|
+
return Boolean(process.env.AWS_REGION && process.env.MOBIFY_PROPERTY_ID && process.env.DEPLOY_TARGET);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Fetch an entry from the data store.
|
|
91
|
+
*
|
|
92
|
+
* @param key The data store entry's key
|
|
93
|
+
* @returns An object containing the entry's key and value
|
|
94
|
+
* @throws {DataStoreUnavailableError} The data store is unavailable
|
|
95
|
+
* @throws {DataStoreNotFoundError} An entry with the given key cannot be found
|
|
96
|
+
* @throws {DataStoreServiceError} An internal error occurred
|
|
97
|
+
*/
|
|
98
|
+
async getEntry(key) {
|
|
99
|
+
if (!this.isDataStoreAvailable()) {
|
|
100
|
+
throw new DataStoreUnavailableError('The data store is unavailable.');
|
|
101
|
+
}
|
|
102
|
+
const ddb = this.getClient();
|
|
103
|
+
let response;
|
|
104
|
+
try {
|
|
105
|
+
response = await ddb.send(new GetCommand({
|
|
106
|
+
TableName: this._tableName,
|
|
107
|
+
Key: {
|
|
108
|
+
projectEnvironment: `${process.env.MOBIFY_PROPERTY_ID} ${process.env.DEPLOY_TARGET}`,
|
|
109
|
+
key,
|
|
110
|
+
},
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
const logFn = DataStore._testLogMRTError ?? logMRTError;
|
|
115
|
+
logFn('data_store', error, { key, tableName: this._tableName });
|
|
116
|
+
throw new DataStoreServiceError('Data store request failed.');
|
|
117
|
+
}
|
|
118
|
+
if (!response.Item?.value) {
|
|
119
|
+
throw new DataStoreNotFoundError(`Data store entry '${key}' not found.`);
|
|
120
|
+
}
|
|
121
|
+
return { key, value: response.Item.value };
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/data-store/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,56 +1,5 @@
|
|
|
1
|
-
import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
|
|
2
|
-
export declare class DataStoreNotFoundError extends Error {
|
|
3
|
-
constructor(message: string);
|
|
4
|
-
}
|
|
5
|
-
export declare class DataStoreServiceError extends Error {
|
|
6
|
-
constructor(message: string);
|
|
7
|
-
}
|
|
8
|
-
export declare class DataStoreUnavailableError extends Error {
|
|
9
|
-
constructor(message: string);
|
|
10
|
-
}
|
|
11
1
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* This class uses a singleton pattern.
|
|
15
|
-
* Use DataStore.getDataStore() to get the singleton instance.
|
|
2
|
+
* @deprecated Import data-store symbols from `@salesforce/mrt-utilities/data-store`.
|
|
3
|
+
* This compatibility path is kept for backward compatibility.
|
|
16
4
|
*/
|
|
17
|
-
export
|
|
18
|
-
private _tableName;
|
|
19
|
-
private _ddb;
|
|
20
|
-
private static _instance;
|
|
21
|
-
/** @internal Test hook: inject a document client for unit tests */
|
|
22
|
-
static _testDocumentClient: DynamoDBDocumentClient | null;
|
|
23
|
-
/** @internal Test hook: inject logMRTError for unit tests */
|
|
24
|
-
static _testLogMRTError: ((namespace: string, err: unknown, context?: Record<string, unknown>) => void) | null;
|
|
25
|
-
private constructor();
|
|
26
|
-
/**
|
|
27
|
-
* Get or create a DynamoDB document client (for abstraction of attribute values).
|
|
28
|
-
*
|
|
29
|
-
* @private
|
|
30
|
-
* @returns The DynamoDB document client
|
|
31
|
-
* @throws {DataStoreUnavailableError} The data store is unavailable
|
|
32
|
-
*/
|
|
33
|
-
private getClient;
|
|
34
|
-
/**
|
|
35
|
-
* Get or create the singleton DataStore instance.
|
|
36
|
-
*
|
|
37
|
-
* @returns The singleton DataStore instance
|
|
38
|
-
*/
|
|
39
|
-
static getDataStore(): DataStore;
|
|
40
|
-
/**
|
|
41
|
-
* Whether the data store can be used in the current environment.
|
|
42
|
-
*
|
|
43
|
-
* @returns true if the data store is available, false otherwise
|
|
44
|
-
*/
|
|
45
|
-
isDataStoreAvailable(): boolean;
|
|
46
|
-
/**
|
|
47
|
-
* Fetch an entry from the data store.
|
|
48
|
-
*
|
|
49
|
-
* @param key The data store entry's key
|
|
50
|
-
* @returns An object containing the entry's key and value
|
|
51
|
-
* @throws {DataStoreUnavailableError} The data store is unavailable
|
|
52
|
-
* @throws {DataStoreNotFoundError} An entry with the given key cannot be found
|
|
53
|
-
* @throws {DataStoreServiceError} An internal error occurred
|
|
54
|
-
*/
|
|
55
|
-
getEntry(key: string): Promise<Record<string, unknown> | undefined>;
|
|
56
|
-
}
|
|
5
|
+
export * from '../data-store/index.js';
|
|
@@ -3,122 +3,9 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2
|
|
4
4
|
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
|
|
7
|
-
import { DynamoDBDocumentClient, GetCommand } from '@aws-sdk/lib-dynamodb';
|
|
8
|
-
import { logMRTError } from '../utils/utils.js';
|
|
9
|
-
export class DataStoreNotFoundError extends Error {
|
|
10
|
-
constructor(message) {
|
|
11
|
-
super(message);
|
|
12
|
-
this.name = 'DataStoreNotFoundError';
|
|
13
|
-
Object.setPrototypeOf(this, DataStoreNotFoundError.prototype);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
export class DataStoreServiceError extends Error {
|
|
17
|
-
constructor(message) {
|
|
18
|
-
super(message);
|
|
19
|
-
this.name = 'DataStoreServiceError';
|
|
20
|
-
Object.setPrototypeOf(this, DataStoreServiceError.prototype);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
export class DataStoreUnavailableError extends Error {
|
|
24
|
-
constructor(message) {
|
|
25
|
-
super(message);
|
|
26
|
-
this.name = 'DataStoreUnavailableError';
|
|
27
|
-
Object.setPrototypeOf(this, DataStoreUnavailableError.prototype);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
6
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* This class uses a singleton pattern.
|
|
34
|
-
* Use DataStore.getDataStore() to get the singleton instance.
|
|
7
|
+
* @deprecated Import data-store symbols from `@salesforce/mrt-utilities/data-store`.
|
|
8
|
+
* This compatibility path is kept for backward compatibility.
|
|
35
9
|
*/
|
|
36
|
-
export
|
|
37
|
-
_tableName = '';
|
|
38
|
-
_ddb = null;
|
|
39
|
-
static _instance = null;
|
|
40
|
-
/** @internal Test hook: inject a document client for unit tests */
|
|
41
|
-
static _testDocumentClient = null;
|
|
42
|
-
/** @internal Test hook: inject logMRTError for unit tests */
|
|
43
|
-
static _testLogMRTError = null;
|
|
44
|
-
constructor() {
|
|
45
|
-
// Private constructor for singleton; use DataStore.getDataStore() instead.
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Get or create a DynamoDB document client (for abstraction of attribute values).
|
|
49
|
-
*
|
|
50
|
-
* @private
|
|
51
|
-
* @returns The DynamoDB document client
|
|
52
|
-
* @throws {DataStoreUnavailableError} The data store is unavailable
|
|
53
|
-
*/
|
|
54
|
-
getClient() {
|
|
55
|
-
if (!this.isDataStoreAvailable()) {
|
|
56
|
-
throw new DataStoreUnavailableError('The data store is unavailable.');
|
|
57
|
-
}
|
|
58
|
-
if (DataStore._testDocumentClient) {
|
|
59
|
-
this._tableName = `DataAccessLayer-${process.env.AWS_REGION}`;
|
|
60
|
-
return DataStore._testDocumentClient;
|
|
61
|
-
}
|
|
62
|
-
if (!this._ddb) {
|
|
63
|
-
this._tableName = `DataAccessLayer-${process.env.AWS_REGION}`;
|
|
64
|
-
this._ddb = DynamoDBDocumentClient.from(new DynamoDBClient({
|
|
65
|
-
region: process.env.AWS_REGION,
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
return this._ddb;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Get or create the singleton DataStore instance.
|
|
72
|
-
*
|
|
73
|
-
* @returns The singleton DataStore instance
|
|
74
|
-
*/
|
|
75
|
-
static getDataStore() {
|
|
76
|
-
if (!DataStore._instance) {
|
|
77
|
-
DataStore._instance = new DataStore();
|
|
78
|
-
}
|
|
79
|
-
return DataStore._instance;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Whether the data store can be used in the current environment.
|
|
83
|
-
*
|
|
84
|
-
* @returns true if the data store is available, false otherwise
|
|
85
|
-
*/
|
|
86
|
-
isDataStoreAvailable() {
|
|
87
|
-
return Boolean(process.env.AWS_REGION && process.env.MOBIFY_PROPERTY_ID && process.env.DEPLOY_TARGET);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Fetch an entry from the data store.
|
|
91
|
-
*
|
|
92
|
-
* @param key The data store entry's key
|
|
93
|
-
* @returns An object containing the entry's key and value
|
|
94
|
-
* @throws {DataStoreUnavailableError} The data store is unavailable
|
|
95
|
-
* @throws {DataStoreNotFoundError} An entry with the given key cannot be found
|
|
96
|
-
* @throws {DataStoreServiceError} An internal error occurred
|
|
97
|
-
*/
|
|
98
|
-
async getEntry(key) {
|
|
99
|
-
if (!this.isDataStoreAvailable()) {
|
|
100
|
-
throw new DataStoreUnavailableError('The data store is unavailable.');
|
|
101
|
-
}
|
|
102
|
-
const ddb = this.getClient();
|
|
103
|
-
let response;
|
|
104
|
-
try {
|
|
105
|
-
response = await ddb.send(new GetCommand({
|
|
106
|
-
TableName: this._tableName,
|
|
107
|
-
Key: {
|
|
108
|
-
projectEnvironment: `${process.env.MOBIFY_PROPERTY_ID} ${process.env.DEPLOY_TARGET}`,
|
|
109
|
-
key,
|
|
110
|
-
},
|
|
111
|
-
}));
|
|
112
|
-
}
|
|
113
|
-
catch (error) {
|
|
114
|
-
const logFn = DataStore._testLogMRTError ?? logMRTError;
|
|
115
|
-
logFn('data_store', error, { key, tableName: this._tableName });
|
|
116
|
-
throw new DataStoreServiceError('Data store request failed.');
|
|
117
|
-
}
|
|
118
|
-
if (!response.Item?.value) {
|
|
119
|
-
throw new DataStoreNotFoundError(`Data store entry '${key}' not found.`);
|
|
120
|
-
}
|
|
121
|
-
return { key, value: response.Item.value };
|
|
122
|
-
}
|
|
123
|
-
}
|
|
10
|
+
export * from '../data-store/index.js';
|
|
124
11
|
//# sourceMappingURL=data-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-store.js","sourceRoot":"","sources":["../../../src/middleware/data-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH
|
|
1
|
+
{"version":3,"file":"data-store.js","sourceRoot":"","sources":["../../../src/middleware/data-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025, Salesforce, Inc.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2
|
|
4
|
+
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
|
+
*/
|
|
6
|
+
export * from './middleware.js';
|
|
7
|
+
export {} from '../utils/configure-proxying.js';
|
|
8
|
+
//# sourceMappingURL=express.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../../src/middleware/express.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAkB,MAAM,gCAAgC,CAAC"}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export * from '
|
|
2
|
-
export * from './
|
|
3
|
-
export { type ProxyConfig } from '../utils/configure-proxying.js';
|
|
1
|
+
export * from '../data-store/index.js';
|
|
2
|
+
export * from './express.js';
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2
|
|
4
4
|
* For full license text, see the license.txt file in the repo root or http://www.apache.org/licenses/LICENSE-2.0
|
|
5
5
|
*/
|
|
6
|
-
export * from '
|
|
7
|
-
export * from './
|
|
8
|
-
export {} from '../utils/configure-proxying.js';
|
|
6
|
+
export * from '../data-store/index.js';
|
|
7
|
+
export * from './express.js';
|
|
9
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/middleware/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,wBAAwB,CAAC;AACvC,cAAc,cAAc,CAAC"}
|
|
@@ -239,7 +239,7 @@ export const createMRTRequestProcessorMiddleware = (requestProcessorPath, proxyC
|
|
|
239
239
|
res.locals.requestClass = req.headers[X_MOBIFY_REQUEST_CLASS];
|
|
240
240
|
req.headers[X_MOBIFY_REQUEST_PROCESSOR_LOCAL] = 'true'; // Mark the request as processed by the request processor
|
|
241
241
|
};
|
|
242
|
-
const ssrRequestProcessorMiddleware =
|
|
242
|
+
const ssrRequestProcessorMiddleware = (req, res, next) => {
|
|
243
243
|
// If the path is /, we enforce that the only methods
|
|
244
244
|
// allowed are GET, HEAD or OPTIONS. This is a restriction
|
|
245
245
|
// imposed by API Gateway: we enforce it here so that the
|
|
@@ -248,15 +248,20 @@ export const createMRTRequestProcessorMiddleware = (requestProcessorPath, proxyC
|
|
|
248
248
|
res.sendStatus(405);
|
|
249
249
|
return;
|
|
250
250
|
}
|
|
251
|
-
// Apply custom query parameter parsing
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
251
|
+
// Apply custom query parameter parsing and forward errors via next()
|
|
252
|
+
processIncomingRequest(req, res)
|
|
253
|
+
.then(() => {
|
|
254
|
+
// Strip out API Gateway headers from the incoming request. We
|
|
255
|
+
// do that now so that the rest of the code don't have to deal
|
|
256
|
+
// with these headers, which can be large and may be accidentally
|
|
257
|
+
// forwarded to other servers.
|
|
258
|
+
cleanUpHeaders(req, false);
|
|
259
|
+
// Hand off to the next middleware
|
|
260
|
+
next();
|
|
261
|
+
})
|
|
262
|
+
.catch((err) => {
|
|
263
|
+
next(err);
|
|
264
|
+
});
|
|
260
265
|
};
|
|
261
266
|
return ssrRequestProcessorMiddleware;
|
|
262
267
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/middleware/middleware.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/middleware/middleware.ts"],"names":[],"mappings":"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"}
|