wao 0.27.3 → 0.28.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/cjs/collect-body-keys.js +470 -0
- package/cjs/encode-array-item.js +110 -0
- package/cjs/encode-utils.js +241 -0
- package/cjs/encode.js +1191 -1921
- package/cjs/id.js +234 -0
- package/cjs/send.js +4 -0
- package/cjs/signer-utils.js +1 -0
- package/cjs/signer.js +59 -10
- package/cjs/utils.js +15 -1
- package/esm/collect-body-keys.js +436 -0
- package/esm/encode-array-item.js +112 -0
- package/esm/encode-utils.js +185 -0
- package/esm/encode.js +881 -1531
- package/esm/id.js +222 -0
- package/esm/send.js +4 -3
- package/esm/signer-utils.js +1 -1
- package/esm/signer.js +33 -8
- package/esm/utils.js +7 -0
- package/package.json +1 -1
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.analyzeArray = analyzeArray;
|
|
7
|
+
exports.encodePrimitiveContent = encodePrimitiveContent;
|
|
8
|
+
exports.formatFloat = formatFloat;
|
|
9
|
+
exports.getAoType = getAoType;
|
|
10
|
+
exports.getValueByPath = getValueByPath;
|
|
11
|
+
exports.hasNewline = hasNewline;
|
|
12
|
+
exports.hasNonAscii = hasNonAscii;
|
|
13
|
+
exports.isBytes = isBytes;
|
|
14
|
+
exports.isEmpty = isEmpty;
|
|
15
|
+
exports.isPojo = isPojo;
|
|
16
|
+
exports.sha256 = sha256;
|
|
17
|
+
exports.sortTypeAnnotations = sortTypeAnnotations;
|
|
18
|
+
exports.toBuffer = toBuffer;
|
|
19
|
+
var _fastSha = require("fast-sha256");
|
|
20
|
+
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
21
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
22
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
23
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
24
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
25
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
26
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
27
|
+
function isBytes(value) {
|
|
28
|
+
return value instanceof ArrayBuffer || ArrayBuffer.isView(value) || Buffer.isBuffer(value) || value && _typeof(value) === "object" && value.type === "Buffer" && Array.isArray(value.data);
|
|
29
|
+
}
|
|
30
|
+
function isPojo(value) {
|
|
31
|
+
return !isBytes(value) && !Array.isArray(value) && !(value instanceof Blob) && _typeof(value) === "object" && value !== null;
|
|
32
|
+
}
|
|
33
|
+
function hasNewline(_x) {
|
|
34
|
+
return _hasNewline.apply(this, arguments);
|
|
35
|
+
}
|
|
36
|
+
function _hasNewline() {
|
|
37
|
+
_hasNewline = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(value) {
|
|
38
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
39
|
+
while (1) switch (_context.prev = _context.next) {
|
|
40
|
+
case 0:
|
|
41
|
+
if (!(typeof value === "string")) {
|
|
42
|
+
_context.next = 2;
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
return _context.abrupt("return", value.includes("\n"));
|
|
46
|
+
case 2:
|
|
47
|
+
if (!(value instanceof Blob)) {
|
|
48
|
+
_context.next = 7;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
_context.next = 5;
|
|
52
|
+
return value.text();
|
|
53
|
+
case 5:
|
|
54
|
+
value = _context.sent;
|
|
55
|
+
return _context.abrupt("return", value.includes("\n"));
|
|
56
|
+
case 7:
|
|
57
|
+
if (!isBytes(value)) {
|
|
58
|
+
_context.next = 9;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
return _context.abrupt("return", Buffer.from(value).includes("\n"));
|
|
62
|
+
case 9:
|
|
63
|
+
return _context.abrupt("return", false);
|
|
64
|
+
case 10:
|
|
65
|
+
case "end":
|
|
66
|
+
return _context.stop();
|
|
67
|
+
}
|
|
68
|
+
}, _callee);
|
|
69
|
+
}));
|
|
70
|
+
return _hasNewline.apply(this, arguments);
|
|
71
|
+
}
|
|
72
|
+
function sha256(_x2) {
|
|
73
|
+
return _sha.apply(this, arguments);
|
|
74
|
+
}
|
|
75
|
+
function _sha() {
|
|
76
|
+
_sha = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(data) {
|
|
77
|
+
var uint8Array, hashResult;
|
|
78
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
79
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
80
|
+
case 0:
|
|
81
|
+
if (!(data instanceof ArrayBuffer)) {
|
|
82
|
+
_context2.next = 4;
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
uint8Array = new Uint8Array(data);
|
|
86
|
+
_context2.next = 13;
|
|
87
|
+
break;
|
|
88
|
+
case 4:
|
|
89
|
+
if (!(data instanceof Uint8Array)) {
|
|
90
|
+
_context2.next = 8;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
uint8Array = data;
|
|
94
|
+
_context2.next = 13;
|
|
95
|
+
break;
|
|
96
|
+
case 8:
|
|
97
|
+
if (!ArrayBuffer.isView(data)) {
|
|
98
|
+
_context2.next = 12;
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
uint8Array = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
102
|
+
_context2.next = 13;
|
|
103
|
+
break;
|
|
104
|
+
case 12:
|
|
105
|
+
throw new Error("sha256 expects ArrayBuffer or ArrayBufferView");
|
|
106
|
+
case 13:
|
|
107
|
+
hashResult = (0, _fastSha.hash)(uint8Array);
|
|
108
|
+
return _context2.abrupt("return", hashResult.buffer.slice(hashResult.byteOffset, hashResult.byteOffset + hashResult.byteLength));
|
|
109
|
+
case 15:
|
|
110
|
+
case "end":
|
|
111
|
+
return _context2.stop();
|
|
112
|
+
}
|
|
113
|
+
}, _callee2);
|
|
114
|
+
}));
|
|
115
|
+
return _sha.apply(this, arguments);
|
|
116
|
+
}
|
|
117
|
+
function formatFloat(num) {
|
|
118
|
+
var exp = num.toExponential(20);
|
|
119
|
+
exp = exp.replace(/e\+(\d)$/, "e+0$1");
|
|
120
|
+
exp = exp.replace(/e-(\d)$/, "e-0$1");
|
|
121
|
+
return exp;
|
|
122
|
+
}
|
|
123
|
+
function hasNonAscii(str) {
|
|
124
|
+
return /[^\x00-\x7F]/.test(str);
|
|
125
|
+
}
|
|
126
|
+
function toBuffer(value) {
|
|
127
|
+
if (Buffer.isBuffer(value)) {
|
|
128
|
+
return value;
|
|
129
|
+
} else if (value && _typeof(value) === "object" && value.type === "Buffer" && Array.isArray(value.data)) {
|
|
130
|
+
return Buffer.from(value.data);
|
|
131
|
+
} else if (value instanceof ArrayBuffer || ArrayBuffer.isView(value)) {
|
|
132
|
+
return Buffer.from(value);
|
|
133
|
+
} else {
|
|
134
|
+
return Buffer.from(value);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Navigate through a path to get a value from nested object/array
|
|
139
|
+
function getValueByPath(obj, path) {
|
|
140
|
+
var pathParts = path.split("/");
|
|
141
|
+
var value = obj;
|
|
142
|
+
var _iterator = _createForOfIteratorHelper(pathParts),
|
|
143
|
+
_step;
|
|
144
|
+
try {
|
|
145
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
146
|
+
var part = _step.value;
|
|
147
|
+
if (/^\d+$/.test(part)) {
|
|
148
|
+
value = value[parseInt(part) - 1];
|
|
149
|
+
} else {
|
|
150
|
+
value = value[part];
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
} catch (err) {
|
|
154
|
+
_iterator.e(err);
|
|
155
|
+
} finally {
|
|
156
|
+
_iterator.f();
|
|
157
|
+
}
|
|
158
|
+
return value;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Get the ao-type for a value
|
|
162
|
+
function getAoType(value) {
|
|
163
|
+
if (typeof value === "boolean" || value === null || value === undefined || _typeof(value) === "symbol") {
|
|
164
|
+
return "atom";
|
|
165
|
+
} else if (typeof value === "number") {
|
|
166
|
+
return Number.isInteger(value) ? "integer" : "float";
|
|
167
|
+
} else if (typeof value === "string" && value.length === 0) {
|
|
168
|
+
return "empty-binary";
|
|
169
|
+
} else if (isBytes(value) && (value.length === 0 || value.byteLength === 0)) {
|
|
170
|
+
return "empty-binary";
|
|
171
|
+
} else if (Array.isArray(value) && value.length === 0) {
|
|
172
|
+
return "empty-list";
|
|
173
|
+
} else if (Array.isArray(value)) {
|
|
174
|
+
return "list";
|
|
175
|
+
} else if (isPojo(value) && Object.keys(value).length === 0) {
|
|
176
|
+
return "empty-message";
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Check if a value is empty
|
|
182
|
+
function isEmpty(value) {
|
|
183
|
+
return Array.isArray(value) && value.length === 0 || isPojo(value) && Object.keys(value).length === 0 || isBytes(value) && (value.length === 0 || value.byteLength === 0) || typeof value === "string" && value.length === 0;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Convert primitive values to their encoded string representation
|
|
187
|
+
function encodePrimitiveContent(value) {
|
|
188
|
+
if (typeof value === "string") {
|
|
189
|
+
return value;
|
|
190
|
+
} else if (typeof value === "boolean") {
|
|
191
|
+
return "\"".concat(value, "\"");
|
|
192
|
+
} else if (typeof value === "number") {
|
|
193
|
+
return String(value);
|
|
194
|
+
} else if (value === null) {
|
|
195
|
+
return '"null"';
|
|
196
|
+
} else if (value === undefined) {
|
|
197
|
+
return '"undefined"';
|
|
198
|
+
} else if (_typeof(value) === "symbol") {
|
|
199
|
+
return "\"".concat(value.description || "Symbol.for()", "\"");
|
|
200
|
+
}
|
|
201
|
+
return value;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// Sort type annotations by their numeric prefix
|
|
205
|
+
function sortTypeAnnotations(types) {
|
|
206
|
+
return types.sort(function (a, b) {
|
|
207
|
+
var aNum = parseInt(a.split("=")[0]);
|
|
208
|
+
var bNum = parseInt(b.split("=")[0]);
|
|
209
|
+
return aNum - bNum;
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// Analyze array contents
|
|
214
|
+
function analyzeArray(array) {
|
|
215
|
+
return {
|
|
216
|
+
hasObjects: array.some(function (item) {
|
|
217
|
+
return isPojo(item);
|
|
218
|
+
}),
|
|
219
|
+
hasArrays: array.some(function (item) {
|
|
220
|
+
return Array.isArray(item);
|
|
221
|
+
}),
|
|
222
|
+
hasEmptyStrings: array.some(function (item) {
|
|
223
|
+
return typeof item === "string" && item === "";
|
|
224
|
+
}),
|
|
225
|
+
hasEmptyObjects: array.some(function (item) {
|
|
226
|
+
return isPojo(item) && Object.keys(item).length === 0;
|
|
227
|
+
}),
|
|
228
|
+
hasOnlyEmptyElements: array.length > 0 && array.every(function (item) {
|
|
229
|
+
return Array.isArray(item) && item.length === 0 || isPojo(item) && Object.keys(item).length === 0 || typeof item === "string" && item === "";
|
|
230
|
+
}),
|
|
231
|
+
hasOnlyNonEmptyObjects: array.length > 0 && array.every(function (item) {
|
|
232
|
+
return isPojo(item) && Object.keys(item).length > 0;
|
|
233
|
+
}),
|
|
234
|
+
hasObjectsWithOnlyEmptyValues: array.some(function (item) {
|
|
235
|
+
if (!isPojo(item) || Object.keys(item).length === 0) return false;
|
|
236
|
+
return Object.values(item).every(function (v) {
|
|
237
|
+
return isEmpty(v);
|
|
238
|
+
});
|
|
239
|
+
})
|
|
240
|
+
};
|
|
241
|
+
}
|