UNPKG

@beenotung/tslib

Version:
69 lines 1.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mkNavigator = exports.toJson = void 0; /** * 1. resolve nested object as undefined * * 2. remove undefined fields * * 3. remove non-serializable fields (function, prototype) * * */ function toJson(o, visited) { if (o === null) { return null; } if (typeof o === 'object') { if (visited.has(o)) { // console.log('duplicated visit of:', o); return undefined; } else { visited.add(o); } } const res = {}; switch (typeof o) { case 'string': case 'number': case 'boolean': return o; } /* tslint:disable:forin */ for (const k in o) { /* tslint:enable:forin */ const type = typeof o[k]; switch (type) { case 'string': case 'number': case 'boolean': res[k] = o[k]; break; case 'function': break; case 'undefined': break; case 'object': const v = o[k]; if (Array.isArray(v)) { res[k] = v.map(o => toJson(o, visited)); } else { const x = toJson(v, visited); if (x === null || (x !== undefined && Object.keys(x).length > 0)) { res[k] = x; } } break; default: console.log({ type, k, v: o[k] }); } } return res; } exports.toJson = toJson; function mkNavigator() { return toJson(window.navigator, new Set()); } exports.mkNavigator = mkNavigator; //# sourceMappingURL=navigator.js.map