@okf/ootils 1.1.0 → 1.2.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/index.d.mts CHANGED
@@ -1,3 +1,25 @@
1
1
  declare function add(a: number, b: number): number;
2
2
 
3
- export { add };
3
+ declare const deleteVal: (data: any, valuePath: string) => any;
4
+
5
+ type ValuePath = string | string[];
6
+ type DataValue = any;
7
+ interface GetValOptions {
8
+ flattenIfValueIsArray?: boolean;
9
+ }
10
+
11
+ declare const setVal: (data: any, valuePath: string, value: DataValue) => any;
12
+
13
+ /**
14
+ *
15
+ * @param {*} data
16
+ * @param {*} valuePath
17
+ * @returns
18
+ * - if target value is an array found inside an array, it will flatten them out so that there is a single array
19
+ * - if target value is an array NOT found inside an array, that will be returned as is.
20
+ * - if target value is a string/object/number/boolean found inside an array of arrays, then the inner arrays will be flattened so that there is a single array
21
+ * - if target value is a string/object/number/boolean NOT found inside an array, it will be returned as is.
22
+ */
23
+ declare const getVal: (data: any, valuePath: ValuePath, options?: GetValOptions, depthIdx?: number) => any;
24
+
25
+ export { add, deleteVal, getVal, setVal };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,25 @@
1
1
  declare function add(a: number, b: number): number;
2
2
 
3
- export { add };
3
+ declare const deleteVal: (data: any, valuePath: string) => any;
4
+
5
+ type ValuePath = string | string[];
6
+ type DataValue = any;
7
+ interface GetValOptions {
8
+ flattenIfValueIsArray?: boolean;
9
+ }
10
+
11
+ declare const setVal: (data: any, valuePath: string, value: DataValue) => any;
12
+
13
+ /**
14
+ *
15
+ * @param {*} data
16
+ * @param {*} valuePath
17
+ * @returns
18
+ * - if target value is an array found inside an array, it will flatten them out so that there is a single array
19
+ * - if target value is an array NOT found inside an array, that will be returned as is.
20
+ * - if target value is a string/object/number/boolean found inside an array of arrays, then the inner arrays will be flattened so that there is a single array
21
+ * - if target value is a string/object/number/boolean NOT found inside an array, it will be returned as is.
22
+ */
23
+ declare const getVal: (data: any, valuePath: ValuePath, options?: GetValOptions, depthIdx?: number) => any;
24
+
25
+ export { add, deleteVal, getVal, setVal };
package/dist/index.js CHANGED
@@ -20,7 +20,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
- add: () => add
23
+ add: () => add,
24
+ deleteVal: () => deleteVal,
25
+ getVal: () => getVal,
26
+ setVal: () => setVal
24
27
  });
25
28
  module.exports = __toCommonJS(index_exports);
26
29
 
@@ -28,7 +31,141 @@ module.exports = __toCommonJS(index_exports);
28
31
  function add(a, b) {
29
32
  return a + b;
30
33
  }
