@pagopa/io-react-native-wallet 3.7.1 → 3.7.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/lib/commonjs/utils/errors.js +8 -2
- package/lib/commonjs/utils/errors.js.map +1 -1
- package/lib/commonjs/utils/string.js +42 -1
- package/lib/commonjs/utils/string.js.map +1 -1
- package/lib/module/utils/errors.js +8 -2
- package/lib/module/utils/errors.js.map +1 -1
- package/lib/module/utils/string.js +41 -0
- package/lib/module/utils/string.js.map +1 -1
- package/lib/typescript/credential/presentation/v1.4.6/mappers.d.ts +1 -1
- package/lib/typescript/credential/presentation/v1.4.6/types.d.ts +1 -1
- package/lib/typescript/utils/errors.d.ts +1 -0
- package/lib/typescript/utils/errors.d.ts.map +1 -1
- package/lib/typescript/utils/string.d.ts +14 -0
- package/lib/typescript/utils/string.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/utils/errors.ts +8 -2
- package/src/utils/string.ts +51 -0
|
@@ -28,6 +28,7 @@ exports.extractErrorMessageFromIssuerConf = extractErrorMessageFromIssuerConf;
|
|
|
28
28
|
exports.withMappedErrors = exports.serializeAttrs = exports.sdkUnexpectedStatusCodeToIssuerError = exports.isWalletProviderResponseError = exports.isRelyingPartyResponseError = exports.isIssuerResponseError = void 0;
|
|
29
29
|
var _ioWalletUtils = require("@pagopa/io-wallet-utils");
|
|
30
30
|
var _errorCodes = require("./error-codes");
|
|
31
|
+
var _string = require("./string");
|
|
31
32
|
// An error reason that supports both a string and a generic JSON object
|
|
32
33
|
|
|
33
34
|
/**
|
|
@@ -123,11 +124,15 @@ class UnexpectedStatusCodeError extends IoWalletError {
|
|
|
123
124
|
/**
|
|
124
125
|
* An error subclass thrown when an Issuer HTTP request fails.
|
|
125
126
|
* The specific error can be found in the `code` property.
|
|
127
|
+
* `reason` values are returned with Italian fiscal codes anonymized.
|
|
126
128
|
*/
|
|
127
129
|
exports.UnexpectedStatusCodeError = UnexpectedStatusCodeError;
|
|
128
130
|
class IssuerResponseError extends UnexpectedStatusCodeError {
|
|
129
131
|
constructor(params) {
|
|
130
|
-
super(
|
|
132
|
+
super({
|
|
133
|
+
...params,
|
|
134
|
+
reason: (0, _string.anonymizeString)(params.reason)
|
|
135
|
+
});
|
|
131
136
|
this.code = params.code ?? _errorCodes.IssuerResponseErrorCodes.IssuerGenericError;
|
|
132
137
|
}
|
|
133
138
|
}
|
|
@@ -261,7 +266,8 @@ class ResponseErrorBuilder {
|
|
|
261
266
|
const params = this.errorCases[originalError.statusCode] ?? this.errorCases["*"];
|
|
262
267
|
if (params) {
|
|
263
268
|
return new this.ErrorClass({
|
|
264
|
-
|
|
269
|
+
reason: originalError.reason,
|
|
270
|
+
statusCode: originalError.statusCode,
|
|
265
271
|
...params
|
|
266
272
|
});
|
|
267
273
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_ioWalletUtils","require","_errorCodes","serializeAttrs","attrs","Object","entries","filter","_ref","v","undefined","map","_ref2","k","Array","isArray","join","JSON","stringify","_","exports","withMappedErrors","fn","sourceError","mapError","e","IoWalletError","Error","code","constructor","message","name","UnexpectedStatusCodeError","_ref3","reason","statusCode","IssuerResponseError","params","IssuerResponseErrorCodes","IssuerGenericError","RelyingPartyResponseError","RelyingPartyResponseErrorCodes","RelyingPartyGenericError","ValidationFailed","_ref4","claim","WalletProviderResponseError","WalletProviderResponseErrorCodes","WalletProviderGenericError","extractErrorMessageFromIssuerConf","errorCode","_ref5","credentialType","issuerConf","credentialConfiguration","credential_configurations_supported","issuance_errors_supported","errorConfig","localesList","display","reduce","acc","_ref6","locale","rest","makeErrorTypeGuard","ErrorClass","error","isIssuerResponseError","isWalletProviderResponseError","isRelyingPartyResponseError","ResponseErrorBuilder","errorCases","buildFrom","originalError","handle","status","UnimplementedFeatureError","feature","version","sdkUnexpectedStatusCodeToIssuerError","err","SdkUnexpectedStatusCodeError"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAKA,IAAAC,WAAA,GAAAD,OAAA;
|
|
1
|
+
{"version":3,"names":["_ioWalletUtils","require","_errorCodes","_string","serializeAttrs","attrs","Object","entries","filter","_ref","v","undefined","map","_ref2","k","Array","isArray","join","JSON","stringify","_","exports","withMappedErrors","fn","sourceError","mapError","e","IoWalletError","Error","code","constructor","message","name","UnexpectedStatusCodeError","_ref3","reason","statusCode","IssuerResponseError","params","anonymizeString","IssuerResponseErrorCodes","IssuerGenericError","RelyingPartyResponseError","RelyingPartyResponseErrorCodes","RelyingPartyGenericError","ValidationFailed","_ref4","claim","WalletProviderResponseError","WalletProviderResponseErrorCodes","WalletProviderGenericError","extractErrorMessageFromIssuerConf","errorCode","_ref5","credentialType","issuerConf","credentialConfiguration","credential_configurations_supported","issuance_errors_supported","errorConfig","localesList","display","reduce","acc","_ref6","locale","rest","makeErrorTypeGuard","ErrorClass","error","isIssuerResponseError","isWalletProviderResponseError","isRelyingPartyResponseError","ResponseErrorBuilder","errorCases","buildFrom","originalError","handle","status","UnimplementedFeatureError","feature","version","sdkUnexpectedStatusCodeToIssuerError","err","SdkUnexpectedStatusCodeError"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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"}
|
|
@@ -3,7 +3,47 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.obfuscateString = void 0;
|
|
6
|
+
exports.obfuscateString = exports.anonymizeString = void 0;
|
|
7
|
+
var _object = require("./object");
|
|
8
|
+
/**
|
|
9
|
+
* Italian codice fiscale, including omocodia.
|
|
10
|
+
* Anchors from the source validator are omitted so matches can be found inside longer strings.
|
|
11
|
+
* Built per call so a shared `/g` regex cannot leak `lastIndex`.
|
|
12
|
+
*
|
|
13
|
+
* @see https://gist.github.com/matpag/242557b056865aa2c8e0edb27bbb6822#file-italian_tax_code_regex-txt
|
|
14
|
+
*/
|
|
15
|
+
const ITALIAN_FISCAL_CODE_SOURCE = "(?:[A-Z][AEIOUX][AEIOUX]|[B-DF-HJ-NP-TV-Z]{2}[A-Z]){2}(?:[\\dLMNP-V]{2}(?:[A-EHLMPR-T](?:[04LQ][1-9MNP-V]|[15MR][\\dLMNP-V]|[26NS][0-8LMNP-U])|[DHPS][37PT][0L]|[ACELMRT][37PT][01LM]|[AC-EHLMPR-T][26NS][9V])|(?:[02468LNQSU][048LQU]|[13579MPRTV][26NS])B[26NS][9V])(?:[A-MZ][1-9MNP-V][\\dLMNP-V]{2}|[A-M][0L](?:[1-9MNP-V][\\dLMNP-V]|[0L][1-9MNP-V]))[A-Z]";
|
|
16
|
+
const FISCAL_CODE_MASK = "*".repeat(16);
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Replaces Italian fiscal codes with 16 asterisks.
|
|
20
|
+
* Walks strings, arrays, and nested objects; other values pass through.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* anonymizeString("User LVLDAA85T50G702B not found");
|
|
25
|
+
* // "User **************** not found"
|
|
26
|
+
*
|
|
27
|
+
* anonymizeString({ tax_id: "LVLDAA85T50G702B" });
|
|
28
|
+
* // { tax_id: "****************" }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
const anonymizeString = value => {
|
|
32
|
+
if (typeof value === "string") {
|
|
33
|
+
return value.replace(new RegExp(ITALIAN_FISCAL_CODE_SOURCE, "gi"), FISCAL_CODE_MASK);
|
|
34
|
+
}
|
|
35
|
+
if (Array.isArray(value)) {
|
|
36
|
+
return value.map(item => anonymizeString(item));
|
|
37
|
+
}
|
|
38
|
+
if ((0, _object.isObject)(value)) {
|
|
39
|
+
return Object.fromEntries(Object.entries(value).map(_ref => {
|
|
40
|
+
let [key, nested] = _ref;
|
|
41
|
+
return [key, anonymizeString(nested)];
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
};
|
|
46
|
+
|
|
7
47
|
/**
|
|
8
48
|
* Randomly obfuscates characters in a string by replacing them with a specified character.
|
|
9
49
|
*
|
|
@@ -19,6 +59,7 @@ exports.obfuscateString = void 0;
|
|
|
19
59
|
* @param obfuscatedChar - Character used for obfuscation. Defaults to "*"
|
|
20
60
|
* @returns The obfuscated string with random characters replaced
|
|
21
61
|
*/
|
|
62
|
+
exports.anonymizeString = anonymizeString;
|
|
22
63
|
const obfuscateString = function (value) {
|
|
23
64
|
let percentage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 60;
|
|
24
65
|
let obfuscatedChar = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "*";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["_object","require","ITALIAN_FISCAL_CODE_SOURCE","FISCAL_CODE_MASK","repeat","anonymizeString","value","replace","RegExp","Array","isArray","map","item","isObject","Object","fromEntries","entries","_ref","key","nested","exports","obfuscateString","percentage","arguments","length","undefined","obfuscatedChar","safePercentage","Math","max","min","charsToObfuscate","floor","chars","split","positions","from","_","i","sort","random","slice","forEach","pos","join"],"sourceRoot":"../../../src","sources":["utils/string.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,0BAA0B,GAC9B,iWAAiW;AAEnW,MAAMC,gBAAgB,GAAG,GAAG,CAACC,MAAM,CAAC,EAAE,CAAC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,eAAe,GAAOC,KAAQ,IAAQ;EACjD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAOA,KAAK,CAACC,OAAO,CAClB,IAAIC,MAAM,CAACN,0BAA0B,EAAE,IAAI,CAAC,EAC5CC,gBACF,CAAC;EACH;EAEA,IAAIM,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,EAAE;IACxB,OAAOA,KAAK,CAACK,GAAG,CAAEC,IAAI,IAAKP,eAAe,CAACO,IAAI,CAAC,CAAC;EACnD;EAEA,IAAI,IAAAC,gBAAQ,EAACP,KAAK,CAAC,EAAE;IACnB,OAAOQ,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACV,KAAK,CAAC,CAACK,GAAG,CAACM,IAAA;MAAA,IAAC,CAACC,GAAG,EAAEC,MAAM,CAAC,GAAAF,IAAA;MAAA,OAAK,CAC3CC,GAAG,EACHb,eAAe,CAACc,MAAM,CAAC,CACxB;IAAA,EACH,CAAC;EACH;EAEA,OAAOb,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAdAc,OAAA,CAAAf,eAAA,GAAAA,eAAA;AAeO,MAAMgB,eAAe,GAAG,SAAAA,CAC7Bf,KAAa,EAGF;EAAA,IAFXgB,UAAU,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAAA,IACfG,cAAc,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,GAAG;EAEpB,IAAI,CAACjB,KAAK,EAAE;IACV,OAAO,EAAE;EACX;;EAEA;EACA,MAAMqB,cAAc,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,GAAG,EAAER,UAAU,CAAC,CAAC;;EAE7D;EACA,MAAMS,gBAAgB,GAAGH,IAAI,CAACI,KAAK,CAAE1B,KAAK,CAACkB,MAAM,GAAGG,cAAc,GAAI,GAAG,CAAC;;EAE1E;EACA,MAAMM,KAAK,GAAG3B,KAAK,CAAC4B,KAAK,CAAC,EAAE,CAAC;;EAE7B;EACA,MAAMC,SAAS,GAAG1B,KAAK,CAAC2B,IAAI,CAAC;IAAEZ,MAAM,EAAElB,KAAK,CAACkB;EAAO,CAAC,EAAE,CAACa,CAAC,EAAEC,CAAC,KAAKA,CAAC,CAAC,CAChEC,IAAI,CAAC,MAAMX,IAAI,CAACY,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAC/BC,KAAK,CAAC,CAAC,EAAEV,gBAAgB,CAAC;;EAE7B;EACAI,SAAS,CAACO,OAAO,CAAEC,GAAG,IAAK;IACzBV,KAAK,CAACU,GAAG,CAAC,GAAGjB,cAAc;EAC7B,CAAC,CAAC;EAEF,OAAOO,KAAK,CAACW,IAAI,CAAC,EAAE,CAAC;AACvB,CAAC;AAACxB,OAAA,CAAAC,eAAA,GAAAA,eAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { UnexpectedStatusCodeError as SdkUnexpectedStatusCodeError } from "@pagopa/io-wallet-utils";
|
|
2
2
|
import { IssuerResponseErrorCodes, RelyingPartyResponseErrorCodes, WalletProviderResponseErrorCodes } from "./error-codes";
|
|
3
|
+
import { anonymizeString } from "./string";
|
|
3
4
|
export { IssuerResponseErrorCodes, RelyingPartyResponseErrorCodes, WalletProviderResponseErrorCodes };
|
|
4
5
|
|
|
5
6
|
// An error reason that supports both a string and a generic JSON object
|
|
@@ -94,10 +95,14 @@ export class UnexpectedStatusCodeError extends IoWalletError {
|
|
|
94
95
|
/**
|
|
95
96
|
* An error subclass thrown when an Issuer HTTP request fails.
|
|
96
97
|
* The specific error can be found in the `code` property.
|
|
98
|
+
* `reason` values are returned with Italian fiscal codes anonymized.
|
|
97
99
|
*/
|
|
98
100
|
export class IssuerResponseError extends UnexpectedStatusCodeError {
|
|
99
101
|
constructor(params) {
|
|
100
|
-
super(
|
|
102
|
+
super({
|
|
103
|
+
...params,
|
|
104
|
+
reason: anonymizeString(params.reason)
|
|
105
|
+
});
|
|
101
106
|
this.code = params.code ?? IssuerResponseErrorCodes.IssuerGenericError;
|
|
102
107
|
}
|
|
103
108
|
}
|
|
@@ -225,7 +230,8 @@ export class ResponseErrorBuilder {
|
|
|
225
230
|
const params = this.errorCases[originalError.statusCode] ?? this.errorCases["*"];
|
|
226
231
|
if (params) {
|
|
227
232
|
return new this.ErrorClass({
|
|
228
|
-
|
|
233
|
+
reason: originalError.reason,
|
|
234
|
+
statusCode: originalError.statusCode,
|
|
229
235
|
...params
|
|
230
236
|
});
|
|
231
237
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["UnexpectedStatusCodeError","SdkUnexpectedStatusCodeError","IssuerResponseErrorCodes","RelyingPartyResponseErrorCodes","WalletProviderResponseErrorCodes","serializeAttrs","attrs","Object","entries","filter","_ref","v","undefined","map","_ref2","k","Array","isArray","join","JSON","stringify","_","withMappedErrors","fn","sourceError","mapError","e","IoWalletError","Error","code","constructor","message","name","_ref3","reason","statusCode","IssuerResponseError","params","IssuerGenericError","RelyingPartyResponseError","RelyingPartyGenericError","ValidationFailed","_ref4","claim","WalletProviderResponseError","WalletProviderGenericError","extractErrorMessageFromIssuerConf","errorCode","_ref5","credentialType","issuerConf","credentialConfiguration","credential_configurations_supported","issuance_errors_supported","errorConfig","localesList","display","reduce","acc","_ref6","locale","rest","makeErrorTypeGuard","ErrorClass","error","isIssuerResponseError","isWalletProviderResponseError","isRelyingPartyResponseError","ResponseErrorBuilder","errorCases","buildFrom","originalError","handle","status","UnimplementedFeatureError","feature","version","sdkUnexpectedStatusCodeToIssuerError","err"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"AAAA,SAASA,yBAAyB,IAAIC,4BAA4B,QAAQ,yBAAyB;AAKnG,SAEEC,wBAAwB,EAExBC,8BAA8B,EAE9BC,gCAAgC,QAC3B,eAAe;
|
|
1
|
+
{"version":3,"names":["UnexpectedStatusCodeError","SdkUnexpectedStatusCodeError","IssuerResponseErrorCodes","RelyingPartyResponseErrorCodes","WalletProviderResponseErrorCodes","anonymizeString","serializeAttrs","attrs","Object","entries","filter","_ref","v","undefined","map","_ref2","k","Array","isArray","join","JSON","stringify","_","withMappedErrors","fn","sourceError","mapError","e","IoWalletError","Error","code","constructor","message","name","_ref3","reason","statusCode","IssuerResponseError","params","IssuerGenericError","RelyingPartyResponseError","RelyingPartyGenericError","ValidationFailed","_ref4","claim","WalletProviderResponseError","WalletProviderGenericError","extractErrorMessageFromIssuerConf","errorCode","_ref5","credentialType","issuerConf","credentialConfiguration","credential_configurations_supported","issuance_errors_supported","errorConfig","localesList","display","reduce","acc","_ref6","locale","rest","makeErrorTypeGuard","ErrorClass","error","isIssuerResponseError","isWalletProviderResponseError","isRelyingPartyResponseError","ResponseErrorBuilder","errorCases","buildFrom","originalError","handle","status","UnimplementedFeatureError","feature","version","sdkUnexpectedStatusCodeToIssuerError","err"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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"}
|
|
@@ -1,3 +1,44 @@
|
|
|
1
|
+
import { isObject } from "./object";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Italian codice fiscale, including omocodia.
|
|
5
|
+
* Anchors from the source validator are omitted so matches can be found inside longer strings.
|
|
6
|
+
* Built per call so a shared `/g` regex cannot leak `lastIndex`.
|
|
7
|
+
*
|
|
8
|
+
* @see https://gist.github.com/matpag/242557b056865aa2c8e0edb27bbb6822#file-italian_tax_code_regex-txt
|
|
9
|
+
*/
|
|
10
|
+
const ITALIAN_FISCAL_CODE_SOURCE = "(?:[A-Z][AEIOUX][AEIOUX]|[B-DF-HJ-NP-TV-Z]{2}[A-Z]){2}(?:[\\dLMNP-V]{2}(?:[A-EHLMPR-T](?:[04LQ][1-9MNP-V]|[15MR][\\dLMNP-V]|[26NS][0-8LMNP-U])|[DHPS][37PT][0L]|[ACELMRT][37PT][01LM]|[AC-EHLMPR-T][26NS][9V])|(?:[02468LNQSU][048LQU]|[13579MPRTV][26NS])B[26NS][9V])(?:[A-MZ][1-9MNP-V][\\dLMNP-V]{2}|[A-M][0L](?:[1-9MNP-V][\\dLMNP-V]|[0L][1-9MNP-V]))[A-Z]";
|
|
11
|
+
const FISCAL_CODE_MASK = "*".repeat(16);
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Replaces Italian fiscal codes with 16 asterisks.
|
|
15
|
+
* Walks strings, arrays, and nested objects; other values pass through.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* anonymizeString("User LVLDAA85T50G702B not found");
|
|
20
|
+
* // "User **************** not found"
|
|
21
|
+
*
|
|
22
|
+
* anonymizeString({ tax_id: "LVLDAA85T50G702B" });
|
|
23
|
+
* // { tax_id: "****************" }
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export const anonymizeString = value => {
|
|
27
|
+
if (typeof value === "string") {
|
|
28
|
+
return value.replace(new RegExp(ITALIAN_FISCAL_CODE_SOURCE, "gi"), FISCAL_CODE_MASK);
|
|
29
|
+
}
|
|
30
|
+
if (Array.isArray(value)) {
|
|
31
|
+
return value.map(item => anonymizeString(item));
|
|
32
|
+
}
|
|
33
|
+
if (isObject(value)) {
|
|
34
|
+
return Object.fromEntries(Object.entries(value).map(_ref => {
|
|
35
|
+
let [key, nested] = _ref;
|
|
36
|
+
return [key, anonymizeString(nested)];
|
|
37
|
+
}));
|
|
38
|
+
}
|
|
39
|
+
return value;
|
|
40
|
+
};
|
|
41
|
+
|
|
1
42
|
/**
|
|
2
43
|
* Randomly obfuscates characters in a string by replacing them with a specified character.
|
|
3
44
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["isObject","ITALIAN_FISCAL_CODE_SOURCE","FISCAL_CODE_MASK","repeat","anonymizeString","value","replace","RegExp","Array","isArray","map","item","Object","fromEntries","entries","_ref","key","nested","obfuscateString","percentage","arguments","length","undefined","obfuscatedChar","safePercentage","Math","max","min","charsToObfuscate","floor","chars","split","positions","from","_","i","sort","random","slice","forEach","pos","join"],"sourceRoot":"../../../src","sources":["utils/string.ts"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,UAAU;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,0BAA0B,GAC9B,iWAAiW;AAEnW,MAAMC,gBAAgB,GAAG,GAAG,CAACC,MAAM,CAAC,EAAE,CAAC;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAOC,KAAQ,IAAQ;EACjD,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAOA,KAAK,CAACC,OAAO,CAClB,IAAIC,MAAM,CAACN,0BAA0B,EAAE,IAAI,CAAC,EAC5CC,gBACF,CAAC;EACH;EAEA,IAAIM,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,EAAE;IACxB,OAAOA,KAAK,CAACK,GAAG,CAAEC,IAAI,IAAKP,eAAe,CAACO,IAAI,CAAC,CAAC;EACnD;EAEA,IAAIX,QAAQ,CAACK,KAAK,CAAC,EAAE;IACnB,OAAOO,MAAM,CAACC,WAAW,CACvBD,MAAM,CAACE,OAAO,CAACT,KAAK,CAAC,CAACK,GAAG,CAACK,IAAA;MAAA,IAAC,CAACC,GAAG,EAAEC,MAAM,CAAC,GAAAF,IAAA;MAAA,OAAK,CAC3CC,GAAG,EACHZ,eAAe,CAACa,MAAM,CAAC,CACxB;IAAA,EACH,CAAC;EACH;EAEA,OAAOZ,KAAK;AACd,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMa,eAAe,GAAG,SAAAA,CAC7Bb,KAAa,EAGF;EAAA,IAFXc,UAAU,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,EAAE;EAAA,IACfG,cAAc,GAAAH,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,GAAG;EAEpB,IAAI,CAACf,KAAK,EAAE;IACV,OAAO,EAAE;EACX;;EAEA;EACA,MAAMmB,cAAc,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,GAAG,EAAER,UAAU,CAAC,CAAC;;EAE7D;EACA,MAAMS,gBAAgB,GAAGH,IAAI,CAACI,KAAK,CAAExB,KAAK,CAACgB,MAAM,GAAGG,cAAc,GAAI,GAAG,CAAC;;EAE1E;EACA,MAAMM,KAAK,GAAGzB,KAAK,CAAC0B,KAAK,CAAC,EAAE,CAAC;;EAE7B;EACA,MAAMC,SAAS,GAAGxB,KAAK,CAACyB,IAAI,CAAC;IAAEZ,MAAM,EAAEhB,KAAK,CAACgB;EAAO,CAAC,EAAE,CAACa,CAAC,EAAEC,CAAC,KAAKA,CAAC,CAAC,CAChEC,IAAI,CAAC,MAAMX,IAAI,CAACY,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,CAC/BC,KAAK,CAAC,CAAC,EAAEV,gBAAgB,CAAC;;EAE7B;EACAI,SAAS,CAACO,OAAO,CAAEC,GAAG,IAAK;IACzBV,KAAK,CAACU,GAAG,CAAC,GAAGjB,cAAc;EAC7B,CAAC,CAAC;EAEF,OAAOO,KAAK,CAACW,IAAI,CAAC,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -136,8 +136,8 @@ export declare const mapToRequestObject: (input: {
|
|
|
136
136
|
header: {
|
|
137
137
|
[x: string]: unknown;
|
|
138
138
|
alg: string;
|
|
139
|
-
kid: string;
|
|
140
139
|
typ: "oauth-authz-req+jwt";
|
|
140
|
+
kid?: string | undefined;
|
|
141
141
|
trust_chain?: [string, ...string[]] | undefined;
|
|
142
142
|
x5c?: string[] | undefined;
|
|
143
143
|
};
|
|
@@ -3,8 +3,8 @@ export type RawRequestObject = z.infer<typeof RawRequestObject>;
|
|
|
3
3
|
export declare const RawRequestObject: z.ZodObject<{
|
|
4
4
|
header: z.ZodObject<{
|
|
5
5
|
alg: z.ZodString;
|
|
6
|
-
kid: z.ZodString;
|
|
7
6
|
typ: z.ZodLiteral<"oauth-authz-req+jwt">;
|
|
7
|
+
kid: z.ZodOptional<z.ZodString>;
|
|
8
8
|
trust_chain: z.ZodOptional<z.ZodTuple<[z.ZodString], z.ZodString>>;
|
|
9
9
|
x5c: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
10
10
|
}, z.core.$loose>;
|
|
@@ -67,6 +67,7 @@ export declare class UnexpectedStatusCodeError extends IoWalletError {
|
|
|
67
67
|
/**
|
|
68
68
|
* An error subclass thrown when an Issuer HTTP request fails.
|
|
69
69
|
* The specific error can be found in the `code` property.
|
|
70
|
+
* `reason` values are returned with Italian fiscal codes anonymized.
|
|
70
71
|
*/
|
|
71
72
|
export declare class IssuerResponseError extends UnexpectedStatusCodeError {
|
|
72
73
|
code: IssuerResponseErrorCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/utils/errors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EACL,KAAK,uBAAuB,EAC5B,wBAAwB,EACxB,KAAK,6BAA6B,EAClC,8BAA8B,EAC9B,KAAK,+BAA+B,EACpC,gCAAgC,EACjC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/utils/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Replaces Italian fiscal codes with 16 asterisks.
|
|
3
|
+
* Walks strings, arrays, and nested objects; other values pass through.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* anonymizeString("User LVLDAA85T50G702B not found");
|
|
8
|
+
* // "User **************** not found"
|
|
9
|
+
*
|
|
10
|
+
* anonymizeString({ tax_id: "LVLDAA85T50G702B" });
|
|
11
|
+
* // { tax_id: "****************" }
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export declare const anonymizeString: <T>(value: T) => T;
|
|
1
15
|
/**
|
|
2
16
|
* Randomly obfuscates characters in a string by replacing them with a specified character.
|
|
3
17
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../../src/utils/string.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../../src/utils/string.ts"],"names":[],"mappings":"AAcA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,CAsB7C,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe,GAC1B,OAAO,MAAM,EACb,mBAAe,EACf,uBAAoB,KACnB,MAyBF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pagopa/io-react-native-wallet",
|
|
3
|
-
"version": "3.7.
|
|
3
|
+
"version": "3.7.2",
|
|
4
4
|
"description": "Provide data structures, helpers and API for IO Wallet",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -143,11 +143,11 @@
|
|
|
143
143
|
]
|
|
144
144
|
},
|
|
145
145
|
"dependencies": {
|
|
146
|
-
"@pagopa/io-wallet-oauth2": "1.5.
|
|
147
|
-
"@pagopa/io-wallet-oid-federation": "1.5.
|
|
148
|
-
"@pagopa/io-wallet-oid4vci": "1.5.
|
|
149
|
-
"@pagopa/io-wallet-oid4vp": "1.5.
|
|
150
|
-
"@pagopa/io-wallet-utils": "1.5.
|
|
146
|
+
"@pagopa/io-wallet-oauth2": "1.5.6",
|
|
147
|
+
"@pagopa/io-wallet-oid-federation": "1.5.6",
|
|
148
|
+
"@pagopa/io-wallet-oid4vci": "1.5.6",
|
|
149
|
+
"@pagopa/io-wallet-oid4vp": "1.5.6",
|
|
150
|
+
"@pagopa/io-wallet-utils": "1.5.6",
|
|
151
151
|
"@sd-jwt/core": "^0.19.0",
|
|
152
152
|
"@sd-jwt/crypto-nodejs": "^0.19.0",
|
|
153
153
|
"@sd-jwt/jwt-status-list": "^0.19.0",
|
package/src/utils/errors.ts
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
type WalletProviderResponseErrorCode,
|
|
12
12
|
WalletProviderResponseErrorCodes,
|
|
13
13
|
} from "./error-codes";
|
|
14
|
+
import { anonymizeString } from "./string";
|
|
14
15
|
|
|
15
16
|
export {
|
|
16
17
|
IssuerResponseErrorCodes,
|
|
@@ -130,6 +131,7 @@ export class UnexpectedStatusCodeError extends IoWalletError {
|
|
|
130
131
|
/**
|
|
131
132
|
* An error subclass thrown when an Issuer HTTP request fails.
|
|
132
133
|
* The specific error can be found in the `code` property.
|
|
134
|
+
* `reason` values are returned with Italian fiscal codes anonymized.
|
|
133
135
|
*/
|
|
134
136
|
export class IssuerResponseError extends UnexpectedStatusCodeError {
|
|
135
137
|
code: IssuerResponseErrorCode;
|
|
@@ -140,7 +142,7 @@ export class IssuerResponseError extends UnexpectedStatusCodeError {
|
|
|
140
142
|
reason: GenericErrorReason;
|
|
141
143
|
statusCode: number;
|
|
142
144
|
}) {
|
|
143
|
-
super(params);
|
|
145
|
+
super({ ...params, reason: anonymizeString(params.reason) });
|
|
144
146
|
this.code = params.code ?? IssuerResponseErrorCodes.IssuerGenericError;
|
|
145
147
|
}
|
|
146
148
|
}
|
|
@@ -322,7 +324,11 @@ export class ResponseErrorBuilder<T extends typeof UnexpectedStatusCodeError> {
|
|
|
322
324
|
this.errorCases[originalError.statusCode] ?? this.errorCases["*"];
|
|
323
325
|
|
|
324
326
|
if (params) {
|
|
325
|
-
return new this.ErrorClass({
|
|
327
|
+
return new this.ErrorClass({
|
|
328
|
+
reason: originalError.reason,
|
|
329
|
+
statusCode: originalError.statusCode,
|
|
330
|
+
...params,
|
|
331
|
+
});
|
|
326
332
|
}
|
|
327
333
|
|
|
328
334
|
return originalError;
|
package/src/utils/string.ts
CHANGED
|
@@ -1,3 +1,54 @@
|
|
|
1
|
+
import { isObject } from "./object";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Italian codice fiscale, including omocodia.
|
|
5
|
+
* Anchors from the source validator are omitted so matches can be found inside longer strings.
|
|
6
|
+
* Built per call so a shared `/g` regex cannot leak `lastIndex`.
|
|
7
|
+
*
|
|
8
|
+
* @see https://gist.github.com/matpag/242557b056865aa2c8e0edb27bbb6822#file-italian_tax_code_regex-txt
|
|
9
|
+
*/
|
|
10
|
+
const ITALIAN_FISCAL_CODE_SOURCE =
|
|
11
|
+
"(?:[A-Z][AEIOUX][AEIOUX]|[B-DF-HJ-NP-TV-Z]{2}[A-Z]){2}(?:[\\dLMNP-V]{2}(?:[A-EHLMPR-T](?:[04LQ][1-9MNP-V]|[15MR][\\dLMNP-V]|[26NS][0-8LMNP-U])|[DHPS][37PT][0L]|[ACELMRT][37PT][01LM]|[AC-EHLMPR-T][26NS][9V])|(?:[02468LNQSU][048LQU]|[13579MPRTV][26NS])B[26NS][9V])(?:[A-MZ][1-9MNP-V][\\dLMNP-V]{2}|[A-M][0L](?:[1-9MNP-V][\\dLMNP-V]|[0L][1-9MNP-V]))[A-Z]";
|
|
12
|
+
|
|
13
|
+
const FISCAL_CODE_MASK = "*".repeat(16);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Replaces Italian fiscal codes with 16 asterisks.
|
|
17
|
+
* Walks strings, arrays, and nested objects; other values pass through.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* anonymizeString("User LVLDAA85T50G702B not found");
|
|
22
|
+
* // "User **************** not found"
|
|
23
|
+
*
|
|
24
|
+
* anonymizeString({ tax_id: "LVLDAA85T50G702B" });
|
|
25
|
+
* // { tax_id: "****************" }
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export const anonymizeString = <T>(value: T): T => {
|
|
29
|
+
if (typeof value === "string") {
|
|
30
|
+
return value.replace(
|
|
31
|
+
new RegExp(ITALIAN_FISCAL_CODE_SOURCE, "gi"),
|
|
32
|
+
FISCAL_CODE_MASK,
|
|
33
|
+
) as T;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (Array.isArray(value)) {
|
|
37
|
+
return value.map((item) => anonymizeString(item)) as T;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (isObject(value)) {
|
|
41
|
+
return Object.fromEntries(
|
|
42
|
+
Object.entries(value).map(([key, nested]) => [
|
|
43
|
+
key,
|
|
44
|
+
anonymizeString(nested),
|
|
45
|
+
]),
|
|
46
|
+
) as T;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return value;
|
|
50
|
+
};
|
|
51
|
+
|
|
1
52
|
/**
|
|
2
53
|
* Randomly obfuscates characters in a string by replacing them with a specified character.
|
|
3
54
|
*
|