This file is indexed.

/usr/lib/nodejs/clean-yaml-object/index.js is in node-clean-yaml-object 0.1.0-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 98
 99
100
'use strict';
module.exports = function (object, filterFn) {
	return cleanYamlObj(object, filterFn || defaultFilter, true, []);
};

function cleanYamlObj(object, filter, isRoot, seen) {
	if (object === undefined) {
		return null;
	}

	if (typeof object === 'function') {
		return object.toString();
	}

	if (Buffer.isBuffer(object)) {
		return 'Buffer\n' + object.toString('hex').split('')
				.reduce(function (set, c) {
					if (set.length && set[set.length - 1].length === 1) {
						set[set.length - 1] += c;
						if (set.length && set.length % 20 === 0) {
							set[set.length - 1] += '\n';
						} else {
							set[set.length - 1] += ' ';
						}
					} else {
						set.push(c);
					}
					return set;
				}, []).join('').trim();
	}

	if (object && typeof object === 'object') {
		if (object instanceof RegExp) {
			return object.toString();
		}

		seen = seen.concat([object]);

		var isArray = Array.isArray(object);

		// Fill in any holes.  This means we lose expandos,
		// but we were gonna lose those anyway.
		if (isArray) {
			object = fillHoles(object);
		}

		var isError = object && typeof object === 'object' && object instanceof Error;

		var set = isArray ? [] : {};

		// name is typically not an ownProperty on an Error
		if (isError && object.name && !object.hasOwnProperty('name') && filter('name', isRoot, object, set)) {
			setProp('name', object, set, seen, filter);
		}

		var keys = Object.getOwnPropertyNames(object);
		return keys.reduce(function (set, k) {
			// magic property!
			if (isArray && k === 'length') {
				return set;
			}

			// Don't dump massive EventEmitter and Domain
			// objects onto the output, that's never friendly.
			if (isError && /^domain/.test(k)) {
				return set;
			}

			if (!filter(k, isRoot, object, set)) {
				return set;
			}

			setProp(k, object, set, seen, filter);

			return set;
		}, set);
	}

	return object;
}

function setProp(propName, source, target, seen, filter) {
	if (seen.indexOf(source[propName]) === -1) {
		target[propName] = cleanYamlObj(source[propName], filter, false, seen);
	} else {
		target[propName] = '[Circular]';
	}
}

function defaultFilter() {
	return true;
}

function fillHoles(arr) {
	var result = [];
	for (var i = 0; i < arr.length; i++) {
		result[i] = arr[i];
	}
	return result;
}