mirror of
https://github.com/Ylianst/MeshAgent
synced 2025-12-15 07:43:50 +00:00
Added ability to export JS modules from agent.
This commit is contained in:
@@ -131,6 +131,12 @@ char* crashMemory = ILib_POSIX_InstallCrashHandler(argv[0]);
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (argc > 1 && strcmp(argv[1], "-export") == 0 && integratedJavaScriptLen == 0)
|
||||||
|
{
|
||||||
|
integratedJavaScript = ILibString_Copy("require('code-utils').expand({embedded: true});process.exit();",0);
|
||||||
|
integratedJavaScriptLen = (int)strnlen_s(integratedJavaScript, sizeof(ILibScratchPad));
|
||||||
|
}
|
||||||
|
|
||||||
if (argc > 2 && strcmp(argv[1], "-exec") == 0 && integratedJavaScriptLen == 0)
|
if (argc > 2 && strcmp(argv[1], "-exec") == 0 && integratedJavaScriptLen == 0)
|
||||||
{
|
{
|
||||||
integratedJavaScript = ILibString_Copy(argv[2], 0);
|
integratedJavaScript = ILibString_Copy(argv[2], 0);
|
||||||
|
|||||||
@@ -69,6 +69,7 @@ limitations under the License.
|
|||||||
|
|
||||||
extern void* _duk_get_first_object(void *ctx);
|
extern void* _duk_get_first_object(void *ctx);
|
||||||
extern void* _duk_get_next_object(void *ctx, void *heapptr);
|
extern void* _duk_get_next_object(void *ctx, void *heapptr);
|
||||||
|
extern duk_ret_t ModSearchTable_Get(duk_context *ctx, duk_idx_t table, char *key, char *id);
|
||||||
|
|
||||||
|
|
||||||
typedef enum ILibDuktape_Console_DestinationFlags
|
typedef enum ILibDuktape_Console_DestinationFlags
|
||||||
@@ -2679,7 +2680,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx)
|
|||||||
// }} END OF AUTO-GENERATED BODY
|
// }} END OF AUTO-GENERATED BODY
|
||||||
duk_peval_string_noresult(ctx, "Object.defineProperty(this, 'wget', {get: function() { return(require('wget'));}});");
|
duk_peval_string_noresult(ctx, "Object.defineProperty(this, 'wget', {get: function() { return(require('wget'));}});");
|
||||||
duk_peval_string_noresult(ctx, "Object.defineProperty(process, 'arch', {get: function() {return( require('os').arch());}});");
|
duk_peval_string_noresult(ctx, "Object.defineProperty(process, 'arch', {get: function() {return( require('os').arch());}});");
|
||||||
duk_peval_string_noresult(ctx, "addCompressedModule('code-utils', Buffer.from('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', 'base64'), '2022-10-19T23:17:33.000-07:00');");
|
duk_peval_string_noresult(ctx, "addCompressedModule('code-utils', Buffer.from('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', 'base64'), '2022-10-20T16:36:15.000-07:00');");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3607,6 +3608,27 @@ duk_ret_t ILibDuktape_Polyfills_resolve(duk_context *ctx)
|
|||||||
ILibDuktape_CreateReadonlyProperty_SetEnumerable(ctx, "_integers", 0); // [ret]
|
ILibDuktape_CreateReadonlyProperty_SetEnumerable(ctx, "_integers", 0); // [ret]
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
duk_ret_t ILibDuktape_Polyfills_getModules(duk_context *ctx)
|
||||||
|
{
|
||||||
|
char *id;
|
||||||
|
duk_idx_t top;
|
||||||
|
duk_push_heap_stash(ctx); // [stash]
|
||||||
|
duk_get_prop_string(ctx, -1, "ModSearchTable"); // [stash][table]
|
||||||
|
duk_enum(ctx, -1, DUK_ENUM_OWN_PROPERTIES_ONLY); // [stash][table][enum]
|
||||||
|
duk_push_array(ctx); // [stash][table][enum][array]
|
||||||
|
top = duk_get_top(ctx);
|
||||||
|
while (duk_next(ctx, -2, 0)) // [stash][table][enum][array][key]
|
||||||
|
{
|
||||||
|
id = (char*)duk_to_string(ctx, -1);
|
||||||
|
if (ModSearchTable_Get(ctx, -4, "\xFF_Modules_File", id) > 0) // [stash][table][enum][array][key][value]
|
||||||
|
{
|
||||||
|
duk_pop(ctx); // [stash][table][enum][array][key]
|
||||||
|
duk_array_push(ctx, -2); // [stash][table][enum][array]
|
||||||
|
}
|
||||||
|
duk_set_top(ctx, top);
|
||||||
|
}
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
void ILibDuktape_Polyfills_Init(duk_context *ctx)
|
void ILibDuktape_Polyfills_Init(duk_context *ctx)
|
||||||
{
|
{
|
||||||
ILibDuktape_ModSearch_AddHandler(ctx, "queue", ILibDuktape_Queue_Push);
|
ILibDuktape_ModSearch_AddHandler(ctx, "queue", ILibDuktape_Queue_Push);
|
||||||
@@ -3645,6 +3667,7 @@ void ILibDuktape_Polyfills_Init(duk_context *ctx)
|
|||||||
ILibDuktape_CreateInstanceMethod(ctx, "addModuleObject", ILibDuktape_Polyfills_addModuleObject, 2);
|
ILibDuktape_CreateInstanceMethod(ctx, "addModuleObject", ILibDuktape_Polyfills_addModuleObject, 2);
|
||||||
ILibDuktape_CreateInstanceMethod(ctx, "addModule", ILibDuktape_Polyfills_addModule, DUK_VARARGS);
|
ILibDuktape_CreateInstanceMethod(ctx, "addModule", ILibDuktape_Polyfills_addModule, DUK_VARARGS);
|
||||||
ILibDuktape_CreateInstanceMethod(ctx, "addCompressedModule", ILibDuktape_Polyfills_addCompressedModule, DUK_VARARGS);
|
ILibDuktape_CreateInstanceMethod(ctx, "addCompressedModule", ILibDuktape_Polyfills_addCompressedModule, DUK_VARARGS);
|
||||||
|
ILibDuktape_CreateInstanceMethod(ctx, "getModules", ILibDuktape_Polyfills_getModules, 0);
|
||||||
ILibDuktape_CreateInstanceMethod(ctx, "getJSModule", ILibDuktape_Polyfills_getJSModule, 1);
|
ILibDuktape_CreateInstanceMethod(ctx, "getJSModule", ILibDuktape_Polyfills_getJSModule, 1);
|
||||||
ILibDuktape_CreateInstanceMethod(ctx, "getJSModuleDate", ILibDuktape_Polyfills_getJSModuleDate, 1);
|
ILibDuktape_CreateInstanceMethod(ctx, "getJSModuleDate", ILibDuktape_Polyfills_getJSModuleDate, 1);
|
||||||
ILibDuktape_CreateInstanceMethod(ctx, "_debugHang", ILibDuktape_Polyfills_debugHang, DUK_VARARGS);
|
ILibDuktape_CreateInstanceMethod(ctx, "_debugHang", ILibDuktape_Polyfills_debugHang, DUK_VARARGS);
|
||||||
|
|||||||
@@ -20,6 +20,144 @@ limitations under the License.
|
|||||||
// to be able to embed and extact JavaScript modules from native C code on the fly.
|
// to be able to embed and extact JavaScript modules from native C code on the fly.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// This peroperty is a polyfill for an Array, to fetch the specified element if it exists, removing the surrounding quotes if they are there
|
||||||
|
Object.defineProperty(Array.prototype, 'getParameterEx',
|
||||||
|
{
|
||||||
|
value: function (name, defaultValue)
|
||||||
|
{
|
||||||
|
var i, ret;
|
||||||
|
for (i = 0; i < this.length; ++i)
|
||||||
|
{
|
||||||
|
if (this[i].startsWith(name + '='))
|
||||||
|
{
|
||||||
|
ret = this[i].substring(name.length + 1);
|
||||||
|
if (ret.startsWith('"')) { ret = ret.substring(1, ret.length - 1); }
|
||||||
|
return (ret);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (defaultValue);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// This property is a polyfill for an Array, to fetch the specified element if it exists
|
||||||
|
Object.defineProperty(Array.prototype, 'getParameter',
|
||||||
|
{
|
||||||
|
value: function (name, defaultValue)
|
||||||
|
{
|
||||||
|
return (this.getParameterEx('--' + name, defaultValue));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (x)
|
||||||
|
{ }
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// This property is a polyfill for an Array, to fetch the index of the specified element, if it exists
|
||||||
|
Object.defineProperty(Array.prototype, 'getParameterIndex',
|
||||||
|
{
|
||||||
|
value: function (name)
|
||||||
|
{
|
||||||
|
var i;
|
||||||
|
for (i = 0; i < this.length; ++i)
|
||||||
|
{
|
||||||
|
if (this[i].startsWith('--' + name + '='))
|
||||||
|
{
|
||||||
|
return (i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (x)
|
||||||
|
{ }
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// This property is a polyfill for an Array, to remove the specified element, if it exists
|
||||||
|
Object.defineProperty(Array.prototype, 'deleteParameter',
|
||||||
|
{
|
||||||
|
value: function (name)
|
||||||
|
{
|
||||||
|
var i = this.getParameterIndex(name);
|
||||||
|
if (i >= 0)
|
||||||
|
{
|
||||||
|
this.splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (x)
|
||||||
|
{ }
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// This property is a polyfill for an Array, to to fetch the value YY of an element XX in the format --XX=YY, if it exists
|
||||||
|
Object.defineProperty(Array.prototype, 'getParameterValue',
|
||||||
|
{
|
||||||
|
value: function (i)
|
||||||
|
{
|
||||||
|
var ret = this[i].substring(this[i].indexOf('=') + 1);
|
||||||
|
if (ret.startsWith('"')) { ret = ret.substring(1, ret.length - 1); }
|
||||||
|
return (ret);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (x)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// This function will export the JavaScript modules that have been embedded/compiled into the agent
|
||||||
|
//
|
||||||
|
function expand2(options)
|
||||||
|
{
|
||||||
|
// Check the command line parameters to set some of the options
|
||||||
|
var cmdline_expandedPath = process.argv.getParameter('expandedPath', 'modules_expanded');
|
||||||
|
var cmdline_filePath = process.argv.getParameter('filePath', null);
|
||||||
|
|
||||||
|
options.expandedPath = cmdline_expandedPath;
|
||||||
|
if (cmdline_filePath != null) { options.filePath = cmdline_filePath; }
|
||||||
|
|
||||||
|
if (cmdline_filePath != null)
|
||||||
|
{
|
||||||
|
// If a filepath was specified, then rerun this thru expand(), so that it can read from the specified file, instead of exporting from what was compiled in the agent
|
||||||
|
options.embedded = false;
|
||||||
|
console.log('Exporting modules from ' + cmdline_filePath + ', into ' + options.expandedPath + ':\n');
|
||||||
|
|
||||||
|
return (expand(options));
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('Exporting modules from Agent, into ' + options.expandedPath + ':\n');
|
||||||
|
|
||||||
|
var modulenames = getModules();
|
||||||
|
var i;
|
||||||
|
|
||||||
|
options.modules = [];
|
||||||
|
|
||||||
|
for (i = 0; i < modulenames.length; ++i)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
options.modules.push({ name: modulenames[i], data: getJSModule(modulenames[i]) });
|
||||||
|
}
|
||||||
|
catch(x)
|
||||||
|
{
|
||||||
|
console.log(x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
writeExpandedModules(options);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// This function will read the specified C file, and decompress(inflate)/extract all the embedded JavaScript modules,
|
// This function will read the specified C file, and decompress(inflate)/extract all the embedded JavaScript modules,
|
||||||
// and save them to the specified path
|
// and save them to the specified path
|
||||||
@@ -30,6 +168,8 @@ limitations under the License.
|
|||||||
function expand(options)
|
function expand(options)
|
||||||
{
|
{
|
||||||
if (options == null) { options = {}; }
|
if (options == null) { options = {}; }
|
||||||
|
if (options.embedded === true) { return(expand2(options)); }
|
||||||
|
|
||||||
if (options.filePath == null) { options.filePath = 'C:/GITHub//MeshAgent/microscript/ILibDuktape_Polyfills.c'; }
|
if (options.filePath == null) { options.filePath = 'C:/GITHub//MeshAgent/microscript/ILibDuktape_Polyfills.c'; }
|
||||||
|
|
||||||
var file = require('fs').readFileSync(options.filePath);
|
var file = require('fs').readFileSync(options.filePath);
|
||||||
|
|||||||
Reference in New Issue
Block a user