Source: should.js Version: 13.2.3~dfsg-2 Severity: serious Justification: FTBFS on amd64 Tags: bullseye sid ftbfs Usertags: ftbfs-20200321 ftbfs-bullseye
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > debian/rules build > dh build --with nodejs > dh_update_autotools_config > dh_autoreconf > dh_auto_configure --buildsystem=nodejs > mkdir node_modules > ln -s /usr/share/nodejs/rollup-plugin-node-resolve ./node_modules/ > ln -s ../should-equal node_modules/should-equal > ln -s ../should-format node_modules/should-format > ln -s ../should-type node_modules/should-type > ln -s ../should-type-adaptors node_modules/should-type-adaptors > ln -s ../should-util node_modules/should-util > dh_auto_build --buildsystem=nodejs > Found debian/nodejs/should-equal/build > cd ./should-equal && sh -e ../debian/nodejs/should-equal/build > (!) You have passed an unrecognized option > Unknown CLI flag: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, > 17, 18. Allowed options: acorn, acornInjectPlugins, amd, assetFileNames, > banner, c, cache, chunkFileNames, chunkGroupingSize, compact, config, > context, d, dir, dynamicImportFunction, e, entryFileNames, environment, > esModule, experimentalCacheExpiry, experimentalOptimizeChunks, > experimentalTopLevelAwait, exports, extend, external, f, file, footer, > format, freeze, g, globals, h, i, indent, inlineDynamicImports, input, > interop, intro, m, manualChunks, moduleContext, n, name, > namespaceToStringTag, noConflict, o, onwarn, outro, paths, perf, plugins, > preferConst, preserveModules, preserveSymlinks, shimMissingExports, silent, > sourcemap, sourcemapExcludeSources, sourcemapFile, strict, treeshake, v, w, > watch > > index.js → stdout... > 'use strict'; > > function _interopDefault (ex) { return (ex && (typeof ex === 'object') && > 'default' in ex) ? ex['default'] : ex; } > > var t = _interopDefault(require('should-type')); > > function format(msg) { > var args = arguments; > for (var i = 1, l = args.length; i < l; i++) { > msg = msg.replace(/%s/, args[i]); > } > return msg; > } > > var hasOwnProperty = Object.prototype.hasOwnProperty; > > function EqualityFail(a, b, reason, path) { > this.a = a; > this.b = b; > this.reason = reason; > this.path = path; > } > > function typeToString(tp) { > return tp.type + (tp.cls ? "(" + tp.cls + (tp.sub ? " " + tp.sub : "") + > ")" : ""); > } > > var PLUS_0_AND_MINUS_0 = "+0 is not equal to -0"; > var DIFFERENT_TYPES = "A has type %s and B has type %s"; > var EQUALITY = "A is not equal to B"; > var EQUALITY_PROTOTYPE = "A and B have different prototypes"; > var WRAPPED_VALUE = "A wrapped value is not equal to B wrapped value"; > var FUNCTION_SOURCES = "function A is not equal to B by source code value > (via .toString call)"; > var MISSING_KEY = "%s has no key %s"; > var SET_MAP_MISSING_KEY = "Set/Map missing key %s"; > > var DEFAULT_OPTIONS = { > checkProtoEql: true, > checkSubType: true, > plusZeroAndMinusZeroEqual: true, > collectAllFails: false > }; > > function setBooleanDefault(property, obj, opts, defaults) { > obj[property] = typeof opts[property] !== "boolean" ? defaults[property] : > opts[property]; > } > > var METHOD_PREFIX = "_check_"; > > function EQ(opts, a, b, path) { > opts = opts || {}; > > setBooleanDefault("checkProtoEql", this, opts, DEFAULT_OPTIONS); > setBooleanDefault("plusZeroAndMinusZeroEqual", this, opts, DEFAULT_OPTIONS); > setBooleanDefault("checkSubType", this, opts, DEFAULT_OPTIONS); > setBooleanDefault("collectAllFails", this, opts, DEFAULT_OPTIONS); > > this.a = a; > this.b = b; > > this._meet = opts._meet || []; > > this.fails = opts.fails || []; > > this.path = path || []; > } > > function ShortcutError(fail) { > this.name = "ShortcutError"; > this.message = "fail fast"; > this.fail = fail; > } > > ShortcutError.prototype = Object.create(Error.prototype); > > EQ.checkStrictEquality = function(a, b) { > this.collectFail(a !== b, EQUALITY); > }; > > EQ.add = function add(type, cls, sub, f) { > var args = Array.prototype.slice.call(arguments); > f = args.pop(); > EQ.prototype[METHOD_PREFIX + args.join("_")] = f; > }; > > EQ.prototype = { > check: function() { > try { > this.check0(); > } catch (e) { > if (e instanceof ShortcutError) { > return [e.fail]; > } > throw e; > } > return this.fails; > }, > > check0: function() { > var a = this.a; > var b = this.b; > > // equal a and b exit early > if (a === b) { > // check for +0 !== -0; > return this.collectFail(a === 0 && 1 / a !== 1 / b && > !this.plusZeroAndMinusZeroEqual, PLUS_0_AND_MINUS_0); > } > > var typeA = t(a); > var typeB = t(b); > > // if objects has different types they are not equal > if (typeA.type !== typeB.type || typeA.cls !== typeB.cls || typeA.sub !== > typeB.sub) { > return this.collectFail(true, format(DIFFERENT_TYPES, > typeToString(typeA), typeToString(typeB))); > } > > // as types the same checks type specific things > var name1 = typeA.type, > name2 = typeA.type; > if (typeA.cls) { > name1 += "_" + typeA.cls; > name2 += "_" + typeA.cls; > } > if (typeA.sub) { > name2 += "_" + typeA.sub; > } > > var f = > this[METHOD_PREFIX + name2] || > this[METHOD_PREFIX + name1] || > this[METHOD_PREFIX + typeA.type] || > this.defaultCheck; > > f.call(this, this.a, this.b); > }, > > collectFail: function(comparison, reason, showReason) { > if (comparison) { > var res = new EqualityFail(this.a, this.b, reason, this.path); > res.showReason = !!showReason; > > this.fails.push(res); > > if (!this.collectAllFails) { > throw new ShortcutError(res); > } > } > }, > > checkPlainObjectsEquality: function(a, b) { > // compare deep objects and arrays > // stacks contain references only > // > var meet = this._meet; > var m = this._meet.length; > while (m--) { > var st = meet[m]; > if (st[0] === a && st[1] === b) { > return; > } > } > > // add `a` and `b` to the stack of traversed objects > meet.push([a, b]); > > // TODO maybe something else like getOwnPropertyNames > var key; > for (key in b) { > if (hasOwnProperty.call(b, key)) { > if (hasOwnProperty.call(a, key)) { > this.checkPropertyEquality(key); > } else { > this.collectFail(true, format(MISSING_KEY, "A", key)); > } > } > } > > // ensure both objects have the same number of properties > for (key in a) { > if (hasOwnProperty.call(a, key)) { > this.collectFail(!hasOwnProperty.call(b, key), format(MISSING_KEY, > "B", key)); > } > } > > meet.pop(); > > if (this.checkProtoEql) { > //TODO should i check prototypes for === or use eq? > this.collectFail(Object.getPrototypeOf(a) !== Object.getPrototypeOf(b), > EQUALITY_PROTOTYPE, true); > } > }, > > checkPropertyEquality: function(propertyName) { > var _eq = new EQ(this, this.a[propertyName], this.b[propertyName], > this.path.concat([propertyName])); > _eq.check0(); > }, > > defaultCheck: EQ.checkStrictEquality > }; > > EQ.add(t.NUMBER, function(a, b) { > this.collectFail((a !== a && b === b) || (b !== b && a === a) || (a !== b > && a === a && b === b), EQUALITY); > }); > > [t.SYMBOL, t.BOOLEAN, t.STRING].forEach(function(tp) { > EQ.add(tp, EQ.checkStrictEquality); > }); > > EQ.add(t.FUNCTION, function(a, b) { > // functions are compared by their source code > this.collectFail(a.toString() !== b.toString(), FUNCTION_SOURCES); > // check user properties > this.checkPlainObjectsEquality(a, b); > }); > > EQ.add(t.OBJECT, t.REGEXP, function(a, b) { > // check regexp flags > var flags = ["source", "global", "multiline", "lastIndex", "ignoreCase", > "sticky", "unicode"]; > while (flags.length) { > this.checkPropertyEquality(flags.shift()); > } > // check user properties > this.checkPlainObjectsEquality(a, b); > }); > > EQ.add(t.OBJECT, t.DATE, function(a, b) { > //check by timestamp only (using .valueOf) > this.collectFail(+a !== +b, EQUALITY); > // check user properties > this.checkPlainObjectsEquality(a, b); > }); > > [t.NUMBER, t.BOOLEAN, t.STRING].forEach(function(tp) { > EQ.add(t.OBJECT, tp, function(a, b) { > //primitive type wrappers > this.collectFail(a.valueOf() !== b.valueOf(), WRAPPED_VALUE); > // check user properties > this.checkPlainObjectsEquality(a, b); > }); > }); > > EQ.add(t.OBJECT, function(a, b) { > this.checkPlainObjectsEquality(a, b); > }); > > [t.ARRAY, t.ARGUMENTS, t.TYPED_ARRAY].forEach(function(tp) { > EQ.add(t.OBJECT, tp, function(a, b) { > this.checkPropertyEquality("length"); > > this.checkPlainObjectsEquality(a, b); > }); > }); > > EQ.add(t.OBJECT, t.ARRAY_BUFFER, function(a, b) { > this.checkPropertyEquality("byteLength"); > > this.checkPlainObjectsEquality(a, b); > }); > > EQ.add(t.OBJECT, t.ERROR, function(a, b) { > this.checkPropertyEquality("name"); > this.checkPropertyEquality("message"); > > this.checkPlainObjectsEquality(a, b); > }); > > EQ.add(t.OBJECT, t.BUFFER, function(a) { > this.checkPropertyEquality("length"); > > var l = a.length; > while (l--) { > this.checkPropertyEquality(l); > } > > //we do not check for user properties because > //node Buffer have some strange hidden properties > }); > > function checkMapByKeys(a, b) { > var iteratorA = a.keys(); > > for (var nextA = iteratorA.next(); !nextA.done; nextA = iteratorA.next()) { > var key = nextA.value; > var hasKey = b.has(key); > this.collectFail(!hasKey, format(SET_MAP_MISSING_KEY, key)); > > if (hasKey) { > var valueB = b.get(key); > var valueA = a.get(key); > > eq(valueA, valueB, this); > } > } > } > > function checkSetByKeys(a, b) { > var iteratorA = a.keys(); > > for (var nextA = iteratorA.next(); !nextA.done; nextA = iteratorA.next()) { > var key = nextA.value; > var hasKey = b.has(key); > this.collectFail(!hasKey, format(SET_MAP_MISSING_KEY, key)); > } > } > > EQ.add(t.OBJECT, t.MAP, function(a, b) { > this._meet.push([a, b]); > > checkMapByKeys.call(this, a, b); > checkMapByKeys.call(this, b, a); > > this._meet.pop(); > > this.checkPlainObjectsEquality(a, b); > }); > EQ.add(t.OBJECT, t.SET, function(a, b) { > this._meet.push([a, b]); > > checkSetByKeys.call(this, a, b); > checkSetByKeys.call(this, b, a); > > this._meet.pop(); > > this.checkPlainObjectsEquality(a, b); > }); > > function eq(a, b, opts) { > return new EQ(opts, a, b).check(); > } > > eq.EQ = EQ; > > module.exports = eq; > (!) Unresolved dependencies > https://rollupjs.org/guide/en#warning-treating-module-as-external-dependency > should-type (imported by index.js) > created stdout in 75ms > (!) You have passed an unrecognized option > Unknown CLI flag: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, > 17, 18. Allowed options: acorn, acornInjectPlugins, amd, assetFileNames, > banner, c, cache, chunkFileNames, chunkGroupingSize, compact, config, > context, d, dir, dynamicImportFunction, e, entryFileNames, environment, > esModule, experimentalCacheExpiry, experimentalOptimizeChunks, > experimentalTopLevelAwait, exports, extend, external, f, file, footer, > format, freeze, g, globals, h, i, indent, inlineDynamicImports, input, > interop, intro, m, manualChunks, moduleContext, n, name, > namespaceToStringTag, noConflict, o, onwarn, outro, paths, perf, plugins, > preferConst, preserveModules, preserveSymlinks, shimMissingExports, silent, > sourcemap, sourcemapExcludeSources, sourcemapFile, strict, treeshake, v, w, > watch > > index.js → stdout... > import t from 'should-type'; > > function format(msg) { > var args = arguments; > for (var i = 1, l = args.length; i < l; i++) { > msg = msg.replace(/%s/, args[i]); > } > return msg; > } > > var hasOwnProperty = Object.prototype.hasOwnProperty; > > function EqualityFail(a, b, reason, path) { > this.a = a; > this.b = b; > this.reason = reason; > this.path = path; > } > > function typeToString(tp) { > return tp.type + (tp.cls ? "(" + tp.cls + (tp.sub ? " " + tp.sub : "") + > ")" : ""); > } > > var PLUS_0_AND_MINUS_0 = "+0 is not equal to -0"; > var DIFFERENT_TYPES = "A has type %s and B has type %s"; > var EQUALITY = "A is not equal to B"; > var EQUALITY_PROTOTYPE = "A and B have different prototypes"; > var WRAPPED_VALUE = "A wrapped value is not equal to B wrapped value"; > var FUNCTION_SOURCES = "function A is not equal to B by source code value > (via .toString call)"; > var MISSING_KEY = "%s has no key %s"; > var SET_MAP_MISSING_KEY = "Set/Map missing key %s"; > > var DEFAULT_OPTIONS = { > checkProtoEql: true, > checkSubType: true, > plusZeroAndMinusZeroEqual: true, > collectAllFails: false > }; > > function setBooleanDefault(property, obj, opts, defaults) { > obj[property] = typeof opts[property] !== "boolean" ? defaults[property] : > opts[property]; > } > > var METHOD_PREFIX = "_check_"; > > function EQ(opts, a, b, path) { > opts = opts || {}; > > setBooleanDefault("checkProtoEql", this, opts, DEFAULT_OPTIONS); > setBooleanDefault("plusZeroAndMinusZeroEqual", this, opts, DEFAULT_OPTIONS); > setBooleanDefault("checkSubType", this, opts, DEFAULT_OPTIONS); > setBooleanDefault("collectAllFails", this, opts, DEFAULT_OPTIONS); > > this.a = a; > this.b = b; > > this._meet = opts._meet || []; > > this.fails = opts.fails || []; > > this.path = path || []; > } > > function ShortcutError(fail) { > this.name = "ShortcutError"; > this.message = "fail fast"; > this.fail = fail; > } > > ShortcutError.prototype = Object.create(Error.prototype); > > EQ.checkStrictEquality = function(a, b) { > this.collectFail(a !== b, EQUALITY); > }; > > EQ.add = function add(type, cls, sub, f) { > var args = Array.prototype.slice.call(arguments); > f = args.pop(); > EQ.prototype[METHOD_PREFIX + args.join("_")] = f; > }; > > EQ.prototype = { > check: function() { > try { > this.check0(); > } catch (e) { > if (e instanceof ShortcutError) { > return [e.fail]; > } > throw e; > } > return this.fails; > }, > > check0: function() { > var a = this.a; > var b = this.b; > > // equal a and b exit early > if (a === b) { > // check for +0 !== -0; > return this.collectFail(a === 0 && 1 / a !== 1 / b && > !this.plusZeroAndMinusZeroEqual, PLUS_0_AND_MINUS_0); > } > > var typeA = t(a); > var typeB = t(b); > > // if objects has different types they are not equal > if (typeA.type !== typeB.type || typeA.cls !== typeB.cls || typeA.sub !== > typeB.sub) { > return this.collectFail(true, format(DIFFERENT_TYPES, > typeToString(typeA), typeToString(typeB))); > } > > // as types the same checks type specific things > var name1 = typeA.type, > name2 = typeA.type; > if (typeA.cls) { > name1 += "_" + typeA.cls; > name2 += "_" + typeA.cls; > } > if (typeA.sub) { > name2 += "_" + typeA.sub; > } > > var f = > this[METHOD_PREFIX + name2] || > this[METHOD_PREFIX + name1] || > this[METHOD_PREFIX + typeA.type] || > this.defaultCheck; > > f.call(this, this.a, this.b); > }, > > collectFail: function(comparison, reason, showReason) { > if (comparison) { > var res = new EqualityFail(this.a, this.b, reason, this.path); > res.showReason = !!showReason; > > this.fails.push(res); > > if (!this.collectAllFails) { > throw new ShortcutError(res); > } > } > }, > > checkPlainObjectsEquality: function(a, b) { > // compare deep objects and arrays > // stacks contain references only > // > var meet = this._meet; > var m = this._meet.length; > while (m--) { > var st = meet[m]; > if (st[0] === a && st[1] === b) { > return; > } > } > > // add `a` and `b` to the stack of traversed objects > meet.push([a, b]); > > // TODO maybe something else like getOwnPropertyNames > var key; > for (key in b) { > if (hasOwnProperty.call(b, key)) { > if (hasOwnProperty.call(a, key)) { > this.checkPropertyEquality(key); > } else { > this.collectFail(true, format(MISSING_KEY, "A", key)); > } > } > } > > // ensure both objects have the same number of properties > for (key in a) { > if (hasOwnProperty.call(a, key)) { > this.collectFail(!hasOwnProperty.call(b, key), format(MISSING_KEY, > "B", key)); > } > } > > meet.pop(); > > if (this.checkProtoEql) { > //TODO should i check prototypes for === or use eq? > this.collectFail(Object.getPrototypeOf(a) !== Object.getPrototypeOf(b), > EQUALITY_PROTOTYPE, true); > } > }, > > checkPropertyEquality: function(propertyName) { > var _eq = new EQ(this, this.a[propertyName], this.b[propertyName], > this.path.concat([propertyName])); > _eq.check0(); > }, > > defaultCheck: EQ.checkStrictEquality > }; > > EQ.add(t.NUMBER, function(a, b) { > this.collectFail((a !== a && b === b) || (b !== b && a === a) || (a !== b > && a === a && b === b), EQUALITY); > }); > > [t.SYMBOL, t.BOOLEAN, t.STRING].forEach(function(tp) { > EQ.add(tp, EQ.checkStrictEquality); > }); > > EQ.add(t.FUNCTION, function(a, b) { > // functions are compared by their source code > this.collectFail(a.toString() !== b.toString(), FUNCTION_SOURCES); > // check user properties > this.checkPlainObjectsEquality(a, b); > }); > > EQ.add(t.OBJECT, t.REGEXP, function(a, b) { > // check regexp flags > var flags = ["source", "global", "multiline", "lastIndex", "ignoreCase", > "sticky", "unicode"]; > while (flags.length) { > this.checkPropertyEquality(flags.shift()); > } > // check user properties > this.checkPlainObjectsEquality(a, b); > }); > > EQ.add(t.OBJECT, t.DATE, function(a, b) { > //check by timestamp only (using .valueOf) > this.collectFail(+a !== +b, EQUALITY); > // check user properties > this.checkPlainObjectsEquality(a, b); > }); > > [t.NUMBER, t.BOOLEAN, t.STRING].forEach(function(tp) { > EQ.add(t.OBJECT, tp, function(a, b) { > //primitive type wrappers > this.collectFail(a.valueOf() !== b.valueOf(), WRAPPED_VALUE); > // check user properties > this.checkPlainObjectsEquality(a, b); > }); > }); > > EQ.add(t.OBJECT, function(a, b) { > this.checkPlainObjectsEquality(a, b); > }); > > [t.ARRAY, t.ARGUMENTS, t.TYPED_ARRAY].forEach(function(tp) { > EQ.add(t.OBJECT, tp, function(a, b) { > this.checkPropertyEquality("length"); > > this.checkPlainObjectsEquality(a, b); > }); > }); > > EQ.add(t.OBJECT, t.ARRAY_BUFFER, function(a, b) { > this.checkPropertyEquality("byteLength"); > > this.checkPlainObjectsEquality(a, b); > }); > > EQ.add(t.OBJECT, t.ERROR, function(a, b) { > this.checkPropertyEquality("name"); > this.checkPropertyEquality("message"); > > this.checkPlainObjectsEquality(a, b); > }); > > EQ.add(t.OBJECT, t.BUFFER, function(a) { > this.checkPropertyEquality("length"); > > var l = a.length; > while (l--) { > this.checkPropertyEquality(l); > } > > //we do not check for user properties because > //node Buffer have some strange hidden properties > }); > > function checkMapByKeys(a, b) { > var iteratorA = a.keys(); > > for (var nextA = iteratorA.next(); !nextA.done; nextA = iteratorA.next()) { > var key = nextA.value; > var hasKey = b.has(key); > this.collectFail(!hasKey, format(SET_MAP_MISSING_KEY, key)); > > if (hasKey) { > var valueB = b.get(key); > var valueA = a.get(key); > > eq(valueA, valueB, this); > } > } > } > > function checkSetByKeys(a, b) { > var iteratorA = a.keys(); > > for (var nextA = iteratorA.next(); !nextA.done; nextA = iteratorA.next()) { > var key = nextA.value; > var hasKey = b.has(key); > this.collectFail(!hasKey, format(SET_MAP_MISSING_KEY, key)); > } > } > > EQ.add(t.OBJECT, t.MAP, function(a, b) { > this._meet.push([a, b]); > > checkMapByKeys.call(this, a, b); > checkMapByKeys.call(this, b, a); > > this._meet.pop(); > > this.checkPlainObjectsEquality(a, b); > }); > EQ.add(t.OBJECT, t.SET, function(a, b) { > this._meet.push([a, b]); > > checkSetByKeys.call(this, a, b); > checkSetByKeys.call(this, b, a); > > this._meet.pop(); > > this.checkPlainObjectsEquality(a, b); > }); > > function eq(a, b, opts) { > return new EQ(opts, a, b).check(); > } > > eq.EQ = EQ; > > export default eq; > (!) Unresolved dependencies > https://rollupjs.org/guide/en#warning-treating-module-as-external-dependency > should-type (imported by index.js) > created stdout in 74ms > Found debian/nodejs/should-type/build > cd ./should-type && sh -e ../debian/nodejs/should-type/build > (!) You have passed an unrecognized option > Unknown CLI flag: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, > 17. Allowed options: acorn, acornInjectPlugins, amd, assetFileNames, banner, > c, cache, chunkFileNames, chunkGroupingSize, compact, config, context, d, > dir, dynamicImportFunction, e, entryFileNames, environment, esModule, > experimentalCacheExpiry, experimentalOptimizeChunks, > experimentalTopLevelAwait, exports, extend, external, f, file, footer, > format, freeze, g, globals, h, i, indent, inlineDynamicImports, input, > interop, intro, m, manualChunks, moduleContext, n, name, > namespaceToStringTag, noConflict, o, onwarn, outro, paths, perf, plugins, > preferConst, preserveModules, preserveSymlinks, shimMissingExports, silent, > sourcemap, sourcemapExcludeSources, sourcemapFile, strict, treeshake, v, w, > watch > > index.js → stdout... > 'use strict'; > > var types = { > NUMBER: 'number', > UNDEFINED: 'undefined', > STRING: 'string', > BOOLEAN: 'boolean', > OBJECT: 'object', > FUNCTION: 'function', > NULL: 'null', > ARRAY: 'array', > REGEXP: 'regexp', > DATE: 'date', > ERROR: 'error', > ARGUMENTS: 'arguments', > SYMBOL: 'symbol', > ARRAY_BUFFER: 'array-buffer', > TYPED_ARRAY: 'typed-array', > DATA_VIEW: 'data-view', > MAP: 'map', > SET: 'set', > WEAK_SET: 'weak-set', > WEAK_MAP: 'weak-map', > PROMISE: 'promise', > > // node buffer > BUFFER: 'buffer', > > // dom html element > HTML_ELEMENT: 'html-element', > HTML_ELEMENT_TEXT: 'html-element-text', > DOCUMENT: 'document', > WINDOW: 'window', > FILE: 'file', > FILE_LIST: 'file-list', > BLOB: 'blob', > > HOST: 'host', > > XHR: 'xhr', > > // simd > SIMD: 'simd' > }; > > /* > * Simple data function to store type information > * @param {string} type Usually what is returned from typeof > * @param {string} cls Sanitized @Class via Object.prototype.toString > * @param {string} sub If type and cls the same, and need to specify somehow > * @private > * @example > * > * //for null > * new Type('null'); > * > * //for Date > * new Type('object', 'date'); > * > * //for Uint8Array > * > * new Type('object', 'typed-array', 'uint8'); > */ > function Type(type, cls, sub) { > if (!type) { > throw new Error('Type class must be initialized at least with `type` > information'); > } > this.type = type; > this.cls = cls; > this.sub = sub; > } > > Type.prototype = { > toString: function(sep) { > sep = sep || ';'; > var str = [this.type]; > if (this.cls) { > str.push(this.cls); > } > if (this.sub) { > str.push(this.sub); > } > return str.join(sep); > }, > > toTryTypes: function() { > var _types = []; > if (this.sub) { > _types.push(new Type(this.type, this.cls, this.sub)); > } > if (this.cls) { > _types.push(new Type(this.type, this.cls)); > } > _types.push(new Type(this.type)); > > return _types; > } > }; > > var toString = Object.prototype.toString; > > > > /** > * Function to store type checks > * @private > */ > function TypeChecker() { > this.checks = []; > } > > TypeChecker.prototype = { > add: function(func) { > this.checks.push(func); > return this; > }, > > addBeforeFirstMatch: function(obj, func) { > var match = this.getFirstMatch(obj); > if (match) { > this.checks.splice(match.index, 0, func); > } else { > this.add(func); > } > }, > > addTypeOf: function(type, res) { > return this.add(function(obj, tpeOf) { > if (tpeOf === type) { > return new Type(res); > } > }); > }, > > addClass: function(cls, res, sub) { > return this.add(function(obj, tpeOf, objCls) { > if (objCls === cls) { > return new Type(types.OBJECT, res, sub); > } > }); > }, > > getFirstMatch: function(obj) { > var typeOf = typeof obj; > var cls = toString.call(obj); > > for (var i = 0, l = this.checks.length; i < l; i++) { > var res = this.checks[i].call(this, obj, typeOf, cls); > if (typeof res !== 'undefined') { > return { result: res, func: this.checks[i], index: i }; > } > } > }, > > getType: function(obj) { > var match = this.getFirstMatch(obj); > return match && match.result; > } > }; > > var main = new TypeChecker(); > > //TODO add iterators > > main > .addTypeOf(types.NUMBER, types.NUMBER) > .addTypeOf(types.UNDEFINED, types.UNDEFINED) > .addTypeOf(types.STRING, types.STRING) > .addTypeOf(types.BOOLEAN, types.BOOLEAN) > .addTypeOf(types.FUNCTION, types.FUNCTION) > .addTypeOf(types.SYMBOL, types.SYMBOL) > .add(function(obj) { > if (obj === null) { > return new Type(types.NULL); > } > }) > .addClass('[object String]', types.STRING) > .addClass('[object Boolean]', types.BOOLEAN) > .addClass('[object Number]', types.NUMBER) > .addClass('[object Array]', types.ARRAY) > .addClass('[object RegExp]', types.REGEXP) > .addClass('[object Error]', types.ERROR) > .addClass('[object Date]', types.DATE) > .addClass('[object Arguments]', types.ARGUMENTS) > > .addClass('[object ArrayBuffer]', types.ARRAY_BUFFER) > .addClass('[object Int8Array]', types.TYPED_ARRAY, 'int8') > .addClass('[object Uint8Array]', types.TYPED_ARRAY, 'uint8') > .addClass('[object Uint8ClampedArray]', types.TYPED_ARRAY, 'uint8clamped') > .addClass('[object Int16Array]', types.TYPED_ARRAY, 'int16') > .addClass('[object Uint16Array]', types.TYPED_ARRAY, 'uint16') > .addClass('[object Int32Array]', types.TYPED_ARRAY, 'int32') > .addClass('[object Uint32Array]', types.TYPED_ARRAY, 'uint32') > .addClass('[object Float32Array]', types.TYPED_ARRAY, 'float32') > .addClass('[object Float64Array]', types.TYPED_ARRAY, 'float64') > > .addClass('[object Bool16x8]', types.SIMD, 'bool16x8') > .addClass('[object Bool32x4]', types.SIMD, 'bool32x4') > .addClass('[object Bool8x16]', types.SIMD, 'bool8x16') > .addClass('[object Float32x4]', types.SIMD, 'float32x4') > .addClass('[object Int16x8]', types.SIMD, 'int16x8') > .addClass('[object Int32x4]', types.SIMD, 'int32x4') > .addClass('[object Int8x16]', types.SIMD, 'int8x16') > .addClass('[object Uint16x8]', types.SIMD, 'uint16x8') > .addClass('[object Uint32x4]', types.SIMD, 'uint32x4') > .addClass('[object Uint8x16]', types.SIMD, 'uint8x16') > > .addClass('[object DataView]', types.DATA_VIEW) > .addClass('[object Map]', types.MAP) > .addClass('[object WeakMap]', types.WEAK_MAP) > .addClass('[object Set]', types.SET) > .addClass('[object WeakSet]', types.WEAK_SET) > .addClass('[object Promise]', types.PROMISE) > .addClass('[object Blob]', types.BLOB) > .addClass('[object File]', types.FILE) > .addClass('[object FileList]', types.FILE_LIST) > .addClass('[object XMLHttpRequest]', types.XHR) > .add(function(obj) { > if ((typeof Promise === types.FUNCTION && obj instanceof Promise) || > (typeof obj.then === types.FUNCTION)) { > return new Type(types.OBJECT, types.PROMISE); > } > }) > .add(function(obj) { > if (typeof Buffer !== 'undefined' && obj instanceof Buffer) {// > eslint-disable-line no-undef > return new Type(types.OBJECT, types.BUFFER); > } > }) > .add(function(obj) { > if (typeof Node !== 'undefined' && obj instanceof Node) { > return new Type(types.OBJECT, types.HTML_ELEMENT, obj.nodeName); > } > }) > .add(function(obj) { > // probably at the begginging should be enough these checks > if (obj.Boolean === Boolean && obj.Number === Number && obj.String === > String && obj.Date === Date) { > return new Type(types.OBJECT, types.HOST); > } > }) > .add(function() { > return new Type(types.OBJECT); > }); > > /** > * Get type information of anything > * > * @param {any} obj Anything that could require type information > * @return {Type} type info > * @private > */ > function getGlobalType(obj) { > return main.getType(obj); > } > > getGlobalType.checker = main; > getGlobalType.TypeChecker = TypeChecker; > getGlobalType.Type = Type; > > Object.keys(types).forEach(function(typeName) { > getGlobalType[typeName] = types[typeName]; > }); > > module.exports = getGlobalType; > created stdout in 60ms > (!) You have passed an unrecognized option > Unknown CLI flag: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, > 17. Allowed options: acorn, acornInjectPlugins, amd, assetFileNames, banner, > c, cache, chunkFileNames, chunkGroupingSize, compact, config, context, d, > dir, dynamicImportFunction, e, entryFileNames, environment, esModule, > experimentalCacheExpiry, experimentalOptimizeChunks, > experimentalTopLevelAwait, exports, extend, external, f, file, footer, > format, freeze, g, globals, h, i, indent, inlineDynamicImports, input, > interop, intro, m, manualChunks, moduleContext, n, name, > namespaceToStringTag, noConflict, o, onwarn, outro, paths, perf, plugins, > preferConst, preserveModules, preserveSymlinks, shimMissingExports, silent, > sourcemap, sourcemapExcludeSources, sourcemapFile, strict, treeshake, v, w, > watch > > index.js → stdout... > var types = { > NUMBER: 'number', > UNDEFINED: 'undefined', > STRING: 'string', > BOOLEAN: 'boolean', > OBJECT: 'object', > FUNCTION: 'function', > NULL: 'null', > ARRAY: 'array', > REGEXP: 'regexp', > DATE: 'date', > ERROR: 'error', > ARGUMENTS: 'arguments', > SYMBOL: 'symbol', > ARRAY_BUFFER: 'array-buffer', > TYPED_ARRAY: 'typed-array', > DATA_VIEW: 'data-view', > MAP: 'map', > SET: 'set', > WEAK_SET: 'weak-set', > WEAK_MAP: 'weak-map', > PROMISE: 'promise', > > // node buffer > BUFFER: 'buffer', > > // dom html element > HTML_ELEMENT: 'html-element', > HTML_ELEMENT_TEXT: 'html-element-text', > DOCUMENT: 'document', > WINDOW: 'window', > FILE: 'file', > FILE_LIST: 'file-list', > BLOB: 'blob', > > HOST: 'host', > > XHR: 'xhr', > > // simd > SIMD: 'simd' > }; > > /* > * Simple data function to store type information > * @param {string} type Usually what is returned from typeof > * @param {string} cls Sanitized @Class via Object.prototype.toString > * @param {string} sub If type and cls the same, and need to specify somehow > * @private > * @example > * > * //for null > * new Type('null'); > * > * //for Date > * new Type('object', 'date'); > * > * //for Uint8Array > * > * new Type('object', 'typed-array', 'uint8'); > */ > function Type(type, cls, sub) { > if (!type) { > throw new Error('Type class must be initialized at least with `type` > information'); > } > this.type = type; > this.cls = cls; > this.sub = sub; > } > > Type.prototype = { > toString: function(sep) { > sep = sep || ';'; > var str = [this.type]; > if (this.cls) { > str.push(this.cls); > } > if (this.sub) { > str.push(this.sub); > } > return str.join(sep); > }, > > toTryTypes: function() { > var _types = []; > if (this.sub) { > _types.push(new Type(this.type, this.cls, this.sub)); > } > if (this.cls) { > _types.push(new Type(this.type, this.cls)); > } > _types.push(new Type(this.type)); > > return _types; > } > }; > > var toString = Object.prototype.toString; > > > > /** > * Function to store type checks > * @private > */ > function TypeChecker() { > this.checks = []; > } > > TypeChecker.prototype = { > add: function(func) { > this.checks.push(func); > return this; > }, > > addBeforeFirstMatch: function(obj, func) { > var match = this.getFirstMatch(obj); > if (match) { > this.checks.splice(match.index, 0, func); > } else { > this.add(func); > } > }, > > addTypeOf: function(type, res) { > return this.add(function(obj, tpeOf) { > if (tpeOf === type) { > return new Type(res); > } > }); > }, > > addClass: function(cls, res, sub) { > return this.add(function(obj, tpeOf, objCls) { > if (objCls === cls) { > return new Type(types.OBJECT, res, sub); > } > }); > }, > > getFirstMatch: function(obj) { > var typeOf = typeof obj; > var cls = toString.call(obj); > > for (var i = 0, l = this.checks.length; i < l; i++) { > var res = this.checks[i].call(this, obj, typeOf, cls); > if (typeof res !== 'undefined') { > return { result: res, func: this.checks[i], index: i }; > } > } > }, > > getType: function(obj) { > var match = this.getFirstMatch(obj); > return match && match.result; > } > }; > > var main = new TypeChecker(); > > //TODO add iterators > > main > .addTypeOf(types.NUMBER, types.NUMBER) > .addTypeOf(types.UNDEFINED, types.UNDEFINED) > .addTypeOf(types.STRING, types.STRING) > .addTypeOf(types.BOOLEAN, types.BOOLEAN) > .addTypeOf(types.FUNCTION, types.FUNCTION) > .addTypeOf(types.SYMBOL, types.SYMBOL) > .add(function(obj) { > if (obj === null) { > return new Type(types.NULL); > } > }) > .addClass('[object String]', types.STRING) > .addClass('[object Boolean]', types.BOOLEAN) > .addClass('[object Number]', types.NUMBER) > .addClass('[object Array]', types.ARRAY) > .addClass('[object RegExp]', types.REGEXP) > .addClass('[object Error]', types.ERROR) > .addClass('[object Date]', types.DATE) > .addClass('[object Arguments]', types.ARGUMENTS) > > .addClass('[object ArrayBuffer]', types.ARRAY_BUFFER) > .addClass('[object Int8Array]', types.TYPED_ARRAY, 'int8') > .addClass('[object Uint8Array]', types.TYPED_ARRAY, 'uint8') > .addClass('[object Uint8ClampedArray]', types.TYPED_ARRAY, 'uint8clamped') > .addClass('[object Int16Array]', types.TYPED_ARRAY, 'int16') > .addClass('[object Uint16Array]', types.TYPED_ARRAY, 'uint16') > .addClass('[object Int32Array]', types.TYPED_ARRAY, 'int32') > .addClass('[object Uint32Array]', types.TYPED_ARRAY, 'uint32') > .addClass('[object Float32Array]', types.TYPED_ARRAY, 'float32') > .addClass('[object Float64Array]', types.TYPED_ARRAY, 'float64') > > .addClass('[object Bool16x8]', types.SIMD, 'bool16x8') > .addClass('[object Bool32x4]', types.SIMD, 'bool32x4') > .addClass('[object Bool8x16]', types.SIMD, 'bool8x16') > .addClass('[object Float32x4]', types.SIMD, 'float32x4') > .addClass('[object Int16x8]', types.SIMD, 'int16x8') > .addClass('[object Int32x4]', types.SIMD, 'int32x4') > .addClass('[object Int8x16]', types.SIMD, 'int8x16') > .addClass('[object Uint16x8]', types.SIMD, 'uint16x8') > .addClass('[object Uint32x4]', types.SIMD, 'uint32x4') > .addClass('[object Uint8x16]', types.SIMD, 'uint8x16') > > .addClass('[object DataView]', types.DATA_VIEW) > .addClass('[object Map]', types.MAP) > .addClass('[object WeakMap]', types.WEAK_MAP) > .addClass('[object Set]', types.SET) > .addClass('[object WeakSet]', types.WEAK_SET) > .addClass('[object Promise]', types.PROMISE) > .addClass('[object Blob]', types.BLOB) > .addClass('[object File]', types.FILE) > .addClass('[object FileList]', types.FILE_LIST) > .addClass('[object XMLHttpRequest]', types.XHR) > .add(function(obj) { > if ((typeof Promise === types.FUNCTION && obj instanceof Promise) || > (typeof obj.then === types.FUNCTION)) { > return new Type(types.OBJECT, types.PROMISE); > } > }) > .add(function(obj) { > if (typeof Buffer !== 'undefined' && obj instanceof Buffer) {// > eslint-disable-line no-undef > return new Type(types.OBJECT, types.BUFFER); > } > }) > .add(function(obj) { > if (typeof Node !== 'undefined' && obj instanceof Node) { > return new Type(types.OBJECT, types.HTML_ELEMENT, obj.nodeName); > } > }) > .add(function(obj) { > // probably at the begginging should be enough these checks > if (obj.Boolean === Boolean && obj.Number === Number && obj.String === > String && obj.Date === Date) { > return new Type(types.OBJECT, types.HOST); > } > }) > .add(function() { > return new Type(types.OBJECT); > }); > > /** > * Get type information of anything > * > * @param {any} obj Anything that could require type information > * @return {Type} type info > * @private > */ > function getGlobalType(obj) { > return main.getType(obj); > } > > getGlobalType.checker = main; > getGlobalType.TypeChecker = TypeChecker; > getGlobalType.Type = Type; > > Object.keys(types).forEach(function(typeName) { > getGlobalType[typeName] = types[typeName]; > }); > > export default getGlobalType; > created stdout in 60ms > Found debian/nodejs/./build > cd ./. && sh -e debian/nodejs/./build > > ./lib/umd.js → ./should.js... > (!) node-resolve plugin: The onwrite hook used by plugin node-resolve is > deprecated. The generateBundle hook should be used instead. > created ./should.js in 376ms > > lib/index.js → cjs/should.js... > (!) Unresolved dependencies > https://rollupjs.org/guide/en#warning-treating-module-as-external-dependency > should-type (imported by lib/should.js, lib/ext/eql.js) > should-equal (imported by lib/should.js, lib/ext/eql.js, lib/ext/contain.js, > lib/ext/property.js, lib/ext/match.js, lib/ext/_assert.js) > should-format (imported by lib/should.js, lib/util.js, lib/format.js, > lib/config.js) > should-util (imported by lib/assertion-error.js, lib/assertion.js, > lib/ext/assert.js, lib/ext/property.js, lib/ext/error.js) > should-type-adaptors (imported by lib/config.js, lib/ext/eql.js, > lib/ext/contain.js, lib/ext/property.js, lib/ext/match.js) > created cjs/should.js in 203ms > > lib/index.js → es6/should.js... > (!) Unresolved dependencies > https://rollupjs.org/guide/en#warning-treating-module-as-external-dependency > should-type (imported by lib/should.js, lib/ext/eql.js) > should-equal (imported by lib/should.js, lib/ext/eql.js, lib/ext/contain.js, > lib/ext/property.js, lib/ext/match.js, lib/ext/_assert.js) > should-format (imported by lib/should.js, lib/util.js, lib/format.js, > lib/config.js) > should-util (imported by lib/assertion-error.js, lib/assertion.js, > lib/ext/assert.js, lib/ext/property.js, lib/ext/error.js) > should-type-adaptors (imported by lib/config.js, lib/ext/eql.js, > lib/ext/contain.js, lib/ext/property.js, lib/ext/match.js) > created es6/should.js in 207ms > dh_auto_test --buildsystem=nodejs > cd ./should-equal && sh -e ../debian/nodejs/should-equal/test > /<<PKGBUILDDIR>>/should-equal/index.js:1 > import t from "should-type"; > ^ > > SyntaxError: Unexpected identifier > at Module._compile (internal/modules/cjs/loader.js:723:23) > at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) > at Module.load (internal/modules/cjs/loader.js:653:32) > at tryModuleLoad (internal/modules/cjs/loader.js:593:12) > at Function.Module._load (internal/modules/cjs/loader.js:585:3) > at Module.require (internal/modules/cjs/loader.js:692:17) > at require (internal/modules/cjs/helpers.js:25:18) > at Object.<anonymous> (/<<PKGBUILDDIR>>/should-equal/test.js:2:13) > at Module._compile (internal/modules/cjs/loader.js:778:30) > at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) > at Module.load (internal/modules/cjs/loader.js:653:32) > at tryModuleLoad (internal/modules/cjs/loader.js:593:12) > at Function.Module._load (internal/modules/cjs/loader.js:585:3) > at Module.require (internal/modules/cjs/loader.js:692:17) > at require (internal/modules/cjs/helpers.js:25:18) > at /usr/share/nodejs/mocha/lib/mocha.js:311:36 > at Array.forEach (<anonymous>) > at Mocha.loadFiles (/usr/share/nodejs/mocha/lib/mocha.js:308:14) > at Mocha.run (/usr/share/nodejs/mocha/lib/mocha.js:849:10) > at Object.exports.singleRun > (/usr/share/nodejs/mocha/lib/cli/run-helpers.js:108:16) > at exports.runMocha > (/usr/share/nodejs/mocha/lib/cli/run-helpers.js:143:13) > at Object.exports.handler.argv [as handler] > (/usr/share/nodejs/mocha/lib/cli/run.js:305:3) > at Object.runCommand (/usr/share/nodejs/yargs/lib/command.js:240:40) > at Object.parseArgs [as _parseArgs] > (/usr/share/nodejs/yargs/yargs.js:1173:35) > at Object.parse (/usr/share/nodejs/yargs/yargs.js:618:25) > at Object.exports.main (/usr/share/nodejs/mocha/lib/cli/cli.js:68:6) > at Object.<anonymous> (/usr/share/nodejs/mocha/bin/mocha:133:29) > at Module._compile (internal/modules/cjs/loader.js:778:30) > at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10) > at Module.load (internal/modules/cjs/loader.js:653:32) > at tryModuleLoad (internal/modules/cjs/loader.js:593:12) > at Function.Module._load (internal/modules/cjs/loader.js:585:3) > at Function.Module.runMain (internal/modules/cjs/loader.js:831:12) > at startup (internal/bootstrap/node.js:283:19) > at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3) > dh_auto_test: error: cd ./should-equal && sh -e > ../debian/nodejs/should-equal/test returned exit code 1 The full build log is available from: http://qa-logs.debian.net/2020/03/21/should.js_13.2.3~dfsg-2_unstable.log A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! About the archive rebuild: The rebuild was done on EC2 VM instances from Amazon Web Services, using a clean, minimal and up-to-date chroot. Every failed build was retried once to eliminate random failures.