UNPKG

@insco/enigma-virtualbox

Version:

Generate an "Enigma Virtual Box" project file

121 lines (118 loc) 6.38 kB
/** * Version: 1.3.1 * * Copyright (c) 2025 kjxbyz. All rights reserved. */ "use strict";var b=Object.create;var d=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var M=(e,t)=>{for(var r in t)d(e,r,{get:t[r],enumerable:!0})},N=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of w(t))!v.call(e,s)&&s!==r&&d(e,s,{get:()=>t[s],enumerable:!(i=x(t,s))||i.enumerable});return e};var U=(e,t,r)=>(r=e!=null?b(C(e)):{},N(t||!e||!e.__esModule?d(r,"default",{value:e,enumerable:!0}):r,e)),H=e=>N(d({},"__esModule",{value:!0}),e);var B={};M(B,{generate:()=>k});module.exports=H(B);var n=require("path"),o=require("fs"),f=U(require("handlebars")),S=require("minimatch"),h=require("lodash-es");var V=require("path"),R=e=>(0,V.join)(__dirname,"..","templates",e),X=` <File> <Type>3</Type> <Name>{{{dirName}}}</Name> <Action>0</Action> <OverwriteDateTime>False</OverwriteDateTime> <OverwriteAttributes>False</OverwriteAttributes> <Files>{{{files}}}</Files> <HideFromDialogs>0</HideFromDialogs> </File> `,j=` <File> <Type>2</Type> <Name>{{{fileName}}}</Name> <File>{{{filePath}}}</File> <ActiveX>False</ActiveX> <ActiveXInstall>False</ActiveXInstall> <Action>0</Action> <OverwriteDateTime>False</OverwriteDateTime> <OverwriteAttributes>False</OverwriteAttributes> <PassCommandLine>False</PassCommandLine> <HideFromDialogs>0</HideFromDialogs> </File> `,W=` <?xml version="1.0" encoding="windows-1252"?> <> <InputFile>{{{input}}}</InputFile> <OutputFile>{{{output}}}</OutputFile> <Files> <Enabled>True</Enabled> <DeleteExtractedOnExit>{{{deleteExtractedOnExit}}}</DeleteExtractedOnExit> <CompressFiles>{{{compressFiles}}}</CompressFiles> <Files> <File> <Type>3</Type> <Name>%DEFAULT FOLDER%</Name> <Action>0</Action> <OverwriteDateTime>False</OverwriteDateTime> <OverwriteAttributes>False</OverwriteAttributes> <HideFromDialogs>0</HideFromDialogs> <Files>{{{files}}}</Files> </File> </Files> </Files> <Registries> <Enabled>False</Enabled> <Registries> <Registry> <Type>1</Type> <Virtual>True</Virtual> <Name>Classes</Name> <ValueType>0</ValueType> <Value/> <Registries/> </Registry> <Registry> <Type>1</Type> <Virtual>True</Virtual> <Name>User</Name> <ValueType>0</ValueType> <Value/> <Registries/> </Registry> <Registry> <Type>1</Type> <Virtual>True</Virtual> <Name>Machine</Name> <ValueType>0</ValueType> <Value/> <Registries/> </Registry> <Registry> <Type>1</Type> <Virtual>True</Virtual> <Name>Users</Name> <ValueType>0</ValueType> <Value/> <Registries/> </Registry> <Registry> <Type>1</Type> <Virtual>True</Virtual> <Name>Config</Name> <ValueType>0</ValueType> <Value/> <Registries/> </Registry> </Registries> </Registries> <Packaging> <Enabled>False</Enabled> </Packaging> <Options> <ShareVirtualSystem>{{{shareVirtualSystem}}}</ShareVirtualSystem> <MapExecutableWithTemporaryFile>{{{mapExecutableWithTemporaryFile}}}</MapExecutableWithTemporaryFile> <TemporaryFileMask/> <AllowRunningOfVirtualExeFiles>{{{allowRunningOfVirtualExeFiles}}}</AllowRunningOfVirtualExeFiles> <ProcessesOfAnyPlatforms>{{{processesOfAnyPlatforms}}}</ProcessesOfAnyPlatforms> </Options> <Storage> <Files> <Enabled>False</Enabled> <Folder>%DEFAULTFOLDER%\\</Folder> <RandomFileNames>False</RandomFileNames> <EncryptContent>False</EncryptContent> </Files> </Storage> </> `,O={PROJECT:R("project.template.hbs"),DIR:R("dir.template.hbs"),FILE:R("file.template.hbs")},A={PROJECT:W,DIR:X,FILE:j};var L=/^\s+?</gm,a={DIR_NAME:"dirName",FILES:"files",FILE_NAME:"fileName",FILE_PATH:"filePath",INPUT_EXE:"input",OUTPUT_EXE:"output",OPT_DELETE_EXTRACTED:"deleteExtractedOnExit",OPT_COMPRESS_FILES:"compressFiles",OPT_SHARE_VIRTUAL_SYSTEM:"shareVirtualSystem",OPT_MAP_WITH_TEMP:"mapExecutableWithTemporaryFile",OPT_ALLOW_RUNNING_VIRTUAL_EXE:"allowRunningOfVirtualExeFiles",OPT_PROCESSES_OF_ANY_PLATFORMS:"processesOfAnyPlatforms"};var u=class{constructor(t,r){this.name=t,this.tree=r}};var G=e=>(0,o.readFileSync)((0,n.resolve)(e),"utf8"),J=e=>e.replace(L,"<"),_=(e,t,r)=>{let i;try{i=e?G(e.toLowerCase()==="default"?t:e):r,i=J(i)}catch(s){throw s instanceof Error?(s.message="Failed to load template. Template path: '"+e+`'. `+s.message,s):"Failed to load template. Template path: '"+e+`'. `+s}return i},I=e=>{let t=(0,o.readdirSync)(e),r=t.length,i=[];for(;r--;){let s=t[r],T=(0,n.resolve)(e,s);(0,o.lstatSync)(T).isDirectory()?i[r]=new u(s,I(T)):i[r]=s}return i},Y=(e,t,r,i)=>{let s=(l,P)=>{let c=[];return P.forEach(function(m){let F=m instanceof u,y=F?m.name:m,p=(0,n.join)(l,y),E,g;i&&(0,S.minimatch)(p,i,{windowsPathsNoEscape:!1,dot:!0})||(F?(g=s(p,m.tree),E=t({[a.DIR_NAME]:y,[a.FILES]:g})):E=r({[a.FILE_NAME]:m,[a.FILE_PATH]:p}),c.push(E))}),c.join("")},T;try{T=I(e)}catch(l){throw l instanceof Error?(l.message="Failed to read the directory tree of: '"+e+`'. `+l.message,l):"Failed to read the directory tree of: '"+e+`'. `+l}return s(e,T)},k=async(e,t)=>{t=(0,h.merge)({evbOptions:{deleteExtractedOnExit:"True",compressFiles:"True",shareVirtualSystem:"False",mapExecutableWithTemporaryFile:"True",allowRunningOfVirtualExeFiles:"True",processesOfAnyPlatforms:"False"}},t);let r=t.templatePath,i=t.evbOptions,s=_(r?.project,O.PROJECT,A.PROJECT),T=f.default.compile(s),l=_(r?.dir,O.DIR,A.DIR),P=f.default.compile(l),c=_(r?.file,O.FILE,A.FILE),m=f.default.compile(c),F=Y((0,n.resolve)(e),P,m,t.exclude||t.e),y=t.input||t.i,p=t.output||t.o,E=T({[a.INPUT_EXE]:(0,n.resolve)(y),[a.OUTPUT_EXE]:(0,n.resolve)(p),[a.OPT_DELETE_EXTRACTED]:i?.deleteExtractedOnExit||"True",[a.OPT_COMPRESS_FILES]:i?.compressFiles||"True",[a.OPT_SHARE_VIRTUAL_SYSTEM]:i?.shareVirtualSystem||"False",[a.OPT_MAP_WITH_TEMP]:i?.mapExecutableWithTemporaryFile||"True",[a.OPT_ALLOW_RUNNING_VIRTUAL_EXE]:i?.allowRunningOfVirtualExeFiles||"True",[a.OPT_PROCESSES_OF_ANY_PLATFORMS]:i?.processesOfAnyPlatforms||"False",[a.FILES]:F}),g=t.projectName||t.p||"project.evb",D=(0,n.resolve)(g);return(0,o.writeFileSync)(D,"\uFEFF"+E,"utf8"),D};0&&(module.exports={generate});