Background #1 Background #2 Background #3 Background #4 Background #5 Background #6 Background #7 Background #8 Background #9 Background #10

express-debug-panel npm, a package manager for the JavaScript programming language, is the world's largest software registry. It contains over 1.3 million code packages as of July 2020. The registry is used to share open-source software. Finite Wisdom has contributed a code package named express-debug-panel. You can learn about it here, and see it in action below.

  • Name Value
    _consumingfalse
    _dumpedfalse
    _events
    Name Value
    end
    function clearRequestTimeout(req) {
      if (!req) {
        req = this;
      }
    
      if (!req[kRequestTimeout]) {
        return;
      }
    
      debug('requestTimeout timer cleared');
      clearTimeout(req[kRequestTimeout]);
      req[kRequestTimeout] = undefined;
    }
    _eventsCount1
    _maxListenersundefined
    _parsedOriginalUrl
    Name Value
    _raw/express-debug-panel
    authnull
    hashnull
    hostnull
    hostnamenull
    href/express-debug-panel
    path/express-debug-panel
    pathname/express-debug-panel
    portnull
    protocolnull
    querynull
    searchnull
    slashesnull
    _parsedUrl
    Name Value
    _raw/express-debug-panel
    authnull
    hashnull
    hostnull
    hostnamenull
    href/express-debug-panel
    path/express-debug-panel
    pathname/express-debug-panel
    portnull
    protocolnull
    querynull
    searchnull
    slashesnull
    _readableState
    Name Value
    autoDestroytrue
    awaitDrainWritersnull
    buffer(Object)
    closeEmittedfalse
    closedfalse
    constructedtrue
    dataEmittedfalse
    decodernull
    defaultEncodingutf8
    destroyedfalse
    emitClosetrue
    emittedReadablefalse
    encodingnull
    endEmittedfalse
    endedtrue
    errorEmittedfalse
    errorednull
    flowingnull
    highWaterMark16384
    length0
    multiAwaitDrainfalse
    needReadablefalse
    objectModefalse
    pipes(Object)
    readableListeningfalse
    readingfalse
    readingMoretrue
    resumeScheduledfalse
    synctrue
    _remoteAddress3.22.51.241
    _startAt
    Name Value
    01809613
    1276079573
    _startTime
    Name Value
    abortedfalse
    baseUrl
    body
    Name Value
    client
    Name Value
    _events(Object)
    _eventsCount8
    _hadErrorfalse
    _hostnull
    _httpMessage(Object)
    _maxListenersundefined
    _parentnull
    _pausedfalse
    _peername(Object)
    _pendingDatanull
    _pendingEncoding
    _readableState(Object)
    _server(Object)
    _socknamenull
    _writableState(Object)
    addListener
    function socketListenerWrap(ev, fn) {
        const res = net.Socket.prototype[originalFnName].call(this,
                                                              ev, fn);
        if (!this.parser) {
          this.on = net.Socket.prototype.on;
          this.addListener = net.Socket.prototype.addListener;
          this.prependListener = net.Socket.prototype.prependListener;
          return res;
        }
    
        if (ev === 'data' || ev === 'readable')
          unconsume(this.parser, this);
    
        return res;
      }
    allowHalfOpentrue
    connectingfalse
    on
    function socketListenerWrap(ev, fn) {
        const res = net.Socket.prototype[originalFnName].call(this,
                                                              ev, fn);
        if (!this.parser) {
          this.on = net.Socket.prototype.on;
          this.addListener = net.Socket.prototype.addListener;
          this.prependListener = net.Socket.prototype.prependListener;
          return res;
        }
    
        if (ev === 'data' || ev === 'readable')
          unconsume(this.parser, this);
    
        return res;
      }
    parser(Object)
    prependListener
    function socketListenerWrap(ev, fn) {
        const res = net.Socket.prototype[originalFnName].call(this,
                                                              ev, fn);
        if (!this.parser) {
          this.on = net.Socket.prototype.on;
          this.addListener = net.Socket.prototype.addListener;
          this.prependListener = net.Socket.prototype.prependListener;
          return res;
        }
    
        if (ev === 'data' || ev === 'readable')
          unconsume(this.parser, this);
    
        return res;
      }
    server(Object)
    setEncoding
    function socketSetEncoding() {
      throw new ERR_HTTP_SOCKET_ENCODING();
    }
    completetrue
    cookies
    Name Value
    httpVersion1.1
    httpVersionMajor1
    httpVersionMinor1
    methodGET
    next
    function next(err) {
        var layerError = err === 'route'
          ? null
          : err;
    
        // remove added slash
        if (slashAdded) {
          req.url = req.url.substr(1);
          slashAdded = false;
        }
    
        // restore altered req.url
        if (removed.length !== 0) {
          req.baseUrl = parentUrl;
          req.url = protohost + removed + req.url.substr(protohost.length);
          removed = '';
        }
    
        // signal to exit router
        if (layerError === 'router') {
          setImmediate(done, null)
          return
        }
    
        // no more matching layers
        if (idx >= stack.length) {
          setImmediate(done, layerError);
          return;
        }
    
        // get pathname of request
        var path = getPathname(req);
    
        if (path == null) {
          return done(layerError);
        }
    
        // find next matching layer
        var layer;
        var match;
        var route;
    
        while (match !== true && idx < stack.length) {
          layer = stack[idx++];
          match = matchLayer(layer, path);
          route = layer.route;
    
          if (typeof match !== 'boolean') {
            // hold on to layerError
            layerError = layerError || match;
          }
    
          if (match !== true) {
            continue;
          }
    
          if (!route) {
            // process non-route handlers normally
            continue;
          }
    
          if (layerError) {
            // routes do not match with a pending error
            match = false;
            continue;
          }
    
          var method = req.method;
          var has_method = route._handles_method(method);
    
          // build up automatic options response
          if (!has_method && method === 'OPTIONS') {
            appendMethods(options, route._options());
          }
    
          // don't even bother matching route
          if (!has_method && method !== 'HEAD') {
            match = false;
            continue;
          }
        }
    
        // no match
        if (match !== true) {
          return done(layerError);
        }
    
        // store route for dispatch on change
        if (route) {
          req.route = route;
        }
    
        // Capture one-time layer values
        req.params = self.mergeParams
          ? mergeParams(layer.params, parentParams)
          : layer.params;
        var layerPath = layer.path;
    
        // this should be done for the layer
        self.process_params(layer, paramcalled, req, res, function (err) {
          if (err) {
            return next(layerError || err);
          }
    
          if (route) {
            return layer.handle_request(req, res, next);
          }
    
          trim_prefix(layer, layerError, layerPath, path);
        });
      }
    originalUrl/express-debug-panel
    params
    Name Value
    query
    Name Value
    rawHeaders
    Name Value
    0Host
    1demo.finitewisdom.com
    10X-Request-Id
    11ff7d3129-4a3c-4332-badb-6a212ddada0e
    12X-Forwarded-For
    133.22.51.241
    14X-Forwarded-Proto
    15https
    16X-Forwarded-Port
    17443
    18Via
    191.1 vegur
    2Connection
    20Connect-Time
    210
    22X-Request-Start
    231715883551764
    24Total-Route-Time
    250
    3close
    4Accept
    5*/*
    6User-Agent
    7Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
    8Accept-Encoding
    9gzip, br, zstd, deflate
    rawTrailers
    Name Value
    res
    Name Value
    _closedfalse
    _contentLengthnull
    _defaultKeepAlivetrue
    _events(Object)
    _eventsCount1
    _expect_continuefalse
    _hasBodytrue
    _headernull
    _headerSentfalse
    _keepAliveTimeout5000
    _lastfalse
    _maxListenersundefined
    _onPendingData
    function () { [native code] }
    _removedConnectionfalse
    _removedContLenfalse
    _removedTEfalse
    _sent100false
    _startAtundefined
    _startTimeundefined
    _trailer
    chunkedEncodingfalse
    destroyedfalse
    end
    function end(chunk, encoding) {
          if (ended) {
            return false;
          }
    
          ended = true;
    
          var ret;
          var sync = true;
    
          function writeend() {
            if (sync) {
              ret = _end.call(res, chunk, encoding);
              sync = false;
              return;
            }
    
            _end.call(res);
          }
    
          function writetop() {
            if (!sync) {
              return ret;
            }
    
            if (chunk == null) {
              ret = true;
              return ret;
            }
    
            var contentLength = Number(res.getHeader('Content-Length'));
    
            if (!isNaN(contentLength) && contentLength > 0) {
              // measure chunk
              chunk = !Buffer.isBuffer(chunk)
                ? Buffer.from(chunk, encoding)
                : chunk;
              encoding = undefined;
    
              if (chunk.length !== 0) {
                debug('split response');
                ret = _write.call(res, chunk.slice(0, chunk.length - 1));
                chunk = chunk.slice(chunk.length - 1, chunk.length);
                return ret;
              }
            }
    
            ret = _write.call(res, chunk, encoding);
            sync = false;
    
            return ret;
          }
    
          if (shouldDestroy(req)) {
            // destroy session
            debug('destroying');
            store.destroy(req.sessionID, function ondestroy(err) {
              if (err) {
                defer(next, err);
              }
    
              debug('destroyed');
              writeend();
            });
    
            return writetop();
          }
    
          // no session to save
          if (!req.session) {
            debug('no session');
            return _end.call(res, chunk, encoding);
          }
    
          if (!touched) {
            // touch session
            req.session.touch()
            touched = true
          }
    
          if (shouldSave(req)) {
            req.session.save(function onsave(err) {
              if (err) {
                defer(next, err);
              }
    
              writeend();
            });
    
            return writetop();
          } else if (storeImplementsTouch && shouldTouch(req)) {
            // store implements touch method
            debug('touching');
            store.touch(req.sessionID, req.session, function ontouch(err) {
              if (err) {
                defer(next, err);
              }
    
              debug('touched');
              writeend();
            });
    
            return writetop();
          }
    
          return _end.call(res, chunk, encoding);
        }
    finishedfalse
    locals(Object)
    maxRequestsOnConnectionReachedfalse
    outputData(Object)
    outputSize0
    req(Object)
    sendDatetrue
    shouldKeepAlivefalse
    socket(Object)
    useChunkedEncodingByDefaulttrue
    writabletrue
    writeHead
    function writeHead (statusCode) {
        // set headers from arguments
        var args = setWriteHeadHeaders.apply(this, arguments)
    
        // fire listener
        if (!fired) {
          fired = true
          listener.call(this)
    
          // pass-along an updated status code
          if (typeof args[0] === 'number' && this.statusCode !== args[0]) {
            args[0] = this.statusCode
            args.length = 1
          }
        }
    
        return prevWriteHead.apply(this, args)
      }
    route
    Name Value
    methods(Object)
    path/express-debug-panel
    stack(Object)
    secretundefined
    session
    Name Value
    cookie(Object)
    sessionIDaU4uM4A7AOspAoe-zymBBVRPipAD3PUS
    sessionStore
    Name Value
    _events(Object)
    _eventsCount2
    _maxListenersundefined
    errorLog
    function () { [native code] }
    generate
    function(req){
        req.sessionID = generateId(req);
        req.session = new Session(req);
        req.session.cookie = new Cookie(cookieOptions);
    
        if (cookieOptions.secure === 'auto') {
          req.session.cookie.secure = issecure(req, trustProxy);
        }
      }
    ownsPgfalse
    pool(Object)
    pruneSessionInterval900000
    pruneSessionRandomizedInterval
    delay => Math.ceil(delay / 2 + delay * Math.random())
    pruneTimer(Object)
    schemaNamedemo
    tableNamesession
    ttlundefined
    signedCookies
    Name Value
    socket
    Name Value
    _events(Object)
    _eventsCount8
    _hadErrorfalse
    _hostnull
    _httpMessage(Object)
    _maxListenersundefined
    _parentnull
    _pausedfalse
    _peername(Object)
    _pendingDatanull
    _pendingEncoding
    _readableState(Object)
    _server(Object)
    _socknamenull
    _writableState(Object)
    addListener
    function socketListenerWrap(ev, fn) {
        const res = net.Socket.prototype[originalFnName].call(this,
                                                              ev, fn);
        if (!this.parser) {
          this.on = net.Socket.prototype.on;
          this.addListener = net.Socket.prototype.addListener;
          this.prependListener = net.Socket.prototype.prependListener;
          return res;
        }
    
        if (ev === 'data' || ev === 'readable')
          unconsume(this.parser, this);
    
        return res;
      }
    allowHalfOpentrue
    connectingfalse
    on
    function socketListenerWrap(ev, fn) {
        const res = net.Socket.prototype[originalFnName].call(this,
                                                              ev, fn);
        if (!this.parser) {
          this.on = net.Socket.prototype.on;
          this.addListener = net.Socket.prototype.addListener;
          this.prependListener = net.Socket.prototype.prependListener;
          return res;
        }
    
        if (ev === 'data' || ev === 'readable')
          unconsume(this.parser, this);
    
        return res;
      }
    parser(Object)
    prependListener
    function socketListenerWrap(ev, fn) {
        const res = net.Socket.prototype[originalFnName].call(this,
                                                              ev, fn);
        if (!this.parser) {
          this.on = net.Socket.prototype.on;
          this.addListener = net.Socket.prototype.addListener;
          this.prependListener = net.Socket.prototype.prependListener;
          return res;
        }
    
        if (ev === 'data' || ev === 'readable')
          unconsume(this.parser, this);
    
        return res;
      }
    server(Object)
    setEncoding
    function socketSetEncoding() {
      throw new ERR_HTTP_SOCKET_ENCODING();
    }
    statusCodenull
    statusMessagenull
    upgradefalse
    url/express-debug-panel
  • Name Value
    _closedfalse
    _contentLengthnull
    _defaultKeepAlivetrue
    _events
    Name Value
    finish
    function () { [native code] }
    _eventsCount1
    _expect_continuefalse
    _hasBodytrue
    _headernull
    _headerSentfalse
    _keepAliveTimeout5000
    _lastfalse
    _maxListenersundefined
    _onPendingData
    function () { [native code] }
    _removedConnectionfalse
    _removedContLenfalse
    _removedTEfalse
    _sent100false
    _startAtundefined
    _startTimeundefined
    _trailer
    chunkedEncodingfalse
    destroyedfalse
    end
    function end(chunk, encoding) {
          if (ended) {
            return false;
          }
    
          ended = true;
    
          var ret;
          var sync = true;
    
          function writeend() {
            if (sync) {
              ret = _end.call(res, chunk, encoding);
              sync = false;
              return;
            }
    
            _end.call(res);
          }
    
          function writetop() {
            if (!sync) {
              return ret;
            }
    
            if (chunk == null) {
              ret = true;
              return ret;
            }
    
            var contentLength = Number(res.getHeader('Content-Length'));
    
            if (!isNaN(contentLength) && contentLength > 0) {
              // measure chunk
              chunk = !Buffer.isBuffer(chunk)
                ? Buffer.from(chunk, encoding)
                : chunk;
              encoding = undefined;
    
              if (chunk.length !== 0) {
                debug('split response');
                ret = _write.call(res, chunk.slice(0, chunk.length - 1));
                chunk = chunk.slice(chunk.length - 1, chunk.length);
                return ret;
              }
            }
    
            ret = _write.call(res, chunk, encoding);
            sync = false;
    
            return ret;
          }
    
          if (shouldDestroy(req)) {
            // destroy session
            debug('destroying');
            store.destroy(req.sessionID, function ondestroy(err) {
              if (err) {
                defer(next, err);
              }
    
              debug('destroyed');
              writeend();
            });
    
            return writetop();
          }
    
          // no session to save
          if (!req.session) {
            debug('no session');
            return _end.call(res, chunk, encoding);
          }
    
          if (!touched) {
            // touch session
            req.session.touch()
            touched = true
          }
    
          if (shouldSave(req)) {
            req.session.save(function onsave(err) {
              if (err) {
                defer(next, err);
              }
    
              writeend();
            });
    
            return writetop();
          } else if (storeImplementsTouch && shouldTouch(req)) {
            // store implements touch method
            debug('touching');
            store.touch(req.sessionID, req.session, function ontouch(err) {
              if (err) {
                defer(next, err);
              }
    
              debug('touched');
              writeend();
            });
    
            return writetop();
          }
    
          return _end.call(res, chunk, encoding);
        }
    finishedfalse
    locals
    Name Value
    maxRequestsOnConnectionReachedfalse
    outputData
    Name Value
    outputSize0
    req
    Name Value
    _consumingfalse
    _dumpedfalse
    _events(Object)
    _eventsCount1
    _maxListenersundefined
    _parsedOriginalUrl(Object)
    _parsedUrl(Object)
    _readableState(Object)
    _remoteAddress3.22.51.241
    _startAt(Object)
    _startTime(Object)
    abortedfalse
    baseUrl
    body(Object)
    client(Object)
    completetrue
    cookies(Object)
    httpVersion1.1
    httpVersionMajor1
    httpVersionMinor1
    methodGET
    next
    function next(err) {
        var layerError = err === 'route'
          ? null
          : err;
    
        // remove added slash
        if (slashAdded) {
          req.url = req.url.substr(1);
          slashAdded = false;
        }
    
        // restore altered req.url
        if (removed.length !== 0) {
          req.baseUrl = parentUrl;
          req.url = protohost + removed + req.url.substr(protohost.length);
          removed = '';
        }
    
        // signal to exit router
        if (layerError === 'router') {
          setImmediate(done, null)
          return
        }
    
        // no more matching layers
        if (idx >= stack.length) {
          setImmediate(done, layerError);
          return;
        }
    
        // get pathname of request
        var path = getPathname(req);
    
        if (path == null) {
          return done(layerError);
        }
    
        // find next matching layer
        var layer;
        var match;
        var route;
    
        while (match !== true && idx < stack.length) {
          layer = stack[idx++];
          match = matchLayer(layer, path);
          route = layer.route;
    
          if (typeof match !== 'boolean') {
            // hold on to layerError
            layerError = layerError || match;
          }
    
          if (match !== true) {
            continue;
          }
    
          if (!route) {
            // process non-route handlers normally
            continue;
          }
    
          if (layerError) {
            // routes do not match with a pending error
            match = false;
            continue;
          }
    
          var method = req.method;
          var has_method = route._handles_method(method);
    
          // build up automatic options response
          if (!has_method && method === 'OPTIONS') {
            appendMethods(options, route._options());
          }
    
          // don't even bother matching route
          if (!has_method && method !== 'HEAD') {
            match = false;
            continue;
          }
        }
    
        // no match
        if (match !== true) {
          return done(layerError);
        }
    
        // store route for dispatch on change
        if (route) {
          req.route = route;
        }
    
        // Capture one-time layer values
        req.params = self.mergeParams
          ? mergeParams(layer.params, parentParams)
          : layer.params;
        var layerPath = layer.path;
    
        // this should be done for the layer
        self.process_params(layer, paramcalled, req, res, function (err) {
          if (err) {
            return next(layerError || err);
          }
    
          if (route) {
            return layer.handle_request(req, res, next);
          }
    
          trim_prefix(layer, layerError, layerPath, path);
        });
      }
    originalUrl/express-debug-panel
    params(Object)
    query(Object)
    rawHeaders(Object)
    rawTrailers(Object)
    res(Object)
    route(Object)
    secretundefined
    session(Object)
    sessionIDaU4uM4A7AOspAoe-zymBBVRPipAD3PUS
    sessionStore(Object)
    signedCookies(Object)
    socket(Object)
    statusCodenull
    statusMessagenull
    upgradefalse
    url/express-debug-panel
    sendDatetrue
    shouldKeepAlivefalse
    socket
    Name Value
    _events(Object)
    _eventsCount8
    _hadErrorfalse
    _hostnull
    _httpMessage(Object)
    _maxListenersundefined
    _parentnull
    _pausedfalse
    _peername(Object)
    _pendingDatanull
    _pendingEncoding
    _readableState(Object)
    _server(Object)
    _socknamenull
    _writableState(Object)
    addListener
    function socketListenerWrap(ev, fn) {
        const res = net.Socket.prototype[originalFnName].call(this,
                                                              ev, fn);
        if (!this.parser) {
          this.on = net.Socket.prototype.on;
          this.addListener = net.Socket.prototype.addListener;
          this.prependListener = net.Socket.prototype.prependListener;
          return res;
        }
    
        if (ev === 'data' || ev === 'readable')
          unconsume(this.parser, this);
    
        return res;
      }
    allowHalfOpentrue
    connectingfalse
    on
    function socketListenerWrap(ev, fn) {
        const res = net.Socket.prototype[originalFnName].call(this,
                                                              ev, fn);
        if (!this.parser) {
          this.on = net.Socket.prototype.on;
          this.addListener = net.Socket.prototype.addListener;
          this.prependListener = net.Socket.prototype.prependListener;
          return res;
        }
    
        if (ev === 'data' || ev === 'readable')
          unconsume(this.parser, this);
    
        return res;
      }
    parser(Object)
    prependListener
    function socketListenerWrap(ev, fn) {
        const res = net.Socket.prototype[originalFnName].call(this,
                                                              ev, fn);
        if (!this.parser) {
          this.on = net.Socket.prototype.on;
          this.addListener = net.Socket.prototype.addListener;
          this.prependListener = net.Socket.prototype.prependListener;
          return res;
        }
    
        if (ev === 'data' || ev === 'readable')
          unconsume(this.parser, this);
    
        return res;
      }
    server(Object)
    setEncoding
    function socketSetEncoding() {
      throw new ERR_HTTP_SOCKET_ENCODING();
    }
    useChunkedEncodingByDefaulttrue
    writabletrue
    writeHead
    function writeHead (statusCode) {
        // set headers from arguments
        var args = setWriteHeadHeaders.apply(this, arguments)
    
        // fire listener
        if (!fired) {
          fired = true
          listener.call(this)
    
          // pass-along an updated status code
          if (typeof args[0] === 'number' && this.statusCode !== args[0]) {
            args[0] = this.statusCode
            args.length = 1
          }
        }
    
        return prevWriteHead.apply(this, args)
      }
  • Name Value
    accept*/*
    accept-encodinggzip, br, zstd, deflate
    connect-time0
    connectionclose
    hostdemo.finitewisdom.com
    total-route-time0
    user-agentMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
    via1.1 vegur
    x-forwarded-for3.22.51.241
    x-forwarded-port443
    x-forwarded-protohttps
    x-request-idff7d3129-4a3c-4332-badb-6a212ddada0e
    x-request-start1715883551764
  • Object is empty.
  • Object is empty.
  • Object is empty.
  • Name Value
    _debugEnd
    function _debugEnd() { [native code] }
    _debugProcess
    function _debugProcess() { [native code] }
    _disconnect
    function() {
        assert(this.channel);
    
        // This marks the fact that the channel is actually disconnected.
        this.channel = null;
        this[kChannelHandle] = null;
    
        if (this._pendingMessage)
          closePendingHandle(this);
    
        let fired = false;
        function finish() {
          if (fired) return;
          fired = true;
    
          channel.close();
          target.emit('disconnect');
        }
    
        // If a message is being read, then wait for it to complete.
        if (channel.buffering) {
          this.once('message', finish);
          this.once('internalMessage', finish);
    
          return;
        }
    
        process.nextTick(finish);
      }
    _events
    Name Value
    disconnect
    function () { [native code] }
    error
    (code, signal) =>
          this.emit('error', code, signal)
    internalMessage
    Name Value
    0
    function(message, handle) {
        // Once acknowledged - continue sending handles.
        if (message.cmd === 'NODE_HANDLE_ACK' ||
            message.cmd === 'NODE_HANDLE_NACK') {
    
          if (target._pendingMessage) {
            if (message.cmd === 'NODE_HANDLE_ACK') {
              closePendingHandle(target);
            } else if (target._pendingMessage.retransmissions++ ===
                       MAX_HANDLE_RETRANSMISSIONS) {
              closePendingHandle(target);
              process.emitWarning('Handle did not reach the receiving process ' +
                                  'correctly', 'SentHandleNotReceivedWarning');
            }
          }
    
          assert(ArrayIsArray(target._handleQueue));
          const queue = target._handleQueue;
          target._handleQueue = null;
    
          if (target._pendingMessage) {
            target._send(target._pendingMessage.message,
                         target._pendingMessage.handle,
                         target._pendingMessage.options,
                         target._pendingMessage.callback);
          }
    
          for (let i = 0; i < queue.length; i++) {
            const args = queue[i];
            target._send(args.message, args.handle, args.options, args.callback);
          }
    
          // Process a pending disconnect (if any).
          if (!target.connected && target.channel && !target._handleQueue)
            target._disconnect();
    
          return;
        }
    
        if (message.cmd !== 'NODE_HANDLE') return;
    
        // It is possible that the handle is not received because of some error on
        // ancillary data reception such as MSG_CTRUNC. In this case, report the
        // sender about it by sending a NODE_HANDLE_NACK message.
        if (!handle)
          return target._send({ cmd: 'NODE_HANDLE_NACK' }, null, true);
    
        // Acknowledge handle receival. Don't emit error events (for example if
        // the other side has disconnected) because this call to send() is not
        // initiated by the user and it shouldn't be fatal to be unable to ACK
        // a message.
        target._send({ cmd: 'NODE_HANDLE_ACK' }, null, true);
    
        const obj = handleConversion[message.type];
    
        // Update simultaneous accepts on Windows
        if (process.platform === 'win32') {
          handle.setSimultaneousAccepts(false);
        }
    
        // Convert handle object
        obj.got.call(this, message, handle, (handle) => {
          handleMessage(message.msg, handle, isInternal(message.msg));
        });
      }
    1
    function onInternalMessage(message, handle) {
        if (message.cmd !== 'NODE_CLUSTER')
          return;
    
        let fn = cb;
    
        if (message.ack !== undefined) {
          const callback = callbacks.get(message.ack);
    
          if (callback !== undefined) {
            fn = callback;
            callbacks.delete(message.ack);
          }
        }
    
        ReflectApply(fn, worker, arguments);
      }
    message
    (message, handle) =>
          this.emit('message', message, handle)
    newListener
    Name Value
    0
    function startListeningIfSignal(type) {
      if (isSignal(type) && !signalWraps.has(type)) {
        if (Signal === undefined)
          Signal = internalBinding('signal_wrap').Signal;
        const wrap = new Signal();
    
        wrap.unref();
    
        wrap.onsignal = FunctionPrototypeBind(process.emit, process, type, type);
    
        const signum = signals[type];
        const err = wrap.start(signum);
        if (err) {
          wrap.close();
          throw errnoException(err, 'uv_signal_start');
        }
    
        signalWraps.set(type, wrap);
      }
    }
    1
    function onNewListener(name) {
        if (name === 'message' || name === 'disconnect') control.refCounted();
      }
    removeListener
    Name Value
    0
    function stopListeningIfSignal(type) {
      const wrap = signalWraps.get(type);
      if (wrap !== undefined && process.listenerCount(type) === 0) {
        wrap.close();
        signalWraps.delete(type);
      }
    }
    1
    function onRemoveListener(name) {
        if (name === 'message' || name === 'disconnect') control.unrefCounted();
      }
    warning
    function onWarning(warning) {
      if (!(warning instanceof Error)) return;
      const isDeprecation = warning.name === 'DeprecationWarning';
      if (isDeprecation && process.noDeprecation) return;
      const trace = process.traceProcessWarnings ||
                    (isDeprecation && process.traceDeprecation);
      let msg = `(${process.release.name}:${process.pid}) `;
      if (warning.code)
        msg += `[${warning.code}] `;
      if (trace && warning.stack) {
        msg += `${warning.stack}`;
      } else {
        msg +=
          typeof warning.toString === 'function' ?
            `${warning.toString()}` :
            ErrorPrototypeToString(warning);
      }
      if (typeof warning.detail === 'string') {
        msg += `\n${warning.detail}`;
      }
      if (!trace && !traceWarningHelperShown) {
        const flag = isDeprecation ? '--trace-deprecation' : '--trace-warnings';
        const argv0 = require('path').basename(process.argv0 || 'node', '.exe');
        msg += `\n(Use \`${argv0} ${flag} ...\` to show where the warning ` +
               'was created)';
        traceWarningHelperShown = true;
      }
      const warningFile = lazyOption();
      if (warningFile) {
        return writeToFile(msg);
      }
      writeOut(msg);
    }
    _eventsCount7
    _exitingfalse
    _fatalException
    (er, fromPromise) => {
        // It's possible that defaultTriggerAsyncId was set for a constructor
        // call that threw and was never cleared. So clear it now.
        clearDefaultTriggerAsyncId();
    
        // If diagnostic reporting is enabled, call into its handler to see
        // whether it is interested in handling the situation.
        // Ignore if the error is scoped inside a domain.
        // use == in the checks as we want to allow for null and undefined
        if (er == null || er.domain == null) {
          try {
            const report = internalBinding('report');
            if (report != null && report.shouldReportOnUncaughtException()) {
              report.writeReport(
                typeof er?.message === 'string' ?
                  er.message :
                  'Exception',
                'Exception',
                null,
                er ?? {});
            }
          } catch {}  // Ignore the exception. Diagnostic reporting is unavailable.
        }
    
        const type = fromPromise ? 'unhandledRejection' : 'uncaughtException';
        process.emit('uncaughtExceptionMonitor', er, type);
        if (exceptionHandlerState.captureFn !== null) {
          exceptionHandlerState.captureFn(er);
        } else if (!process.emit('uncaughtException', er, type)) {
          // If someone handled it, then great. Otherwise, die in C++ land
          // since that means that we'll exit the process, emit the 'exit' event.
          try {
            if (!process._exiting) {
              process._exiting = true;
              process.exitCode = 1;
              process.emit('exit', 1);
            }
          } catch {
            // Nothing to be done about it at this point.
          }
          return false;
        }
    
        // If we handled an error, then make sure any ticks get processed
        // by ensuring that the next Immediate cycle isn't empty.
        require('timers').setImmediate(noop);
    
        // Emit the after() hooks now that the exception has been handled.
        if (afterHooksExist()) {
          do {
            emitAfter(executionAsyncId());
          } while (hasAsyncIdStack());
        }
        // And completely empty the id stack, including anything that may be
        // cached on the native side.
        clearAsyncIdStack();
    
        return true;
      }
    _getActiveHandles
    function _getActiveHandles() { [native code] }
    _getActiveRequests
    function _getActiveRequests() { [native code] }
    _handleQueuenull
    _kill
    function _kill() { [native code] }
    _linkedBinding
    function _linkedBinding(module) {
        module = String(module);
        let mod = bindingObj[module];
        if (typeof mod !== 'object')
          mod = bindingObj[module] = getLinkedBinding(module);
        return mod;
      }
    _maxListenersundefined
    _pendingMessagenull
    _preload_modules
    Name Value
    _rawDebug
    function _rawDebug(...args) {
        binding._rawDebug(ReflectApply(format, null, args));
      }
    _send
    function(message, handle, options, callback) {
        assert(this.connected || this.channel);
    
        if (message === undefined)
          throw new ERR_MISSING_ARGS('message');
    
        // Non-serializable messages should not reach the remote
        // end point; as any failure in the stringification there
        // will result in error message that is weakly consumable.
        // So perform a final check on message prior to sending.
        if (typeof message !== 'string' &&
            typeof message !== 'object' &&
            typeof message !== 'number' &&
            typeof message !== 'boolean') {
          throw new ERR_INVALID_ARG_TYPE(
            'message', ['string', 'object', 'number', 'boolean'], message);
        }
    
        // Support legacy function signature
        if (typeof options === 'boolean') {
          options = { swallowErrors: options };
        }
    
        let obj;
    
        // Package messages with a handle object
        if (handle) {
          // This message will be handled by an internalMessage event handler
          message = {
            cmd: 'NODE_HANDLE',
            type: null,
            msg: message
          };
    
          if (handle instanceof net.Socket) {
            message.type = 'net.Socket';
          } else if (handle instanceof net.Server) {
            message.type = 'net.Server';
          } else if (handle instanceof TCP || handle instanceof Pipe) {
            message.type = 'net.Native';
          } else if (handle instanceof dgram.Socket) {
            message.type = 'dgram.Socket';
          } else if (handle instanceof UDP) {
            message.type = 'dgram.Native';
          } else {
            throw new ERR_INVALID_HANDLE_TYPE();
          }
    
          // Queue-up message and handle if we haven't received ACK yet.
          if (this._handleQueue) {
            ArrayPrototypePush(this._handleQueue, {
              callback: callback,
              handle: handle,
              options: options,
              message: message.msg,
            });
            return this._handleQueue.length === 1;
          }
    
          obj = handleConversion[message.type];
    
          // convert TCP object to native handle object
          handle = ReflectApply(handleConversion[message.type].send,
                                target, [message, handle, options]);
    
          // If handle was sent twice, or it is impossible to get native handle
          // out of it - just send a text without the handle.
          if (!handle)
            message = message.msg;
    
          // Update simultaneous accepts on Windows
          if (obj.simultaneousAccepts && process.platform === 'win32') {
            handle.setSimultaneousAccepts(true);
          }
        } else if (this._handleQueue &&
                   !(message && (message.cmd === 'NODE_HANDLE_ACK' ||
                                 message.cmd === 'NODE_HANDLE_NACK'))) {
          // Queue request anyway to avoid out-of-order messages.
          ArrayPrototypePush(this._handleQueue, {
            callback: callback,
            handle: null,
            options: options,
            message: message,
          });
          return this._handleQueue.length === 1;
        }
    
        const req = new WriteWrap();
    
        const err = writeChannelMessage(channel, req, message, handle);
        const wasAsyncWrite = streamBaseState[kLastWriteWasAsync];
    
        if (err === 0) {
          if (handle) {
            if (!this._handleQueue)
              this._handleQueue = [];
            if (obj && obj.postSend)
              obj.postSend(message, handle, options, callback, target);
          }
    
          if (wasAsyncWrite) {
            req.oncomplete = () => {
              control.unrefCounted();
              if (typeof callback === 'function')
                callback(null);
            };
            control.refCounted();
          } else if (typeof callback === 'function') {
            process.nextTick(callback, null);
          }
        } else {
          // Cleanup handle on error
          if (obj && obj.postSend)
            obj.postSend(message, handle, options, callback);
    
          if (!options.swallowErrors) {
            const ex = errnoException(err, 'write');
            if (typeof callback === 'function') {
              process.nextTick(callback, ex);
            } else {
              process.nextTick(() => this.emit('error', ex));
            }
          }
        }
    
        /* If the primary is > 2 read() calls behind, please stop sending. */
        return channel.writeQueueSize < (65536 * 2);
      }
    _startProfilerIdleNotifier
    () => {}
    _stopProfilerIdleNotifier
    () => {}
    _tickCallback
    function runNextTicks() {
      if (!hasTickScheduled() && !hasRejectionToWarn())
        runMicrotasks();
      if (!hasTickScheduled() && !hasRejectionToWarn())
        return;
    
      processTicksAndRejections();
    }
    abort
    function abort() { [native code] }
    allowedNodeEnvironmentFlags
    Name Value
    archx64
    argv
    Name Value
    0/app/.heroku/node/bin/node
    1/app/bin/www
    argv0/app/.heroku/node/bin/node
    assert
    function deprecated(...args) {
        if (!warned) {
          warned = true;
          if (code !== undefined) {
            if (!codesWarned.has(code)) {
              process.emitWarning(msg, 'DeprecationWarning', code, deprecated);
              codesWarned.add(code);
            }
          } else {
            process.emitWarning(msg, 'DeprecationWarning', deprecated);
          }
        }
        if (new.target) {
          return ReflectConstruct(fn, args, new.target);
        }
        return ReflectApply(fn, this, args);
      }
    binding
    function binding(module) {
        module = String(module);
        // Deprecated specific process.binding() modules, but not all, allow
        // selective fallback to internalBinding for the deprecated ones.
        if (internalBindingAllowlist.has(module)) {
          if (runtimeDeprecatedList.has(module)) {
            runtimeDeprecatedList.delete(module);
            process.emitWarning(
              `Access to process.binding('${module}') is deprecated.`,
              'DeprecationWarning',
              'DEP0111');
          }
          if (legacyWrapperList.has(module)) {
            return nativeModuleRequire('internal/legacy/processbinding')[module]();
          }
          return internalBinding(module);
        }
        // eslint-disable-next-line no-restricted-syntax
        throw new Error(`No such module: ${module}`);
      }
    channel
    Name Value
    _events
    Name Value
    _eventsCount0
    _maxListenersundefined
    chdir
    function wrappedChdir(directory) {
      validateString(directory, 'directory');
      rawMethods.chdir(directory);
      // Mark cache that it requires an update.
      cachedCwd = '';
    }
    config
    Name Value
    target_defaults
    Name Value
    cflags(Object)
    default_configurationRelease
    defines(Object)
    include_dirs(Object)
    libraries(Object)
    variables
    Name Value
    asan0
    coveragefalse
    dcheck_always_on0
    debug_nghttp2false
    debug_nodefalse
    enable_ltofalse
    enable_pgo_generatefalse
    enable_pgo_usefalse
    error_on_warnfalse
    force_dynamic_crt0
    gas_version2.30
    host_archx64
    icu_data_in../../deps/icu-tmp/icudt69l.dat
    icu_endiannessl
    icu_gyp_pathtools/icu/icu-generic.gyp
    icu_pathdeps/icu-small
    icu_smallfalse
    icu_ver_major69
    is_debug0
    llvm_version0.0
    napi_build_version8
    node_byteorderlittle
    node_debug_libfalse
    node_enable_d8false
    node_install_npmtrue
    node_library_files(Object)
    node_module_version93
    node_no_browser_globalsfalse
    node_prefix/
    node_release_urlbasehttps://nodejs.org/download/release/
    node_section_ordering_info
    node_sharedfalse
    node_shared_brotlifalse
    node_shared_caresfalse
    node_shared_http_parserfalse
    node_shared_libuvfalse
    node_shared_nghttp2false
    node_shared_nghttp3false
    node_shared_ngtcp2false
    node_shared_opensslfalse
    node_shared_zlibfalse
    node_tag
    node_target_typeexecutable
    node_use_bundled_v8true
    node_use_dtracefalse
    node_use_etwfalse
    node_use_node_code_cachetrue
    node_use_node_snapshottrue
    node_use_openssltrue
    node_use_v8_platformtrue
    node_with_ltcgfalse
    node_without_node_optionsfalse
    openssl_fips
    openssl_is_fipsfalse
    openssl_quictrue
    ossfuzzfalse
    shlib_suffixso.93
    target_archx64
    v8_enable_31bit_smis_on_64bit_arch0
    v8_enable_gdbjit0
    v8_enable_i18n_support1
    v8_enable_inspector1
    v8_enable_lite_mode0
    v8_enable_object_print1
    v8_enable_pointer_compression0
    v8_enable_webassembly1
    v8_no_strict_aliasing1
    v8_optimized_debug1
    v8_promise_internal_field_count1
    v8_random_seed0
    v8_trace_maps0
    v8_use_siphash1
    want_separate_host_toolset0
    connectedtrue
    cpuUsage
    function cpuUsage(prevValue) {
        // If a previous value was passed in, ensure it has the correct shape.
        if (prevValue) {
          if (!previousValueIsValid(prevValue.user)) {
            validateObject(prevValue, 'prevValue');
    
            validateNumber(prevValue.user, 'prevValue.user');
            throw new ERR_INVALID_ARG_VALUE.RangeError('prevValue.user',
                                                       prevValue.user);
          }
    
          if (!previousValueIsValid(prevValue.system)) {
            validateNumber(prevValue.system, 'prevValue.system');
            throw new ERR_INVALID_ARG_VALUE.RangeError('prevValue.system',
                                                       prevValue.system);
          }
        }
    
        // Call the native function to get the current values.
        _cpuUsage(cpuValues);
    
        // If a previous value was passed in, return diff of current from previous.
        if (prevValue) {
          return {
            user: cpuValues[0] - prevValue.user,
            system: cpuValues[1] - prevValue.system
          };
        }
    
        // If no previous value passed in, return current value.
        return {
          user: cpuValues[0],
          system: cpuValues[1]
        };
      }
    cwd
    function wrappedCwd() {
      if (cachedCwd === '')
        cachedCwd = rawMethods.cwd();
      return cachedCwd;
    }
    debugPort9229
    disconnect
    function() {
        if (!this.connected) {
          this.emit('error', new ERR_IPC_DISCONNECTED());
          return;
        }
    
        // Do not allow any new messages to be written.
        this.connected = false;
    
        // If there are no queued messages, disconnect immediately. Otherwise,
        // postpone the disconnect so that it happens internally after the
        // queue is flushed.
        if (!this._handleQueue)
          this._disconnect();
      }
    dlopen
    function dlopen() { [native code] }
    domainnull
    emitWarning
    function emitWarning(warning, type, code, ctor) {
      let detail;
      if (type !== null && typeof type === 'object' && !ArrayIsArray(type)) {
        ctor = type.ctor;
        code = type.code;
        if (typeof type.detail === 'string')
          detail = type.detail;
        type = type.type || 'Warning';
      } else if (typeof type === 'function') {
        ctor = type;
        code = undefined;
        type = 'Warning';
      }
      if (type !== undefined)
        validateString(type, 'type');
      if (typeof code === 'function') {
        ctor = code;
        code = undefined;
      } else if (code !== undefined) {
        validateString(code, 'code');
      }
      if (typeof warning === 'string') {
        warning = createWarningObject(warning, type, code, ctor, detail);
      } else if (!(warning instanceof Error)) {
        throw new ERR_INVALID_ARG_TYPE('warning', ['Error', 'string'], warning);
      }
      if (warning.name === 'DeprecationWarning') {
        if (process.noDeprecation)
          return;
        if (process.throwDeprecation) {
          // Delay throwing the error to guarantee that all former warnings were
          // properly logged.
          return process.nextTick(() => {
            throw warning;
          });
        }
      }
      process.nextTick(doEmitWarning, warning);
    }
    env
    Name Value
    COLOR0
    DEBUGgeneral,carlton,gitkraken,harvest,vpic,zendesk,query-results,saml20,automation,shortener
    DEBUG_HIDE_DATE1
    DYNOweb.1
    EDITORvi
    HOME/app
    INIT_CWD/app
    MEMORY_AVAILABLE512
    NODE/app/.heroku/node/bin/node
    NODE_ENVproduction
    NODE_HOME/app/.heroku/node
    PATH/app/node_modules/.bin:/node_modules/.bin:/app/.heroku/node/lib/node_modules/npm/node_modules/@npmcli/run-script/lib/node-gyp-bin:/app/.heroku/node/bin:/app/.heroku/yarn/bin:/usr/local/bin:/usr/bin:/bin:/app/bin:/app/node_modules/.bin
    PGSSLMODEno-verify
    PORT23976
    PS1\[\033[01;34m\]\w\[\033[00m\] \[\033[01;32m\]$ \[\033[00m\]
    PWD/app
    SHLVL0
    WEB_CONCURRENCY1
    WEB_MEMORY512
    _/app/.heroku/node/bin/npm
    npm_commandstart
    npm_config_cache/app/.npm
    npm_config_global_prefix/app/.heroku/node
    npm_config_globalconfig/app/.heroku/node/etc/npmrc
    npm_config_init_module/app/.npm-init.js
    npm_config_local_prefix/app
    npm_config_metrics_registryhttps://registry.npmjs.org/
    npm_config_node_gyp/app/.heroku/node/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js
    npm_config_noproxy
    npm_config_prefix/app/.heroku/node
    npm_config_user_agentnpm/8.1.2 node/v16.13.2 linux x64 workspaces/false
    npm_config_userconfig/app/.npmrc
    npm_execpath/app/.heroku/node/lib/node_modules/npm/bin/npm-cli.js
    npm_lifecycle_eventstart
    npm_lifecycle_scriptnode ./bin/www
    npm_node_execpath/app/.heroku/node/bin/node
    npm_package_engines_node16.13.2
    npm_package_engines_npm8.1.2
    npm_package_json/app/package.json
    npm_package_namefinite-demo
    npm_package_version0.0.1
    workerIndex1
    execArgv
    Name Value
    execPath/app/.heroku/node/bin/node
    exit
    function exit(code) {
        if (code || code === 0)
          process.exitCode = code;
    
        if (!process._exiting) {
          process._exiting = true;
          process.emit('exit', process.exitCode || 0);
        }
        // FIXME(joyeecheung): This is an undocumented API that gets monkey-patched
        // in the user land. Either document it, or deprecate it in favor of a
        // better public alternative.
        process.reallyExit(process.exitCode || 0);
      }
    features
    Name Value
    cached_builtinstrue
    debugfalse
    inspectortrue
    ipv6true
    tlstrue
    tls_alpntrue
    tls_ocsptrue
    tls_snitrue
    uvtrue
    getegid
    function getegid() { [native code] }
    geteuid
    function geteuid() { [native code] }
    getgid
    function getgid() { [native code] }
    getgroups
    function getgroups() { [native code] }
    getuid
    function getuid() { [native code] }
    hasUncaughtExceptionCaptureCallback
    function hasUncaughtExceptionCaptureCallback() {
      return exceptionHandlerState.captureFn !== null;
    }
    hrtime
    function hrtime(time) {
        _hrtime.hrtime();
    
        if (time !== undefined) {
          validateArray(time, 'time');
          if (time.length !== 2) {
            throw new ERR_OUT_OF_RANGE('time', 2, time.length);
          }
    
          const sec = (hrValues[0] * 0x100000000 + hrValues[1]) - time[0];
          const nsec = hrValues[2] - time[1];
          const needsBorrow = nsec < 0;
          return [needsBorrow ? sec - 1 : sec, needsBorrow ? nsec + 1e9 : nsec];
        }
    
        return [
          hrValues[0] * 0x100000000 + hrValues[1],
          hrValues[2],
        ];
      }
    initgroups
    function initgroups(user, extraGroup) {
        validateId(user, 'user');
        validateId(extraGroup, 'extraGroup');
        // Result is 0 on success, 1 if user is unknown, 2 if group is unknown.
        const result = _initgroups(user, extraGroup);
        if (result === 1) {
          throw new ERR_UNKNOWN_CREDENTIAL('User', user);
        } else if (result === 2) {
          throw new ERR_UNKNOWN_CREDENTIAL('Group', extraGroup);
        }
      }
    kill
    function kill(pid, sig) {
        let err;
    
        // eslint-disable-next-line eqeqeq
        if (pid != (pid | 0)) {
          throw new ERR_INVALID_ARG_TYPE('pid', 'number', pid);
        }
    
        // Preserve null signal
        if (sig === (sig | 0)) {
          // XXX(joyeecheung): we have to use process._kill here because
          // it's monkey-patched by tests.
          err = process._kill(pid, sig);
        } else {
          sig = sig || 'SIGTERM';
          if (constants[sig]) {
            err = process._kill(pid, constants[sig]);
          } else {
            throw new ERR_UNKNOWN_SIGNAL(sig);
          }
        }
    
        if (err)
          throw errnoException(err, 'kill');
    
        return true;
      }
    mainModule
    Name Value
    children
    Name Value
    0(Object)
    1(Object)
    exports
    Name Value
    filename/app/bin/www
    id.
    loadedtrue
    path/app/bin
    paths
    Name Value
    0/app/bin/node_modules
    1/app/node_modules
    2/node_modules
    memoryUsage
    function memoryUsage() {
        _memoryUsage(memValues);
        return {
          rss: memValues[0],
          heapTotal: memValues[1],
          heapUsed: memValues[2],
          external: memValues[3],
          arrayBuffers: memValues[4]
        };
      }
    moduleLoadList
    Name Value
    0Internal Binding native_module
    1Internal Binding errors
    10NativeModule internal/validators
    100Internal Binding stream_wrap
    101NativeModule internal/stream_base_commons
    102NativeModule internal/heap_utils
    103Internal Binding v8
    104NativeModule v8
    105Internal Binding contextify
    106NativeModule vm
    107NativeModule internal/idna
    108NativeModule url
    109NativeModule internal/process/signal
    11Internal Binding icu
    110Internal Binding options
    111NativeModule internal/options
    112NativeModule internal/bootstrap/pre_execution
    113NativeModule internal/inspector_async_hook
    114Internal Binding report
    115NativeModule internal/process/report
    116Internal Binding pipe_wrap
    117NativeModule internal/net
    118Internal Binding tcp_wrap
    119NativeModule internal/dtrace
    12NativeModule internal/util/inspect
    120NativeModule net
    121Internal Binding udp_wrap
    122NativeModule internal/dgram
    123NativeModule dgram
    124Internal Binding process_wrap
    125Internal Binding tty_wrap
    126NativeModule internal/socket_list
    127Internal Binding spawn_sync
    128NativeModule internal/child_process
    129NativeModule child_process
    13NativeModule events
    130NativeModule internal/child_process/serialization
    131NativeModule internal/cluster/worker
    132NativeModule internal/cluster/utils
    133NativeModule internal/cluster/child
    134NativeModule cluster
    135NativeModule internal/util/iterable_weak_map
    136NativeModule internal/modules/cjs/helpers
    137NativeModule internal/source_map/source_map_cache
    138NativeModule internal/modules/package_json_reader
    139Internal Binding module_wrap
    14Internal Binding buffer
    140NativeModule internal/modules/esm/module_job
    141NativeModule internal/modules/esm/module_map
    142NativeModule internal/modules/esm/get_format
    143NativeModule internal/modules/esm/resolve
    144NativeModule internal/fs/rimraf
    145NativeModule internal/fs/promises
    146NativeModule internal/modules/esm/get_source
    147NativeModule internal/modules/esm/create_dynamic_module
    148NativeModule internal/modules/esm/translators
    149NativeModule internal/modules/esm/load
    15Internal Binding string_decoder
    150NativeModule internal/modules/esm/loader
    151NativeModule internal/vm/module
    152NativeModule internal/process/esm_loader
    153NativeModule internal/modules/cjs/loader
    154NativeModule internal/modules/run_main
    155NativeModule internal/fs/streams
    156Internal Binding os
    157NativeModule os
    158Internal Binding crypto
    159NativeModule internal/crypto/random
    16NativeModule internal/buffer
    160NativeModule internal/crypto/hashnames
    161NativeModule internal/crypto/util
    162NativeModule internal/crypto/pbkdf2
    163NativeModule internal/crypto/scrypt
    164NativeModule internal/crypto/keys
    165NativeModule internal/crypto/hkdf
    166NativeModule internal/crypto/keygen
    167NativeModule internal/crypto/diffiehellman
    168NativeModule internal/streams/lazy_transform
    169NativeModule internal/crypto/cipher
    17Internal Binding blob
    170NativeModule internal/crypto/sig
    171NativeModule internal/crypto/hash
    172NativeModule internal/crypto/x509
    173NativeModule internal/crypto/certificate
    174NativeModule crypto
    175NativeModule internal/crypto/webcrypto
    176NativeModule internal/tty
    177NativeModule tty
    178NativeModule _http_agent
    179Internal Binding http_parser
    18NativeModule internal/encoding
    180NativeModule internal/freelist
    181NativeModule _http_incoming
    182NativeModule _http_common
    183NativeModule internal/http
    184NativeModule _http_outgoing
    185NativeModule _http_client
    186NativeModule diagnostics_channel
    187NativeModule _http_server
    188NativeModule http
    189Internal Binding block_list
    19Internal Binding symbols
    190NativeModule internal/socketaddress
    191NativeModule internal/blocklist
    192Internal Binding zlib
    193NativeModule zlib
    194Internal Binding cares_wrap
    195NativeModule internal/tls/secure-context
    196NativeModule internal/tls/parse-cert-string
    197NativeModule _tls_common
    198Internal Binding js_stream
    199NativeModule internal/js_stream_socket
    2NativeModule internal/errors
    20Internal Binding messaging
    200Internal Binding tls_wrap
    201NativeModule _tls_wrap
    202NativeModule internal/tls/secure-pair
    203NativeModule tls
    204NativeModule https
    205NativeModule internal/assert/assertion_error
    206NativeModule internal/assert/calltracker
    207NativeModule assert
    208NativeModule internal/dns/utils
    209NativeModule dns
    21NativeModule internal/worker/js_transferable
    210NativeModule internal/dns/promises
    22NativeModule internal/blob
    23NativeModule buffer
    24NativeModule internal/process/per_thread
    25Internal Binding process_methods
    26Internal Binding credentials
    27Internal Binding async_wrap
    28Internal Binding task_queue
    29NativeModule internal/async_hooks
    3Internal Binding config
    30NativeModule async_hooks
    31NativeModule internal/process/promises
    32NativeModule internal/fixed_queue
    33NativeModule internal/process/task_queues
    34Internal Binding trace_events
    35NativeModule internal/constants
    36NativeModule internal/console/constructor
    37NativeModule internal/console/global
    38NativeModule internal/util/inspector
    39Internal Binding inspector
    4Internal Binding constants
    40NativeModule internal/querystring
    41NativeModule path
    42NativeModule querystring
    43Internal Binding url
    44NativeModule internal/url
    45NativeModule internal/util/debuglog
    46NativeModule util
    47Internal Binding performance
    48NativeModule internal/perf/utils
    49NativeModule internal/event_target
    5Internal Binding util
    50NativeModule internal/abort_controller
    51Internal Binding worker
    52NativeModule internal/streams/end-of-stream
    53NativeModule internal/streams/destroy
    54NativeModule internal/streams/legacy
    55NativeModule internal/streams/add-abort-signal
    56NativeModule internal/streams/buffer_list
    57NativeModule internal/streams/state
    58NativeModule string_decoder
    59NativeModule internal/streams/from
    6Internal Binding types
    60NativeModule internal/streams/readable
    61NativeModule internal/streams/writable
    62NativeModule internal/streams/duplex
    63NativeModule internal/streams/utils
    64NativeModule internal/streams/pipeline
    65NativeModule internal/streams/compose
    66NativeModule stream/promises
    67NativeModule internal/streams/transform
    68NativeModule internal/streams/passthrough
    69NativeModule stream
    7NativeModule internal/util
    70NativeModule internal/worker/io
    71Internal Binding timers
    72NativeModule internal/linkedlist
    73NativeModule internal/priority_queue
    74NativeModule internal/timers
    75NativeModule timers
    76NativeModule internal/perf/performance_entry
    77NativeModule internal/perf/observe
    78NativeModule internal/perf/nodetiming
    79NativeModule internal/perf/usertiming
    8NativeModule internal/util/types
    80NativeModule internal/perf/event_loop_utilization
    81NativeModule internal/histogram
    82NativeModule internal/perf/timerify
    83NativeModule internal/perf/performance
    84NativeModule internal/perf/event_loop_delay
    85NativeModule perf_hooks
    86NativeModule internal/process/execution
    87NativeModule internal/process/warning
    88Internal Binding fs
    89NativeModule internal/fs/utils
    9NativeModule internal/assert
    90Internal Binding fs_dir
    91NativeModule internal/fs/dir
    92Internal Binding fs_event_wrap
    93Internal Binding uv
    94NativeModule internal/fs/watchers
    95NativeModule internal/fs/read_file_context
    96NativeModule fs
    97Internal Binding serdes
    98Internal Binding profiler
    99Internal Binding heap_utils
    nextTick
    function nextTick(callback) {
      validateCallback(callback);
    
      if (process._exiting)
        return;
    
      let args;
      switch (arguments.length) {
        case 1: break;
        case 2: args = [arguments[1]]; break;
        case 3: args = [arguments[1], arguments[2]]; break;
        case 4: args = [arguments[1], arguments[2], arguments[3]]; break;
        default:
          args = new Array(arguments.length - 1);
          for (let i = 1; i < arguments.length; i++)
            args[i - 1] = arguments[i];
      }
    
      if (queue.isEmpty())
        setHasTickScheduled(true);
      const asyncId = newAsyncId();
      const triggerAsyncId = getDefaultTriggerAsyncId();
      const tickObject = {
        [async_id_symbol]: asyncId,
        [trigger_async_id_symbol]: triggerAsyncId,
        callback,
        args
      };
      if (initHooksExist())
        emitInit(asyncId, 'TickObject', triggerAsyncId, tickObject);
      queue.push(tickObject);
    }
    openStdin
    function() {
        process.stdin.resume();
        return process.stdin;
      }
    pid28
    platformlinux
    ppid20
    reallyExit
    function reallyExit() { [native code] }
    release
    Name Value
    headersUrlhttps://nodejs.org/download/release/v16.13.2/node-v16.13.2-headers.tar.gz
    ltsGallium
    namenode
    sourceUrlhttps://nodejs.org/download/release/v16.13.2/node-v16.13.2.tar.gz
    resourceUsage
    function resourceUsage() {
        _resourceUsage(resourceValues);
        return {
          userCPUTime: resourceValues[0],
          systemCPUTime: resourceValues[1],
          maxRSS: resourceValues[2],
          sharedMemorySize: resourceValues[3],
          unsharedDataSize: resourceValues[4],
          unsharedStackSize: resourceValues[5],
          minorPageFault: resourceValues[6],
          majorPageFault: resourceValues[7],
          swappedOut: resourceValues[8],
          fsRead: resourceValues[9],
          fsWrite: resourceValues[10],
          ipcSent: resourceValues[11],
          ipcReceived: resourceValues[12],
          signalsCount: resourceValues[13],
          voluntaryContextSwitches: resourceValues[14],
          involuntaryContextSwitches: resourceValues[15]
        };
      }
    send
    function(message, handle, options, callback) {
        if (typeof handle === 'function') {
          callback = handle;
          handle = undefined;
          options = undefined;
        } else if (typeof options === 'function') {
          callback = options;
          options = undefined;
        } else if (options !== undefined) {
          validateObject(options, 'options');
        }
    
        options = { swallowErrors: false, ...options };
    
        if (this.connected) {
          return this._send(message, handle, options, callback);
        }
        const ex = new ERR_IPC_CHANNEL_CLOSED();
        if (typeof callback === 'function') {
          process.nextTick(callback, ex);
        } else {
          process.nextTick(() => this.emit('error', ex));
        }
        return false;
      }
    setSourceMapsEnabled
    function setSourceMapsEnabled(val) {
      validateBoolean(val, 'val');
    
      const {
        setSourceMapsEnabled,
        setPrepareStackTraceCallback
      } = internalBinding('errors');
      setSourceMapsEnabled(val);
      if (val) {
        const {
          prepareStackTrace
        } = require('internal/source_map/prepare_stack_trace');
        setPrepareStackTraceCallback(prepareStackTrace);
      } else if (sourceMapsEnabled !== undefined) {
        // Reset prepare stack trace callback only when disabling source maps.
        const {
          prepareStackTrace,
        } = require('internal/errors');
        setPrepareStackTraceCallback(prepareStackTrace);
      }
    
      sourceMapsEnabled = val;
    }
    setUncaughtExceptionCaptureCallback
    function setUncaughtExceptionCaptureCallback(fn) {
      if (fn === null) {
        exceptionHandlerState.captureFn = fn;
        shouldAbortOnUncaughtToggle[0] = 1;
        process.report.reportOnUncaughtException = exceptionHandlerState.reportFlag;
        return;
      }
      if (typeof fn !== 'function') {
        throw new ERR_INVALID_ARG_TYPE('fn', ['Function', 'null'], fn);
      }
      if (exceptionHandlerState.captureFn !== null) {
        throw new ERR_UNCAUGHT_EXCEPTION_CAPTURE_ALREADY_SET();
      }
      exceptionHandlerState.captureFn = fn;
      shouldAbortOnUncaughtToggle[0] = 0;
      exceptionHandlerState.reportFlag =
        process.report.reportOnUncaughtException === true;
      process.report.reportOnUncaughtException = false;
    }
    setegid
    function(id) {
          validateId(id, 'id');
          if (typeof id === 'number') id |= 0;
          // Result is 0 on success, 1 if credential is unknown.
          const result = method(id);
          if (result === 1) {
            throw new ERR_UNKNOWN_CREDENTIAL(type, id);
          }
        }
    seteuid
    function(id) {
          validateId(id, 'id');
          if (typeof id === 'number') id |= 0;
          // Result is 0 on success, 1 if credential is unknown.
          const result = method(id);
          if (result === 1) {
            throw new ERR_UNKNOWN_CREDENTIAL(type, id);
          }
        }
    setgid
    function(id) {
          validateId(id, 'id');
          if (typeof id === 'number') id |= 0;
          // Result is 0 on success, 1 if credential is unknown.
          const result = method(id);
          if (result === 1) {
            throw new ERR_UNKNOWN_CREDENTIAL(type, id);
          }
        }
    setgroups
    function setgroups(groups) {
        validateArray(groups, 'groups');
        for (let i = 0; i < groups.length; i++) {
          validateId(groups[i], `groups[${i}]`);
        }
        // Result is 0 on success. A positive integer indicates that the
        // corresponding group was not found.
        const result = _setgroups(groups);
        if (result > 0) {
          throw new ERR_UNKNOWN_CREDENTIAL('Group', groups[result - 1]);
        }
      }
    setuid
    function(id) {
          validateId(id, 'id');
          if (typeof id === 'number') id |= 0;
          // Result is 0 on success, 1 if credential is unknown.
          const result = method(id);
          if (result === 1) {
            throw new ERR_UNKNOWN_CREDENTIAL(type, id);
          }
        }
    stderr
    Name Value
    _destroy
    function dummyDestroy(err, cb) {
      cb(err);
      this._undestroy();
    
      // We need to emit 'close' anyway so that the closing
      // of the stream is observable. We just make sure we
      // are not going to do it twice.
      // The 'close' event is needed so that finished and
      // pipeline work correctly.
      if (!this._writableState.emitClose) {
        process.nextTick(() => {
          this.emit('close');
        });
      }
    }
    _events
    Name Value
    end
    function onReadableStreamEnd() {
      if (!this.allowHalfOpen) {
        this.write = writeAfterFIN;
      }
    }
    _eventsCount1
    _hadErrorfalse
    _hostnull
    _isStdiotrue
    _maxListenersundefined
    _parentnull
    _pendingDatanull
    _pendingEncoding
    _readableState
    Name Value
    autoDestroytrue
    awaitDrainWritersnull
    buffer(Object)
    closeEmittedfalse
    closedfalse
    constructedtrue
    dataEmittedfalse
    decodernull
    defaultEncodingutf8
    destroyedfalse
    emitClosefalse
    emittedReadablefalse
    encodingnull
    endEmittedfalse
    endedfalse
    errorEmittedfalse
    errorednull
    flowingnull
    highWaterMark16384
    length0
    multiAwaitDrainfalse
    needReadablefalse
    objectModefalse
    pipes(Object)
    readablefalse
    readableListeningfalse
    readingfalse
    readingMorefalse
    resumeScheduledfalse
    synctrue
    _servernull
    _socknamenull
    _typepipe
    _writableState
    Name Value
    afterWriteTickInfonull
    allBufferstrue
    allNooptrue
    autoDestroytrue
    bufferProcessingfalse
    buffered(Object)
    bufferedIndex0
    closeEmittedfalse
    closedfalse
    constructedtrue
    corked0
    decodeStringsfalse
    defaultEncodingutf8
    destroyedfalse
    emitClosefalse
    endedfalse
    endingfalse
    errorEmittedfalse
    errorednull
    finalCalledfalse
    finishedfalse
    highWaterMark16384
    length0
    needDrainfalse
    objectModefalse
    onwrite
    function () { [native code] }
    pendingcb0
    prefinishedfalse
    syncfalse
    writecbnull
    writelen0
    writingfalse
    allowHalfOpenfalse
    connectingfalse
    destroySoon
    function destroy(err, cb) {
      const r = this._readableState;
      const w = this._writableState;
      // With duplex streams we use the writable side for state.
      const s = w || r;
    
      if ((w && w.destroyed) || (r && r.destroyed)) {
        if (typeof cb === 'function') {
          cb();
        }
    
        return this;
      }
    
    
      // We set destroyed to true before firing error callbacks in order
      // to make it re-entrance safe in case destroy() is called within callbacks
      checkError(err, w, r);
    
      if (w) {
        w.destroyed = true;
      }
      if (r) {
        r.destroyed = true;
      }
    
      // If still constructing then defer calling _destroy.
      if (!s.constructed) {
        this.once(kDestroy, function(er) {
          _destroy(this, aggregateTwoErrors(er, err), cb);
        });
      } else {
        _destroy(this, err, cb);
      }
    
      return this;
    }
    fd2
    servernull
    stdin
    Name Value
    _events
    Name Value
    pause
    () => {
        process.nextTick(onpause);
      }
    _eventsCount2
    _maxListenersundefined
    _readableState
    Name Value
    autoDestroyfalse
    awaitDrainWritersnull
    buffer(Object)
    closeEmittedfalse
    closedfalse
    constructedfalse
    dataEmittedfalse
    decodernull
    defaultEncodingutf8
    destroyedfalse
    emitClosetrue
    emittedReadablefalse
    encodingnull
    endEmittedfalse
    endedfalse
    errorEmittedfalse
    errorednull
    flowingnull
    highWaterMark65536
    length0
    multiAwaitDrainfalse
    needReadablefalse
    objectModefalse
    pipes(Object)
    readableListeningfalse
    readingfalse
    readingMorefalse
    resumeScheduledfalse
    synctrue
    bytesRead0
    closedfalse
    endInfinity
    fd0
    posundefined
    startundefined
    stdout
    Name Value
    _destroy
    function dummyDestroy(err, cb) {
      cb(err);
      this._undestroy();
    
      // We need to emit 'close' anyway so that the closing
      // of the stream is observable. We just make sure we
      // are not going to do it twice.
      // The 'close' event is needed so that finished and
      // pipeline work correctly.
      if (!this._writableState.emitClose) {
        process.nextTick(() => {
          this.emit('close');
        });
      }
    }
    _events
    Name Value
    end
    function onReadableStreamEnd() {
      if (!this.allowHalfOpen) {
        this.write = writeAfterFIN;
      }
    }
    error
    function () { [native code] }
    _eventsCount2
    _hadErrorfalse
    _hostnull
    _isStdiotrue
    _maxListenersundefined
    _parentnull
    _pendingDatanull
    _pendingEncoding
    _readableState
    Name Value
    autoDestroytrue
    awaitDrainWritersnull
    buffer(Object)
    closeEmittedfalse
    closedfalse
    constructedtrue
    dataEmittedfalse
    decodernull
    defaultEncodingutf8
    destroyedfalse
    emitClosefalse
    emittedReadablefalse
    encodingnull
    endEmittedfalse
    endedfalse
    errorEmittedfalse
    errorednull
    flowingnull
    highWaterMark16384
    length0
    multiAwaitDrainfalse
    needReadablefalse
    objectModefalse
    pipes(Object)
    readablefalse
    readableListeningfalse
    readingfalse
    readingMorefalse
    resumeScheduledfalse
    synctrue
    _servernull
    _socknamenull
    _typepipe
    _writableState
    Name Value
    afterWriteTickInfonull
    allBufferstrue
    allNooptrue
    autoDestroytrue
    bufferProcessingfalse
    buffered(Object)
    bufferedIndex0
    closeEmittedfalse
    closedfalse
    constructedtrue
    corked0
    decodeStringsfalse
    defaultEncodingutf8
    destroyedfalse
    emitClosefalse
    endedfalse
    endingfalse
    errorEmittedfalse
    errorednull
    finalCalledfalse
    finishedfalse
    highWaterMark16384
    length0
    needDrainfalse
    objectModefalse
    onwrite
    function () { [native code] }
    pendingcb0
    prefinishedfalse
    syncfalse
    writecbnull
    writelen0
    writingfalse
    allowHalfOpenfalse
    connectingfalse
    destroySoon
    function destroy(err, cb) {
      const r = this._readableState;
      const w = this._writableState;
      // With duplex streams we use the writable side for state.
      const s = w || r;
    
      if ((w && w.destroyed) || (r && r.destroyed)) {
        if (typeof cb === 'function') {
          cb();
        }
    
        return this;
      }
    
    
      // We set destroyed to true before firing error callbacks in order
      // to make it re-entrance safe in case destroy() is called within callbacks
      checkError(err, w, r);
    
      if (w) {
        w.destroyed = true;
      }
      if (r) {
        r.destroyed = true;
      }
    
      // If still constructing then defer calling _destroy.
      if (!s.constructed) {
        this.once(kDestroy, function(er) {
          _destroy(this, aggregateTwoErrors(er, err), cb);
        });
      } else {
        _destroy(this, err, cb);
      }
    
      return this;
    }
    fd1
    servernull
    title/app/.heroku/node/bin/node
    umask
    function wrappedUmask(mask) {
      if (mask !== undefined) {
        mask = parseFileMode(mask, 'mask');
      }
      return rawMethods.umask(mask);
    }
    uptime
    function uptime() { [native code] }
    versionv16.13.2
    versions
    Name Value
    ares1.18.1
    brotli1.0.9
    cldr39.0
    icu69.1
    llhttp6.0.4
    modules93
    napi8
    nghttp21.45.1
    nghttp30.1.0-DEV
    ngtcp20.1.0-DEV
    node16.13.2
    openssl1.1.1l+quic
    tz2021a
    unicode13.0
    uv1.42.0
    v89.4.146.24-node.14
    zlib1.2.11
  • Name Value
    _events
    Name Value
    mount
    function onmount(parent) {
        // inherit trust proxy
        if (this.settings[trustProxyDefaultSymbol] === true
          && typeof parent.settings['trust proxy fn'] === 'function') {
          delete this.settings['trust proxy'];
          delete this.settings['trust proxy fn'];
        }
    
        // inherit protos
        setPrototypeOf(this.request, parent.request)
        setPrototypeOf(this.response, parent.response)
        setPrototypeOf(this.engines, parent.engines)
        setPrototypeOf(this.settings, parent.settings)
      }
    _eventsCount1
    _maxListenersundefined
    _router
    function router(req, res, next) {
        router.handle(req, res, next);
      }
    acl
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    addListener
    function addListener(type, listener) {
      return _addListener(this, type, listener, false);
    }
    all
    function all(path) {
      this.lazyrouter();
    
      var route = this._router.route(path);
      var args = slice.call(arguments, 1);
    
      for (var i = 0; i < methods.length; i++) {
        route[methods[i]].apply(route, args);
      }
    
      return this;
    }
    bind
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    cache
    Name Value
    error.ejs
    Name Value
    defaultEngineejs
    engine
    function () {
      var args = Array.prototype.slice.call(arguments);
      var filename = args.shift();
      var cb;
      var opts = {filename: filename};
      var data;
      var viewOpts;
    
      // Do we have a callback?
      if (typeof arguments[arguments.length - 1] == 'function') {
        cb = args.pop();
      }
      // Do we have data/opts?
      if (args.length) {
        // Should always have data obj
        data = args.shift();
        // Normal passed opts (data obj + opts obj)
        if (args.length) {
          // Use shallowCopy so we don't pollute passed in opts obj with new vals
          utils.shallowCopy(opts, args.pop());
        }
        // Special casing for Express (settings + opts-in-data)
        else {
          // Express 3 and 4
          if (data.settings) {
            // Pull a few things from known locations
            if (data.settings.views) {
              opts.views = data.settings.views;
            }
            if (data.settings['view cache']) {
              opts.cache = true;
            }
            // Undocumented after Express 2, but still usable, esp. for
            // items that are unsafe to be passed along with data, like `root`
            viewOpts = data.settings['view options'];
            if (viewOpts) {
              utils.shallowCopy(opts, viewOpts);
            }
          }
          // Express 2 and lower, values set in app.locals, or people who just
          // want to pass options in their data. NOTE: These values will override
          // anything previously set in settings  or settings['view options']
          utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);
        }
        opts.filename = filename;
      }
      else {
        data = utils.createNullProtoObjWherePossible();
      }
    
      return tryHandleCache(opts, data, cb);
    }
    ext.ejs
    nameerror.ejs
    path/app/views/error.ejs
    root/app/views
    express-debug-panel.ejs
    Name Value
    defaultEngineejs
    engine
    function () {
      var args = Array.prototype.slice.call(arguments);
      var filename = args.shift();
      var cb;
      var opts = {filename: filename};
      var data;
      var viewOpts;
    
      // Do we have a callback?
      if (typeof arguments[arguments.length - 1] == 'function') {
        cb = args.pop();
      }
      // Do we have data/opts?
      if (args.length) {
        // Should always have data obj
        data = args.shift();
        // Normal passed opts (data obj + opts obj)
        if (args.length) {
          // Use shallowCopy so we don't pollute passed in opts obj with new vals
          utils.shallowCopy(opts, args.pop());
        }
        // Special casing for Express (settings + opts-in-data)
        else {
          // Express 3 and 4
          if (data.settings) {
            // Pull a few things from known locations
            if (data.settings.views) {
              opts.views = data.settings.views;
            }
            if (data.settings['view cache']) {
              opts.cache = true;
            }
            // Undocumented after Express 2, but still usable, esp. for
            // items that are unsafe to be passed along with data, like `root`
            viewOpts = data.settings['view options'];
            if (viewOpts) {
              utils.shallowCopy(opts, viewOpts);
            }
          }
          // Express 2 and lower, values set in app.locals, or people who just
          // want to pass options in their data. NOTE: These values will override
          // anything previously set in settings  or settings['view options']
          utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);
        }
        opts.filename = filename;
      }
      else {
        data = utils.createNullProtoObjWherePossible();
      }
    
      return tryHandleCache(opts, data, cb);
    }
    ext.ejs
    nameexpress-debug-panel.ejs
    path/app/views/express-debug-panel.ejs
    root/app/views
    game.ejs
    Name Value
    defaultEngineejs
    engine
    function () {
      var args = Array.prototype.slice.call(arguments);
      var filename = args.shift();
      var cb;
      var opts = {filename: filename};
      var data;
      var viewOpts;
    
      // Do we have a callback?
      if (typeof arguments[arguments.length - 1] == 'function') {
        cb = args.pop();
      }
      // Do we have data/opts?
      if (args.length) {
        // Should always have data obj
        data = args.shift();
        // Normal passed opts (data obj + opts obj)
        if (args.length) {
          // Use shallowCopy so we don't pollute passed in opts obj with new vals
          utils.shallowCopy(opts, args.pop());
        }
        // Special casing for Express (settings + opts-in-data)
        else {
          // Express 3 and 4
          if (data.settings) {
            // Pull a few things from known locations
            if (data.settings.views) {
              opts.views = data.settings.views;
            }
            if (data.settings['view cache']) {
              opts.cache = true;
            }
            // Undocumented after Express 2, but still usable, esp. for
            // items that are unsafe to be passed along with data, like `root`
            viewOpts = data.settings['view options'];
            if (viewOpts) {
              utils.shallowCopy(opts, viewOpts);
            }
          }
          // Express 2 and lower, values set in app.locals, or people who just
          // want to pass options in their data. NOTE: These values will override
          // anything previously set in settings  or settings['view options']
          utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);
        }
        opts.filename = filename;
      }
      else {
        data = utils.createNullProtoObjWherePossible();
      }
    
      return tryHandleCache(opts, data, cb);
    }
    ext.ejs
    namegame.ejs
    path/app/views/game.ejs
    root/app/views
    gravatar.ejs
    Name Value
    defaultEngineejs
    engine
    function () {
      var args = Array.prototype.slice.call(arguments);
      var filename = args.shift();
      var cb;
      var opts = {filename: filename};
      var data;
      var viewOpts;
    
      // Do we have a callback?
      if (typeof arguments[arguments.length - 1] == 'function') {
        cb = args.pop();
      }
      // Do we have data/opts?
      if (args.length) {
        // Should always have data obj
        data = args.shift();
        // Normal passed opts (data obj + opts obj)
        if (args.length) {
          // Use shallowCopy so we don't pollute passed in opts obj with new vals
          utils.shallowCopy(opts, args.pop());
        }
        // Special casing for Express (settings + opts-in-data)
        else {
          // Express 3 and 4
          if (data.settings) {
            // Pull a few things from known locations
            if (data.settings.views) {
              opts.views = data.settings.views;
            }
            if (data.settings['view cache']) {
              opts.cache = true;
            }
            // Undocumented after Express 2, but still usable, esp. for
            // items that are unsafe to be passed along with data, like `root`
            viewOpts = data.settings['view options'];
            if (viewOpts) {
              utils.shallowCopy(opts, viewOpts);
            }
          }
          // Express 2 and lower, values set in app.locals, or people who just
          // want to pass options in their data. NOTE: These values will override
          // anything previously set in settings  or settings['view options']
          utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);
        }
        opts.filename = filename;
      }
      else {
        data = utils.createNullProtoObjWherePossible();
      }
    
      return tryHandleCache(opts, data, cb);
    }
    ext.ejs
    namegravatar.ejs
    path/app/views/gravatar.ejs
    root/app/views
    home.ejs
    Name Value
    defaultEngineejs
    engine
    function () {
      var args = Array.prototype.slice.call(arguments);
      var filename = args.shift();
      var cb;
      var opts = {filename: filename};
      var data;
      var viewOpts;
    
      // Do we have a callback?
      if (typeof arguments[arguments.length - 1] == 'function') {
        cb = args.pop();
      }
      // Do we have data/opts?
      if (args.length) {
        // Should always have data obj
        data = args.shift();
        // Normal passed opts (data obj + opts obj)
        if (args.length) {
          // Use shallowCopy so we don't pollute passed in opts obj with new vals
          utils.shallowCopy(opts, args.pop());
        }
        // Special casing for Express (settings + opts-in-data)
        else {
          // Express 3 and 4
          if (data.settings) {
            // Pull a few things from known locations
            if (data.settings.views) {
              opts.views = data.settings.views;
            }
            if (data.settings['view cache']) {
              opts.cache = true;
            }
            // Undocumented after Express 2, but still usable, esp. for
            // items that are unsafe to be passed along with data, like `root`
            viewOpts = data.settings['view options'];
            if (viewOpts) {
              utils.shallowCopy(opts, viewOpts);
            }
          }
          // Express 2 and lower, values set in app.locals, or people who just
          // want to pass options in their data. NOTE: These values will override
          // anything previously set in settings  or settings['view options']
          utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);
        }
        opts.filename = filename;
      }
      else {
        data = utils.createNullProtoObjWherePossible();
      }
    
      return tryHandleCache(opts, data, cb);
    }
    ext.ejs
    namehome.ejs
    path/app/views/home.ejs
    root/app/views
    paypal.ejs
    Name Value
    defaultEngineejs
    engine
    function () {
      var args = Array.prototype.slice.call(arguments);
      var filename = args.shift();
      var cb;
      var opts = {filename: filename};
      var data;
      var viewOpts;
    
      // Do we have a callback?
      if (typeof arguments[arguments.length - 1] == 'function') {
        cb = args.pop();
      }
      // Do we have data/opts?
      if (args.length) {
        // Should always have data obj
        data = args.shift();
        // Normal passed opts (data obj + opts obj)
        if (args.length) {
          // Use shallowCopy so we don't pollute passed in opts obj with new vals
          utils.shallowCopy(opts, args.pop());
        }
        // Special casing for Express (settings + opts-in-data)
        else {
          // Express 3 and 4
          if (data.settings) {
            // Pull a few things from known locations
            if (data.settings.views) {
              opts.views = data.settings.views;
            }
            if (data.settings['view cache']) {
              opts.cache = true;
            }
            // Undocumented after Express 2, but still usable, esp. for
            // items that are unsafe to be passed along with data, like `root`
            viewOpts = data.settings['view options'];
            if (viewOpts) {
              utils.shallowCopy(opts, viewOpts);
            }
          }
          // Express 2 and lower, values set in app.locals, or people who just
          // want to pass options in their data. NOTE: These values will override
          // anything previously set in settings  or settings['view options']
          utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);
        }
        opts.filename = filename;
      }
      else {
        data = utils.createNullProtoObjWherePossible();
      }
    
      return tryHandleCache(opts, data, cb);
    }
    ext.ejs
    namepaypal.ejs
    path/app/views/paypal.ejs
    root/app/views
    remove-bg.ejs
    Name Value
    defaultEngineejs
    engine
    function () {
      var args = Array.prototype.slice.call(arguments);
      var filename = args.shift();
      var cb;
      var opts = {filename: filename};
      var data;
      var viewOpts;
    
      // Do we have a callback?
      if (typeof arguments[arguments.length - 1] == 'function') {
        cb = args.pop();
      }
      // Do we have data/opts?
      if (args.length) {
        // Should always have data obj
        data = args.shift();
        // Normal passed opts (data obj + opts obj)
        if (args.length) {
          // Use shallowCopy so we don't pollute passed in opts obj with new vals
          utils.shallowCopy(opts, args.pop());
        }
        // Special casing for Express (settings + opts-in-data)
        else {
          // Express 3 and 4
          if (data.settings) {
            // Pull a few things from known locations
            if (data.settings.views) {
              opts.views = data.settings.views;
            }
            if (data.settings['view cache']) {
              opts.cache = true;
            }
            // Undocumented after Express 2, but still usable, esp. for
            // items that are unsafe to be passed along with data, like `root`
            viewOpts = data.settings['view options'];
            if (viewOpts) {
              utils.shallowCopy(opts, viewOpts);
            }
          }
          // Express 2 and lower, values set in app.locals, or people who just
          // want to pass options in their data. NOTE: These values will override
          // anything previously set in settings  or settings['view options']
          utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);
        }
        opts.filename = filename;
      }
      else {
        data = utils.createNullProtoObjWherePossible();
      }
    
      return tryHandleCache(opts, data, cb);
    }
    ext.ejs
    nameremove-bg.ejs
    path/app/views/remove-bg.ejs
    root/app/views
    shortener.ejs
    Name Value
    defaultEngineejs
    engine
    function () {
      var args = Array.prototype.slice.call(arguments);
      var filename = args.shift();
      var cb;
      var opts = {filename: filename};
      var data;
      var viewOpts;
    
      // Do we have a callback?
      if (typeof arguments[arguments.length - 1] == 'function') {
        cb = args.pop();
      }
      // Do we have data/opts?
      if (args.length) {
        // Should always have data obj
        data = args.shift();
        // Normal passed opts (data obj + opts obj)
        if (args.length) {
          // Use shallowCopy so we don't pollute passed in opts obj with new vals
          utils.shallowCopy(opts, args.pop());
        }
        // Special casing for Express (settings + opts-in-data)
        else {
          // Express 3 and 4
          if (data.settings) {
            // Pull a few things from known locations
            if (data.settings.views) {
              opts.views = data.settings.views;
            }
            if (data.settings['view cache']) {
              opts.cache = true;
            }
            // Undocumented after Express 2, but still usable, esp. for
            // items that are unsafe to be passed along with data, like `root`
            viewOpts = data.settings['view options'];
            if (viewOpts) {
              utils.shallowCopy(opts, viewOpts);
            }
          }
          // Express 2 and lower, values set in app.locals, or people who just
          // want to pass options in their data. NOTE: These values will override
          // anything previously set in settings  or settings['view options']
          utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);
        }
        opts.filename = filename;
      }
      else {
        data = utils.createNullProtoObjWherePossible();
      }
    
      return tryHandleCache(opts, data, cb);
    }
    ext.ejs
    nameshortener.ejs
    path/app/views/shortener.ejs
    root/app/views
    simbad.ejs
    Name Value
    defaultEngineejs
    engine
    function () {
      var args = Array.prototype.slice.call(arguments);
      var filename = args.shift();
      var cb;
      var opts = {filename: filename};
      var data;
      var viewOpts;
    
      // Do we have a callback?
      if (typeof arguments[arguments.length - 1] == 'function') {
        cb = args.pop();
      }
      // Do we have data/opts?
      if (args.length) {
        // Should always have data obj
        data = args.shift();
        // Normal passed opts (data obj + opts obj)
        if (args.length) {
          // Use shallowCopy so we don't pollute passed in opts obj with new vals
          utils.shallowCopy(opts, args.pop());
        }
        // Special casing for Express (settings + opts-in-data)
        else {
          // Express 3 and 4
          if (data.settings) {
            // Pull a few things from known locations
            if (data.settings.views) {
              opts.views = data.settings.views;
            }
            if (data.settings['view cache']) {
              opts.cache = true;
            }
            // Undocumented after Express 2, but still usable, esp. for
            // items that are unsafe to be passed along with data, like `root`
            viewOpts = data.settings['view options'];
            if (viewOpts) {
              utils.shallowCopy(opts, viewOpts);
            }
          }
          // Express 2 and lower, values set in app.locals, or people who just
          // want to pass options in their data. NOTE: These values will override
          // anything previously set in settings  or settings['view options']
          utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);
        }
        opts.filename = filename;
      }
      else {
        data = utils.createNullProtoObjWherePossible();
      }
    
      return tryHandleCache(opts, data, cb);
    }
    ext.ejs
    namesimbad.ejs
    path/app/views/simbad.ejs
    root/app/views
    checkout
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    connect
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    copy
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    defaultConfiguration
    function defaultConfiguration() {
      var env = process.env.NODE_ENV || 'development';
    
      // default settings
      this.enable('x-powered-by');
      this.set('etag', 'weak');
      this.set('env', env);
      this.set('query parser', 'extended');
      this.set('subdomain offset', 2);
      this.set('trust proxy', false);
    
      // trust proxy inherit back-compat
      Object.defineProperty(this.settings, trustProxyDefaultSymbol, {
        configurable: true,
        value: true
      });
    
      debug('booting in %s mode', env);
    
      this.on('mount', function onmount(parent) {
        // inherit trust proxy
        if (this.settings[trustProxyDefaultSymbol] === true
          && typeof parent.settings['trust proxy fn'] === 'function') {
          delete this.settings['trust proxy'];
          delete this.settings['trust proxy fn'];
        }
    
        // inherit protos
        setPrototypeOf(this.request, parent.request)
        setPrototypeOf(this.response, parent.response)
        setPrototypeOf(this.engines, parent.engines)
        setPrototypeOf(this.settings, parent.settings)
      });
    
      // setup locals
      this.locals = Object.create(null);
    
      // top-most app is mounted at /
      this.mountpath = '/';
    
      // default locals
      this.locals.settings = this.settings;
    
      // default configuration
      this.set('view', View);
      this.set('views', resolve('views'));
      this.set('jsonp callback name', 'callback');
    
      if (env === 'production') {
        this.enable('view cache');
      }
    
      Object.defineProperty(this, 'router', {
        get: function() {
          throw new Error('\'app.router\' is deprecated!\nPlease see the 3.x to 4.x migration guide for details on how to update your app.');
        }
      });
    }
    del
    function (arg0) {
    "use strict"
    log.call(deprecate, message, site)
    return fn.apply(this, arguments)
    }
    delete
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    disable
    function disable(setting) {
      return this.set(setting, false);
    }
    disabled
    function disabled(setting) {
      return !this.set(setting);
    }
    emit
    function emit(type, ...args) {
      let doError = (type === 'error');
    
      const events = this._events;
      if (events !== undefined) {
        if (doError && events[kErrorMonitor] !== undefined)
          this.emit(kErrorMonitor, ...args);
        doError = (doError && events.error === undefined);
      } else if (!doError)
        return false;
    
      // If there is no 'error' event listener then throw.
      if (doError) {
        let er;
        if (args.length > 0)
          er = args[0];
        if (er instanceof Error) {
          try {
            const capture = {};
            ErrorCaptureStackTrace(capture, EventEmitter.prototype.emit);
            ObjectDefineProperty(er, kEnhanceStackBeforeInspector, {
              value: FunctionPrototypeBind(enhanceStackTrace, this, er, capture),
              configurable: true
            });
          } catch {}
    
          // Note: The comments on the `throw` lines are intentional, they show
          // up in Node's output if this results in an unhandled exception.
          throw er; // Unhandled 'error' event
        }
    
        let stringifiedEr;
        try {
          stringifiedEr = inspect(er);
        } catch {
          stringifiedEr = er;
        }
    
        // At least give some kind of context to the user
        const err = new ERR_UNHANDLED_ERROR(stringifiedEr);
        err.context = er;
        throw err; // Unhandled 'error' event
      }
    
      const handler = events[type];
    
      if (handler === undefined)
        return false;
    
      if (typeof handler === 'function') {
        const result = handler.apply(this, args);
    
        // We check if result is undefined first because that
        // is the most common case so we do not pay any perf
        // penalty
        if (result !== undefined && result !== null) {
          addCatch(this, result, type, args);
        }
      } else {
        const len = handler.length;
        const listeners = arrayClone(handler);
        for (let i = 0; i < len; ++i) {
          const result = listeners[i].apply(this, args);
    
          // We check if result is undefined first because that
          // is the most common case so we do not pay any perf
          // penalty.
          // This code is duplicated because extracting it away
          // would make it non-inlineable.
          if (result !== undefined && result !== null) {
            addCatch(this, result, type, args);
          }
        }
      }
    
      return true;
    }
    enable
    function enable(setting) {
      return this.set(setting, true);
    }
    enabled
    function enabled(setting) {
      return Boolean(this.set(setting));
    }
    engine
    function engine(ext, fn) {
      if (typeof fn !== 'function') {
        throw new Error('callback function required');
      }
    
      // get file extension
      var extension = ext[0] !== '.'
        ? '.' + ext
        : ext;
    
      // store engine
      this.engines[extension] = fn;
    
      return this;
    }
    engines
    Name Value
    .ejs
    function () {
      var args = Array.prototype.slice.call(arguments);
      var filename = args.shift();
      var cb;
      var opts = {filename: filename};
      var data;
      var viewOpts;
    
      // Do we have a callback?
      if (typeof arguments[arguments.length - 1] == 'function') {
        cb = args.pop();
      }
      // Do we have data/opts?
      if (args.length) {
        // Should always have data obj
        data = args.shift();
        // Normal passed opts (data obj + opts obj)
        if (args.length) {
          // Use shallowCopy so we don't pollute passed in opts obj with new vals
          utils.shallowCopy(opts, args.pop());
        }
        // Special casing for Express (settings + opts-in-data)
        else {
          // Express 3 and 4
          if (data.settings) {
            // Pull a few things from known locations
            if (data.settings.views) {
              opts.views = data.settings.views;
            }
            if (data.settings['view cache']) {
              opts.cache = true;
            }
            // Undocumented after Express 2, but still usable, esp. for
            // items that are unsafe to be passed along with data, like `root`
            viewOpts = data.settings['view options'];
            if (viewOpts) {
              utils.shallowCopy(opts, viewOpts);
            }
          }
          // Express 2 and lower, values set in app.locals, or people who just
          // want to pass options in their data. NOTE: These values will override
          // anything previously set in settings  or settings['view options']
          utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);
        }
        opts.filename = filename;
      }
      else {
        data = utils.createNullProtoObjWherePossible();
      }
    
      return tryHandleCache(opts, data, cb);
    }
    eventNames
    function eventNames() {
      return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
    }
    get
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    getMaxListeners
    function getMaxListeners() {
      return _getMaxListeners(this);
    }
    handle
    function handle(req, res, callback) {
      var router = this._router;
    
      // final handler
      var done = callback || finalhandler(req, res, {
        env: this.get('env'),
        onerror: logerror.bind(this)
      });
    
      // no routes
      if (!router) {
        debug('no routes defined on app');
        done();
        return;
      }
    
      router.handle(req, res, done);
    }
    head
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    init
    function init() {
      this.cache = {};
      this.engines = {};
      this.settings = {};
    
      this.defaultConfiguration();
    }
    lazyrouter
    function lazyrouter() {
      if (!this._router) {
        this._router = new Router({
          caseSensitive: this.enabled('case sensitive routing'),
          strict: this.enabled('strict routing')
        });
    
        this._router.use(query(this.get('query parser fn')));
        this._router.use(middleware.init(this));
      }
    }
    link
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    listen
    function listen() {
      var server = http.createServer(this);
      return server.listen.apply(server, arguments);
    }
    listenerCount
    function listenerCount(type) {
      const events = this._events;
    
      if (events !== undefined) {
        const evlistener = events[type];
    
        if (typeof evlistener === 'function') {
          return 1;
        } else if (evlistener !== undefined) {
          return evlistener.length;
        }
      }
    
      return 0;
    }
    listeners
    function listeners(type) {
      return _listeners(this, type, true);
    }
    locals
    Name Value
    ENVproduction
    ENV_DEVELOPMENTfalse
    developerIp71.176.222.191
    googleLoginUrlhttps://accounts.google.com/o/oauth2/v2/auth?access_type=offline&client_id=691069282576-hisif53r8nanm0u3p5tlpcfkask77foe.apps.googleusercontent.com&prompt=consent&redirect_uri=https%3A%2F%2Fdemo.finitewisdom.com%2Fgoogle%2Fassert&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuser.addresses.read%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuser.birthday.read%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuser.phonenumbers.read
    initializedModulestrue
    settings
    Name Value
    envproduction
    etagweak
    etag fn
    function generateETag (body, encoding) {
        var buf = !Buffer.isBuffer(body)
          ? Buffer.from(body, encoding)
          : body
    
        return etag(buf, options)
      }
    jsonp callback namecallback
    port23976
    query parserextended
    query parser fn
    function parseExtendedQueryString(str) {
      return qs.parse(str, {
        allowPrototypes: true
      });
    }
    subdomain offset2
    trust proxytrue
    trust proxy fn
    function(){ return true }
    view
    function View(name, options) {
      var opts = options || {};
    
      this.defaultEngine = opts.defaultEngine;
      this.ext = extname(name);
      this.name = name;
      this.root = opts.root;
    
      if (!this.ext && !this.defaultEngine) {
        throw new Error('No default engine was specified and no extension was provided.');
      }
    
      var fileName = name;
    
      if (!this.ext) {
        // get extension from default engine name
        this.ext = this.defaultEngine[0] !== '.'
          ? '.' + this.defaultEngine
          : this.defaultEngine;
    
        fileName += this.ext;
      }
    
      if (!opts.engines[this.ext]) {
        // load engine
        var mod = this.ext.substr(1)
        debug('require "%s"', mod)
    
        // default engine export
        var fn = require(mod).__express
    
        if (typeof fn !== 'function') {
          throw new Error('Module "' + mod + '" does not provide a view engine.')
        }
    
        opts.engines[this.ext] = fn
      }
    
      // store loaded engine
      this.engine = opts.engines[this.ext];
    
      // lookup path
      this.path = this.lookup(fileName);
    }
    view cachetrue
    view engineejs
    views/app/views
    x-powered-bytrue
    lock
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    m-search
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    merge
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    mkactivity
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    mkcalendar
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    mkcol
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    mountpath/
    move
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    notify
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    off
    function removeListener(type, listener) {
          checkListener(listener);
    
          const events = this._events;
          if (events === undefined)
            return this;
    
          const list = events[type];
          if (list === undefined)
            return this;
    
          if (list === listener || list.listener === listener) {
            if (--this._eventsCount === 0)
              this._events = ObjectCreate(null);
            else {
              delete events[type];
              if (events.removeListener)
                this.emit('removeListener', type, list.listener || listener);
            }
          } else if (typeof list !== 'function') {
            let position = -1;
    
            for (let i = list.length - 1; i >= 0; i--) {
              if (list[i] === listener || list[i].listener === listener) {
                position = i;
                break;
              }
            }
    
            if (position < 0)
              return this;
    
            if (position === 0)
              list.shift();
            else {
              if (spliceOne === undefined)
                spliceOne = require('internal/util').spliceOne;
              spliceOne(list, position);
            }
    
            if (list.length === 1)
              events[type] = list[0];
    
            if (events.removeListener !== undefined)
              this.emit('removeListener', type, listener);
          }
    
          return this;
        }
    on
    function addListener(type, listener) {
      return _addListener(this, type, listener, false);
    }
    once
    function once(type, listener) {
      checkListener(listener);
    
      this.on(type, _onceWrap(this, type, listener));
      return this;
    }
    options
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    param
    function param(name, fn) {
      this.lazyrouter();
    
      if (Array.isArray(name)) {
        for (var i = 0; i < name.length; i++) {
          this.param(name[i], fn);
        }
    
        return this;
      }
    
      this._router.param(name, fn);
    
      return this;
    }
    patch
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    path
    function path() {
      return this.parent
        ? this.parent.path() + this.mountpath
        : '';
    }
    post
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    prependListener
    function prependListener(type, listener) {
          return _addListener(this, type, listener, true);
        }
    prependOnceListener
    function prependOnceListener(type, listener) {
          checkListener(listener);
    
          this.prependListener(type, _onceWrap(this, type, listener));
          return this;
        }
    propfind
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    proppatch
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    purge
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    put
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    rawListeners
    function rawListeners(type) {
      return _listeners(this, type, false);
    }
    rebind
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    removeAllListeners
    function removeAllListeners(type) {
          const events = this._events;
          if (events === undefined)
            return this;
    
          // Not listening for removeListener, no need to emit
          if (events.removeListener === undefined) {
            if (arguments.length === 0) {
              this._events = ObjectCreate(null);
              this._eventsCount = 0;
            } else if (events[type] !== undefined) {
              if (--this._eventsCount === 0)
                this._events = ObjectCreate(null);
              else
                delete events[type];
            }
            return this;
          }
    
          // Emit removeListener for all listeners on all events
          if (arguments.length === 0) {
            for (const key of ReflectOwnKeys(events)) {
              if (key === 'removeListener') continue;
              this.removeAllListeners(key);
            }
            this.removeAllListeners('removeListener');
            this._events = ObjectCreate(null);
            this._eventsCount = 0;
            return this;
          }
    
          const listeners = events[type];
    
          if (typeof listeners === 'function') {
            this.removeListener(type, listeners);
          } else if (listeners !== undefined) {
            // LIFO order
            for (let i = listeners.length - 1; i >= 0; i--) {
              this.removeListener(type, listeners[i]);
            }
          }
    
          return this;
        }
    removeListener
    function removeListener(type, listener) {
          checkListener(listener);
    
          const events = this._events;
          if (events === undefined)
            return this;
    
          const list = events[type];
          if (list === undefined)
            return this;
    
          if (list === listener || list.listener === listener) {
            if (--this._eventsCount === 0)
              this._events = ObjectCreate(null);
            else {
              delete events[type];
              if (events.removeListener)
                this.emit('removeListener', type, list.listener || listener);
            }
          } else if (typeof list !== 'function') {
            let position = -1;
    
            for (let i = list.length - 1; i >= 0; i--) {
              if (list[i] === listener || list[i].listener === listener) {
                position = i;
                break;
              }
            }
    
            if (position < 0)
              return this;
    
            if (position === 0)
              list.shift();
            else {
              if (spliceOne === undefined)
                spliceOne = require('internal/util').spliceOne;
              spliceOne(list, position);
            }
    
            if (list.length === 1)
              events[type] = list[0];
    
            if (events.removeListener !== undefined)
              this.emit('removeListener', type, listener);
          }
    
          return this;
        }
    render
    function render(name, options, callback) {
      var cache = this.cache;
      var done = callback;
      var engines = this.engines;
      var opts = options;
      var renderOptions = {};
      var view;
    
      // support callback function as second arg
      if (typeof options === 'function') {
        done = options;
        opts = {};
      }
    
      // merge app.locals
      merge(renderOptions, this.locals);
    
      // merge options._locals
      if (opts._locals) {
        merge(renderOptions, opts._locals);
      }
    
      // merge options
      merge(renderOptions, opts);
    
      // set .cache unless explicitly provided
      if (renderOptions.cache == null) {
        renderOptions.cache = this.enabled('view cache');
      }
    
      // primed cache
      if (renderOptions.cache) {
        view = cache[name];
      }
    
      // view
      if (!view) {
        var View = this.get('view');
    
        view = new View(name, {
          defaultEngine: this.get('view engine'),
          root: this.get('views'),
          engines: engines
        });
    
        if (!view.path) {
          var dirs = Array.isArray(view.root) && view.root.length > 1
            ? 'directories "' + view.root.slice(0, -1).join('", "') + '" or "' + view.root[view.root.length - 1] + '"'
            : 'directory "' + view.root + '"'
          var err = new Error('Failed to lookup view "' + name + '" in views ' + dirs);
          err.view = view;
          return done(err);
        }
    
        // prime the cache
        if (renderOptions.cache) {
          cache[name] = view;
        }
      }
    
      // render
      tryRender(view, renderOptions, done);
    }
    report
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    request
    Name Value
    app
    function(req, res, next) {
        app.handle(req, res, next);
      }
    response
    Name Value
    app
    function(req, res, next) {
        app.handle(req, res, next);
      }
    route
    function route(path) {
      this.lazyrouter();
      return this._router.route(path);
    }
    search
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    set
    function set(setting, val) {
      if (arguments.length === 1) {
        // app.get(setting)
        return this.settings[setting];
      }
    
      debug('set "%s" to %o', setting, val);
    
      // set value
      this.settings[setting] = val;
    
      // trigger matched settings
      switch (setting) {
        case 'etag':
          this.set('etag fn', compileETag(val));
          break;
        case 'query parser':
          this.set('query parser fn', compileQueryParser(val));
          break;
        case 'trust proxy':
          this.set('trust proxy fn', compileTrust(val));
    
          // trust proxy inherit back-compat
          Object.defineProperty(this.settings, trustProxyDefaultSymbol, {
            configurable: true,
            value: false
          });
    
          break;
      }
    
      return this;
    }
    setMaxListeners
    function setMaxListeners(n) {
      if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {
        throw new ERR_OUT_OF_RANGE('n', 'a non-negative number', n);
      }
      this._maxListeners = n;
      return this;
    }
    settings
    Name Value
    envproduction
    etagweak
    etag fn
    function generateETag (body, encoding) {
        var buf = !Buffer.isBuffer(body)
          ? Buffer.from(body, encoding)
          : body
    
        return etag(buf, options)
      }
    jsonp callback namecallback
    port23976
    query parserextended
    query parser fn
    function parseExtendedQueryString(str) {
      return qs.parse(str, {
        allowPrototypes: true
      });
    }
    subdomain offset2
    trust proxytrue
    trust proxy fn
    function(){ return true }
    view
    function View(name, options) {
      var opts = options || {};
    
      this.defaultEngine = opts.defaultEngine;
      this.ext = extname(name);
      this.name = name;
      this.root = opts.root;
    
      if (!this.ext && !this.defaultEngine) {
        throw new Error('No default engine was specified and no extension was provided.');
      }
    
      var fileName = name;
    
      if (!this.ext) {
        // get extension from default engine name
        this.ext = this.defaultEngine[0] !== '.'
          ? '.' + this.defaultEngine
          : this.defaultEngine;
    
        fileName += this.ext;
      }
    
      if (!opts.engines[this.ext]) {
        // load engine
        var mod = this.ext.substr(1)
        debug('require "%s"', mod)
    
        // default engine export
        var fn = require(mod).__express
    
        if (typeof fn !== 'function') {
          throw new Error('Module "' + mod + '" does not provide a view engine.')
        }
    
        opts.engines[this.ext] = fn
      }
    
      // store loaded engine
      this.engine = opts.engines[this.ext];
    
      // lookup path
      this.path = this.lookup(fileName);
    }
    view cachetrue
    view engineejs
    views/app/views
    x-powered-bytrue
    source
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    subscribe
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    trace
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    unbind
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    unlink
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    unlock
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    unsubscribe
    function(path){
        if (method === 'get' && arguments.length === 1) {
          // app.get(setting)
          return this.set(path);
        }
    
        this.lazyrouter();
    
        var route = this._router.route(path);
        route[method].apply(route, slice.call(arguments, 1));
        return this;
      }
    use
    function use(fn) {
      var offset = 0;
      var path = '/';
    
      // default path to '/'
      // disambiguate app.use([fn])
      if (typeof fn !== 'function') {
        var arg = fn;
    
        while (Array.isArray(arg) && arg.length !== 0) {
          arg = arg[0];
        }
    
        // first arg is the path
        if (typeof arg !== 'function') {
          offset = 1;
          path = fn;
        }
      }
    
      var fns = flatten(slice.call(arguments, offset));
    
      if (fns.length === 0) {
        throw new TypeError('app.use() requires a middleware function')
      }
    
      // setup router
      this.lazyrouter();
      var router = this._router;
    
      fns.forEach(function (fn) {
        // non-express app
        if (!fn || !fn.handle || !fn.set) {
          return router.use(path, fn);
        }
    
        debug('.use app under %s', path);
        fn.mountpath = path;
        fn.parent = this;
    
        // restore .app property on req and res
        router.use(path, function mounted_app(req, res, next) {
          var orig = req.app;
          fn.handle(req, res, function (err) {
            setPrototypeOf(req, orig.request)
            setPrototypeOf(res, orig.response)
            next(err);
          });
        });
    
        // mounted an app
        fn.emit('mount', this);
      }, this);
    
      return this;
    }
  • Name Value
    cookie
    Name Value
    _expiresnull
    httpOnlytrue
    originalMaxAgenull
    path/
    securefalse