!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/strapi-generate/lib/   drwxr-xr-x
Free 12.97 GB of 57.97 GB (22.37%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     target.js (7.42 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
'use strict';

/**
 * Module dependencies
 */

/* eslint-disable prefer-template */
// Node.js core.
const path = require('path');
const util = require('util');

// Public node modules.
const _ = require('lodash');
const async = require('async');
const report = require('reportback')();

// Local dependencies.
const folderHelper = require('./helpers/folder');
const templateHelper = require('./helpers/template');
const jsonFileHelper = require('./helpers/jsonfile');
const copyHelper = require('./helpers/copy');

/**
 * generateTarget()
 *
 * @param {Object} options
 */

function generateTarget(options, cb) {
  const sb = report.extend(cb);

  // Options.
  let target = options.target;
  let scope = options.scope;
  const parentGenerator = options.parent;
  const recursiveGenerate = options.recursiveGenerate;

  const maxResolves = 5;
  let _resolves = 0;

  async.until(
    () => {
      return isValidTarget(target) || ++_resolves > maxResolves;
    },
    asyncCb => {
      parseTarget(target, scope, (err, resolvedTarget) => {
        if (err) {
          return asyncCb(err);
        }
        target = resolvedTarget;
        return asyncCb();
      });
    },
    err => {
      if (err) {
        return sb(err);
      }
      if (!isValidTarget(target)) {
        return sb(new Error('Generator Error :: Could not resolve target `' + scope.rootPath + '` (probably a recursive loop)'));
      }

      // Pass down parent Generator's template directory abs path.
      scope.templatesDirectory = parentGenerator.templatesDirectory;

      if (target.copy) {
        scope = mergeSubtargetScope(scope, typeof target.copy === 'string' ? {
          templatePath: target.copy
        } : target.copy);
        return copyHelper(scope, sb);
      }

      if (target.folder) {
        scope = mergeSubtargetScope(scope, target.folder);
        return folderHelper(scope, sb);
      }

      if (target.template) {
        scope = mergeSubtargetScope(scope, typeof target.template === 'string' ? {
          templatePath: target.template
        } : target.template);

        return templateHelper(scope, sb);
      }

      if (target.jsonfile) {
        if (typeof target.jsonfile === 'object') {
          scope = mergeSubtargetScope(scope, target.jsonfile);
        } else if (typeof target.jsonfile === 'function') {
          scope = _.merge(scope, {
            data: target.jsonfile(scope)
          });
        }
        return jsonFileHelper(scope, sb);
      }

      // If we made it here, this must be a recursive generator.
      // Now that the generator definition has been resolved,
      // call this method recursively on it, passing along our
      // callback.
      if (++scope._depth > scope.maxHops) {
        return sb(new Error('`maxHops` (' + scope.maxHops + ') exceeded! There is probably a recursive loop in one of your generators.'));
      }
      return recursiveGenerate(target, scope, sb);
    }
  );
}

module.exports = generateTarget;

/**
 * @param {[Type]} scope Description
 * @param {[Type]} subtarget Description
 * @return {[Type]} Description
 */

function mergeSubtargetScope(scope, subtarget) {
  return _.merge(scope, _.isObject(subtarget) ? subtarget : {});
}

/**
 * Known helpers
 *
 * @type {Array}
 */

const knownHelpers = ['folder', 'template', 'jsonfile', 'file', 'copy'];

function targetIsHelper(target) {
  return _.some(target, (subTarget, key) => {
    return _.includes(knownHelpers, key);
  });
}

/**
 * @param {String|Object} target Description
 * @param {Object} scope Description
 * @param {Function} cb Description
 * @return {[type]} Description
 */

function parseTarget(target, scope, cb) {
  if (typeof target === 'string') {
    target = {
      generator: target
    };
  }

  // Interpret generator definition.
  if (targetIsHelper(target)) {
    return cb(null, target);
  }

  if (target.generator) {

    // Normalize the subgenerator reference.
    let subGeneratorRef;
    if (typeof target.generator === 'string') {
      subGeneratorRef = {
        module: target.generator
      };
    } else if (typeof target.generator === 'object') {
      subGeneratorRef = target.generator;
    }

    if (!subGeneratorRef) {
      return cb(new Error('Generator Error :: Invalid subgenerator referenced for target `' + scope.rootPath + '`'));
    }

    // Now normalize the sub-generator.
    let subGenerator;

    // No `module` means we'll treat this subgenerator as an inline generator definition.
    if (!subGeneratorRef.module) {
      subGenerator = subGeneratorRef;
      if (subGenerator) {
        return cb(null, subGenerator);
      }
    }

    // Otherwise, we'll attempt to load this subgenerator.
    if (typeof subGeneratorRef.module === 'string') {

      // Lookup the generator by name if a `module` was specified
      // This allows the module for a given generator to be
      // overridden.
      const configuredReference = scope.modules && scope.modules[subGeneratorRef.module];

      // Refers to a configured module.
      // If this generator type is explicitly set to `false`,
      // disable the generator.
      if (configuredReference) {
        return cb(null, configuredReference);
      } else if (configuredReference === false) {
        return cb(null);
      }

      // If `configuredReference` is undefined, continue on
      // and try to require the module.
    }

    // At this point, `subGeneratorRef.module` should be a string,
    // and the best guess at the generator module we're going
    // to get.
    const module = subGeneratorRef.module;
    let requireError;

    // Try requiring it directly as a path.
    try {
      subGenerator = require(module);
    } catch (e0) {
      requireError = e0;
    }

    // Try the scope's `rootPath`.
    if (!subGenerator) {
      try {
        const asDependencyInRootPath = path.resolve(scope.rootPath, 'node_modules', module);
        subGenerator = require(asDependencyInRootPath);
      } catch (e1) {
        requireError = e1;
      }
    }

    // Try the current working directory.
    if (!subGenerator) {
      try {
        subGenerator = require(path.resolve(process.cwd(), 'node_modules', module));
      } catch (e1) {
        requireError = e1;
      }
    }

    // If we couldn't find a generator using the configured module,
    // try requiring `strapi-generate-<module>` to get the core generator.
    if (!subGenerator && !module.match(/^strapi-generate-/)) {
      try {
        if (process.mainModule.filename.indexOf('yarn') !== -1) {
          subGenerator = require(path.resolve(process.mainModule.paths[2], 'strapi-generate-' + module));
        } else {
          subGenerator = require(path.resolve(process.mainModule.paths[1], 'strapi-generate-' + module));
        }
      } catch (e1) {
        requireError = e1;
      }
    }

    // If we were able to find it, send it back!
    if (subGenerator) {
      return cb(null, subGenerator);
    }

    // But if we still can't find it, give up.
    return cb(new Error('Error: Failed to load `' + subGeneratorRef.module + '`...' + (requireError ? ' (' + requireError + ')' : '') +''));
  }

  return cb(new Error('Unrecognized generator syntax in `targets["' + scope.keyPath + '"]` ::\n' + util.inspect(target)));
}

/**
 *
 * @param {[Type]} target Description
 * @return {Boolean} Description
 */

function isValidTarget(target) {
  let ok = true;

  ok = ok && typeof target === 'object';

  // Is using a helper.
  // Or is another generator def.
  ok = ok && (targetIsHelper(target) || _.has(target, 'targets'));

  return ok;
}

:: 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.0044 ]--