@memberjunction/global 5.41.0 → 5.43.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/README.md +89 -0
- package/dist/KeyedSerialTaskQueue.d.ts +60 -0
- package/dist/KeyedSerialTaskQueue.d.ts.map +1 -0
- package/dist/KeyedSerialTaskQueue.js +76 -0
- package/dist/KeyedSerialTaskQueue.js.map +1 -0
- package/dist/SafeExpressionEvaluator.d.ts +5 -0
- package/dist/SafeExpressionEvaluator.d.ts.map +1 -1
- package/dist/SafeExpressionEvaluator.js +26 -11
- package/dist/SafeExpressionEvaluator.js.map +1 -1
- package/dist/__tests__/FieldRulesEvaluator.test.d.ts +2 -0
- package/dist/__tests__/FieldRulesEvaluator.test.d.ts.map +1 -0
- package/dist/__tests__/FieldRulesEvaluator.test.js +167 -0
- package/dist/__tests__/FieldRulesEvaluator.test.js.map +1 -0
- package/dist/__tests__/KeyedSerialTaskQueue.test.d.ts +2 -0
- package/dist/__tests__/KeyedSerialTaskQueue.test.d.ts.map +1 -0
- package/dist/__tests__/KeyedSerialTaskQueue.test.js +91 -0
- package/dist/__tests__/KeyedSerialTaskQueue.test.js.map +1 -0
- package/dist/__tests__/UUIDCompliance.test.js +2 -0
- package/dist/__tests__/UUIDCompliance.test.js.map +1 -1
- package/dist/__tests__/valueMapping.test.d.ts +6 -0
- package/dist/__tests__/valueMapping.test.d.ts.map +1 -0
- package/dist/__tests__/valueMapping.test.js +68 -0
- package/dist/__tests__/valueMapping.test.js.map +1 -0
- package/dist/fieldRules/FieldRulesEvaluator.d.ts +34 -0
- package/dist/fieldRules/FieldRulesEvaluator.d.ts.map +1 -0
- package/dist/fieldRules/FieldRulesEvaluator.js +130 -0
- package/dist/fieldRules/FieldRulesEvaluator.js.map +1 -0
- package/dist/fieldRules/FieldTransformEngine.d.ts +44 -0
- package/dist/fieldRules/FieldTransformEngine.d.ts.map +1 -0
- package/dist/fieldRules/FieldTransformEngine.js +189 -0
- package/dist/fieldRules/FieldTransformEngine.js.map +1 -0
- package/dist/fieldRules/index.d.ts +6 -0
- package/dist/fieldRules/index.d.ts.map +1 -0
- package/dist/fieldRules/index.js +6 -0
- package/dist/fieldRules/index.js.map +1 -0
- package/dist/fieldRules/rules.d.ts +135 -0
- package/dist/fieldRules/rules.d.ts.map +1 -0
- package/dist/fieldRules/rules.js +2 -0
- package/dist/fieldRules/rules.js.map +1 -0
- package/dist/fieldRules/transformRegistry.d.ts +22 -0
- package/dist/fieldRules/transformRegistry.d.ts.map +1 -0
- package/dist/fieldRules/transformRegistry.js +33 -0
- package/dist/fieldRules/transformRegistry.js.map +1 -0
- package/dist/fieldRules/transforms.d.ts +102 -0
- package/dist/fieldRules/transforms.d.ts.map +1 -0
- package/dist/fieldRules/transforms.js +8 -0
- package/dist/fieldRules/transforms.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/valueMapping.d.ts +33 -0
- package/dist/valueMapping.d.ts.map +1 -0
- package/dist/valueMapping.js +104 -0
- package/dist/valueMapping.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Generic value-mapping resolver. Resolves a declarative mapping config of reference
|
|
3
|
+
* strings against a set of named sources. Genericized from the Flow Agent input-mapping mechanism so
|
|
4
|
+
* the same engine can drive agent step mappings, Record Process input/output mappings, and any other
|
|
5
|
+
* "map values from named sources" need — keeping the logic in one canonical, reusable place.
|
|
6
|
+
*
|
|
7
|
+
* Reference syntax (a mapping value that is a string):
|
|
8
|
+
* - `static:<literal>` → the literal text after the colon
|
|
9
|
+
* - `<sourceName>.<path>` → value at `path` within `sources[sourceName]` (source name matched
|
|
10
|
+
* case-insensitively; `path` supports dot + `arr[0]` indexing)
|
|
11
|
+
* - anything else → returned verbatim (treated as a literal)
|
|
12
|
+
*
|
|
13
|
+
* Objects and arrays are resolved recursively, preserving shape.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Reads a value at a dot/bracket path from an object (e.g. `a.b`, `a.items[0].name`). Path
|
|
17
|
+
* navigation is case-sensitive; returns `undefined` if any segment is missing.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getValueAtPath(obj: unknown, path: string): unknown;
|
|
20
|
+
/**
|
|
21
|
+
* Resolves a single mapping reference against the supplied named sources. See the module overview
|
|
22
|
+
* for the reference syntax. Non-string refs are returned unchanged.
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveMappingRef(ref: unknown, sources: Record<string, unknown>): unknown;
|
|
25
|
+
/**
|
|
26
|
+
* Recursively resolves a mapping config (string / array / object) against named sources, returning a
|
|
27
|
+
* structure of the same shape with every reference resolved.
|
|
28
|
+
*
|
|
29
|
+
* @param mapping - The mapping config (e.g. `{ name: 'record.Name', when: 'static:today' }`).
|
|
30
|
+
* @param sources - Named sources to resolve references against (e.g. `{ record, context }`).
|
|
31
|
+
*/
|
|
32
|
+
export declare function resolveValueMapping<T = Record<string, unknown>>(mapping: unknown, sources: Record<string, unknown>): T;
|
|
33
|
+
//# sourceMappingURL=valueMapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valueMapping.d.ts","sourceRoot":"","sources":["../src/valueMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CA6BlE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAwBzF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAetH"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Generic value-mapping resolver. Resolves a declarative mapping config of reference
|
|
3
|
+
* strings against a set of named sources. Genericized from the Flow Agent input-mapping mechanism so
|
|
4
|
+
* the same engine can drive agent step mappings, Record Process input/output mappings, and any other
|
|
5
|
+
* "map values from named sources" need — keeping the logic in one canonical, reusable place.
|
|
6
|
+
*
|
|
7
|
+
* Reference syntax (a mapping value that is a string):
|
|
8
|
+
* - `static:<literal>` → the literal text after the colon
|
|
9
|
+
* - `<sourceName>.<path>` → value at `path` within `sources[sourceName]` (source name matched
|
|
10
|
+
* case-insensitively; `path` supports dot + `arr[0]` indexing)
|
|
11
|
+
* - anything else → returned verbatim (treated as a literal)
|
|
12
|
+
*
|
|
13
|
+
* Objects and arrays are resolved recursively, preserving shape.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Reads a value at a dot/bracket path from an object (e.g. `a.b`, `a.items[0].name`). Path
|
|
17
|
+
* navigation is case-sensitive; returns `undefined` if any segment is missing.
|
|
18
|
+
*/
|
|
19
|
+
export function getValueAtPath(obj, path) {
|
|
20
|
+
if (!path) {
|
|
21
|
+
return obj;
|
|
22
|
+
}
|
|
23
|
+
let current = obj;
|
|
24
|
+
for (const part of path.split('.')) {
|
|
25
|
+
if (!part) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const arrayMatch = part.match(/^([^[]+)\[(\d+)\]$/);
|
|
29
|
+
if (arrayMatch) {
|
|
30
|
+
const name = arrayMatch[1];
|
|
31
|
+
const index = parseInt(arrayMatch[2], 10);
|
|
32
|
+
if (current && typeof current === 'object' && name in current) {
|
|
33
|
+
const arr = current[name];
|
|
34
|
+
current = Array.isArray(arr) && index >= 0 && index < arr.length ? arr[index] : undefined;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else if (current && typeof current === 'object' && part in current) {
|
|
41
|
+
current = current[part];
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
if (current === undefined) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return current;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Resolves a single mapping reference against the supplied named sources. See the module overview
|
|
54
|
+
* for the reference syntax. Non-string refs are returned unchanged.
|
|
55
|
+
*/
|
|
56
|
+
export function resolveMappingRef(ref, sources) {
|
|
57
|
+
if (typeof ref !== 'string') {
|
|
58
|
+
return ref;
|
|
59
|
+
}
|
|
60
|
+
const trimmed = ref.trim();
|
|
61
|
+
if (trimmed.toLowerCase().startsWith('static:')) {
|
|
62
|
+
return ref.substring(ref.indexOf(':') + 1);
|
|
63
|
+
}
|
|
64
|
+
// A bare reference that matches a source name returns the whole source value (useful for scalar
|
|
65
|
+
// sources, e.g. `recordId`). Checked before the dotted-path form below.
|
|
66
|
+
const wholeSourceKey = Object.keys(sources).find((k) => k.toLowerCase() === trimmed.toLowerCase());
|
|
67
|
+
if (wholeSourceKey !== undefined) {
|
|
68
|
+
return sources[wholeSourceKey];
|
|
69
|
+
}
|
|
70
|
+
const dot = trimmed.indexOf('.');
|
|
71
|
+
if (dot > 0) {
|
|
72
|
+
const sourceName = trimmed.substring(0, dot);
|
|
73
|
+
const sourceKey = Object.keys(sources).find((k) => k.toLowerCase() === sourceName.toLowerCase());
|
|
74
|
+
if (sourceKey !== undefined) {
|
|
75
|
+
const path = ref.substring(ref.indexOf('.') + 1);
|
|
76
|
+
return getValueAtPath(sources[sourceKey], path);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return ref; // no recognized source prefix → treat as a literal
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Recursively resolves a mapping config (string / array / object) against named sources, returning a
|
|
83
|
+
* structure of the same shape with every reference resolved.
|
|
84
|
+
*
|
|
85
|
+
* @param mapping - The mapping config (e.g. `{ name: 'record.Name', when: 'static:today' }`).
|
|
86
|
+
* @param sources - Named sources to resolve references against (e.g. `{ record, context }`).
|
|
87
|
+
*/
|
|
88
|
+
export function resolveValueMapping(mapping, sources) {
|
|
89
|
+
if (typeof mapping === 'string') {
|
|
90
|
+
return resolveMappingRef(mapping, sources);
|
|
91
|
+
}
|
|
92
|
+
if (Array.isArray(mapping)) {
|
|
93
|
+
return mapping.map((item) => resolveValueMapping(item, sources));
|
|
94
|
+
}
|
|
95
|
+
if (mapping && typeof mapping === 'object') {
|
|
96
|
+
const out = {};
|
|
97
|
+
for (const [key, value] of Object.entries(mapping)) {
|
|
98
|
+
out[key] = resolveValueMapping(value, sources);
|
|
99
|
+
}
|
|
100
|
+
return out;
|
|
101
|
+
}
|
|
102
|
+
return mapping;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=valueMapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valueMapping.js","sourceRoot":"","sources":["../src/valueMapping.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED