| 'use strict'; |
| |
| Object.defineProperty(exports, '__esModule', { |
| value: true |
| }); |
| exports.default = exports.serialize = exports.test = void 0; |
| |
| var _collections = require('../collections'); |
| |
| /** |
| * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. |
| * |
| * This source code is licensed under the MIT license found in the |
| * LICENSE file in the root directory of this source tree. |
| */ |
| |
| /* eslint-disable local/ban-types-eventually */ |
| const SPACE = ' '; |
| const OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap']; |
| const ARRAY_REGEXP = /^(HTML\w*Collection|NodeList)$/; |
| |
| const testName = name => |
| OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name); |
| |
| const test = val => |
| val && |
| val.constructor && |
| !!val.constructor.name && |
| testName(val.constructor.name); |
| |
| exports.test = test; |
| |
| const isNamedNodeMap = collection => |
| collection.constructor.name === 'NamedNodeMap'; |
| |
| const serialize = (collection, config, indentation, depth, refs, printer) => { |
| const name = collection.constructor.name; |
| |
| if (++depth > config.maxDepth) { |
| return '[' + name + ']'; |
| } |
| |
| return ( |
| (config.min ? '' : name + SPACE) + |
| (OBJECT_NAMES.indexOf(name) !== -1 |
| ? '{' + |
| (0, _collections.printObjectProperties)( |
| isNamedNodeMap(collection) |
| ? Array.from(collection).reduce((props, attribute) => { |
| props[attribute.name] = attribute.value; |
| return props; |
| }, {}) |
| : {...collection}, |
| config, |
| indentation, |
| depth, |
| refs, |
| printer |
| ) + |
| '}' |
| : '[' + |
| (0, _collections.printListItems)( |
| Array.from(collection), |
| config, |
| indentation, |
| depth, |
| refs, |
| printer |
| ) + |
| ']') |
| ); |
| }; |
| |
| exports.serialize = serialize; |
| const plugin = { |
| serialize, |
| test |
| }; |
| var _default = plugin; |
| exports.default = _default; |