34
+
35
+ // src/utils/getterSetterDeleter/utils/set_deleteVal.ts
36
+ var set_deleteVal = (action, data, valuePath, value) => {
37
+ if (valuePath === void 0) return;
38
+ if (valuePath === null && action === "set") {
39
+ data = value;
40
+ return data;
41
+ }
42
+ let dataRef = data;
43
+ const keysArray = valuePath.split(".");
44
+ const len = keysArray.length;
45
+ let valIsUndefined = false;
46
+ for (let i = 0; i < len - 1; i++) {
47
+ const key = keysArray[i];
48
+ if (!dataRef[key]) {
49
+ if (action === "set") {
50
+ const nextKey = keysArray[i + 1];
51
+ if (nextKey && !isNaN(parseInt(nextKey))) {
52
+ dataRef[key] = [];
53
+ } else {
54
+ dataRef[key] = {};
55
+ }
56
+ } else {
57
+ valIsUndefined = true;
58
+ break;
59
+ }
60
+ }
61
+ dataRef = dataRef[key];
62
+ }
63
+ if (valIsUndefined) return void 0;
64
+ if (action === "set") {
65
+ dataRef[keysArray[len - 1]] = value;
66
+ return data;
67
+ } else if (action === "delete") {
68
+ if (Array.isArray(dataRef)) {
69
+ dataRef.splice(parseInt(keysArray[len - 1]), 1);
70
+ } else {
71
+ delete dataRef[keysArray[len - 1]];
72
+ }
73
+ return data;
74
+ }
75
+ };
76
+
77
+ // src/utils/getterSetterDeleter/deleteVal.ts
78
+ var deleteVal = (data, valuePath) => {
79
+ return set_deleteVal("delete", data, valuePath);
80
+ };
81
+
82
+ // src/utils/getterSetterDeleter/setVal.ts
83
+ var setVal = (data, valuePath, value) => {
84
+ return set_deleteVal("set", data, valuePath, value);
85
+ };
86
+
87
+ // src/utils/getterSetterDeleter/utils/flattenArrayOfArrays.ts
88
+ var flattenArrayOfArrays = ({
89
+ array,
90
+ flattenLastArray = true,
91
+ toReturn = []
92
+ }) => {
93
+ array.map((ary) => {
94
+ if (Array.isArray(ary)) {
95
+ if (flattenLastArray === true) {
96
+ if (ary.some((childAry) => !Array.isArray(childAry))) {
97
+ toReturn.push(ary);
98
+ } else {
99
+ flattenArrayOfArrays({ array: ary, flattenLastArray, toReturn });
100
+ }
101
+ } else {
102
+ flattenArrayOfArrays({ array: ary, flattenLastArray, toReturn });
103
+ }
104
+ } else {
105
+ toReturn.push(ary);
106
+ }
107
+ });
108
+ return toReturn;
109
+ };
110
+
111
+ // src/utils/getterSetterDeleter/getVal.ts
112
+ var getVal = (data, valuePath, options = {}, depthIdx = 0) => {
113
+ let value = null;
114
+ const getFinalVal = (data2, valuePath2, options2, depthIdx2) => {
115
+ return Array.isArray(data2) ? data2.map((R) => getValV2_getter(R, valuePath2, options2, depthIdx2)) : getValV2_getter(data2, valuePath2, options2, depthIdx2);
116
+ };
117
+ if (Array.isArray(valuePath)) {
118
+ for (let i = 0; i < valuePath.length; i++) {
119
+ value = getFinalVal(data, valuePath[i], options, depthIdx);
120
+ if (value) break;
121
+ }
122
+ } else {
123
+ value = getFinalVal(data, valuePath, options, depthIdx);
124
+ }
125
+ return value;
126
+ };
127
+ var getValV2_getter = (data, valuePath, options, depthIdx) => {
128
+ const { flattenIfValueIsArray = true } = options;
129
+ if (valuePath === null) return data;
130
+ let dataRef = data;
131
+ const keysArray = valuePath.split(".");
132
+ const len = keysArray.length;
133
+ let valIsUndefined = false;
134
+ let thisIterationFoundAry = false;
135
+ for (let i = 0; i < len - 1; i++) {
136
+ const key = keysArray[i];
137
+ if (!thisIterationFoundAry) {
138
+ if (!dataRef[key]) {
139
+ valIsUndefined = true;
140
+ break;
141
+ }
142
+ dataRef = dataRef[key];
143
+ } else {
144
+ const nestedAryResponse = dataRef.map((dataRefItem) => {
145
+ const remainingValuePath = keysArray.filter((dd, ii) => ii >= i).join(".");
146
+ return getVal(dataRefItem, remainingValuePath, options, depthIdx + 1);
147
+ });
148
+ return flattenArrayOfArrays({
149
+ array: nestedAryResponse,
150
+ flattenLastArray: depthIdx === 0 && flattenIfValueIsArray === false ? false : true
151
+ });
152
+ }
153
+ if (Array.isArray(dataRef) && Number.isNaN(parseInt(keysArray[i + 1]))) thisIterationFoundAry = true;
154
+ }
155
+ if (valIsUndefined) return void 0;
156
+ if (thisIterationFoundAry) {
157
+ const toReturn = dataRef.map((d) => d[keysArray[len - 1]]);
158
+ return flattenArrayOfArrays({
159
+ array: toReturn,
160
+ flattenLastArray: flattenIfValueIsArray
161
+ });
162
+ }
163
+ return dataRef[keysArray[len - 1]];
164
+ };
31
165
  // Annotate the CommonJS export names for ESM import in node:
32
166
  0 && (module.exports = {
33
- add
167
+ add,
168
+ deleteVal,
169
+ getVal,
170
+ setVal
34
171
  });
package/dist/index.mjs CHANGED
@@ -2,6 +2,140 @@
2
2
  function add(a, b) {
3
3
  return a + b;
4
4
  }
