@lowdefy/helpers 3.23.2 → 4.0.0-alpha.6

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/type.js CHANGED
@@ -1,15 +1,4 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- /* eslint-disable indent */
9
-
10
- /* eslint-disable default-case */
11
-
12
- /*
1
+ /* eslint-disable indent */ /* eslint-disable default-case */ /*
13
2
  Copyright 2020-2021 Lowdefy, Inc
14
3
 
15
4
  Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,263 +12,204 @@ exports.default = void 0;
23
12
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
24
13
  See the License for the specific language governing permissions and
25
14
  limitations under the License.
26
- */
27
- // Derived from source:
15
+ */ // Derived from source:
28
16
  // because both js typeof and instance of sucks! use this.
29
17
  // https://ultimatecourses.com/blog/understanding-javascript-types-and-reliable-type-checking
30
- var {
31
- toString
32
- } = Object.prototype;
33
-
18
+ const { toString } = Object.prototype;
34
19
  function ctorName(val) {
35
- return val.constructor ? val.constructor.name : null;
20
+ return val.constructor ? val.constructor.name : null;
36
21
  }
37
-
38
22
  function isArray(val) {
39
- if (Array.isArray) return Array.isArray(val);
40
- return val instanceof Array;
23
+ if (Array.isArray) return Array.isArray(val);
24
+ return val instanceof Array;
41
25
  }
42
-
43
26
  function isError(val) {
44
- return !!val && (val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');
27
+ return !!val && (val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number');
45
28
  }
46
-
47
29
  function isDate(val) {
48
- if (val instanceof Date && !Number.isNaN(val.getTime())) return true;
49
- return val && typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function' && !Number.isNaN(val.getTime());
30
+ if (val instanceof Date && !Number.isNaN(val.getTime())) return true;
31
+ return val && typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function' && !Number.isNaN(val.getTime());
50
32
  }
51
-
52
33
  function isRegexp(val) {
53
- if (val instanceof RegExp) return true;
54
- return typeof val.flags === 'string' && typeof val.ignoreCase === 'boolean' && typeof val.multiline === 'boolean' && typeof val.global === 'boolean';
34
+ if (val instanceof RegExp) return true;
35
+ return typeof val.flags === 'string' && typeof val.ignoreCase === 'boolean' && typeof val.multiline === 'boolean' && typeof val.global === 'boolean';
55
36
  }
56
-
57
37
  function isGeneratorFn(name) {
58
- return ctorName(name) === 'GeneratorFunction';
38
+ return ctorName(name) === 'GeneratorFunction';
59
39
  }
60
-
61
40
  function isGeneratorObj(val) {
62
- return typeof val.throw === 'function' && typeof val.return === 'function' && typeof val.next === 'function';
41
+ return typeof val.throw === 'function' && typeof val.return === 'function' && typeof val.next === 'function';
63
42
  }
64
-
65
43
  function isArguments(val) {
66
- try {
67
- if (typeof val.length === 'number' && typeof val.callee === 'function') {
68
- return true;
69
- }
70
- } catch (err) {
71
- if (err.message.indexOf('callee') !== -1) {
72
- return true;
44
+ try {
45
+ if (typeof val.length === 'number' && typeof val.callee === 'function') {
46
+ return true;
47
+ }
48
+ } catch (err) {
49
+ if (err.message.indexOf('callee') !== -1) {
50
+ return true;
51
+ }
73
52
  }
74
- }
75
-
76
- return false;
53
+ return false;
77
54
  }
78
55
  /**
79
56
  * If you need to support Safari 5-7 (8-10 yr-old browser),
80
57
  * take a look at https://github.com/feross/is-buffer
81
- */
82
-
83
-
84
- function isBuffer(val) {
85
- if (val.constructor && typeof val.constructor.isBuffer === 'function') {
86
- return val.constructor.isBuffer(val);
87
- }
88
-
89
- return false;
58
+ */ function isBuffer(val) {
59
+ if (val.constructor && typeof val.constructor.isBuffer === 'function') {
60
+ return val.constructor.isBuffer(val);
61
+ }
62
+ return false;
90
63
  }
91
-
92
64
  function kindOf(val) {
93
- // eslint-disable-next-line no-void
94
- if (val === void 0) return 'undefined';
95
- if (val === null) return 'null';
96
- var type = typeof val;
97
- if (type === 'boolean') return 'boolean';
98
- if (type === 'string') return 'string';
99
- if (type === 'number') return 'number';
100
- if (type === 'symbol') return 'symbol';
101
-
102
- if (type === 'function') {
103
- return isGeneratorFn(val) ? 'generatorfunction' : 'function';
104
- }
105
-
106
- if (isArray(val)) return 'array';
107
- if (isDate(val)) return 'date';
108
- if (isError(val)) return 'error';
109
- if (isRegexp(val)) return 'regexp';
110
- if (isArguments(val)) return 'arguments';
111
- if (isBuffer(val)) return 'buffer';
112
-
113
- switch (ctorName(val)) {
114
- case 'Symbol':
115
- return 'symbol';
116
-
117
- case 'Promise':
118
- return 'promise';
119
- // Set, Map, WeakSet, WeakMap
120
-
121
- case 'WeakMap':
122
- return 'weakmap';
123
-
124
- case 'WeakSet':
125
- return 'weakset';
126
-
127
- case 'Map':
128
- return 'map';
129
-
130
- case 'Set':
131
- return 'set';
132
- // 8-bit typed arrays
133
-
134
- case 'Int8Array':
135
- return 'int8array';
136
-
137
- case 'Uint8Array':
138
- return 'uint8array';
139
-
140
- case 'Uint8ClampedArray':
141
- return 'uint8clampedarray';
142
- // 16-bit typed arrays
143
-
144
- case 'Int16Array':
145
- return 'int16array';
146
-
147
- case 'Uint16Array':
148
- return 'uint16array';
149
- // 32-bit typed arrays
150
-
151
- case 'Int32Array':
152
- return 'int32array';
153
-
154
- case 'Uint32Array':
155
- return 'uint32array';
156
-
157
- case 'Float32Array':
158
- return 'float32array';
159
-
160
- case 'Float64Array':
161
- return 'float64array';
162
- }
163
-
164
- if (isGeneratorObj(val)) {
165
- return 'generator';
166
- } // Non-plain objects
167
-
168
-
169
- type = toString.call(val);
170
-
171
- switch (type) {
172
- case '[object Object]':
173
- return 'object';
174
- // iterators
175
-
176
- case '[object Map Iterator]':
177
- return 'mapiterator';
178
-
179
- case '[object Set Iterator]':
180
- return 'setiterator';
181
-
182
- case '[object String Iterator]':
183
- return 'stringiterator';
184
-
185
- case '[object Array Iterator]':
186
- return 'arrayiterator';
187
- } // other
188
-
189
-
190
- return type.slice(8, -1).toLowerCase().replace(/\s/g, '');
65
+ // eslint-disable-next-line no-void
66
+ if (val === void 0) return 'undefined';
67
+ if (val === null) return 'null';
68
+ let type1 = typeof val;
69
+ if (type1 === 'boolean') return 'boolean';
70
+ if (type1 === 'string') return 'string';
71
+ if (type1 === 'number') return 'number';
72
+ if (type1 === 'symbol') return 'symbol';
73
+ if (type1 === 'function') {
74
+ return isGeneratorFn(val) ? 'generatorfunction' : 'function';
75
+ }
76
+ if (isArray(val)) return 'array';
77
+ if (isDate(val)) return 'date';
78
+ if (isError(val)) return 'error';
79
+ if (isRegexp(val)) return 'regexp';
80
+ if (isArguments(val)) return 'arguments';
81
+ if (isBuffer(val)) return 'buffer';
82
+ switch(ctorName(val)){
83
+ case 'Symbol':
84
+ return 'symbol';
85
+ case 'Promise':
86
+ return 'promise';
87
+ // Set, Map, WeakSet, WeakMap
88
+ case 'WeakMap':
89
+ return 'weakmap';
90
+ case 'WeakSet':
91
+ return 'weakset';
92
+ case 'Map':
93
+ return 'map';
94
+ case 'Set':
95
+ return 'set';
96
+ // 8-bit typed arrays
97
+ case 'Int8Array':
98
+ return 'int8array';
99
+ case 'Uint8Array':
100
+ return 'uint8array';
101
+ case 'Uint8ClampedArray':
102
+ return 'uint8clampedarray';
103
+ // 16-bit typed arrays
104
+ case 'Int16Array':
105
+ return 'int16array';
106
+ case 'Uint16Array':
107
+ return 'uint16array';
108
+ // 32-bit typed arrays
109
+ case 'Int32Array':
110
+ return 'int32array';
111
+ case 'Uint32Array':
112
+ return 'uint32array';
113
+ case 'Float32Array':
114
+ return 'float32array';
115
+ case 'Float64Array':
116
+ return 'float64array';
117
+ }
118
+ if (isGeneratorObj(val)) {
119
+ return 'generator';
120
+ }
121
+ // Non-plain objects
122
+ type1 = toString.call(val);
123
+ switch(type1){
124
+ case '[object Object]':
125
+ return 'object';
126
+ // iterators
127
+ case '[object Map Iterator]':
128
+ return 'mapiterator';
129
+ case '[object Set Iterator]':
130
+ return 'setiterator';
131
+ case '[object String Iterator]':
132
+ return 'stringiterator';
133
+ case '[object Array Iterator]':
134
+ return 'arrayiterator';
135
+ }
136
+ // other
137
+ return type1.slice(8, -1).toLowerCase().replace(/\s/g, '');
191
138
  }
192
-
193
- var reISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/;
194
-
139
+ const reISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/;
195
140
  function isDateString(val) {
196
- return reISO.test(val);
141
+ return reISO.test(val);
197
142
  }
198
-
199
- var type = {};
143
+ const type = {};
200
144
  type.typeOf = kindOf;
201
145
  type.isArray = isArray;
202
146
  type.isDate = isDate;
203
147
  type.isError = isError;
204
148
  type.isDateString = isDateString;
205
-
206
- type.isObject = value => kindOf(value) === 'object';
207
-
208
- type.isString = value => typeof value === 'string';
209
-
210
- type.isRegExp = value => kindOf(value) === 'regexp';
211
-
212
- type.isFunction = value => kindOf(value) === 'function';
213
-
214
- type.isBoolean = value => typeof value === 'boolean';
215
-
216
- type.isNumber = value => typeof value === 'number' && Number.isFinite(value);
217
-
218
- type.isNumeric = value => !Number.isNaN(Number(value));
219
-
220
- type.isInt = value => Number.isInteger(value) === true;
221
-
222
- type.isSet = value => kindOf(value) === 'set';
223
-
224
- type.isNull = value => kindOf(value) === 'null';
225
-
226
- type.isUndefined = value => kindOf(value) === 'undefined';
227
-
228
- type.isNone = value => kindOf(value) === 'undefined' || kindOf(value) === 'null';
229
-
230
- type.isPrimitive = value => kindOf(value) === 'undefined' || // are we making undefined a primative ?
231
- kindOf(value) === 'null' || kindOf(value) === 'string' || kindOf(value) === 'number' || kindOf(value) === 'boolean' || kindOf(value) === 'date';
232
-
233
- type.isEmptyObject = value => kindOf(value) === 'object' && Object.keys(value).length === 0; // Lowdefy operator types
234
-
235
-
149
+ type.isObject = (value)=>kindOf(value) === 'object'
150
+ ;
151
+ type.isString = (value)=>typeof value === 'string'
152
+ ;
153
+ type.isRegExp = (value)=>kindOf(value) === 'regexp'
154
+ ;
155
+ type.isFunction = (value)=>kindOf(value) === 'function'
156
+ ;
157
+ type.isBoolean = (value)=>typeof value === 'boolean'
158
+ ;
159
+ type.isNumber = (value)=>typeof value === 'number' && Number.isFinite(value)
160
+ ;
161
+ type.isNumeric = (value)=>!Number.isNaN(Number(value))
162
+ ;
163
+ type.isInt = (value)=>Number.isInteger(value) === true
164
+ ;
165
+ type.isSet = (value)=>kindOf(value) === 'set'
166
+ ;
167
+ type.isNull = (value)=>kindOf(value) === 'null'
168
+ ;
169
+ type.isUndefined = (value)=>kindOf(value) === 'undefined'
170
+ ;
171
+ type.isNone = (value)=>kindOf(value) === 'undefined' || kindOf(value) === 'null'
172
+ ;
173
+ type.isPrimitive = (value)=>kindOf(value) === 'undefined' || kindOf(value) === 'null' || kindOf(value) === 'string' || kindOf(value) === 'number' || kindOf(value) === 'boolean' || kindOf(value) === 'date'
174
+ ;
175
+ type.isEmptyObject = (value)=>kindOf(value) === 'object' && Object.keys(value).length === 0
176
+ ;
177
+ // Lowdefy operator types
236
178
  function isName(value) {
237
- if (!type.isString(value)) return false;
238
- var noLeadingNumeric = value.split('.').reduce((acc, val) => acc && !type.isNumeric(val.charAt(0)), true);
239
- var noLeadTrailStop = value.charAt(0) !== '.' && value.charAt(value.length - 1) !== '.';
240
- var noLowdefy = !value.toLowerCase().startsWith('lowdefy');
241
- return /^[a-zA-Z0-9_.]+$/g.test(value) && noLeadTrailStop && noLeadingNumeric && noLowdefy;
179
+ if (!type.isString(value)) return false;
180
+ const noLeadingNumeric = value.split('.').reduce((acc, val)=>acc && !type.isNumeric(val.charAt(0))
181
+ , true);
182
+ const noLeadTrailStop = value.charAt(0) !== '.' && value.charAt(value.length - 1) !== '.';
183
+ const noLowdefy = !value.toLowerCase().startsWith('lowdefy');
184
+ return /^[a-zA-Z0-9_.]+$/g.test(value) && noLeadTrailStop && noLeadingNumeric && noLowdefy;
242
185
  }
243
-
244
186
  function isOpRequest(val) {
245
- return kindOf(val) === 'object' && '_request' in val && isName(val._request);
246
- } // Lowdefy
247
-
248
-
187
+ return kindOf(val) === 'object' && '_request' in val && isName(val._request);
188
+ }
189
+ // Lowdefy
249
190
  type.isOpRequest = isOpRequest;
250
191
  type.isName = isName;
251
-
252
192
  function enforceType(typeName, value) {
253
- switch (typeName) {
254
- case 'string':
255
- return type.isString(value) && value !== '' ? value : null;
256
-
257
- case 'number':
258
- return type.isNumber(value) ? value : null;
259
-
260
- case 'boolean':
261
- return type.isBoolean(value) ? value : false;
262
-
263
- case 'date':
264
- return type.isDate(value) ? value : null;
265
-
266
- case 'array':
267
- return type.isArray(value) ? value : [];
268
-
269
- case 'primitive':
270
- return type.isString(value) && value !== '' || type.isNumber(value) || type.isDate(value) || type.isBoolean(value) ? value : null;
271
-
272
- case 'object':
273
- return type.isObject(value) ? value : null;
274
-
275
- case 'any':
276
- return !type.isUndefined(value) ? value : null;
277
-
278
- default:
279
- return null;
280
- }
193
+ switch(typeName){
194
+ case 'string':
195
+ return type.isString(value) && value !== '' ? value : null;
196
+ case 'number':
197
+ return type.isNumber(value) ? value : null;
198
+ case 'boolean':
199
+ return type.isBoolean(value) ? value : false;
200
+ case 'date':
201
+ return type.isDate(value) ? value : null;
202
+ case 'array':
203
+ return type.isArray(value) ? value : [];
204
+ case 'primitive':
205
+ return type.isString(value) && value !== '' || type.isNumber(value) || type.isDate(value) || type.isBoolean(value) ? value : null;
206
+ case 'object':
207
+ return type.isObject(value) ? value : null;
208
+ case 'any':
209
+ return !type.isUndefined(value) ? value : null;
210
+ default:
211
+ return null;
212
+ }
281
213
  }
282
-
283
214
  type.enforceType = enforceType;
284
- var _default = type;
285
- exports.default = _default;
215
+ export default type;
package/dist/unset.js CHANGED
@@ -1,19 +1,4 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- var _type = _interopRequireDefault(require("./type"));
9
-
10
- var _get = _interopRequireDefault(require("./get"));
11
-
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
-
14
- /* eslint-disable no-param-reassign */
15
-
16
- /*
1
+ /* eslint-disable no-param-reassign */ /*
17
2
  Copyright 2020-2021 Lowdefy, Inc
18
3
 
19
4
  Licensed under the Apache License, Version 2.0 (the "License");
@@ -27,8 +12,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
27
12
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
28
13
  See the License for the specific language governing permissions and
29
14
  limitations under the License.
30
- */
31
- // Derived from source:
15
+ */ // Derived from source:
32
16
  // https://github.com/jonschlinkert/unset-value/blob/master/index.js
33
17
  // https://github.com/jonschlinkert/unset-value/issues/3
34
18
  // The MIT License (MIT)
@@ -48,92 +32,73 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
48
32
  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
49
33
  // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
50
34
  // THE SOFTWARE.
51
- var hasValues = val => {
52
- switch (_type.default.typeOf(val)) {
53
- case 'boolean':
54
- case 'date':
55
- case 'function':
56
- case 'null':
57
- case 'number':
58
- return true;
59
-
60
- case 'undefined':
61
- return false;
62
-
63
- case 'regexp':
64
- return val.source !== '(?:)' && val.source !== '';
65
-
66
- case 'buffer':
67
- return val.toString() !== '';
68
-
69
- case 'error':
70
- return val.message !== '';
71
-
72
- case 'string':
73
- case 'arguments':
74
- return val.length !== 0;
75
-
76
- case 'file':
77
- case 'map':
78
- case 'set':
79
- return val.size !== 0;
80
-
81
- case 'array':
82
- case 'object':
83
- // eslint-disable-next-line no-restricted-syntax
84
- // CHANGED - we are assuming that an empty object and array is a value.
85
- // for (const key of Object.keys(val)) {
86
- // if (hasValues(val[key])) {
87
- // return true;
88
- // }
89
- // }
90
- // return false;
91
- return true;
92
- // everything else
93
-
94
- default:
95
- {
96
- return true;
97
- }
98
- }
35
+ import type from './type.js';
36
+ import get from './get.js';
37
+ const hasValues = (val)=>{
38
+ switch(type.typeOf(val)){
39
+ case 'boolean':
40
+ case 'date':
41
+ case 'function':
42
+ case 'null':
43
+ case 'number':
44
+ return true;
45
+ case 'undefined':
46
+ return false;
47
+ case 'regexp':
48
+ return val.source !== '(?:)' && val.source !== '';
49
+ case 'buffer':
50
+ return val.toString() !== '';
51
+ case 'error':
52
+ return val.message !== '';
53
+ case 'string':
54
+ case 'arguments':
55
+ return val.length !== 0;
56
+ case 'file':
57
+ case 'map':
58
+ case 'set':
59
+ return val.size !== 0;
60
+ case 'array':
61
+ case 'object':
62
+ // eslint-disable-next-line no-restricted-syntax
63
+ // CHANGED - we are assuming that an empty object and array is a value.
64
+ // for (const key of Object.keys(val)) {
65
+ // if (hasValues(val[key])) {
66
+ // return true;
67
+ // }
68
+ // }
69
+ // return false;
70
+ return true;
71
+ // everything else
72
+ default:
73
+ {
74
+ return true;
75
+ }
76
+ }
99
77
  };
100
-
101
- var hasValue = (obj, path, options) => {
102
- if (_type.default.isObject(obj) && (_type.default.isString(path) || _type.default.isArray(path))) {
103
- return hasValues((0, _get.default)(obj, path, options));
104
- }
105
-
106
- return false;
78
+ const hasValue = (obj, path, options)=>{
79
+ if (type.isObject(obj) && (type.isString(path) || type.isArray(path))) {
80
+ return hasValues(get(obj, path, options));
81
+ }
82
+ return false;
107
83
  };
108
-
109
- var unset = (obj, prop) => {
110
- // support array refence in the form a.0 , a.0.b or a[0] , a[0].b
111
- if (!_type.default.isObject(obj)) {
112
- throw new TypeError('expected an object.');
113
- }
114
-
115
- if (Object.prototype.hasOwnProperty.call(obj, prop)) {
116
- delete obj[prop];
117
- return true;
118
- }
119
-
120
- if (hasValue(obj, prop)) {
121
- var segs = prop.split('.');
122
- var last = segs.pop();
123
-
124
- while (segs.length && segs[segs.length - 1].slice(-1) === '\\') {
125
- last = "".concat(segs.pop().slice(0, -1), ".").concat(last);
84
+ const unset = (obj, prop)=>{
85
+ // support array refence in the form a.0 , a.0.b or a[0] , a[0].b
86
+ if (!type.isObject(obj)) {
87
+ throw new TypeError('expected an object.');
126
88
  }
127
-
128
- while (segs.length) {
129
- obj = obj[segs.shift()];
89
+ if (Object.prototype.hasOwnProperty.call(obj, prop)) {
90
+ delete obj[prop];
91
+ return true;
130
92
  }
131
-
132
- return delete obj[last];
133
- }
134
-
135
- return true;
93
+ if (hasValue(obj, prop)) {
94
+ const segs = prop.split('.');
95
+ let last = segs.pop();
96
+ while(segs.length && segs[segs.length - 1].slice(-1) === '\\'){
97
+ last = `${segs.pop().slice(0, -1)}.${last}`;
98
+ }
99
+ while(segs.length)obj = obj[segs.shift()];
100
+ return delete obj[last];
101
+ }
102
+ return true;
136
103
  };
137
-
138
- var _default = unset;
139
- exports.default = _default;
104
+ export default unset;