riducers 1.2.3 → 1.2.4

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.ts CHANGED
@@ -3,9 +3,10 @@ interface ModelObj {
3
3
  }
4
4
  type SortFn = (a: ModelObj, b: ModelObj) => number;
5
5
  interface ReducerOpts {
6
- stateType?: 'list' | 'map' | 'static';
6
+ stateType?: "list" | "map" | "static" | "mapList";
7
7
  sort?: SortFn;
8
8
  keyName?: string;
9
+ mapKeyName?: string;
9
10
  initialState?: any;
10
11
  }
11
12
  declare function reducerBuilder(key: string, opts?: ReducerOpts): (state: any, action: {
package/dist/index.js CHANGED
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.reducerBuilder = void 0;
4
4
  const keySort = (key) => (a, b) => {
5
- if (typeof a[key] === 'number' && typeof b[key] === 'number')
5
+ if (typeof a[key] === "number" && typeof b[key] === "number")
6
6
  return a[key] - b[key];
7
- else if (typeof a[key] === 'string' && typeof b[key] === 'string')
7
+ else if (typeof a[key] === "string" && typeof b[key] === "string")
8
8
  return a[key].localeCompare(b[key]);
9
9
  return 0;
10
10
  };
@@ -83,6 +83,13 @@ const listDeleteReducer = (state, action) => {
83
83
  }
84
84
  return newState;
85
85
  };
86
+ const listShiftReducer = (state) => {
87
+ if (!state || !Array.isArray(state))
88
+ state = [];
89
+ let newState = [...state];
90
+ newState.shift();
91
+ return newState;
92
+ };
86
93
  const listReplaceReducer = (state, action) => {
87
94
  let resp = Array.isArray(action.payload) ? action.payload : [action.payload];
88
95
  resp = resp.map((r) => ({ ...r }));
@@ -99,13 +106,16 @@ const objReplaceReducer = (state, action) => {
99
106
  const objDeleteReducer = () => {
100
107
  return null;
101
108
  };
102
- const OPS = ['insert', 'replace', 'delete', 'clear', 'sort'];
109
+ const OPS = ["insert", "replace", "delete", "clear", "sort"];
103
110
  function reducerBuilder(key, opts) {
104
111
  var _a;
105
112
  let initialState = opts === null || opts === void 0 ? void 0 : opts.initialState;
106
- let stateType = (_a = opts === null || opts === void 0 ? void 0 : opts.stateType) !== null && _a !== void 0 ? _a : 'static';
107
- let isList = stateType === 'list';
108
- let isMap = stateType === 'map';
113
+ let stateType = (_a = opts === null || opts === void 0 ? void 0 : opts.stateType) !== null && _a !== void 0 ? _a : "static";
114
+ let isList = stateType === "list";
115
+ let isMap = stateType === "map";
116
+ let isMapList = stateType === "mapList";
117
+ if (isMapList && !(opts === null || opts === void 0 ? void 0 : opts.mapKeyName))
118
+ throw new Error("mapKeyName is required for stateType: mapList");
109
119
  if (initialState === undefined) {
110
120
  if (isList)
111
121
  initialState = [];
@@ -123,6 +133,8 @@ function reducerBuilder(key, opts) {
123
133
  return [];
124
134
  else if (isMap)
125
135
  return {};
136
+ else if (isMapList)
137
+ return {};
126
138
  else
127
139
  return null;
128
140
  }
@@ -133,6 +145,7 @@ function reducerBuilder(key, opts) {
133
145
  let op = m[1];
134
146
  let payload = action.payload;
135
147
  let keyName = (_a = opts === null || opts === void 0 ? void 0 : opts.keyName) !== null && _a !== void 0 ? _a : "id";
148
+ let mapKeyName = opts === null || opts === void 0 ? void 0 : opts.mapKeyName;
136
149
  if (isMap && !OPS.includes(op)) {
137
150
  if (payload && !Array.isArray(payload)) {
138
151
  payload[keyName] = op;
@@ -146,32 +159,39 @@ function reducerBuilder(key, opts) {
146
159
  }
147
160
  let sort = (_b = action.sort) !== null && _b !== void 0 ? _b : opts === null || opts === void 0 ? void 0 : opts.sort;
148
161
  if (op === "insert") {
149
- if (isList && payload)
150
- return listInsertReducer(state, { payload, sort, keyName });
162
+ if ((isList || isMapList) && payload)
163
+ return listInsertReducer(state, { payload, sort, keyName, mapKeyName, isMapList });
151
164
  else if (isMap && payload)
152
165
  return mapInsertReducer(state, { payload, keyName });
153
166
  return objInsertReducer(state, { payload });
154
167
  }
155
168
  else if (op === "replace") {
156
- if (isList)
157
- return listReplaceReducer(state, { payload, sort, keyName });
169
+ if (isList || isMapList)
170
+ return listReplaceReducer(state, { payload, sort, keyName, mapKeyName, isMapList });
158
171
  else if (isMap)
159
172
  return mapReplaceReducer(state, { payload, keyName });
160
173
  return objReplaceReducer(state, { payload });
161
174
  }
162
175
  else if (op === "delete") {
163
- if (isList)
164
- return listDeleteReducer(state, { payload, keyName });
176
+ if (isList || isMapList)
177
+ return listDeleteReducer(state, { payload, keyName, mapKeyName, isMapList });
165
178
  else if (isMap)
166
179
  return mapDeleteReducer(state, { payload, keyName });
167
180
  return objDeleteReducer();
168
181
  }
182
+ else if (op === "shift") {
183
+ if (isList || isMapList)
184
+ return listShiftReducer(state);
185
+ else {
186
+ console.error(`unshift is only valid for stateType: list or mapList`);
187
+ }
188
+ }
169
189
  else if (op === "clear") {
170
190
  return initialState;
171
191
  }
172
192
  else if (op === "sort") {
173
- if (isList)
174
- return listSortReducer(state, { sort, keyName });
193
+ if (isList || isMapList)
194
+ return listSortReducer(state, { sort, keyName, mapKeyName, isMapList });
175
195
  }
176
196
  else {
177
197
  console.error(`unknown op (${op}) in action type: ${action.type}. Op should be one of: insert, delete, replace, clear, or sort.`);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/esm/index.d.ts CHANGED
@@ -3,9 +3,10 @@ interface ModelObj {
3
3
  }
4
4
  type SortFn = (a: ModelObj, b: ModelObj) => number;
5
5
  interface ReducerOpts {
6
- stateType?: 'list' | 'map' | 'static';
6
+ stateType?: "list" | "map" | "static" | "mapList";
7
7
  sort?: SortFn;
8
8
  keyName?: string;
9
+ mapKeyName?: string;
9
10
  initialState?: any;
10
11
  }
11
12
  declare function reducerBuilder(key: string, opts?: ReducerOpts): (state: any, action: {
package/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  const keySort = (key) => (a, b) => {
2
- if (typeof a[key] === 'number' && typeof b[key] === 'number')
2
+ if (typeof a[key] === "number" && typeof b[key] === "number")
3
3
  return a[key] - b[key];
4
- else if (typeof a[key] === 'string' && typeof b[key] === 'string')
4
+ else if (typeof a[key] === "string" && typeof b[key] === "string")
5
5
  return a[key].localeCompare(b[key]);
6
6
  return 0;
7
7
  };
@@ -78,6 +78,13 @@ const listDeleteReducer = (state, action) => {
78
78
  }
79
79
  return newState;
80
80
  };
81
+ const listShiftReducer = (state) => {
82
+ if (!state || !Array.isArray(state))
83
+ state = [];
84
+ let newState = [...state];
85
+ newState.shift();
86
+ return newState;
87
+ };
81
88
  const listReplaceReducer = (state, action) => {
82
89
  let resp = Array.isArray(action.payload) ? action.payload : [action.payload];
83
90
  resp = resp.map((r) => ({ ...r }));
@@ -94,12 +101,15 @@ const objReplaceReducer = (state, action) => {
94
101
  const objDeleteReducer = () => {
95
102
  return null;
96
103
  };
97
- const OPS = ['insert', 'replace', 'delete', 'clear', 'sort'];
104
+ const OPS = ["insert", "replace", "delete", "clear", "sort"];
98
105
  function reducerBuilder(key, opts) {
99
106
  let initialState = opts?.initialState;
100
- let stateType = opts?.stateType ?? 'static';
101
- let isList = stateType === 'list';
102
- let isMap = stateType === 'map';
107
+ let stateType = opts?.stateType ?? "static";
108
+ let isList = stateType === "list";
109
+ let isMap = stateType === "map";
110
+ let isMapList = stateType === "mapList";
111
+ if (isMapList && !opts?.mapKeyName)
112
+ throw new Error("mapKeyName is required for stateType: mapList");
103
113
  if (initialState === undefined) {
104
114
  if (isList)
105
115
  initialState = [];
@@ -116,6 +126,8 @@ function reducerBuilder(key, opts) {
116
126
  return [];
117
127
  else if (isMap)
118
128
  return {};
129
+ else if (isMapList)
130
+ return {};
119
131
  else
120
132
  return null;
121
133
  }
@@ -126,6 +138,7 @@ function reducerBuilder(key, opts) {
126
138
  let op = m[1];
127
139
  let payload = action.payload;
128
140
  let keyName = opts?.keyName ?? "id";
141
+ let mapKeyName = opts?.mapKeyName;
129
142
  if (isMap && !OPS.includes(op)) {
130
143
  if (payload && !Array.isArray(payload)) {
131
144
  payload[keyName] = op;
@@ -139,32 +152,39 @@ function reducerBuilder(key, opts) {
139
152
  }
140
153
  let sort = action.sort ?? opts?.sort;
141
154
  if (op === "insert") {
142
- if (isList && payload)
143
- return listInsertReducer(state, { payload, sort, keyName });
155
+ if ((isList || isMapList) && payload)
156
+ return listInsertReducer(state, { payload, sort, keyName, mapKeyName, isMapList });
144
157
  else if (isMap && payload)
145
158
  return mapInsertReducer(state, { payload, keyName });
146
159
  return objInsertReducer(state, { payload });
147
160
  }
148
161
  else if (op === "replace") {
149
- if (isList)
150
- return listReplaceReducer(state, { payload, sort, keyName });
162
+ if (isList || isMapList)
163
+ return listReplaceReducer(state, { payload, sort, keyName, mapKeyName, isMapList });
151
164
  else if (isMap)
152
165
  return mapReplaceReducer(state, { payload, keyName });
153
166
  return objReplaceReducer(state, { payload });
154
167
  }
155
168
  else if (op === "delete") {
156
- if (isList)
157
- return listDeleteReducer(state, { payload, keyName });
169
+ if (isList || isMapList)
170
+ return listDeleteReducer(state, { payload, keyName, mapKeyName, isMapList });
158
171
  else if (isMap)
159
172
  return mapDeleteReducer(state, { payload, keyName });
160
173
  return objDeleteReducer();
161
174
  }
175
+ else if (op === "shift") {
176
+ if (isList || isMapList)
177
+ return listShiftReducer(state);
178
+ else {
179
+ console.error(`unshift is only valid for stateType: list or mapList`);
180
+ }
181
+ }
162
182
  else if (op === "clear") {
163
183
  return initialState;
164
184
  }
165
185
  else if (op === "sort") {
166
- if (isList)
167
- return listSortReducer(state, { sort, keyName });
186
+ if (isList || isMapList)
187
+ return listSortReducer(state, { sort, keyName, mapKeyName, isMapList });
168
188
  }
169
189
  else {
170
190
  console.error(`unknown op (${op}) in action type: ${action.type}. Op should be one of: insert, delete, replace, clear, or sort.`);
package/esm/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "riducers",
3
- "version": "1.2.3",
3
+ "version": "1.2.4",
4
4
  "description": "Dynamic reducers with insert, delete, replace, clear, and sort actions on 'id' based list of objects",
5
5
  "main": "dist/index.js",
6
6
  "module": "esm/index.js",
package/src/index.ts CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  type Id = number | string;
3
2
 
4
3
  interface ModelObj {
@@ -11,47 +10,57 @@ interface ListAction {
11
10
  payload: ModelObj | ModelObj[];
12
11
  sort?: SortFn;
13
12
  keyName: string;
13
+ mapKeyName?: string;
14
+ isMapList: boolean;
15
+ }
16
+
17
+ interface MapAction {
18
+ payload: ModelObj | ModelObj[];
19
+ sort?: SortFn;
20
+ keyName: string;
14
21
  }
15
22
 
16
23
  interface ListSortAction {
17
24
  sort?: SortFn;
18
25
  keyName: string;
26
+ mapKeyName?: string;
27
+ isMapList: boolean;
19
28
  }
20
29
 
21
30
  const keySort = (key: string) => (a: ModelObj, b: ModelObj) => {
22
- if (typeof a[key] === 'number' && typeof b[key] === 'number') return a[key] - b[key];
23
- else if (typeof a[key] === 'string' && typeof b[key] === 'string') return a[key].localeCompare(b[key]);
31
+ if (typeof a[key] === "number" && typeof b[key] === "number") return a[key] - b[key];
32
+ else if (typeof a[key] === "string" && typeof b[key] === "string") return a[key].localeCompare(b[key]);
24
33
  return 0;
25
34
  };
26
35
 
27
- const mapInsertReducer = (state: ModelObj, action: ListAction) => {
36
+ const mapInsertReducer = (state: ModelObj, action: MapAction) => {
28
37
  if (!state) state = {};
29
38
  let resp: ModelObj[] = Array.isArray(action.payload) ? action.payload : [action.payload];
30
- let newState = {...state};
39
+ let newState = { ...state };
31
40
  for (let i in resp) {
32
- if (resp[i]?.[action.keyName]) newState[resp[i][action.keyName]] = {...resp[i]};
41
+ if (resp[i]?.[action.keyName]) newState[resp[i][action.keyName]] = { ...resp[i] };
33
42
  }
34
43
  return newState;
35
- }
44
+ };
36
45
 
37
- const mapDeleteReducer = (state: ModelObj, action: ListAction) => {
46
+ const mapDeleteReducer = (state: ModelObj, action: MapAction) => {
38
47
  if (!state) state = {};
39
48
  let resp: ModelObj[] = Array.isArray(action.payload) ? action.payload : [action.payload];
40
- let newState = {...state};
49
+ let newState = { ...state };
41
50
  for (let i in resp) {
42
51
  delete newState[resp[i][action.keyName]];
43
52
  }
44
53
  return newState;
45
- }
54
+ };
46
55
 
47
- const mapReplaceReducer = (state: ModelObj, action: ListAction) => {
56
+ const mapReplaceReducer = (state: ModelObj, action: MapAction) => {
48
57
  let newState = {} as any;
49
58
  let resp: ModelObj[] = Array.isArray(action.payload) ? action.payload : [action.payload];
50
59
  for (let i in resp) {
51
- if (resp[i]?.[action.keyName]) newState[resp[i][action.keyName]] = {...resp[i]};
60
+ if (resp[i]?.[action.keyName]) newState[resp[i][action.keyName]] = { ...resp[i] };
52
61
  }
53
62
  return newState;
54
- }
63
+ };
55
64
 
56
65
  const listInsertReducer = (state: ModelObj[], action: ListAction) => {
57
66
  if (!state) state = [];
@@ -60,12 +69,12 @@ const listInsertReducer = (state: ModelObj[], action: ListAction) => {
60
69
  let newState = [...state];
61
70
  let respMap: Id[] = resp.map((r: any) => r[action.keyName]);
62
71
  let stateMap: Id[] = newState.map((r: any) => r[action.keyName]);
63
- let toInsert: Id[] = respMap.filter((id : number | string) => stateMap.indexOf(id) < 0);
72
+ let toInsert: Id[] = respMap.filter((id: number | string) => stateMap.indexOf(id) < 0);
64
73
  let toReplace: Id[] = respMap.filter((id: number | string) => stateMap.indexOf(id) >= 0);
65
74
  for (let i in toReplace) {
66
75
  let stateIndex = stateMap.indexOf(toReplace[i]);
67
76
  let respIndex = respMap.indexOf(toReplace[i]);
68
- newState[stateIndex] = {...resp[respIndex]};
77
+ newState[stateIndex] = { ...resp[respIndex] };
69
78
  }
70
79
  if (toInsert.length > 0) {
71
80
  let inserts = toInsert.map((id: number | string) => resp[respMap.indexOf(id)]);
@@ -73,7 +82,7 @@ const listInsertReducer = (state: ModelObj[], action: ListAction) => {
73
82
  }
74
83
  if (action?.sort) newState.sort(action?.sort);
75
84
  return newState;
76
- }
85
+ };
77
86
 
78
87
  const listSortReducer = (state: ModelObj[], action: ListSortAction) => {
79
88
  if (!state) state = [];
@@ -81,7 +90,7 @@ const listSortReducer = (state: ModelObj[], action: ListSortAction) => {
81
90
  let sort = action?.sort ? action.sort : keySort(action.keyName);
82
91
  newState.sort(sort);
83
92
  return newState;
84
- }
93
+ };
85
94
 
86
95
  const listDeleteReducer = (state: ModelObj[], action: ListAction) => {
87
96
  if (!state || !Array.isArray(state)) state = [];
@@ -94,65 +103,78 @@ const listDeleteReducer = (state: ModelObj[], action: ListAction) => {
94
103
  if (index >= 0) newState.splice(index, 1);
95
104
  }
96
105
  return newState;
106
+ };
107
+
108
+ const listShiftReducer = (state: ModelObj[]) => {
109
+ if (!state || !Array.isArray(state)) state = [];
110
+ let newState = [...state];
111
+ newState.shift();
112
+ return newState;
97
113
  }
98
114
 
99
115
  const listReplaceReducer = (state: ModelObj[], action: ListAction) => {
100
116
  let resp: ModelObj[] = Array.isArray(action.payload) ? action.payload : [action.payload];
101
- resp = resp.map((r: any) => ({...r}));
117
+ resp = resp.map((r: any) => ({ ...r }));
102
118
  if (action?.sort) resp.sort(action?.sort);
103
119
  return resp;
104
- }
120
+ };
105
121
 
106
122
  const objInsertReducer = (state: any, action: { payload: any }) => {
107
- return action.payload
108
- }
123
+ return action.payload;
124
+ };
109
125
 
110
126
  const objReplaceReducer = (state: any, action: { payload: any }) => {
111
- return action.payload
112
- }
127
+ return action.payload;
128
+ };
113
129
 
114
130
  const objDeleteReducer = () => {
115
- return null
116
- }
131
+ return null;
132
+ };
117
133
 
118
134
  interface ReducerOpts {
119
- stateType?: 'list' | 'map' | 'static';
135
+ stateType?: "list" | "map" | "static" | "mapList";
120
136
  sort?: SortFn;
121
137
  keyName?: string;
138
+ mapKeyName?: string;
122
139
  initialState?: any;
123
140
  }
124
141
 
125
- const OPS = ['insert', 'replace', 'delete', 'clear', 'sort'];
142
+ const OPS = ["insert", "replace", "delete", "clear", "sort"];
126
143
  function reducerBuilder(key: string, opts?: ReducerOpts) {
127
144
  let initialState = opts?.initialState;
128
- let stateType = opts?.stateType ?? 'static';
129
- let isList = stateType === 'list';
130
- let isMap = stateType === 'map';
145
+ let stateType = opts?.stateType ?? "static";
146
+ let isList = stateType === "list";
147
+ let isMap = stateType === "map";
148
+ let isMapList = stateType === "mapList";
149
+
150
+ if (isMapList && !opts?.mapKeyName) throw new Error("mapKeyName is required for stateType: mapList");
151
+
131
152
  if (initialState === undefined) {
132
153
  if (isList) initialState = [];
133
154
  else if (isMap) initialState = {};
134
155
  else initialState = null;
135
156
  }
136
- return (state: any, action: { type: string; payload?: any; sort?: (a: ModelObj, b: ModelObj) => number }) => {
137
-
157
+ return (state: any, action: { type: string; payload?: any; sort?: (a: ModelObj, b: ModelObj) => number }) => {
138
158
  if (state === undefined) {
139
159
  if (initialState !== undefined) return initialState;
140
160
  else if (isList) return [];
141
161
  else if (isMap) return {};
162
+ else if (isMapList) return {};
142
163
  else return null;
143
164
  }
144
165
  let rx = new RegExp(`^${key}/([^\/]+)$`);
145
166
  let m = action.type.match(rx);
146
167
  if (!m) return state;
147
-
168
+
148
169
  let op = m[1];
149
170
  let payload = action.payload;
150
171
  let keyName = opts?.keyName ?? "id";
172
+ let mapKeyName = opts?.mapKeyName;
151
173
 
152
174
  if (isMap && !OPS.includes(op)) {
153
175
  if (payload && !Array.isArray(payload)) {
154
176
  payload[keyName] = op;
155
- op = "insert";
177
+ op = "insert";
156
178
  }
157
179
  if (!payload) {
158
180
  payload = {};
@@ -163,24 +185,43 @@ return (state: any, action: { type: string; payload?: any; sort?: (a: ModelObj,
163
185
 
164
186
  let sort = action.sort ?? opts?.sort;
165
187
  if (op === "insert") {
166
- if (isList && payload) return listInsertReducer(state, {payload, sort, keyName});
167
- else if (isMap && payload) return mapInsertReducer(state, {payload, keyName});
168
- return objInsertReducer(state, {payload});
188
+
189
+ if ((isList || isMapList) && payload) return listInsertReducer(state, { payload, sort, keyName, mapKeyName, isMapList });
190
+ else if (isMap && payload) return mapInsertReducer(state, { payload, keyName });
191
+ return objInsertReducer(state, { payload });
192
+
169
193
  } else if (op === "replace") {
170
- if (isList) return listReplaceReducer(state, {payload, sort, keyName});
171
- else if (isMap) return mapReplaceReducer(state, {payload, keyName});
172
- return objReplaceReducer(state, {payload});
194
+
195
+ if (isList || isMapList) return listReplaceReducer(state, { payload, sort, keyName, mapKeyName, isMapList });
196
+ else if (isMap) return mapReplaceReducer(state, { payload, keyName });
197
+ return objReplaceReducer(state, { payload });
198
+
173
199
  } else if (op === "delete") {
174
- if (isList) return listDeleteReducer(state, {payload, keyName});
175
- else if (isMap) return mapDeleteReducer(state, {payload, keyName});
200
+
201
+ if (isList || isMapList) return listDeleteReducer(state, { payload, keyName, mapKeyName, isMapList });
202
+ else if (isMap) return mapDeleteReducer(state, { payload, keyName });
176
203
  return objDeleteReducer();
204
+
205
+ } else if (op === "shift") {
206
+ if (isList || isMapList) return listShiftReducer(state);
207
+ else {
208
+ console.error(`unshift is only valid for stateType: list or mapList`);
209
+ }
210
+
177
211
  } else if (op === "clear") {
212
+
178
213
  return initialState;
214
+
179
215
  } else if (op === "sort") {
180
- if (isList) return listSortReducer(state, {sort, keyName});
216
+
217
+ if (isList || isMapList) return listSortReducer(state, { sort, keyName, mapKeyName, isMapList });
218
+
181
219
  } else {
220
+
182
221
  console.error(`unknown op (${op}) in action type: ${action.type}. Op should be one of: insert, delete, replace, clear, or sort.`);
222
+
183
223
  }
224
+
184
225
  return state || (isList ? [] : isMap ? {} : null);
185
226
  };
186
227
  }