@genesislcap/foundation-utils 14.371.0 → 14.373.0
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/custom-elements.json +107 -0
- package/dist/dts/env/variables.d.ts.map +1 -1
- package/dist/dts/feature-flags/featureFlags.d.ts +2 -0
- package/dist/dts/feature-flags/featureFlags.d.ts.map +1 -0
- package/dist/dts/feature-flags/index.d.ts +2 -0
- package/dist/dts/feature-flags/index.d.ts.map +1 -0
- package/dist/dts/index.d.ts +1 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/utils/deepMerge.d.ts +18 -0
- package/dist/dts/utils/deepMerge.d.ts.map +1 -0
- package/dist/dts/utils/index.d.ts +1 -0
- package/dist/dts/utils/index.d.ts.map +1 -1
- package/dist/esm/env/variables.js +4 -1
- package/dist/esm/feature-flags/featureFlags.js +12 -0
- package/dist/esm/feature-flags/index.js +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/utils/deepMerge.js +48 -0
- package/dist/esm/utils/index.js +1 -0
- package/dist/foundation-utils.api.json +129 -0
- package/dist/foundation-utils.d.ts +20 -0
- package/docs/api/foundation-utils.deepmerge.md +82 -0
- package/docs/api/foundation-utils.isfeatureactivated.md +50 -0
- package/docs/api/foundation-utils.md +20 -0
- package/docs/api-report.md.api.md +6 -0
- package/package.json +11 -11
|
@@ -63,6 +63,14 @@
|
|
|
63
63
|
"package": "./error"
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
|
+
{
|
|
67
|
+
"kind": "js",
|
|
68
|
+
"name": "*",
|
|
69
|
+
"declaration": {
|
|
70
|
+
"name": "*",
|
|
71
|
+
"package": "./feature-flags"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
66
74
|
{
|
|
67
75
|
"kind": "js",
|
|
68
76
|
"name": "*",
|
|
@@ -1268,6 +1276,54 @@
|
|
|
1268
1276
|
}
|
|
1269
1277
|
]
|
|
1270
1278
|
},
|
|
1279
|
+
{
|
|
1280
|
+
"kind": "javascript-module",
|
|
1281
|
+
"path": "src/feature-flags/featureFlags.ts",
|
|
1282
|
+
"declarations": [
|
|
1283
|
+
{
|
|
1284
|
+
"kind": "function",
|
|
1285
|
+
"name": "isFeatureActivated",
|
|
1286
|
+
"return": {
|
|
1287
|
+
"type": {
|
|
1288
|
+
"text": "boolean"
|
|
1289
|
+
}
|
|
1290
|
+
},
|
|
1291
|
+
"parameters": [
|
|
1292
|
+
{
|
|
1293
|
+
"name": "feature",
|
|
1294
|
+
"type": {
|
|
1295
|
+
"text": "string"
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
]
|
|
1299
|
+
}
|
|
1300
|
+
],
|
|
1301
|
+
"exports": [
|
|
1302
|
+
{
|
|
1303
|
+
"kind": "js",
|
|
1304
|
+
"name": "isFeatureActivated",
|
|
1305
|
+
"declaration": {
|
|
1306
|
+
"name": "isFeatureActivated",
|
|
1307
|
+
"module": "src/feature-flags/featureFlags.ts"
|
|
1308
|
+
}
|
|
1309
|
+
}
|
|
1310
|
+
]
|
|
1311
|
+
},
|
|
1312
|
+
{
|
|
1313
|
+
"kind": "javascript-module",
|
|
1314
|
+
"path": "src/feature-flags/index.ts",
|
|
1315
|
+
"declarations": [],
|
|
1316
|
+
"exports": [
|
|
1317
|
+
{
|
|
1318
|
+
"kind": "js",
|
|
1319
|
+
"name": "*",
|
|
1320
|
+
"declaration": {
|
|
1321
|
+
"name": "*",
|
|
1322
|
+
"package": "./featureFlags"
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
]
|
|
1326
|
+
},
|
|
1271
1327
|
{
|
|
1272
1328
|
"kind": "javascript-module",
|
|
1273
1329
|
"path": "src/formatters/datetime.ts",
|
|
@@ -3489,6 +3545,49 @@
|
|
|
3489
3545
|
}
|
|
3490
3546
|
]
|
|
3491
3547
|
},
|
|
3548
|
+
{
|
|
3549
|
+
"kind": "javascript-module",
|
|
3550
|
+
"path": "src/utils/deepMerge.ts",
|
|
3551
|
+
"declarations": [
|
|
3552
|
+
{
|
|
3553
|
+
"kind": "function",
|
|
3554
|
+
"name": "deepMerge",
|
|
3555
|
+
"return": {
|
|
3556
|
+
"type": {
|
|
3557
|
+
"text": ""
|
|
3558
|
+
}
|
|
3559
|
+
},
|
|
3560
|
+
"parameters": [
|
|
3561
|
+
{
|
|
3562
|
+
"name": "target",
|
|
3563
|
+
"type": {
|
|
3564
|
+
"text": "T"
|
|
3565
|
+
},
|
|
3566
|
+
"description": "The target object to merge into (defaults/base values)"
|
|
3567
|
+
},
|
|
3568
|
+
{
|
|
3569
|
+
"name": "source",
|
|
3570
|
+
"type": {
|
|
3571
|
+
"text": "Partial<T>"
|
|
3572
|
+
},
|
|
3573
|
+
"description": "The source object to merge from (overrides)"
|
|
3574
|
+
}
|
|
3575
|
+
],
|
|
3576
|
+
"description": "Deep merges two objects, with source values taking precedence over target values.\nArrays are replaced (not merged), and null/undefined values in source are preserved.",
|
|
3577
|
+
"privacy": "public"
|
|
3578
|
+
}
|
|
3579
|
+
],
|
|
3580
|
+
"exports": [
|
|
3581
|
+
{
|
|
3582
|
+
"kind": "js",
|
|
3583
|
+
"name": "deepMerge",
|
|
3584
|
+
"declaration": {
|
|
3585
|
+
"name": "deepMerge",
|
|
3586
|
+
"module": "src/utils/deepMerge.ts"
|
|
3587
|
+
}
|
|
3588
|
+
}
|
|
3589
|
+
]
|
|
3590
|
+
},
|
|
3492
3591
|
{
|
|
3493
3592
|
"kind": "javascript-module",
|
|
3494
3593
|
"path": "src/utils/delay.ts",
|
|
@@ -3623,6 +3722,14 @@
|
|
|
3623
3722
|
"path": "src/utils/index.ts",
|
|
3624
3723
|
"declarations": [],
|
|
3625
3724
|
"exports": [
|
|
3725
|
+
{
|
|
3726
|
+
"kind": "js",
|
|
3727
|
+
"name": "*",
|
|
3728
|
+
"declaration": {
|
|
3729
|
+
"name": "*",
|
|
3730
|
+
"package": "./deepMerge"
|
|
3731
|
+
}
|
|
3732
|
+
},
|
|
3626
3733
|
{
|
|
3627
3734
|
"kind": "js",
|
|
3628
3735
|
"name": "*",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/env/variables.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"variables.d.ts","sourceRoot":"","sources":["../../../src/env/variables.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,QAAA,IAAI,QAAQ,EAAE,MAAkB,CAAC;AAQjC,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,CAAC;AAG/B;;;;;;;GAOG;AACH,QAAA,IAAI,YAAY,EAAE,MAAY,CAAC;AAS/B,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC;AAGvC;;;;;;;;GAQG;AACH,QAAA,IAAI,WAAW,EAAE,MAAc,CAAC;AAQhC,OAAO,EAAE,WAAW,IAAI,UAAU,EAAE,CAAC;AAGrC;;;;GAIG;AACH,QAAA,IAAI,WAAW,EAAE,MAAM,CAAC;AAMxB,OAAO,EAAE,WAAW,IAAI,UAAU,EAAE,CAAC;AAErC;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,QAAgG,CAAC;AAShI;;;;;;GAMG;AACH,QAAA,IAAI,SAAS,EAAE,MAAwD,CAAC;AAQxE,OAAO,EAAE,SAAS,IAAI,QAAQ,EAAE,CAAC;AAGjC;;;;GAIG;AACH,QAAA,IAAI,YAAY,EAAE,MAAM,CAAC;AAMzB,OAAO,EAAE,YAAY,IAAI,WAAW,EAAE,CAAC;AAKvC;;;;GAIG;AACH,QAAA,IAAI,qBAAqB,EAAE,MAAM,CAAC;AAMlC,OAAO,EAAE,qBAAqB,IAAI,oBAAoB,EAAE,CAAC;AAGzD;;;;GAIG;AACH,QAAA,IAAI,iBAAiB,EAAE,MAAM,CAAC;AAM9B,OAAO,EAAE,iBAAiB,IAAI,gBAAgB,EAAE,CAAC;AAGjD;;;;GAIG;AACH,QAAA,IAAI,aAAa,EAAE,MAAM,CAAC;AAM1B,OAAO,EAAE,aAAa,IAAI,YAAY,EAAE,CAAC;AAGzC;;GAEG;AACH,QAAA,IAAI,SAAS,EAAE,MAA+B,CAAC;AAM/C,OAAO,EAAE,SAAS,EAAE,CAAC;AAGrB;;GAEG;AACH,QAAA,IAAI,iBAAiB,EAAE,MAA+B,CAAC;AAMvD,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAG7B;;GAEG;AACH,QAAA,IAAI,iBAAiB,EAAE,MAAkC,CAAC;AAM1D,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAG7B;;GAEG;AACH,QAAA,IAAI,UAAU,EAAE,MAA2B,CAAC;AAM5C,OAAO,EAAE,UAAU,EAAE,CAAC;AAGtB;;GAEG;AACH,QAAA,IAAI,mBAAmB,EAAE,MAAyC,CAAC;AAMnE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAG/B;;GAEG;AACH,QAAA,IAAI,mBAAmB,EAAE,MAAgD,CAAC;AAM1E,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAG/B;;GAEG;AACH,QAAA,IAAI,kBAAkB,EAAE,MAA0C,CAAC;AAMnE,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAG9B;;GAEG;AACH,QAAA,IAAI,YAAY,EAAE,MAAuB,CAAC;AAM1C,OAAO,EAAE,YAAY,EAAE,CAAC;AAGxB;;GAEG;AACH,QAAA,IAAI,aAAa,EAAE,MAAoC,CAAC;AAMxD,OAAO,EAAE,aAAa,EAAE,CAAC;AAGzB;;GAEG;AACH,QAAA,IAAI,iBAAiB,EAAE,MAAkB,CAAC;AAM1C,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAG7B;;GAEG;AACH,QAAA,IAAI,gBAAgB,EAAE,MAAgC,CAAC;AAMvD,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"featureFlags.d.ts","sourceRoot":"","sources":["../../../src/feature-flags/featureFlags.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,GAAI,SAAS,MAAM,KAAG,OAapD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/feature-flags/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
|
package/dist/dts/index.d.ts
CHANGED
package/dist/dts/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deep merges two objects, with source values taking precedence over target values.
|
|
3
|
+
* Arrays are replaced (not merged), and null/undefined values in source are preserved.
|
|
4
|
+
*
|
|
5
|
+
* @param target - The target object to merge into (defaults/base values)
|
|
6
|
+
* @param source - The source object to merge from (overrides)
|
|
7
|
+
* @returns A new merged object with source values taking precedence
|
|
8
|
+
* @public
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* const defaults = { a: 1, b: { c: 2, d: 3 } };
|
|
12
|
+
* const overrides = { b: { c: 4 } };
|
|
13
|
+
* const merged = deepMerge(defaults, overrides);
|
|
14
|
+
* // Result: { a: 1, b: { c: 4, d: 3 } }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare const deepMerge: <T extends Record<string, any>>(target: T, source: Partial<T>) => T;
|
|
18
|
+
//# sourceMappingURL=deepMerge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepMerge.d.ts","sourceRoot":"","sources":["../../../src/utils/deepMerge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,OAAO,CAAC,CAAC,CAAC,KAAG,CAsCxF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/* eslint-disable import/no-mutable-exports */
|
|
2
|
+
import { isFeatureActivated } from '../feature-flags';
|
|
2
3
|
/**
|
|
3
4
|
* The builder aka file bundler.
|
|
4
5
|
* @privateRemarks
|
|
@@ -71,7 +72,9 @@ export { _FORCE_HTTP as FORCE_HTTP };
|
|
|
71
72
|
* @public
|
|
72
73
|
*/
|
|
73
74
|
export const GENESIS_SOCKET_URL = `${location.protocol.replace('http', 'ws')}//${location.host}${_PUBLIC_PATH}/${_SOCKET_EXT}/`;
|
|
74
|
-
const PROTOCOL = _FORCE_HTTP === 'true'
|
|
75
|
+
const PROTOCOL = _FORCE_HTTP === 'true' || isFeatureActivated('forceHttp')
|
|
76
|
+
? location.protocol
|
|
77
|
+
: location.protocol.replace('http', 'ws');
|
|
75
78
|
/**
|
|
76
79
|
* The Genesis Server URL (WebSocket or HTTP).
|
|
77
80
|
* @remarks Optional.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const isFeatureActivated = (feature) => {
|
|
2
|
+
const currentUrl = window.location.href;
|
|
3
|
+
const queryString = new URL(currentUrl).search;
|
|
4
|
+
const params = new URLSearchParams(queryString);
|
|
5
|
+
const featureKey = `feature.${feature}`.toLowerCase();
|
|
6
|
+
for (const [key] of params.entries()) {
|
|
7
|
+
if (key.toLowerCase() === featureKey) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return false;
|
|
12
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './featureFlags';
|
package/dist/esm/index.js
CHANGED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deep merges two objects, with source values taking precedence over target values.
|
|
3
|
+
* Arrays are replaced (not merged), and null/undefined values in source are preserved.
|
|
4
|
+
*
|
|
5
|
+
* @param target - The target object to merge into (defaults/base values)
|
|
6
|
+
* @param source - The source object to merge from (overrides)
|
|
7
|
+
* @returns A new merged object with source values taking precedence
|
|
8
|
+
* @public
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* const defaults = { a: 1, b: { c: 2, d: 3 } };
|
|
12
|
+
* const overrides = { b: { c: 4 } };
|
|
13
|
+
* const merged = deepMerge(defaults, overrides);
|
|
14
|
+
* // Result: { a: 1, b: { c: 4, d: 3 } }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export const deepMerge = (target, source) => {
|
|
18
|
+
const output = structuredClone(target);
|
|
19
|
+
if (!source || typeof source !== 'object' || Array.isArray(source)) {
|
|
20
|
+
return source !== undefined ? source : output;
|
|
21
|
+
}
|
|
22
|
+
Object.keys(source).forEach((key) => {
|
|
23
|
+
const sourceValue = source[key];
|
|
24
|
+
const targetValue = output[key];
|
|
25
|
+
// If source value is null or undefined, skip it (preserve target value)
|
|
26
|
+
if (sourceValue === null || sourceValue === undefined) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
// Type guard for Date check
|
|
30
|
+
const isDate = (value) => value instanceof Date;
|
|
31
|
+
// If both are plain objects (not arrays, dates, etc.), recursively merge
|
|
32
|
+
if (sourceValue &&
|
|
33
|
+
typeof sourceValue === 'object' &&
|
|
34
|
+
!Array.isArray(sourceValue) &&
|
|
35
|
+
!isDate(sourceValue) &&
|
|
36
|
+
targetValue &&
|
|
37
|
+
typeof targetValue === 'object' &&
|
|
38
|
+
!Array.isArray(targetValue) &&
|
|
39
|
+
!isDate(targetValue)) {
|
|
40
|
+
output[key] = deepMerge(targetValue, sourceValue);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
// Otherwise, source value overrides target value
|
|
44
|
+
output[key] = sourceValue;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return output;
|
|
48
|
+
};
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -1811,6 +1811,94 @@
|
|
|
1811
1811
|
],
|
|
1812
1812
|
"name": "decodeFromBase64WithPrefix"
|
|
1813
1813
|
},
|
|
1814
|
+
{
|
|
1815
|
+
"kind": "Function",
|
|
1816
|
+
"canonicalReference": "@genesislcap/foundation-utils!deepMerge:function(1)",
|
|
1817
|
+
"docComment": "/**\n * Deep merges two objects, with source values taking precedence over target values. Arrays are replaced (not merged), and null/undefined values in source are preserved.\n *\n * @param target - The target object to merge into (defaults/base values)\n *\n * @param source - The source object to merge from (overrides)\n *\n * @returns A new merged object with source values taking precedence\n *\n * @example\n * ```ts\n * const defaults = { a: 1, b: { c: 2, d: 3 } };\n * const overrides = { b: { c: 4 } };\n * const merged = deepMerge(defaults, overrides);\n * // Result: { a: 1, b: { c: 4, d: 3 } }\n * ```\n *\n * @public\n */\n",
|
|
1818
|
+
"excerptTokens": [
|
|
1819
|
+
{
|
|
1820
|
+
"kind": "Content",
|
|
1821
|
+
"text": "deepMerge: <T extends "
|
|
1822
|
+
},
|
|
1823
|
+
{
|
|
1824
|
+
"kind": "Reference",
|
|
1825
|
+
"text": "Record",
|
|
1826
|
+
"canonicalReference": "!Record:type"
|
|
1827
|
+
},
|
|
1828
|
+
{
|
|
1829
|
+
"kind": "Content",
|
|
1830
|
+
"text": "<string, any>"
|
|
1831
|
+
},
|
|
1832
|
+
{
|
|
1833
|
+
"kind": "Content",
|
|
1834
|
+
"text": ">(target: "
|
|
1835
|
+
},
|
|
1836
|
+
{
|
|
1837
|
+
"kind": "Content",
|
|
1838
|
+
"text": "T"
|
|
1839
|
+
},
|
|
1840
|
+
{
|
|
1841
|
+
"kind": "Content",
|
|
1842
|
+
"text": ", source: "
|
|
1843
|
+
},
|
|
1844
|
+
{
|
|
1845
|
+
"kind": "Reference",
|
|
1846
|
+
"text": "Partial",
|
|
1847
|
+
"canonicalReference": "!Partial:type"
|
|
1848
|
+
},
|
|
1849
|
+
{
|
|
1850
|
+
"kind": "Content",
|
|
1851
|
+
"text": "<T>"
|
|
1852
|
+
},
|
|
1853
|
+
{
|
|
1854
|
+
"kind": "Content",
|
|
1855
|
+
"text": ") => "
|
|
1856
|
+
},
|
|
1857
|
+
{
|
|
1858
|
+
"kind": "Content",
|
|
1859
|
+
"text": "T"
|
|
1860
|
+
}
|
|
1861
|
+
],
|
|
1862
|
+
"fileUrlPath": "src/utils/deepMerge.ts",
|
|
1863
|
+
"returnTypeTokenRange": {
|
|
1864
|
+
"startIndex": 9,
|
|
1865
|
+
"endIndex": 10
|
|
1866
|
+
},
|
|
1867
|
+
"releaseTag": "Public",
|
|
1868
|
+
"overloadIndex": 1,
|
|
1869
|
+
"parameters": [
|
|
1870
|
+
{
|
|
1871
|
+
"parameterName": "target",
|
|
1872
|
+
"parameterTypeTokenRange": {
|
|
1873
|
+
"startIndex": 4,
|
|
1874
|
+
"endIndex": 5
|
|
1875
|
+
},
|
|
1876
|
+
"isOptional": false
|
|
1877
|
+
},
|
|
1878
|
+
{
|
|
1879
|
+
"parameterName": "source",
|
|
1880
|
+
"parameterTypeTokenRange": {
|
|
1881
|
+
"startIndex": 6,
|
|
1882
|
+
"endIndex": 8
|
|
1883
|
+
},
|
|
1884
|
+
"isOptional": false
|
|
1885
|
+
}
|
|
1886
|
+
],
|
|
1887
|
+
"typeParameters": [
|
|
1888
|
+
{
|
|
1889
|
+
"typeParameterName": "T",
|
|
1890
|
+
"constraintTokenRange": {
|
|
1891
|
+
"startIndex": 1,
|
|
1892
|
+
"endIndex": 3
|
|
1893
|
+
},
|
|
1894
|
+
"defaultTypeTokenRange": {
|
|
1895
|
+
"startIndex": 0,
|
|
1896
|
+
"endIndex": 0
|
|
1897
|
+
}
|
|
1898
|
+
}
|
|
1899
|
+
],
|
|
1900
|
+
"name": "deepMerge"
|
|
1901
|
+
},
|
|
1814
1902
|
{
|
|
1815
1903
|
"kind": "Variable",
|
|
1816
1904
|
"canonicalReference": "@genesislcap/foundation-utils!DEFAULT_ORGANISATION:var",
|
|
@@ -7456,6 +7544,47 @@
|
|
|
7456
7544
|
"parameters": [],
|
|
7457
7545
|
"name": "isDev"
|
|
7458
7546
|
},
|
|
7547
|
+
{
|
|
7548
|
+
"kind": "Function",
|
|
7549
|
+
"canonicalReference": "@genesislcap/foundation-utils!isFeatureActivated:function(1)",
|
|
7550
|
+
"docComment": "",
|
|
7551
|
+
"excerptTokens": [
|
|
7552
|
+
{
|
|
7553
|
+
"kind": "Content",
|
|
7554
|
+
"text": "isFeatureActivated: (feature: "
|
|
7555
|
+
},
|
|
7556
|
+
{
|
|
7557
|
+
"kind": "Content",
|
|
7558
|
+
"text": "string"
|
|
7559
|
+
},
|
|
7560
|
+
{
|
|
7561
|
+
"kind": "Content",
|
|
7562
|
+
"text": ") => "
|
|
7563
|
+
},
|
|
7564
|
+
{
|
|
7565
|
+
"kind": "Content",
|
|
7566
|
+
"text": "boolean"
|
|
7567
|
+
}
|
|
7568
|
+
],
|
|
7569
|
+
"fileUrlPath": "src/feature-flags/featureFlags.ts",
|
|
7570
|
+
"returnTypeTokenRange": {
|
|
7571
|
+
"startIndex": 3,
|
|
7572
|
+
"endIndex": 4
|
|
7573
|
+
},
|
|
7574
|
+
"releaseTag": "Public",
|
|
7575
|
+
"overloadIndex": 1,
|
|
7576
|
+
"parameters": [
|
|
7577
|
+
{
|
|
7578
|
+
"parameterName": "feature",
|
|
7579
|
+
"parameterTypeTokenRange": {
|
|
7580
|
+
"startIndex": 1,
|
|
7581
|
+
"endIndex": 2
|
|
7582
|
+
},
|
|
7583
|
+
"isOptional": false
|
|
7584
|
+
}
|
|
7585
|
+
],
|
|
7586
|
+
"name": "isFeatureActivated"
|
|
7587
|
+
},
|
|
7459
7588
|
{
|
|
7460
7589
|
"kind": "Function",
|
|
7461
7590
|
"canonicalReference": "@genesislcap/foundation-utils!JSONReplacer:function(1)",
|
|
@@ -225,6 +225,24 @@ export declare const decodeFromBase64: (base64Value: string) => string | ArrayBu
|
|
|
225
225
|
*/
|
|
226
226
|
export declare const decodeFromBase64WithPrefix: (value: string) => string | ArrayBuffer;
|
|
227
227
|
|
|
228
|
+
/**
|
|
229
|
+
* Deep merges two objects, with source values taking precedence over target values.
|
|
230
|
+
* Arrays are replaced (not merged), and null/undefined values in source are preserved.
|
|
231
|
+
*
|
|
232
|
+
* @param target - The target object to merge into (defaults/base values)
|
|
233
|
+
* @param source - The source object to merge from (overrides)
|
|
234
|
+
* @returns A new merged object with source values taking precedence
|
|
235
|
+
* @public
|
|
236
|
+
* @example
|
|
237
|
+
* ```ts
|
|
238
|
+
* const defaults = { a: 1, b: { c: 2, d: 3 } };
|
|
239
|
+
* const overrides = { b: { c: 4 } };
|
|
240
|
+
* const merged = deepMerge(defaults, overrides);
|
|
241
|
+
* // Result: { a: 1, b: { c: 4, d: 3 } }
|
|
242
|
+
* ```
|
|
243
|
+
*/
|
|
244
|
+
export declare const deepMerge: <T extends Record<string, any>>(target: T, source: Partial<T>) => T;
|
|
245
|
+
|
|
228
246
|
/**
|
|
229
247
|
* The default Organisation value, used in auth/login flow [`genesislcap-foundation-login`](https://link-to-docs).
|
|
230
248
|
* @remarks Optional.
|
|
@@ -820,6 +838,8 @@ export declare const inSymphonyDesktop: () => boolean;
|
|
|
820
838
|
*/
|
|
821
839
|
export declare const isDev: () => boolean;
|
|
822
840
|
|
|
841
|
+
export declare const isFeatureActivated: (feature: string) => boolean;
|
|
842
|
+
|
|
823
843
|
/**
|
|
824
844
|
* JSON replacer function.
|
|
825
845
|
* @param key - The object key.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
|
2
|
+
|
|
3
|
+
[Home](./index.md) > [@genesislcap/foundation-utils](./foundation-utils.md) > [deepMerge](./foundation-utils.deepmerge.md)
|
|
4
|
+
|
|
5
|
+
## deepMerge() function
|
|
6
|
+
|
|
7
|
+
Deep merges two objects, with source values taking precedence over target values. Arrays are replaced (not merged), and null/undefined values in source are preserved.
|
|
8
|
+
|
|
9
|
+
**Signature:**
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
deepMerge: <T extends Record<string, any>>(target: T, source: Partial<T>) => T
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Parameters
|
|
16
|
+
|
|
17
|
+
<table><thead><tr><th>
|
|
18
|
+
|
|
19
|
+
Parameter
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
</th><th>
|
|
23
|
+
|
|
24
|
+
Type
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
</th><th>
|
|
28
|
+
|
|
29
|
+
Description
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
</th></tr></thead>
|
|
33
|
+
<tbody><tr><td>
|
|
34
|
+
|
|
35
|
+
target
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
</td><td>
|
|
39
|
+
|
|
40
|
+
T
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
</td><td>
|
|
44
|
+
|
|
45
|
+
The target object to merge into (defaults/base values)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
</td></tr>
|
|
49
|
+
<tr><td>
|
|
50
|
+
|
|
51
|
+
source
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
</td><td>
|
|
55
|
+
|
|
56
|
+
Partial<T>
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
</td><td>
|
|
60
|
+
|
|
61
|
+
The source object to merge from (overrides)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
</td></tr>
|
|
65
|
+
</tbody></table>
|
|
66
|
+
|
|
67
|
+
**Returns:**
|
|
68
|
+
|
|
69
|
+
T
|
|
70
|
+
|
|
71
|
+
A new merged object with source values taking precedence
|
|
72
|
+
|
|
73
|
+
## Example
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
```ts
|
|
77
|
+
const defaults = { a: 1, b: { c: 2, d: 3 } };
|
|
78
|
+
const overrides = { b: { c: 4 } };
|
|
79
|
+
const merged = deepMerge(defaults, overrides);
|
|
80
|
+
// Result: { a: 1, b: { c: 4, d: 3 } }
|
|
81
|
+
```
|
|
82
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!-- Do not edit this file. It is automatically generated by API Documenter. -->
|
|
2
|
+
|
|
3
|
+
[Home](./index.md) > [@genesislcap/foundation-utils](./foundation-utils.md) > [isFeatureActivated](./foundation-utils.isfeatureactivated.md)
|
|
4
|
+
|
|
5
|
+
## isFeatureActivated() function
|
|
6
|
+
|
|
7
|
+
**Signature:**
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
isFeatureActivated: (feature: string) => boolean
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Parameters
|
|
14
|
+
|
|
15
|
+
<table><thead><tr><th>
|
|
16
|
+
|
|
17
|
+
Parameter
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
</th><th>
|
|
21
|
+
|
|
22
|
+
Type
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
</th><th>
|
|
26
|
+
|
|
27
|
+
Description
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
</th></tr></thead>
|
|
31
|
+
<tbody><tr><td>
|
|
32
|
+
|
|
33
|
+
feature
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
</td><td>
|
|
37
|
+
|
|
38
|
+
string
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
</td><td>
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
</td></tr>
|
|
45
|
+
</tbody></table>
|
|
46
|
+
|
|
47
|
+
**Returns:**
|
|
48
|
+
|
|
49
|
+
boolean
|
|
50
|
+
|
|
@@ -258,6 +258,17 @@ Decodes a value from base64.
|
|
|
258
258
|
Decodes a value from base64 with a prefix.
|
|
259
259
|
|
|
260
260
|
|
|
261
|
+
</td></tr>
|
|
262
|
+
<tr><td>
|
|
263
|
+
|
|
264
|
+
[deepMerge(target, source)](./foundation-utils.deepmerge.md)
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
</td><td>
|
|
268
|
+
|
|
269
|
+
Deep merges two objects, with source values taking precedence over target values. Arrays are replaced (not merged), and null/undefined values in source are preserved.
|
|
270
|
+
|
|
271
|
+
|
|
261
272
|
</td></tr>
|
|
262
273
|
<tr><td>
|
|
263
274
|
|
|
@@ -454,6 +465,15 @@ Returns a boolean value indicating whether the user is running the Symphony desk
|
|
|
454
465
|
Determines if the current environment is a development environment.
|
|
455
466
|
|
|
456
467
|
|
|
468
|
+
</td></tr>
|
|
469
|
+
<tr><td>
|
|
470
|
+
|
|
471
|
+
[isFeatureActivated(feature)](./foundation-utils.isfeatureactivated.md)
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
</td><td>
|
|
475
|
+
|
|
476
|
+
|
|
457
477
|
</td></tr>
|
|
458
478
|
<tr><td>
|
|
459
479
|
|
|
@@ -143,6 +143,9 @@ export const decodeFromBase64: (base64Value: string) => string | ArrayBuffer;
|
|
|
143
143
|
// @public
|
|
144
144
|
export const decodeFromBase64WithPrefix: (value: string) => string | ArrayBuffer;
|
|
145
145
|
|
|
146
|
+
// @public
|
|
147
|
+
export const deepMerge: <T extends Record<string, any>>(target: T, source: Partial<T>) => T;
|
|
148
|
+
|
|
146
149
|
// @public
|
|
147
150
|
export let DEFAULT_ORGANISATION: string;
|
|
148
151
|
|
|
@@ -517,6 +520,9 @@ export const inSymphonyDesktop: () => boolean;
|
|
|
517
520
|
// @public
|
|
518
521
|
export const isDev: () => boolean;
|
|
519
522
|
|
|
523
|
+
// @public (undocumented)
|
|
524
|
+
export const isFeatureActivated: (feature: string) => boolean;
|
|
525
|
+
|
|
520
526
|
// @public
|
|
521
527
|
export function JSONReplacer(key: string, value: any): any;
|
|
522
528
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genesislcap/foundation-utils",
|
|
3
3
|
"description": "Genesis Foundation Utils",
|
|
4
|
-
"version": "14.
|
|
4
|
+
"version": "14.373.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"license": "SEE LICENSE IN license.txt",
|
|
7
7
|
"main": "dist/esm/index.js",
|
|
@@ -27,18 +27,18 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@genesislcap/foundation-testing": "14.
|
|
31
|
-
"@genesislcap/genx": "14.
|
|
32
|
-
"@genesislcap/rollup-builder": "14.
|
|
33
|
-
"@genesislcap/ts-builder": "14.
|
|
34
|
-
"@genesislcap/uvu-playwright-builder": "14.
|
|
35
|
-
"@genesislcap/vite-builder": "14.
|
|
36
|
-
"@genesislcap/webpack-builder": "14.
|
|
30
|
+
"@genesislcap/foundation-testing": "14.373.0",
|
|
31
|
+
"@genesislcap/genx": "14.373.0",
|
|
32
|
+
"@genesislcap/rollup-builder": "14.373.0",
|
|
33
|
+
"@genesislcap/ts-builder": "14.373.0",
|
|
34
|
+
"@genesislcap/uvu-playwright-builder": "14.373.0",
|
|
35
|
+
"@genesislcap/vite-builder": "14.373.0",
|
|
36
|
+
"@genesislcap/webpack-builder": "14.373.0",
|
|
37
37
|
"@types/json-schema": "^7.0.11"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@genesislcap/expression-builder": "14.
|
|
41
|
-
"@genesislcap/foundation-logger": "14.
|
|
40
|
+
"@genesislcap/expression-builder": "14.373.0",
|
|
41
|
+
"@genesislcap/foundation-logger": "14.373.0",
|
|
42
42
|
"@microsoft/fast-components": "2.30.6",
|
|
43
43
|
"@microsoft/fast-element": "1.14.0",
|
|
44
44
|
"@microsoft/fast-foundation": "2.49.6",
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"access": "public"
|
|
57
57
|
},
|
|
58
58
|
"customElements": "dist/custom-elements.json",
|
|
59
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "134490c6c8be9d443484692e1769bda61b00fa1e"
|
|
60
60
|
}
|