Blame view

lib/jsdom/living/helpers/selectors.js 1.17 KB
858f2bdf5   Boyan Georgiev   fixes
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
  "use strict";
  
  const nwsapi = require("nwsapi");
  
  const idlUtils = require("../generated/utils");
  
  function initNwsapi(node) {
    const { _globalObject, _ownerDocument } = node;
  
    return nwsapi({
      document: _ownerDocument,
      DOMException: _globalObject.DOMException
    });
  }
  
  exports.matchesDontThrow = (elImpl, selector) => {
    const document = elImpl._ownerDocument;
  
    if (!document._nwsapiDontThrow) {
      document._nwsapiDontThrow = initNwsapi(elImpl);
      document._nwsapiDontThrow.configure({
        LOGERRORS: false,
        VERBOSITY: false,
        IDS_DUPES: true,
        MIXEDCASE: true
      });
    }
  
    return document._nwsapiDontThrow.match(selector, idlUtils.wrapperForImpl(elImpl));
  };
  
  // nwsapi gets `document.documentElement` at creation-time, so we have to initialize lazily, since in the initial
  // stages of Document initialization, there is no documentElement present yet.
  exports.addNwsapi = parentNode => {
    const document = parentNode._ownerDocument;
  
    if (!document._nwsapi) {
      document._nwsapi = initNwsapi(parentNode);
      document._nwsapi.configure({
        LOGERRORS: false,
        IDS_DUPES: true,
        MIXEDCASE: true
      });
    }
  
    return document._nwsapi;
  };