UNPKG

@insco/enigma-virtualbox

Version:

Generate an "Enigma Virtual Box" project file

121 lines (118 loc) 6.43 kB
/** * Version: 1.3.1 * * Copyright (c) 2025 kjxbyz. All rights reserved. */ "use strict";var w=Object.create;var y=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,U=Object.prototype.hasOwnProperty;var H=(e,t)=>{for(var i in t)y(e,i,{get:t[i],enumerable:!0})},R=(e,t,i,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of j(t))!U.call(e,s)&&s!==i&&y(e,s,{get:()=>t[s],enumerable:!(r=C(t,s))||r.enumerable});return e};var k=(e,t,i)=>(i=e!=null?w(M(e)):{},R(t||!e||!e.__esModule?y(i,"default",{value:e,enumerable:!0}):i,e)),X=e=>R(y({},"__esModule",{value:!0}),e);var Q={};H(Q,{generate:()=>L,version:()=>S});module.exports=X(Q);var n=require("path"),o=require("fs"),O=k(require("handlebars")),D=require("minimatch"),N=require("lodash-es");var _=require("path"),P=e=>(0,_.join)(__dirname,"..","templates",e),W=` <File> <Type>3</Type> <Name>{{{dirName}}}</Name> <Action>0</Action> <OverwriteDateTime>False</OverwriteDateTime> <OverwriteAttributes>False</OverwriteAttributes> <Files>{{{files}}}</Files> <HideFromDialogs>0</HideFromDialogs> </File> `,G=` <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> `,B=` <?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> </> `,f={PROJECT:P("project.template.hbs"),DIR:P("dir.template.hbs"),FILE:P("file.template.hbs")},b={PROJECT:B,DIR:W,FILE:G};var V=/^\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 T=class{constructor(t,i){this.name=t,this.tree=i}};var J=e=>(0,o.readFileSync)((0,n.resolve)(e),"utf8"),z=e=>e.replace(V,"<"),x=(e,t,i)=>{let r;try{r=e?J(e.toLowerCase()==="default"?t:e):i,r=z(r)}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 r},v=e=>{let t=(0,o.readdirSync)(e),i=t.length,r=[];for(;i--;){let s=t[i],p=(0,n.resolve)(e,s);(0,o.lstatSync)(p).isDirectory()?r[i]=new T(s,v(p)):r[i]=s}return r},Y=(e,t,i,r)=>{let s=(l,A)=>{let E=[];return A.forEach(function(m){let g=m instanceof T,d=g?m.name:m,c=(0,n.join)(l,d),u,F;r&&(0,D.minimatch)(c,r,{windowsPathsNoEscape:!1,dot:!0})||(g?(F=s(c,m.tree),u=t({[a.DIR_NAME]:d,[a.FILES]:F})):u=i({[a.FILE_NAME]:m,[a.FILE_PATH]:c}),E.push(u))}),E.join("")},p;try{p=v(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,p)},L=async(e,t)=>{t=(0,N.merge)({evbOptions:{deleteExtractedOnExit:"True",compressFiles:"True",shareVirtualSystem:"False",mapExecutableWithTemporaryFile:"True",allowRunningOfVirtualExeFiles:"True",processesOfAnyPlatforms:"False"}},t);let i=t.templatePath,r=t.evbOptions,s=x(i?.project,f.PROJECT,b.PROJECT),p=O.default.compile(s),l=x(i?.dir,f.DIR,b.DIR),A=O.default.compile(l),E=x(i?.file,f.FILE,b.FILE),m=O.default.compile(E),g=Y((0,n.resolve)(e),A,m,t.exclude||t.e),d=t.input||t.i,c=t.output||t.o,u=p({[a.INPUT_EXE]:(0,n.resolve)(d),[a.OUTPUT_EXE]:(0,n.resolve)(c),[a.OPT_DELETE_EXTRACTED]:r?.deleteExtractedOnExit||"True",[a.OPT_COMPRESS_FILES]:r?.compressFiles||"True",[a.OPT_SHARE_VIRTUAL_SYSTEM]:r?.shareVirtualSystem||"False",[a.OPT_MAP_WITH_TEMP]:r?.mapExecutableWithTemporaryFile||"True",[a.OPT_ALLOW_RUNNING_VIRTUAL_EXE]:r?.allowRunningOfVirtualExeFiles||"True",[a.OPT_PROCESSES_OF_ANY_PLATFORMS]:r?.processesOfAnyPlatforms||"False",[a.FILES]:g}),F=t.projectName||t.p||"project.evb",h=(0,n.resolve)(F);return(0,o.writeFileSync)(h,"\uFEFF"+u,"utf8"),h};var I="1.3.1";var S=I;0&&(module.exports={generate,version});