!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/usr/local/lib/node_modules/strapi/node_modules/switchback/lib/   drwxr-xr-x
Free 13.09 GB of 57.97 GB (22.57%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     index.js (8.42 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/**
 * Module dependencies
 */

var util = require('util');
var _ = require('@sailshq/lodash');
var factory = require('./factory');
var normalize = require('./normalize');
var constants = require('./constants');
var EventEmitter = require('events').EventEmitter;


/**
 * `switchback`
 *
 * Switching utility which builds and returns a handler which is capable
 * calling one of several callbacks.
 *
 * @param {Object|Function} callback
 *			- a switchback definition obj or a standard 1|2-ary node callback function.
 *
 * @param {Object} [defaultHandlers]
 *			- '*': supply a special callback for when none of the other handlers match
 *			- a string can be supplied, e.g. {'invalid': 'error'}, to "forward" one handler to another
 *			- otherwise a function should be supplied, e.g. { 'error': res.serverError }
 *
 * @param {Object} [callbackContext]
 *			- optional `this` context for callbacks
 *
 * @param {Boolean} immediate
 *      - optional  don't wait for setTimeout(0) before triggering callback.
 *                  this breaks event-emitter-style usage.
 *                  defaults to false
 */

var switchback = function(callback, defaultHandlers, callbackContext, immediate) {


  /**
   * @api private
   * @param  {Function} cb [description]
   */
  function _maybeWaitForNextTick(cb){
    if (immediate) { return cb(); }
    setTimeout(cb, 0);
  }

  // Track whether a single tick of the event loop has elapsed yet since
  // this switchback was instantiated.
  var atLeastOneTickHasElapsed;
  _maybeWaitForNextTick(function (){
    atLeastOneTickHasElapsed = true;
  });

  // Build switchback
  var Switchback = factory(callbackContext);

  // If callback is not a function or an object, I don't know wtf it is,
  // so let's just return early before anything bad happens, hmm?
  if (!_.isObject(callback) && !_.isFunction(callback)) {
    // Actually let's not.
    // Instead, make the new switchback an EventEmitter
    var e = new EventEmitter();
    Switchback.emit = function() {
      var args = Array.prototype.slice.call(arguments);

      // This will invoke the final runtime function
      //
      // But first ensure at least a single cycle of the event loop has elapsed
      // since this switchback was instantiated
      if (atLeastOneTickHasElapsed) {
        return e.emit.apply(e, args);
      }
      else {
        _maybeWaitForNextTick(function (){
          return e.emit.apply(e, args);
        });
      }
    };
    Switchback.on = function(evName, handler) {
      if (immediate) {
        throw (function (){
          var _err = new Error('Switchback can not be used as an EventEmitter (i.e. `.on()`) when 4th argument (`immediate`) is set to true.');
          _err.code = 'SWITCHBACK:E_USAGE';
          return _err;
        })();
      }
      return e.on.apply(e, Array.prototype.slice.call(arguments));
    };

    // Then emit the appropriate event when the switchback is triggered.
    callback = {
      error: function(err) {
        Switchback.emit('error', err);
      },
      success: function( /*...*/ ) {
        Switchback.emit.apply(e, ['success'].concat(Array.prototype.slice.call(arguments)));
      }
    };
  }



  // Normalize `callback` to a switchback definition object.
  callback = normalize.callback(callback, callbackContext);

  // Attach specified handlers
  _.extend(Switchback, callback);


  // This is here as a failsafe to solve issues when no error callback is specified.
  var MAX_WILDCARD_FWDS = 15;
  var numWildcardFwds = 0;

  // Supply a handful of default handlers to provide better error messages.
  var getWildcardCaseHandler = function(caseName, switchbackErrorMsg) {
    return function unknownCase( /* ... */ ) {
      var args = Array.prototype.slice.call(arguments);

      // Build an error message that combines the error msg from switchback
      // with the actual error being passed in to the callback.
      var combinedError = '';

      // Build up a pretty-printed version of the actual error from the callback
      // (maintain the stack trace if at all possible)
      var actualErr = args[0];
      if (!_.isUndefined(actualErr)) {
        var prettifiedActualErr;
        if (_.isObject(actualErr) && actualErr instanceof Error){
          prettifiedActualErr = actualErr.stack;
        }
        else {
          prettifiedActualErr = util.inspect(args[0], false, null);
        }
        combinedError += prettifiedActualErr;
      }

      // Add on the error msg from switchback
      if (!_.isUndefined(switchbackErrorMsg)) {
        combinedError += '        ' + switchbackErrorMsg;
      }

      // Before attempting to call error handler, ensure that we're not
      // in an infinite loop.
      if (numWildcardFwds > MAX_WILDCARD_FWDS) {
        throw new Error('Switchback: handlers object (' + util.inspect(defaultHandlers) + ') has a cyclic redirect.');
      }

      // If a callback fn exists under the '*' or 'error' key in default handlers, call it
      if (_.isObject(defaultHandlers)){
        if (_.isFunction(defaultHandlers['*'])) {
          return defaultHandlers['*'](combinedError);
        }
        if (_.isFunction(defaultHandlers.error)) {
          return defaultHandlers.error(combinedError);
        }
      }
      // If a callback fn exists under the '*' or 'error' key in Switchback, call it
      if (_.isObject(Switchback)){
        if (_.isFunction(Switchback['*'])) {
          return Switchback['*'](combinedError);
        }
        if (_.isFunction(Switchback.error)) {
          return Switchback.error(combinedError);
        }
      }
      // console.log('defaultHandlers', defaultHandlers);
      // console.log('Switchback', Switchback);
      // console.log('Switchback["*"]', Switchback['*']);
      // console.log('Switchback["error"]', Switchback['error']);

      // Otherwise just throw out of frustration
      throw new Error(combinedError);
    };
  };

  // redirect any handler defaults specified as strings
  if (_.isObject(defaultHandlers)) {
    defaultHandlers = _.mapValues(defaultHandlers, function(handler, name) {
      if (_.isFunction(handler)) { return handler; }

      // Closure which will resolve redirected handler
      return function() {
        var runtimeHandler = handler;
        var runtimeArgs = Array.prototype.slice.call(arguments);
        var runtimeCtx = callbackContext || this;

        // Track previous handler to make usage error messages more useful.
        var prevHandler;

        // No more than 5 "redirects" allowed (prevents never-ending loop)
        var MAX_FORWARDS = 5;
        var numIterations = 0;
        do {
          prevHandler = runtimeHandler;
          runtimeHandler = Switchback[runtimeHandler];
          // console.log('redirecting '+name+' to "'+prevHandler +'"-- got ' + runtimeHandler);
          numIterations++;
        }
        while (_.isString(runtimeHandler) && numIterations <= MAX_FORWARDS);

        if (numIterations > MAX_FORWARDS) {
          throw new Error('Switchback: Default handlers object (' + util.inspect(defaultHandlers) + ') has a cyclic redirect.');
        }

        // Redirects to unknown handler
        if (!_.isFunction(runtimeHandler)) {
          runtimeHandler = getWildcardCaseHandler(runtimeHandler, '`' + name + '` case triggered, but no handler was implemented.');
        }

        // Invoke final runtime function
        //
        // But first ensure at least a single cycle of the event loop has elapsed
        // since this switchback was instantiated
        if (atLeastOneTickHasElapsed) {
          runtimeHandler.apply(runtimeCtx, runtimeArgs);
        }
        // Otherwise wait until that happens and then invoke the runtime function
        else {
          _maybeWaitForNextTick(function (){
            runtimeHandler.apply(runtimeCtx, runtimeArgs);
          });
        }

      };
    });
  }

  _.defaults(Switchback, defaultHandlers, {
    success: getWildcardCaseHandler('success', '`success` case triggered, but no handler was implemented.'),
    error: getWildcardCaseHandler('error', '`error` case triggered, but no handler was implemented.'),
    invalid: getWildcardCaseHandler('invalid', '`invalid` case triggered, but no handler was implemented.')
  });

  return Switchback;
};


/**
 * `isSwitchback`
 *
 * @param  {*}  something
 * @return {Boolean}           [whether `something` is a valid switchback instance]
 */
switchback.isSwitchback = function(something) {
  return _.isObject(something) && something[constants.telltale.key] === constants.telltale.value;
};




module.exports = switchback;



:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0059 ]--