@aifabrix/miso-client 4.4.2 → 4.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +20 -38
- package/dist/api/auth-token.api.d.ts.map +1 -1
- package/dist/api/auth-token.api.js +45 -48
- package/dist/api/auth-token.api.js.map +1 -1
- package/dist/api/logs-create.api.d.ts.map +1 -1
- package/dist/api/logs-create.api.js +37 -50
- package/dist/api/logs-create.api.js.map +1 -1
- package/dist/express/client-token-endpoint.d.ts.map +1 -1
- package/dist/express/client-token-endpoint.js +88 -82
- package/dist/express/client-token-endpoint.js.map +1 -1
- package/dist/express/error-handler.d.ts.map +1 -1
- package/dist/express/error-handler.js +15 -7
- package/dist/express/error-handler.js.map +1 -1
- package/dist/express/error-types.d.ts +8 -1
- package/dist/express/error-types.d.ts.map +1 -1
- package/dist/express/error-types.js +11 -5
- package/dist/express/error-types.js.map +1 -1
- package/dist/express/index.d.ts +1 -1
- package/dist/express/index.d.ts.map +1 -1
- package/dist/express/response-helper.d.ts.map +1 -1
- package/dist/express/response-helper.js +4 -1
- package/dist/express/response-helper.js.map +1 -1
- package/dist/express/validation-helper.d.ts +1 -1
- package/dist/express/validation-helper.d.ts.map +1 -1
- package/dist/express/validation-helper.js +8 -10
- package/dist/express/validation-helper.js.map +1 -1
- package/dist/index.d.ts +3 -354
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -542
- package/dist/index.js.map +1 -1
- package/dist/miso-client.d.ts +82 -0
- package/dist/miso-client.d.ts.map +1 -0
- package/dist/miso-client.js +187 -0
- package/dist/miso-client.js.map +1 -0
- package/dist/sdk-exports.d.ts +56 -0
- package/dist/sdk-exports.d.ts.map +1 -0
- package/dist/sdk-exports.js +105 -0
- package/dist/sdk-exports.js.map +1 -0
- package/dist/services/application-context.service.d.ts +9 -1
- package/dist/services/application-context.service.d.ts.map +1 -1
- package/dist/services/application-context.service.js +46 -60
- package/dist/services/application-context.service.js.map +1 -1
- package/dist/services/auth-cache-helpers.d.ts.map +1 -1
- package/dist/services/auth-cache-helpers.js +4 -6
- package/dist/services/auth-cache-helpers.js.map +1 -1
- package/dist/services/auth-error-handler.d.ts.map +1 -1
- package/dist/services/auth-error-handler.js +12 -1
- package/dist/services/auth-error-handler.js.map +1 -1
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +9 -13
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/browser-permission.service.d.ts +4 -4
- package/dist/services/browser-permission.service.d.ts.map +1 -1
- package/dist/services/browser-permission.service.js +35 -80
- package/dist/services/browser-permission.service.js.map +1 -1
- package/dist/services/browser-role.service.d.ts +4 -4
- package/dist/services/browser-role.service.d.ts.map +1 -1
- package/dist/services/browser-role.service.js +40 -96
- package/dist/services/browser-role.service.js.map +1 -1
- package/dist/services/cache.service.d.ts +1 -0
- package/dist/services/cache.service.d.ts.map +1 -1
- package/dist/services/cache.service.js +19 -32
- package/dist/services/cache.service.js.map +1 -1
- package/dist/services/logger/logger-context.d.ts +17 -17
- package/dist/services/logger/logger-context.d.ts.map +1 -1
- package/dist/services/logger/logger-context.js +7 -17
- package/dist/services/logger/logger-context.js.map +1 -1
- package/dist/services/logger/logger-http-utils.d.ts +9 -0
- package/dist/services/logger/logger-http-utils.d.ts.map +1 -0
- package/dist/services/logger/logger-http-utils.js +45 -0
- package/dist/services/logger/logger-http-utils.js.map +1 -0
- package/dist/services/logger/logger.service.d.ts +1 -4
- package/dist/services/logger/logger.service.d.ts.map +1 -1
- package/dist/services/logger/logger.service.js +61 -77
- package/dist/services/logger/logger.service.js.map +1 -1
- package/dist/services/permission.service.d.ts.map +1 -1
- package/dist/services/permission.service.js +17 -30
- package/dist/services/permission.service.js.map +1 -1
- package/dist/services/role.service.d.ts.map +1 -1
- package/dist/services/role.service.js +12 -20
- package/dist/services/role.service.js.map +1 -1
- package/dist/services/token-validation.service.js +1 -3
- package/dist/services/token-validation.service.js.map +1 -1
- package/dist/types/config.types.d.ts +1 -0
- package/dist/types/config.types.d.ts.map +1 -1
- package/dist/types/config.types.js.map +1 -1
- package/dist/utils/audit-log-queue.d.ts +3 -0
- package/dist/utils/audit-log-queue.d.ts.map +1 -1
- package/dist/utils/audit-log-queue.js +47 -66
- package/dist/utils/audit-log-queue.js.map +1 -1
- package/dist/utils/client-token-manager.d.ts +0 -7
- package/dist/utils/client-token-manager.d.ts.map +1 -1
- package/dist/utils/client-token-manager.js +40 -46
- package/dist/utils/client-token-manager.js.map +1 -1
- package/dist/utils/config-loader.d.ts +0 -5
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +14 -11
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/console-logger.d.ts +4 -0
- package/dist/utils/console-logger.d.ts.map +1 -1
- package/dist/utils/console-logger.js +21 -5
- package/dist/utils/console-logger.js.map +1 -1
- package/dist/utils/data-client-audit.d.ts +19 -1
- package/dist/utils/data-client-audit.d.ts.map +1 -1
- package/dist/utils/data-client-audit.js +87 -117
- package/dist/utils/data-client-audit.js.map +1 -1
- package/dist/utils/data-client-auth.d.ts.map +1 -1
- package/dist/utils/data-client-auth.js +139 -95
- package/dist/utils/data-client-auth.js.map +1 -1
- package/dist/utils/data-client-auto-init.d.ts.map +1 -1
- package/dist/utils/data-client-auto-init.js +57 -72
- package/dist/utils/data-client-auto-init.js.map +1 -1
- package/dist/utils/data-client-init.d.ts.map +1 -1
- package/dist/utils/data-client-init.js +3 -3
- package/dist/utils/data-client-init.js.map +1 -1
- package/dist/utils/data-client-oauth.d.ts.map +1 -1
- package/dist/utils/data-client-oauth.js +84 -60
- package/dist/utils/data-client-oauth.js.map +1 -1
- package/dist/utils/data-client-redirect.d.ts.map +1 -1
- package/dist/utils/data-client-redirect.js +75 -98
- package/dist/utils/data-client-redirect.js.map +1 -1
- package/dist/utils/data-client-request.d.ts +24 -5
- package/dist/utils/data-client-request.d.ts.map +1 -1
- package/dist/utils/data-client-request.js +80 -42
- package/dist/utils/data-client-request.js.map +1 -1
- package/dist/utils/data-client-response.d.ts +63 -15
- package/dist/utils/data-client-response.d.ts.map +1 -1
- package/dist/utils/data-client-response.js +89 -33
- package/dist/utils/data-client-response.js.map +1 -1
- package/dist/utils/data-client.d.ts +4 -0
- package/dist/utils/data-client.d.ts.map +1 -1
- package/dist/utils/data-client.js +57 -30
- package/dist/utils/data-client.js.map +1 -1
- package/dist/utils/environment-token.d.ts.map +1 -1
- package/dist/utils/environment-token.js +49 -59
- package/dist/utils/environment-token.js.map +1 -1
- package/dist/utils/error-extractor.d.ts.map +1 -1
- package/dist/utils/error-extractor.js +56 -79
- package/dist/utils/error-extractor.js.map +1 -1
- package/dist/utils/filter-colon.utils.d.ts.map +1 -1
- package/dist/utils/filter-colon.utils.js +34 -45
- package/dist/utils/filter-colon.utils.js.map +1 -1
- package/dist/utils/filter-schema-loader.d.ts +12 -0
- package/dist/utils/filter-schema-loader.d.ts.map +1 -0
- package/dist/utils/filter-schema-loader.js +69 -0
- package/dist/utils/filter-schema-loader.js.map +1 -0
- package/dist/utils/filter-schema.utils.d.ts +1 -14
- package/dist/utils/filter-schema.utils.d.ts.map +1 -1
- package/dist/utils/filter-schema.utils.js +78 -136
- package/dist/utils/filter-schema.utils.js.map +1 -1
- package/dist/utils/filter.utils.d.ts.map +1 -1
- package/dist/utils/filter.utils.js +38 -36
- package/dist/utils/filter.utils.js.map +1 -1
- package/dist/utils/http-client-audit.d.ts.map +1 -1
- package/dist/utils/http-client-audit.js +3 -12
- package/dist/utils/http-client-audit.js.map +1 -1
- package/dist/utils/http-client-masking.d.ts +13 -2
- package/dist/utils/http-client-masking.d.ts.map +1 -1
- package/dist/utils/http-client-masking.js +27 -27
- package/dist/utils/http-client-masking.js.map +1 -1
- package/dist/utils/http-response-validator.d.ts.map +1 -1
- package/dist/utils/http-response-validator.js +8 -3
- package/dist/utils/http-response-validator.js.map +1 -1
- package/dist/utils/internal-http-client.d.ts.map +1 -1
- package/dist/utils/internal-http-client.js +5 -3
- package/dist/utils/internal-http-client.js.map +1 -1
- package/dist/utils/response-validator.d.ts.map +1 -1
- package/dist/utils/response-validator.js +29 -44
- package/dist/utils/response-validator.js.map +1 -1
- package/dist/utils/sensitive-fields.loader.d.ts +0 -7
- package/dist/utils/sensitive-fields.loader.d.ts.map +1 -1
- package/dist/utils/sensitive-fields.loader.js +68 -114
- package/dist/utils/sensitive-fields.loader.js.map +1 -1
- package/dist/utils/token-utils.d.ts.map +1 -1
- package/dist/utils/token-utils.js +28 -37
- package/dist/utils/token-utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -114,49 +114,49 @@ function truncateBodies(requestBody, responseBody, maxResponseSize) {
|
|
|
114
114
|
async function applyMaskingStrategy(metadata, auditLevel, maxResponseSize, maxMaskingSize) {
|
|
115
115
|
const sizeInfo = analyzeRequestSizes(metadata.requestBody, metadata.responseBody, maxMaskingSize);
|
|
116
116
|
const truncated = truncateBodies(metadata.requestBody, metadata.responseBody, maxResponseSize);
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
117
|
+
const params = {
|
|
118
|
+
requestHeaders: metadata.requestHeaders,
|
|
119
|
+
responseHeaders: metadata.responseHeaders,
|
|
120
|
+
requestBody: truncated.requestBody,
|
|
121
|
+
responseBody: truncated.responseBody,
|
|
122
|
+
isSmallRequest: sizeInfo.isSmallRequest,
|
|
123
|
+
isLargeRequest: sizeInfo.isLargeRequest,
|
|
124
|
+
requestTruncated: truncated.requestTruncated,
|
|
125
|
+
responseTruncated: truncated.responseTruncated,
|
|
126
|
+
};
|
|
127
|
+
return auditLevel === "standard"
|
|
128
|
+
? applyStandardMasking(params)
|
|
129
|
+
: applyDetailedMasking(params);
|
|
121
130
|
}
|
|
122
131
|
/**
|
|
123
132
|
* Apply standard level masking (light masking)
|
|
124
133
|
*/
|
|
125
|
-
function applyStandardMasking(
|
|
126
|
-
const maskedHeaders = data_masker_1.DataMasker.maskSensitiveData(requestHeaders);
|
|
127
|
-
const maskedResponseHeaders = data_masker_1.DataMasker.maskSensitiveData(responseHeaders);
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
maskedRequestBody = data_masker_1.DataMasker.maskSensitiveData(requestBody);
|
|
132
|
-
maskedResponseBody = data_masker_1.DataMasker.maskSensitiveData(responseBody);
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
135
|
-
maskedRequestBody = { _message: "Request body too large, masking skipped" };
|
|
136
|
-
maskedResponseBody = {
|
|
137
|
-
_message: "Response body too large, masking skipped",
|
|
138
|
-
};
|
|
139
|
-
}
|
|
134
|
+
function applyStandardMasking(p) {
|
|
135
|
+
const maskedHeaders = data_masker_1.DataMasker.maskSensitiveData(p.requestHeaders);
|
|
136
|
+
const maskedResponseHeaders = data_masker_1.DataMasker.maskSensitiveData(p.responseHeaders);
|
|
137
|
+
const shouldMask = p.isSmallRequest || !p.isLargeRequest;
|
|
138
|
+
const maskedRequestBody = shouldMask ? data_masker_1.DataMasker.maskSensitiveData(p.requestBody) : { _message: "Request body too large, masking skipped" };
|
|
139
|
+
const maskedResponseBody = shouldMask ? data_masker_1.DataMasker.maskSensitiveData(p.responseBody) : { _message: "Response body too large, masking skipped" };
|
|
140
140
|
return {
|
|
141
141
|
headers: maskedHeaders,
|
|
142
142
|
requestBody: maskedRequestBody,
|
|
143
143
|
responseBody: maskedResponseBody,
|
|
144
144
|
responseHeaders: maskedResponseHeaders,
|
|
145
|
-
requestTruncated,
|
|
146
|
-
responseTruncated,
|
|
145
|
+
requestTruncated: p.requestTruncated,
|
|
146
|
+
responseTruncated: p.responseTruncated,
|
|
147
147
|
};
|
|
148
148
|
}
|
|
149
149
|
/**
|
|
150
150
|
* Apply detailed/full level masking (with parallelization for medium objects)
|
|
151
151
|
*/
|
|
152
|
-
async function applyDetailedMasking(
|
|
153
|
-
if (isLargeRequest) {
|
|
154
|
-
return createSkippedMaskingResult(requestHeaders, responseHeaders, requestTruncated, responseTruncated);
|
|
152
|
+
async function applyDetailedMasking(params) {
|
|
153
|
+
if (params.isLargeRequest) {
|
|
154
|
+
return createSkippedMaskingResult(params.requestHeaders, params.responseHeaders, params.requestTruncated, params.responseTruncated);
|
|
155
155
|
}
|
|
156
|
-
if (isSmallRequest) {
|
|
157
|
-
return applySequentialMasking(requestHeaders, responseHeaders, requestBody, responseBody, requestTruncated, responseTruncated);
|
|
156
|
+
if (params.isSmallRequest) {
|
|
157
|
+
return applySequentialMasking(params.requestHeaders, params.responseHeaders, params.requestBody, params.responseBody, params.requestTruncated, params.responseTruncated);
|
|
158
158
|
}
|
|
159
|
-
return applyParallelMasking(requestHeaders, responseHeaders, requestBody, responseBody, requestTruncated, responseTruncated);
|
|
159
|
+
return applyParallelMasking(params.requestHeaders, params.responseHeaders, params.requestBody, params.responseBody, params.requestTruncated, params.responseTruncated);
|
|
160
160
|
}
|
|
161
161
|
/**
|
|
162
162
|
* Create result indicating masking was skipped for large requests
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client-masking.js","sourceRoot":"","sources":["../../src/utils/http-client-masking.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAQH,gDAmCC;AAMD,oDA+BC;AAKD,kDAqBC;AAKD,wCAwBC;
|
|
1
|
+
{"version":3,"file":"http-client-masking.js","sourceRoot":"","sources":["../../src/utils/http-client-masking.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-response-validator.d.ts","sourceRoot":"","sources":["../../src/utils/http-response-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"http-response-validator.d.ts","sourceRoot":"","sources":["../../src/utils/http-response-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAazD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,gBAAgB,GACvB,OAAO,CA4CT"}
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.validateHttpResponse = validateHttpResponse;
|
|
8
8
|
const response_validator_1 = require("./response-validator");
|
|
9
|
+
function writeValidationWarning(url, summary, expected, actual) {
|
|
10
|
+
const msg = `Response validation failed for ${url}: ${summary} ${expected} Actual: ${JSON.stringify(actual)}\n`;
|
|
11
|
+
// eslint-disable-next-line no-console -- Validation warnings are intentionally logged for diagnostics
|
|
12
|
+
console.warn(msg);
|
|
13
|
+
}
|
|
9
14
|
/**
|
|
10
15
|
* Validate response structure if validation is enabled
|
|
11
16
|
* Logs warnings for validation failures but doesn't throw (non-breaking behavior)
|
|
@@ -26,15 +31,15 @@ function validateHttpResponse(data, url, config) {
|
|
|
26
31
|
}
|
|
27
32
|
const responseType = (0, response_validator_1.getResponseType)(data);
|
|
28
33
|
if (responseType === "unknown") {
|
|
29
|
-
|
|
34
|
+
writeValidationWarning(url, "Response structure doesn't match expected format.", "Expected: success response ({success, data?, message?, timestamp}) or paginated response ({data[], meta, links?}).", data);
|
|
30
35
|
return false;
|
|
31
36
|
}
|
|
32
37
|
if (responseType === "success" && !(0, response_validator_1.validateSuccessResponse)(data)) {
|
|
33
|
-
|
|
38
|
+
writeValidationWarning(url, "Success response structure invalid.", "Expected: {success: boolean, data?: T, message?: string, timestamp: string}.", data);
|
|
34
39
|
return false;
|
|
35
40
|
}
|
|
36
41
|
if (responseType === "paginated" && !(0, response_validator_1.validatePaginatedResponse)(data)) {
|
|
37
|
-
|
|
42
|
+
writeValidationWarning(url, "Paginated response structure invalid.", "Expected: {data: T[], meta: {totalItems, currentPage, pageSize, type}, links?}.", data);
|
|
38
43
|
return false;
|
|
39
44
|
}
|
|
40
45
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-response-validator.js","sourceRoot":"","sources":["../../src/utils/http-response-validator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"http-response-validator.js","sourceRoot":"","sources":["../../src/utils/http-response-validator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AA4BH,oDAgDC;AA1ED,6DAI8B;AAG9B,SAAS,sBAAsB,CAC7B,GAAW,EACX,OAAe,EACf,QAAgB,EAChB,MAAe;IAEf,MAAM,GAAG,GAAG,kCAAkC,GAAG,KAAK,OAAO,IAAI,QAAQ,YAAY,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;IAChH,sGAAsG;IACtG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAClC,IAAa,EACb,GAAW,EACX,MAAwB;IAExB,yCAAyC;IACzC,IAAI,MAAM,CAAC,iBAAiB,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IAEpD,gFAAgF;IAChF,IAAI,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAChF,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAK,IAAgC,EAAE,CAAC;YACpF,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,IAAA,oCAAe,EAAC,IAAI,CAAC,CAAC;IAE3C,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,sBAAsB,CACpB,GAAG,EACH,mDAAmD,EACnD,oHAAoH,EACpH,IAAI,CACL,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,IAAA,4CAAuB,EAAC,IAAI,CAAC,EAAE,CAAC;QACjE,sBAAsB,CACpB,GAAG,EACH,qCAAqC,EACrC,8EAA8E,EAC9E,IAAI,CACL,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,YAAY,KAAK,WAAW,IAAI,CAAC,IAAA,8CAAyB,EAAC,IAAI,CAAC,EAAE,CAAC;QACrE,sBAAsB,CACpB,GAAG,EACH,uCAAuC,EACvC,iFAAiF,EACjF,IAAI,CACL,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-http-client.d.ts","sourceRoot":"","sources":["../../src/utils/internal-http-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EACZ,aAAa,EACb,kBAAkB,EAInB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAYvE,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAgB;IAC7B,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,mBAAmB,CAAgC;gBAE/C,MAAM,EAAE,gBAAgB;IAOpC,sDAAsD;IACtD,OAAO,CAAC,yBAAyB;IAYjC,0CAA0C;IAC1C,OAAO,CAAC,mBAAmB;
|
|
1
|
+
{"version":3,"file":"internal-http-client.d.ts","sourceRoot":"","sources":["../../src/utils/internal-http-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAc,EACZ,aAAa,EACb,kBAAkB,EAInB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAYvE,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,KAAK,CAAgB;IAC7B,SAAgB,MAAM,EAAE,gBAAgB,CAAC;IACzC,OAAO,CAAC,UAAU,CAAgD;IAClE,OAAO,CAAC,mBAAmB,CAAgC;gBAE/C,MAAM,EAAE,gBAAgB;IAOpC,sDAAsD;IACtD,OAAO,CAAC,yBAAyB;IAYjC,0CAA0C;IAC1C,OAAO,CAAC,mBAAmB;IA2B3B,8CAA8C;IAC9C,OAAO,CAAC,iBAAiB;IAiCzB,qEAAqE;IACrE,OAAO,CAAC,cAAc;IAkBtB;;;OAGG;YACW,cAAc;IA4B5B,uDAAuD;YACzC,mBAAmB;IASjC,sCAAsC;IACtC,OAAO,CAAC,iBAAiB;IAQzB,iDAAiD;YACnC,kBAAkB;IAoChC,sDAAsD;YACxC,uBAAuB;IAiBrC,2CAA2C;YAC7B,aAAa;IAoB3B;;;OAGG;IACH,gBAAgB,IAAI,aAAa;IAIjC;;;;;OAKG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlE;;;;;;;;OAQG;IACG,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAQnF;;;;;;;;OAQG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAQlF;;;;;OAKG;IACG,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,CAAC,CAAC;IAIrE;;;;;;;OAOG;IACG,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;IAIb;;;;;;;;;;;OAWG;IACG,oBAAoB,CAAC,CAAC,EAC1B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,EAC3B,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,CAAC,CAAC;IAQb;;;;;;;;;OASG;IACG,uBAAuB,CAAC,CAAC,EAC7B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,YAAY,EAC1B,IAAI,CAAC,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC;CAId"}
|
|
@@ -41,19 +41,20 @@ class InternalHttpClient {
|
|
|
41
41
|
const isHttps = controllerUrl.startsWith("https://");
|
|
42
42
|
let httpAgent;
|
|
43
43
|
let httpsAgent;
|
|
44
|
+
const requestTimeout = config.timeout ?? 30000;
|
|
44
45
|
// Force IPv4 and set connection timeout (Node.js only)
|
|
45
46
|
if (typeof globalThis.window === "undefined") {
|
|
46
47
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
47
48
|
const http = require("http");
|
|
48
49
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
49
50
|
const https = require("https");
|
|
50
|
-
const agentOpts = { family: 4, timeout:
|
|
51
|
+
const agentOpts = { family: 4, timeout: requestTimeout, keepAlive: false };
|
|
51
52
|
httpAgent = !isHttps ? new http.Agent(agentOpts) : undefined;
|
|
52
53
|
httpsAgent = isHttps ? new https.Agent(agentOpts) : undefined;
|
|
53
54
|
}
|
|
54
55
|
return axios_1.default.create({
|
|
55
56
|
baseURL: controllerUrl,
|
|
56
|
-
timeout:
|
|
57
|
+
timeout: requestTimeout,
|
|
57
58
|
httpAgent,
|
|
58
59
|
httpsAgent,
|
|
59
60
|
headers: { "Content-Type": "application/json" },
|
|
@@ -70,6 +71,7 @@ class InternalHttpClient {
|
|
|
70
71
|
config.headers["x-client-token"] = token;
|
|
71
72
|
}
|
|
72
73
|
else {
|
|
74
|
+
// eslint-disable-next-line no-console -- Operational warning for missing client token configuration
|
|
73
75
|
console.warn("Client token is not available. Ensure clientSecret or onClientTokenRefresh is configured.");
|
|
74
76
|
}
|
|
75
77
|
}
|
|
@@ -144,7 +146,7 @@ class InternalHttpClient {
|
|
|
144
146
|
}
|
|
145
147
|
/** Execute axios request with timeout wrapper */
|
|
146
148
|
async executeWithTimeout(axiosFn, config) {
|
|
147
|
-
const timeout = 30000;
|
|
149
|
+
const timeout = this.config.timeout ?? 30000;
|
|
148
150
|
const controller = new AbortController();
|
|
149
151
|
let timeoutId = null;
|
|
150
152
|
const timeoutPromise = new Promise((_, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-http-client.js","sourceRoot":"","sources":["../../src/utils/internal-http-client.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,kDAMe;AAEf,mDAAsD;AACtD,uEAAiE;AACjE,uEAAiE;AACjE,6DAA2E;AAC3E,iEAKgC;AAEhC,MAAa,kBAAkB;IAM7B,YAAY,MAAwB;QAH5B,eAAU,GAAe,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC1D,wBAAmB,GAA2B,IAAI,CAAC;QAGzD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED,sDAAsD;IAC9C,yBAAyB,CAAC,MAAwB;QACxD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;YAC3C,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;gBAChC,IAAI,CAAC,UAAU,CAAC,SAAS;oBACvB,OAAO,MAAM,CAAC,oBAAoB,KAAK,QAAQ;wBAC7C,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;wBACvC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IAED,0CAA0C;IAClC,mBAAmB,CAAC,MAAwB;QAClD,MAAM,aAAa,GAAG,IAAA,8CAAoB,EAAC,MAAM,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,SAA2C,CAAC;QAChD,IAAI,UAA6C,CAAC;QAElD,uDAAuD;QACvD,IAAI,OAAQ,UAAmC,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACvE,8DAA8D;YAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,8DAA8D;YAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,SAAS,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"internal-http-client.js","sourceRoot":"","sources":["../../src/utils/internal-http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-validator.d.ts","sourceRoot":"","sources":["../../src/utils/response-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC5C,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,GAAG,OAAO,EACjD,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,eAAe,CAAC,CAAC,CAAC,CAyB5B;
|
|
1
|
+
{"version":3,"file":"response-validator.d.ts","sourceRoot":"","sources":["../../src/utils/response-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC5C,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,IAAI,EAAE;QACJ,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,GAAG,OAAO,EACjD,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,eAAe,CAAC,CAAC,CAAC,CAyB5B;AAwBD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,GAAG,OAAO,EACnD,IAAI,EAAE,OAAO,GACZ,IAAI,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAM9B;AAED;;;;;GAKG;AACH,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEjF;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,OAAO,GACZ,SAAS,GAAG,WAAW,GAAG,SAAS,CAUrC"}
|
|
@@ -34,60 +34,45 @@ function validateSuccessResponse(data) {
|
|
|
34
34
|
}
|
|
35
35
|
return true;
|
|
36
36
|
}
|
|
37
|
+
function validatePaginatedMeta(meta) {
|
|
38
|
+
if (!meta || typeof meta !== "object")
|
|
39
|
+
return false;
|
|
40
|
+
const m = meta;
|
|
41
|
+
return (typeof m.totalItems === "number" &&
|
|
42
|
+
typeof m.currentPage === "number" &&
|
|
43
|
+
typeof m.pageSize === "number" &&
|
|
44
|
+
typeof m.type === "string");
|
|
45
|
+
}
|
|
46
|
+
function validatePaginatedLinks(links) {
|
|
47
|
+
if (links === undefined)
|
|
48
|
+
return true;
|
|
49
|
+
if (typeof links !== "object" || links === null)
|
|
50
|
+
return false;
|
|
51
|
+
const l = links;
|
|
52
|
+
if (l.first !== undefined && typeof l.first !== "string")
|
|
53
|
+
return false;
|
|
54
|
+
if (l.prev !== undefined && typeof l.prev !== "string")
|
|
55
|
+
return false;
|
|
56
|
+
if (l.next !== undefined && typeof l.next !== "string")
|
|
57
|
+
return false;
|
|
58
|
+
if (l.last !== undefined && typeof l.last !== "string")
|
|
59
|
+
return false;
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
37
62
|
/**
|
|
38
63
|
* Validate paginated response structure
|
|
39
64
|
* @param data - Response data to validate
|
|
40
65
|
* @returns True if data matches PaginatedResponse structure
|
|
41
66
|
*/
|
|
42
67
|
function validatePaginatedResponse(data) {
|
|
43
|
-
if (!data || typeof data !== "object")
|
|
68
|
+
if (!data || typeof data !== "object")
|
|
44
69
|
return false;
|
|
45
|
-
}
|
|
46
70
|
const obj = data;
|
|
47
|
-
|
|
48
|
-
if (!Array.isArray(obj.data)) {
|
|
71
|
+
if (!Array.isArray(obj.data))
|
|
49
72
|
return false;
|
|
50
|
-
|
|
51
|
-
// Check required meta object
|
|
52
|
-
if (!obj.meta || typeof obj.meta !== "object") {
|
|
73
|
+
if (!validatePaginatedMeta(obj.meta))
|
|
53
74
|
return false;
|
|
54
|
-
|
|
55
|
-
const meta = obj.meta;
|
|
56
|
-
// Check required meta fields
|
|
57
|
-
if (typeof meta.totalItems !== "number") {
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
if (typeof meta.currentPage !== "number") {
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
if (typeof meta.pageSize !== "number") {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
if (typeof meta.type !== "string") {
|
|
67
|
-
return false;
|
|
68
|
-
}
|
|
69
|
-
// Check optional links object
|
|
70
|
-
if (obj.links !== undefined) {
|
|
71
|
-
if (typeof obj.links !== "object" || obj.links === null) {
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
const links = obj.links;
|
|
75
|
-
// All link fields are optional strings
|
|
76
|
-
if (links.first !== undefined &&
|
|
77
|
-
typeof links.first !== "string") {
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
if (links.prev !== undefined && typeof links.prev !== "string") {
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
if (links.next !== undefined && typeof links.next !== "string") {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
if (links.last !== undefined && typeof links.last !== "string") {
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
return true;
|
|
75
|
+
return validatePaginatedLinks(obj.links);
|
|
91
76
|
}
|
|
92
77
|
/**
|
|
93
78
|
* Validate error response structure (RFC 7807)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-validator.js","sourceRoot":"","sources":["../../src/utils/response-validator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAqCH,0DA2BC;
|
|
1
|
+
{"version":3,"file":"response-validator.js","sourceRoot":"","sources":["../../src/utils/response-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,14 +13,7 @@ export interface SensitiveFieldsConfig {
|
|
|
13
13
|
};
|
|
14
14
|
fieldPatterns: string[];
|
|
15
15
|
}
|
|
16
|
-
/**
|
|
17
|
-
* Load sensitive fields configuration from JSON file
|
|
18
|
-
* Supports Node.js (fs) and browser environments (falls back to defaults in browser)
|
|
19
|
-
*/
|
|
20
16
|
export declare function loadSensitiveFieldsConfig(customPath?: string): Set<string>;
|
|
21
|
-
/**
|
|
22
|
-
* Get field patterns for pattern matching
|
|
23
|
-
*/
|
|
24
17
|
export declare function getFieldPatterns(customPath?: string): string[];
|
|
25
18
|
/**
|
|
26
19
|
* Get all sensitive fields as array (for DataMasker)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sensitive-fields.loader.d.ts","sourceRoot":"","sources":["../../src/utils/sensitive-fields.loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,GAAG,EAAE,MAAM,EAAE,CAAC;QACd,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"sensitive-fields.loader.d.ts","sourceRoot":"","sources":["../../src/utils/sensitive-fields.loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,GAAG,EAAE,MAAM,EAAE,CAAC;QACd,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IACF,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAyGD,wBAAgB,yBAAyB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAkB1E;AAmBD,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAkB9D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAGrE"}
|
|
@@ -115,141 +115,95 @@ function getDefaultFieldPatterns() {
|
|
|
115
115
|
"accountnumber",
|
|
116
116
|
];
|
|
117
117
|
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
function resolveConfigPath(customPath) {
|
|
119
|
+
const envPath = customPath || process.env.MISO_SENSITIVE_FIELDS_CONFIG;
|
|
120
|
+
if (!envPath)
|
|
121
|
+
return null;
|
|
122
|
+
return path.isAbsolute(envPath) ? envPath : path.resolve(process.cwd(), envPath);
|
|
123
|
+
}
|
|
124
|
+
function fieldsFromConfig(config) {
|
|
125
|
+
const allFields = new Set();
|
|
126
|
+
Object.values(config.categories).forEach((fields) => {
|
|
127
|
+
fields.forEach((field) => allFields.add(field.toLowerCase()));
|
|
128
|
+
});
|
|
129
|
+
getDefaultSensitiveFields().forEach((field) => allFields.add(field));
|
|
130
|
+
return allFields;
|
|
131
|
+
}
|
|
132
|
+
function loadConfigFromPath(configPath) {
|
|
133
|
+
if (!fs.existsSync(configPath))
|
|
134
|
+
return null;
|
|
135
|
+
const configContent = fs.readFileSync(configPath, "utf8");
|
|
136
|
+
const config = JSON.parse(configContent);
|
|
137
|
+
return fieldsFromConfig(config);
|
|
138
|
+
}
|
|
139
|
+
function loadConfigFromModule() {
|
|
140
|
+
try {
|
|
141
|
+
const config = sensitive_fields_config_json_1.default;
|
|
142
|
+
return fieldsFromConfig(config);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
const configPath = path.join(__dirname, "sensitive-fields.config.json");
|
|
146
|
+
return loadConfigFromPath(configPath);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
122
149
|
function loadSensitiveFieldsConfig(customPath) {
|
|
123
|
-
// Browser environment - return defaults
|
|
124
150
|
if (typeof globalThis !== "undefined" && "window" in globalThis) {
|
|
125
151
|
const globalWindow = globalThis.window;
|
|
126
|
-
if (typeof globalWindow !== "undefined")
|
|
152
|
+
if (typeof globalWindow !== "undefined")
|
|
127
153
|
return getDefaultSensitiveFields();
|
|
128
|
-
}
|
|
129
154
|
}
|
|
130
|
-
if (typeof process === "undefined" || !process.env)
|
|
155
|
+
if (typeof process === "undefined" || !process.env)
|
|
131
156
|
return getDefaultSensitiveFields();
|
|
132
|
-
}
|
|
133
157
|
try {
|
|
134
|
-
|
|
135
|
-
if (
|
|
136
|
-
|
|
137
|
-
if (
|
|
138
|
-
|
|
139
|
-
? customPath
|
|
140
|
-
: path.resolve(process.cwd(), customPath);
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
const envPath = process.env.MISO_SENSITIVE_FIELDS_CONFIG;
|
|
144
|
-
configPath = path.isAbsolute(envPath)
|
|
145
|
-
? envPath
|
|
146
|
-
: path.resolve(process.cwd(), envPath);
|
|
147
|
-
}
|
|
148
|
-
if (!fs.existsSync(configPath)) {
|
|
149
|
-
// Config file not found, use defaults
|
|
150
|
-
return getDefaultSensitiveFields();
|
|
151
|
-
}
|
|
152
|
-
const configContent = fs.readFileSync(configPath, "utf8");
|
|
153
|
-
const config = JSON.parse(configContent);
|
|
154
|
-
// Combine all categories into a single set (lowercase for case-insensitive matching)
|
|
155
|
-
const allFields = new Set();
|
|
156
|
-
Object.values(config.categories).forEach((fields) => {
|
|
157
|
-
fields.forEach((field) => allFields.add(field.toLowerCase()));
|
|
158
|
-
});
|
|
159
|
-
// Also add default fields to ensure we have all base fields
|
|
160
|
-
const defaults = getDefaultSensitiveFields();
|
|
161
|
-
defaults.forEach((field) => allFields.add(field));
|
|
162
|
-
return allFields;
|
|
163
|
-
}
|
|
164
|
-
// No custom path - try to load default config as module (works in compiled code)
|
|
165
|
-
try {
|
|
166
|
-
const config = sensitive_fields_config_json_1.default;
|
|
167
|
-
const allFields = new Set();
|
|
168
|
-
Object.values(config.categories).forEach((fields) => {
|
|
169
|
-
fields.forEach((field) => allFields.add(field.toLowerCase()));
|
|
170
|
-
});
|
|
171
|
-
// Also add default fields to ensure we have all base fields
|
|
172
|
-
const defaults = getDefaultSensitiveFields();
|
|
173
|
-
defaults.forEach((field) => allFields.add(field));
|
|
174
|
-
return allFields;
|
|
175
|
-
}
|
|
176
|
-
catch {
|
|
177
|
-
// If module import fails, try filesystem path (for development/source code)
|
|
178
|
-
const configPath = path.join(__dirname, "sensitive-fields.config.json");
|
|
179
|
-
if (fs.existsSync(configPath)) {
|
|
180
|
-
const configContent = fs.readFileSync(configPath, "utf8");
|
|
181
|
-
const config = JSON.parse(configContent);
|
|
182
|
-
const allFields = new Set();
|
|
183
|
-
Object.values(config.categories).forEach((fields) => {
|
|
184
|
-
fields.forEach((field) => allFields.add(field.toLowerCase()));
|
|
185
|
-
});
|
|
186
|
-
const defaults = getDefaultSensitiveFields();
|
|
187
|
-
defaults.forEach((field) => allFields.add(field));
|
|
188
|
-
return allFields;
|
|
189
|
-
}
|
|
158
|
+
const configPath = resolveConfigPath(customPath);
|
|
159
|
+
if (configPath) {
|
|
160
|
+
const result = loadConfigFromPath(configPath);
|
|
161
|
+
if (result)
|
|
162
|
+
return result;
|
|
190
163
|
}
|
|
191
|
-
|
|
192
|
-
return getDefaultSensitiveFields();
|
|
164
|
+
const moduleResult = loadConfigFromModule();
|
|
165
|
+
return moduleResult ?? getDefaultSensitiveFields();
|
|
193
166
|
}
|
|
194
|
-
catch
|
|
195
|
-
// Failed to load config, use defaults
|
|
167
|
+
catch {
|
|
196
168
|
return getDefaultSensitiveFields();
|
|
197
169
|
}
|
|
198
170
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
171
|
+
function loadFieldPatternsFromPath(configPath) {
|
|
172
|
+
if (!fs.existsSync(configPath))
|
|
173
|
+
return null;
|
|
174
|
+
const configContent = fs.readFileSync(configPath, "utf8");
|
|
175
|
+
const config = JSON.parse(configContent);
|
|
176
|
+
return config.fieldPatterns || getDefaultFieldPatterns();
|
|
177
|
+
}
|
|
178
|
+
function loadFieldPatternsFromModule() {
|
|
179
|
+
try {
|
|
180
|
+
const config = sensitive_fields_config_json_1.default;
|
|
181
|
+
return config.fieldPatterns || getDefaultFieldPatterns();
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
const configPath = path.join(__dirname, "sensitive-fields.config.json");
|
|
185
|
+
return loadFieldPatternsFromPath(configPath);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
202
188
|
function getFieldPatterns(customPath) {
|
|
203
|
-
// Browser environment - return defaults
|
|
204
189
|
if (typeof globalThis !== "undefined" && "window" in globalThis) {
|
|
205
190
|
const globalWindow = globalThis.window;
|
|
206
|
-
if (typeof globalWindow !== "undefined")
|
|
191
|
+
if (typeof globalWindow !== "undefined")
|
|
207
192
|
return getDefaultFieldPatterns();
|
|
208
|
-
}
|
|
209
193
|
}
|
|
210
|
-
if (typeof process === "undefined" || !process.env)
|
|
194
|
+
if (typeof process === "undefined" || !process.env)
|
|
211
195
|
return getDefaultFieldPatterns();
|
|
212
|
-
}
|
|
213
196
|
try {
|
|
214
|
-
|
|
215
|
-
if (
|
|
216
|
-
|
|
217
|
-
if (
|
|
218
|
-
|
|
219
|
-
? customPath
|
|
220
|
-
: path.resolve(process.cwd(), customPath);
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
const envPath = process.env.MISO_SENSITIVE_FIELDS_CONFIG;
|
|
224
|
-
configPath = path.isAbsolute(envPath)
|
|
225
|
-
? envPath
|
|
226
|
-
: path.resolve(process.cwd(), envPath);
|
|
227
|
-
}
|
|
228
|
-
if (!fs.existsSync(configPath)) {
|
|
229
|
-
return getDefaultFieldPatterns();
|
|
230
|
-
}
|
|
231
|
-
const configContent = fs.readFileSync(configPath, "utf8");
|
|
232
|
-
const config = JSON.parse(configContent);
|
|
233
|
-
return config.fieldPatterns || getDefaultFieldPatterns();
|
|
197
|
+
const configPath = resolveConfigPath(customPath);
|
|
198
|
+
if (configPath) {
|
|
199
|
+
const result = loadFieldPatternsFromPath(configPath);
|
|
200
|
+
if (result)
|
|
201
|
+
return result;
|
|
234
202
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
const config = sensitive_fields_config_json_1.default;
|
|
238
|
-
return config.fieldPatterns || getDefaultFieldPatterns();
|
|
239
|
-
}
|
|
240
|
-
catch {
|
|
241
|
-
// If module import fails, try filesystem path (for development/source code)
|
|
242
|
-
const configPath = path.join(__dirname, "sensitive-fields.config.json");
|
|
243
|
-
if (fs.existsSync(configPath)) {
|
|
244
|
-
const configContent = fs.readFileSync(configPath, "utf8");
|
|
245
|
-
const config = JSON.parse(configContent);
|
|
246
|
-
return config.fieldPatterns || getDefaultFieldPatterns();
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
return getDefaultFieldPatterns();
|
|
203
|
+
const moduleResult = loadFieldPatternsFromModule();
|
|
204
|
+
return moduleResult ?? getDefaultFieldPatterns();
|
|
250
205
|
}
|
|
251
|
-
catch
|
|
252
|
-
// Failed to load config, use defaults
|
|
206
|
+
catch {
|
|
253
207
|
return getDefaultFieldPatterns();
|
|
254
208
|
}
|
|
255
209
|
}
|