-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkosmo.js
52 lines (50 loc) · 1.78 KB
/
kosmo.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
function Kosmo() {
var _ = { // "Private" API
kosmoCatalog: "KOSMO_CATALOG",
setParams: (paramsObject, flatParamsSet) => {
_.clearParams();
flatParamsSet = flatParamsSet || {};
var props = Object.keys(paramsObject);
var toRecurse = [];
for ( var i = 0; i < props.length; i++ ) {
var propName = props[i];
var propValue = paramsObject[propName];
if ( typeof propValue === "object" ) {
toRecurse.push(propValue);
}
else {
flatParamsSet[propName] = propValue;
}
}
for ( i = 0; i < toRecurse.length; i++ ) {
_.setParams(toRecurse[i],flatParamsSet);
}
var flatProps = Object.keys(flatParamsSet)
for ( i = 0; i < flatProps.length; i++ ) {
propName = flatProps[i];
propValue = flatParamsSet[propName];
pm.globals.set(propName, propValue);
}
pm.globals.set(_.kosmoCatalog, JSON.stringify(flatProps))
},
clearParams: () => {
var serializedCatalog = pm.globals.get(_.kosmoCatalog);
if (serializedCatalog) {
var kosmoVarNames = JSON.parse(serializedCatalog)
for ( var i = 0; i < kosmoVarNames.length; i++ ) {
pm.globals.unset(kosmoVarNames[i])
}
pm.globals.unset(_.kosmoCatalog)
}
}
}
var api = { // Public API
clearParams: () => {
_.clearParams()
},
setParamsByObject: (localParamsObject) => {
_.setParams(localParamsObject)
}
}
return api;
}