@sphereon/ssi-types 0.18.2-next.77 → 0.18.2-next.92

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.
@@ -1,2 +1,3 @@
1
1
  export * from './credential-mapper';
2
+ export * from './jsonld-language-values';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mapper/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mapper/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,0BAA0B,CAAA"}
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./credential-mapper"), exports);
18
+ __exportStar(require("./jsonld-language-values"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mapper/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mapper/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAmC;AACnC,2DAAwC"}
@@ -0,0 +1,18 @@
1
+ export type LanguageValueClaim = {
2
+ language: string;
3
+ value: string | string[] | number | number[];
4
+ };
5
+ export declare const isLanguageValueObject: (claim?: unknown) => claim is LanguageValueClaim;
6
+ export declare const isLanguageValueObjects: (claim?: unknown) => claim is LanguageValueClaim[];
7
+ export declare const toLanguageValueObject: (claim?: unknown) => LanguageValueClaim | undefined;
8
+ export declare const toLanguageValueObjects: (claim?: unknown) => LanguageValueClaim[] | undefined;
9
+ export declare const mapLanguageValue: (claim?: unknown, opts?: {
10
+ language?: string;
11
+ fallbackToFirstObject?: boolean;
12
+ }) => any;
13
+ export declare const mapLanguageValues: (claimsOrCredential: object, opts?: {
14
+ language?: string;
15
+ fallbackToFirstObject?: boolean;
16
+ noDeepClone?: boolean;
17
+ }) => any;
18
+ //# sourceMappingURL=jsonld-language-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonld-language-values.d.ts","sourceRoot":"","sources":["../../src/mapper/jsonld-language-values.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;CAC7C,CAAA;AAED,eAAO,MAAM,qBAAqB,WAAY,OAAO,gCAapD,CAAA;AAED,eAAO,MAAM,sBAAsB,WAAY,OAAO,kCAKrD,CAAA;AAED,eAAO,MAAM,qBAAqB,WAAY,OAAO,KAAG,kBAAkB,GAAG,SAE5E,CAAA;AAED,eAAO,MAAM,sBAAsB,WAAY,OAAO,KAAG,kBAAkB,EAAE,GAAG,SAO/E,CAAA;AAED,eAAO,MAAM,gBAAgB,WACnB,OAAO,SACR;IACL,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,KACA,GAwBF,CAAA;AAED,eAAO,MAAM,iBAAiB,uBACR,MAAM,SACnB;IACL,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,qBAAqB,CAAC,EAAE,OAAO,CAAA;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,KACA,GASF,CAAA"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapLanguageValues = exports.mapLanguageValue = exports.toLanguageValueObjects = exports.toLanguageValueObject = exports.isLanguageValueObjects = exports.isLanguageValueObject = void 0;
4
+ const utils_1 = require("../utils");
5
+ const isLanguageValueObject = (claim) => {
6
+ if (!claim || !utils_1.ObjectUtils.isObject(claim) || Array.isArray(claim)) {
7
+ return false;
8
+ }
9
+ const keys = Object.keys(claim);
10
+ if (keys.length !== 2) {
11
+ return false; // Only 'language' and 'value' for now
12
+ }
13
+ else if (!('language' in claim && !!claim.language)) {
14
+ return false;
15
+ }
16
+ else if (!('value' in claim && !!claim.value)) {
17
+ return false;
18
+ }
19
+ return true;
20
+ };
21
+ exports.isLanguageValueObject = isLanguageValueObject;
22
+ const isLanguageValueObjects = (claim) => {
23
+ if (!claim || !Array.isArray(claim)) {
24
+ return false;
25
+ }
26
+ return claim.every((val) => (0, exports.isLanguageValueObject)(val));
27
+ };
28
+ exports.isLanguageValueObjects = isLanguageValueObjects;
29
+ const toLanguageValueObject = (claim) => {
30
+ return (0, exports.isLanguageValueObject)(claim) ? claim : undefined;
31
+ };
32
+ exports.toLanguageValueObject = toLanguageValueObject;
33
+ const toLanguageValueObjects = (claim) => {
34
+ if ((0, exports.isLanguageValueObject)(claim)) {
35
+ return utils_1.ObjectUtils.asArray((0, exports.toLanguageValueObject)(claim));
36
+ }
37
+ else if ((0, exports.isLanguageValueObjects)(claim)) {
38
+ return claim;
39
+ }
40
+ return undefined; // no empty array on purpose, as this really would not be a language value object
41
+ };
42
+ exports.toLanguageValueObjects = toLanguageValueObjects;
43
+ const mapLanguageValue = (claim, opts) => {
44
+ const langValues = (0, exports.toLanguageValueObjects)(claim);
45
+ if (Array.isArray(langValues)) {
46
+ if (langValues.length === 0) {
47
+ // should not happen, but let's return original claim to be sure
48
+ return claim;
49
+ }
50
+ const filteredLangValues = langValues.filter((val) => ((opts === null || opts === void 0 ? void 0 : opts.language) ? val.language.toLowerCase().includes(opts.language.toLowerCase()) : true));
51
+ let langValue;
52
+ if (filteredLangValues.length > 0) {
53
+ langValue = filteredLangValues[0];
54
+ }
55
+ else {
56
+ if ((opts === null || opts === void 0 ? void 0 : opts.fallbackToFirstObject) === false) {
57
+ // No match and we also do not fallback to the first value, so return the original claim
58
+ return claim;
59
+ }
60
+ // Fallback to the first value
61
+ langValue = langValues[0];
62
+ }
63
+ return langValue.value;
64
+ }
65
+ return claim;
66
+ };
67
+ exports.mapLanguageValue = mapLanguageValue;
68
+ const mapLanguageValues = (claimsOrCredential, opts) => {
69
+ const result = (opts === null || opts === void 0 ? void 0 : opts.noDeepClone) ? claimsOrCredential : JSON.parse(JSON.stringify(claimsOrCredential));
70
+ Object.keys(claimsOrCredential).forEach((key) => {
71
+ result[key] = (0, exports.mapLanguageValue)(result[key], opts);
72
+ if (utils_1.ObjectUtils.isObject(result[key]) || Array.isArray(result[key])) {
73
+ result[key] = (0, exports.mapLanguageValues)(result[key], Object.assign(Object.assign({}, opts), { noDeepClone: true }));
74
+ }
75
+ });
76
+ return result;
77
+ };
78
+ exports.mapLanguageValues = mapLanguageValues;
79
+ //# sourceMappingURL=jsonld-language-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsonld-language-values.js","sourceRoot":"","sources":["../../src/mapper/jsonld-language-values.ts"],"names":[],"mappings":";;;AAAA,oCAAsC;AAO/B,MAAM,qBAAqB,GAAG,CAAC,KAAe,EAA+B,EAAE;IACpF,IAAI,CAAC,KAAK,IAAI,CAAC,mBAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAClE,OAAO,KAAK,CAAA;KACb;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,KAAK,CAAA,CAAC,sCAAsC;KACpD;SAAM,IAAI,CAAC,CAAC,UAAU,IAAI,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;QACrD,OAAO,KAAK,CAAA;KACb;SAAM,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC/C,OAAO,KAAK,CAAA;KACb;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAbY,QAAA,qBAAqB,yBAajC;AAEM,MAAM,sBAAsB,GAAG,CAAC,KAAe,EAAiC,EAAE;IACvF,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACnC,OAAO,KAAK,CAAA;KACb;IACD,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,6BAAqB,EAAC,GAAG,CAAC,CAAC,CAAA;AACzD,CAAC,CAAA;AALY,QAAA,sBAAsB,0BAKlC;AAEM,MAAM,qBAAqB,GAAG,CAAC,KAAe,EAAkC,EAAE;IACvF,OAAO,IAAA,6BAAqB,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACzD,CAAC,CAAA;AAFY,QAAA,qBAAqB,yBAEjC;AAEM,MAAM,sBAAsB,GAAG,CAAC,KAAe,EAAoC,EAAE;IAC1F,IAAI,IAAA,6BAAqB,EAAC,KAAK,CAAC,EAAE;QAChC,OAAO,mBAAW,CAAC,OAAO,CAAC,IAAA,6BAAqB,EAAC,KAAK,CAAuB,CAAC,CAAA;KAC/E;SAAM,IAAI,IAAA,8BAAsB,EAAC,KAAK,CAAC,EAAE;QACxC,OAAO,KAAK,CAAA;KACb;IACD,OAAO,SAAS,CAAA,CAAC,iFAAiF;AACpG,CAAC,CAAA;AAPY,QAAA,sBAAsB,0BAOlC;AAEM,MAAM,gBAAgB,GAAG,CAC9B,KAAe,EACf,IAGC,EACI,EAAE;IACP,MAAM,UAAU,GAAG,IAAA,8BAAsB,EAAC,KAAK,CAAC,CAAA;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QAC7B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,gEAAgE;YAChE,OAAO,KAAK,CAAA;SACb;QACD,MAAM,kBAAkB,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,EAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;QAEjJ,IAAI,SAA6B,CAAA;QACjC,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAA;SAClC;aAAM;YACL,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,qBAAqB,MAAK,KAAK,EAAE;gBACzC,wFAAwF;gBACxF,OAAO,KAAK,CAAA;aACb;YACD,8BAA8B;YAC9B,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;SAC1B;QACD,OAAO,SAAS,CAAC,KAAK,CAAA;KACvB;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AA9BY,QAAA,gBAAgB,oBA8B5B;AAEM,MAAM,iBAAiB,GAAG,CAC/B,kBAA0B,EAC1B,IAIC,EACI,EAAE;IACP,MAAM,MAAM,GAAG,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,EAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAA;IACtG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,wBAAgB,EAAC,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACjD,IAAI,mBAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;YACnE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAA,yBAAiB,EAAC,MAAM,CAAC,GAAG,CAAC,kCAAO,IAAI,KAAE,WAAW,EAAE,IAAI,IAAG,CAAA;SAC7E;IACH,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAhBY,QAAA,iBAAiB,qBAgB7B"}
@@ -1,6 +1,6 @@
1
1
  export declare class ObjectUtils {
2
- static asArray(value: unknown): any[];
3
- static isObject(value: unknown): boolean;
2
+ static asArray<T>(value: T): T[];
3
+ static isObject(value: unknown): value is object;
4
4
  static isUrlAbsolute(url: string): void;
5
5
  static isString(value: unknown): value is string;
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/utils/object.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;WACR,OAAO,CAAC,KAAK,EAAE,OAAO;WAItB,QAAQ,CAAC,KAAK,EAAE,OAAO;WAIvB,aAAa,CAAC,GAAG,EAAE,MAAM;WAMzB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM;CAGxD"}
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/utils/object.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;WACR,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE;WAIzB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM;WAIzC,aAAa,CAAC,GAAG,EAAE,MAAM;WAMzB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM;CAGxD"}
@@ -6,7 +6,7 @@ class ObjectUtils {
6
6
  return Array.isArray(value) ? value : [value];
7
7
  }
8
8
  static isObject(value) {
9
- return Object.prototype.toString.call(value) === '[object Object]';
9
+ return typeof value === 'object' || Object.prototype.toString.call(value) === '[object Object]';
10
10
  }
11
11
  static isUrlAbsolute(url) {
12
12
  // regex to check for absolute IRI (starting scheme and ':') or blank node IRI
@@ -1 +1 @@
1
- {"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/utils/object.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAW;IACf,MAAM,CAAC,OAAO,CAAC,KAAc;QAClC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,KAAc;QACnC,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAA;IACpE,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,GAAW;QACrC,8EAA8E;QAC9E,MAAM,eAAe,GAAG,sCAAsC,CAAA;QAC9D,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxD,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,KAAc;QACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAA;IACjG,CAAC;CACF;AAlBD,kCAkBC"}
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/utils/object.ts"],"names":[],"mappings":";;;AAAA,MAAa,WAAW;IACf,MAAM,CAAC,OAAO,CAAI,KAAQ;QAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,KAAc;QACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAA;IACjG,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,GAAW;QACrC,8EAA8E;QAC9E,MAAM,eAAe,GAAG,sCAAsC,CAAA;QAC9D,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxD,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,KAAc;QACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,iBAAiB,CAAA;IACjG,CAAC;CACF;AAlBD,kCAkBC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sphereon/ssi-types",
3
3
  "description": "SSI Common Types",
4
- "version": "0.18.2-next.77+8272f7a5",
4
+ "version": "0.18.2-next.92+7c038a3b",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
@@ -42,5 +42,5 @@
42
42
  "Verifiable Credentials",
43
43
  "DIDs"
44
44
  ],
45
- "gitHead": "8272f7a5e594f1e40e7ee3b4b07de5e6a4e6c7ca"
45
+ "gitHead": "7c038a3b4ffa2d7477e5876cc999282d43205d52"
46
46
  }
@@ -1 +1,2 @@
1
1
  export * from './credential-mapper'
2
+ export * from './jsonld-language-values'
@@ -0,0 +1,91 @@
1
+ import { ObjectUtils } from '../utils'
2
+
3
+ export type LanguageValueClaim = {
4
+ language: string
5
+ value: string | string[] | number | number[]
6
+ }
7
+
8
+ export const isLanguageValueObject = (claim?: unknown): claim is LanguageValueClaim => {
9
+ if (!claim || !ObjectUtils.isObject(claim) || Array.isArray(claim)) {
10
+ return false
11
+ }
12
+ const keys = Object.keys(claim)
13
+ if (keys.length !== 2) {
14
+ return false // Only 'language' and 'value' for now
15
+ } else if (!('language' in claim && !!claim.language)) {
16
+ return false
17
+ } else if (!('value' in claim && !!claim.value)) {
18
+ return false
19
+ }
20
+ return true
21
+ }
22
+
23
+ export const isLanguageValueObjects = (claim?: unknown): claim is LanguageValueClaim[] => {
24
+ if (!claim || !Array.isArray(claim)) {
25
+ return false
26
+ }
27
+ return claim.every((val) => isLanguageValueObject(val))
28
+ }
29
+
30
+ export const toLanguageValueObject = (claim?: unknown): LanguageValueClaim | undefined => {
31
+ return isLanguageValueObject(claim) ? claim : undefined
32
+ }
33
+
34
+ export const toLanguageValueObjects = (claim?: unknown): LanguageValueClaim[] | undefined => {
35
+ if (isLanguageValueObject(claim)) {
36
+ return ObjectUtils.asArray(toLanguageValueObject(claim) as LanguageValueClaim)
37
+ } else if (isLanguageValueObjects(claim)) {
38
+ return claim
39
+ }
40
+ return undefined // no empty array on purpose, as this really would not be a language value object
41
+ }
42
+
43
+ export const mapLanguageValue = (
44
+ claim?: unknown,
45
+ opts?: {
46
+ language?: string
47
+ fallbackToFirstObject?: boolean
48
+ }
49
+ ): any => {
50
+ const langValues = toLanguageValueObjects(claim)
51
+ if (Array.isArray(langValues)) {
52
+ if (langValues.length === 0) {
53
+ // should not happen, but let's return original claim to be sure
54
+ return claim
55
+ }
56
+ const filteredLangValues = langValues.filter((val) => (opts?.language ? val.language.toLowerCase().includes(opts.language.toLowerCase()) : true))
57
+
58
+ let langValue: LanguageValueClaim
59
+ if (filteredLangValues.length > 0) {
60
+ langValue = filteredLangValues[0]
61
+ } else {
62
+ if (opts?.fallbackToFirstObject === false) {
63
+ // No match and we also do not fallback to the first value, so return the original claim
64
+ return claim
65
+ }
66
+ // Fallback to the first value
67
+ langValue = langValues[0]
68
+ }
69
+ return langValue.value
70
+ }
71
+
72
+ return claim
73
+ }
74
+
75
+ export const mapLanguageValues = (
76
+ claimsOrCredential: object,
77
+ opts?: {
78
+ language?: string
79
+ fallbackToFirstObject?: boolean
80
+ noDeepClone?: boolean
81
+ }
82
+ ): any => {
83
+ const result = opts?.noDeepClone ? claimsOrCredential : JSON.parse(JSON.stringify(claimsOrCredential))
84
+ Object.keys(claimsOrCredential).forEach((key) => {
85
+ result[key] = mapLanguageValue(result[key], opts)
86
+ if (ObjectUtils.isObject(result[key]) || Array.isArray(result[key])) {
87
+ result[key] = mapLanguageValues(result[key], { ...opts, noDeepClone: true })
88
+ }
89
+ })
90
+ return result
91
+ }
@@ -1,10 +1,10 @@
1
1
  export class ObjectUtils {
2
- public static asArray(value: unknown) {
2
+ public static asArray<T>(value: T): T[] {
3
3
  return Array.isArray(value) ? value : [value]
4
4
  }
5
5
 
6
- public static isObject(value: unknown) {
7
- return Object.prototype.toString.call(value) === '[object Object]'
6
+ public static isObject(value: unknown): value is object {
7
+ return typeof value === 'object' || Object.prototype.toString.call(value) === '[object Object]'
8
8
  }
9
9
 
10
10
  public static isUrlAbsolute(url: string) {