Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | 1x 6x 5x 5x 11x 11x 24x 24x 23x 23x 23x 23x 51x 51x 51x 23x 7x 7x 13x 13x 25x 25x 24x 24x 24x 41x 41x 41x 28x 24x 36x 41x 41x 41x 41x 41x 41x 32x 40x 40x 40x 40x 4x 4x 36x 36x 36x 36x 36x 32x 49x 49x 49x 49x 87x 49x | 'use strict'
module.exports = {
groupRedact,
groupRestore,
nestedRedact,
nestedRestore
}
function groupRestore ({keys, values, target}) {
if (target == null) return
const length = keys.length
for (var i = 0; i < length; i++) {
const k = keys[i]
target[k] = values[i]
}
}
function groupRedact (o, path, censor) {
const target = get(o, path)
if (target == null) return {keys: null, values: null, target: null, flat: true}
const keys = Object.keys(target)
const length = keys.length
const values = new Array(length)
for (var i = 0; i < length; i++) {
const k = keys[i]
values[i] = target[k]
target[k] = censor
}
return {keys, values, target, flat: true}
}
function nestedRestore (arr) {
const length = arr.length
for (var i = 0; i < length; i++) {
const { key, target, value } = arr[i]
target[key] = value
}
}
function nestedRedact (store, o, path, ns, censor) {
const target = get(o, path)
if (target == null) return
const keys = Object.keys(target)
const length = keys.length
for (var i = 0; i < length; i++) {
const key = keys[i]
const { value, parent, exists } = specialSet(target, key, ns, censor)
if (exists === true && parent !== null) {
store.push({key: ns[ns.length - 1], target: parent, value})
}
}
return store
}
function has (obj, prop) {
return Object.prototype.hasOwnProperty.call(obj, prop)
}
function specialSet (o, k, p, v) {
var i = -1
var l = p.length
var li = l - 1
var n
var nv
var ov
var oov
var exists = true
ov = n = o[k]
if (typeof n !== 'object') return {value: null, parent: null, exists}
while (n != null && ++i < l) {
k = p[i]
nv = v
oov = ov
if (!(k in n)) {
exists = false
break
}
ov = n[k]
nv = (i !== li) ? ov : nv
n[k] = (has(n, k) && nv === ov) || typeof nv === 'undefined' ? n[k] : nv
n = n[k]
if (typeof n !== 'object') break
}
return {value: ov, parent: oov, exists}
}
function get (o, p) {
var i = -1
var l = p.length
var n = o
while (n != null && ++i < l) {
n = n[p[i]]
}
return n
}
|