5
+
6
+ // src/utils/getterSetterDeleter/utils/set_deleteVal.ts
7
+ var set_deleteVal = (action, data, valuePath, value) => {
8
+ if (valuePath === void 0) return;
9
+ if (valuePath === null && action === "set") {
10
+ data = value;
11
+ return data;
12
+ }
13
+ let dataRef = data;
14
+ const keysArray = valuePath.split(".");
15
+ const len = keysArray.length;
16
+ let valIsUndefined = false;
17
+ for (let i = 0; i < len - 1; i++) {
18
+ const key = keysArray[i];
19
+ if (!dataRef[key]) {
20
+ if (action === "set") {
21
+ const nextKey = keysArray[i + 1];
22
+ if (nextKey && !isNaN(parseInt(nextKey))) {
23
+ dataRef[key] = [];
24
+ } else {
25
+ dataRef[key] = {};
26
+ }
27
+ } else {
28
+ valIsUndefined = true;
29
+ break;
30
+ }
31
+ }
32
+ dataRef = dataRef[key];
33
+ }
34
+ if (valIsUndefined) return void 0;
35
+ if (action === "set") {
36
+ dataRef[keysArray[len - 1]] = value;
37
+ return data;
38
+ } else if (action === "delete") {
39
+ if (Array.isArray(dataRef)) {
40
+ dataRef.splice(parseInt(keysArray[len - 1]), 1);
41
+ } else {
42
+ delete dataRef[keysArray[len - 1]];
43
+ }
44
+ return data;
45
+ }
46
+ };
47
+
48
+ // src/utils/getterSetterDeleter/deleteVal.ts
49
+ var deleteVal = (data, valuePath) => {
50
+ return set_deleteVal("delete", data, valuePath);
51
+ };
52
+
53
+ // src/utils/getterSetterDeleter/setVal.ts
54
+ var setVal = (data, valuePath, value) => {
55
+ return set_deleteVal("set", data, valuePath, value);
56
+ };
57
+
58
+ // src/utils/getterSetterDeleter/utils/flattenArrayOfArrays.ts
59
+ var flattenArrayOfArrays = ({
60
+ array,
61
+ flattenLastArray = true,
62
+ toReturn = []
63
+ }) => {
64
+ array.map((ary) => {
65
+ if (Array.isArray(ary)) {
66
+ if (flattenLastArray === true) {
67
+ if (ary.some((childAry) => !Array.isArray(childAry))) {
68
+ toReturn.push(ary);
69
+ } else {
70
+ flattenArrayOfArrays({ array: ary, flattenLastArray, toReturn });
71
+ }
72
+ } else {
73
+ flattenArrayOfArrays({ array: ary, flattenLastArray, toReturn });
74
+ }
75
+ } else {
76
+ toReturn.push(ary);
77
+ }
78
+ });
79
+ return toReturn;
80
+ };
81
+
82
+ // src/utils/getterSetterDeleter/getVal.ts
83
+ var getVal = (data, valuePath, options = {}, depthIdx = 0) => {
84
+ let value = null;
85
+ const getFinalVal = (data2, valuePath2, options2, depthIdx2) => {
86
+ return Array.isArray(data2) ? data2.map((R) => getValV2_getter(R, valuePath2, options2, depthIdx2)) : getValV2_getter(data2, valuePath2, options2, depthIdx2);
87
+ };
88
+ if (Array.isArray(valuePath)) {
89
+ for (let i = 0; i < valuePath.length; i++) {
90
+ value = getFinalVal(data, valuePath[i], options, depthIdx);
91
+ if (value) break;
92
+ }
93
+ } else {
94
+ value = getFinalVal(data, valuePath, options, depthIdx);
95
+ }
96
+ return value;
97
+ };
98
+ var getValV2_getter = (data, valuePath, options, depthIdx) => {
99
+ const { flattenIfValueIsArray = true } = options;
100
+ if (valuePath === null) return data;
101
+ let dataRef = data;
102
+ const keysArray = valuePath.split(".");
103
+ const len = keysArray.length;
104
+ let valIsUndefined = false;
105
+ let thisIterationFoundAry = false;
106
+ for (let i = 0; i < len - 1; i++) {
107
+ const key = keysArray[i];
108
+ if (!thisIterationFoundAry) {
109
+ if (!dataRef[key]) {
110
+ valIsUndefined = true;
111
+ break;
112
+ }
113
+ dataRef = dataRef[key];
114
+ } else {
115
+ const nestedAryResponse = dataRef.map((dataRefItem) => {
116
+ const remainingValuePath = keysArray.filter((dd, ii) => ii >= i).join(".");
117
+ return getVal(dataRefItem, remainingValuePath, options, depthIdx + 1);
118
+ });
119
+ return flattenArrayOfArrays({
120
+ array: nestedAryResponse,
121
+ flattenLastArray: depthIdx === 0 && flattenIfValueIsArray === false ? false : true
122
+ });
123
+ }
124
+ if (Array.isArray(dataRef) && Number.isNaN(parseInt(keysArray[i + 1]))) thisIterationFoundAry = true;
125
+ }
126
+ if (valIsUndefined) return void 0;
127
+ if (thisIterationFoundAry) {
128
+ const toReturn = dataRef.map((d) => d[keysArray[len - 1]]);
129
+ return flattenArrayOfArrays({
130
+ array: toReturn,
131
+ flattenLastArray: flattenIfValueIsArray
132
+ });
133
+ }
134
+ return dataRef[keysArray[len - 1]];
135
+ };
5
136
  export {
6
- add
137
+ add,
138
+ deleteVal,
139
+ getVal,
140
+ setVal
7
141
  };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.1.0",
6
+ "version": "1.2.0",
7
7
  "description": "Utility functions for both browser and Node.js",
8
8
  "main": "dist/index.js",
9
9
  "module": "dist/index.mjs",