pass ntive modules fix

This commit is contained in:
Jan Prochazka
2021-12-26 20:54:51 +01:00
parent 0ff59e626e
commit 7126eec4f0
9 changed files with 50 additions and 18 deletions

View File

@@ -225,6 +225,7 @@ function createWindow() {
);
global.API_PACKAGE = apiPackage;
global.NATIVE_MODULES = path.join(__dirname, 'nativeModules');
// console.log('global.API_PACKAGE', global.API_PACKAGE);
const api = require(apiPackage);

View File

@@ -9,6 +9,8 @@ const socket = require('../utility/socket');
const { encryptConnection } = require('../utility/crypting');
const { handleProcessCommunication } = require('../utility/processComm');
const processArgs = require('../utility/processArgs');
function getNamedArgs() {
const res = {};
for (let i = 0; i < process.argv.length; i++) {
@@ -140,7 +142,8 @@ module.exports = {
'--is-forked-api',
'--start-process',
'connectProcess',
...process.argv.slice(3),
...processArgs.getPassArgs(),
// ...process.argv.slice(3),
]);
subprocess.on('message', resp => {
if (handleProcessCommunication(resp, subprocess)) return;

View File

@@ -25,6 +25,7 @@ const requireEngineDriver = require('../utility/requireEngineDriver');
const generateDeploySql = require('../shell/generateDeploySql');
const { createTwoFilesPatch } = require('diff');
const diff2htmlPage = require('../utility/diff2htmlPage');
const processArgs = require('../utility/processArgs');
module.exports = {
/** @type {import('dbgate-types').OpenedDatabaseConnection[]} */
@@ -78,7 +79,8 @@ module.exports = {
'--is-forked-api',
'--start-process',
'databaseConnectionProcess',
...process.argv.slice(3),
...processArgs.getPassArgs(),
// ...process.argv.slice(3),
]);
const lastClosed = this.closed[`${conid}/${database}`];
const newOpened = {

View File

@@ -8,6 +8,7 @@ const { fork } = require('child_process');
const { rundir, uploadsdir, pluginsdir, getPluginBackendPath, packagedPluginList } = require('../utility/directories');
const { extractShellApiPlugins, extractShellApiFunctionName } = require('dbgate-tools');
const { handleProcessCommunication } = require('../utility/processComm');
const processArgs = require('../utility/processArgs');
function extractPlugins(script) {
const requireRegex = /\s*\/\/\s*@require\s+([^\s]+)\s*\n/g;
@@ -98,15 +99,22 @@ module.exports = {
const pluginNames = _.union(fs.readdirSync(pluginsdir()), packagedPluginList);
console.log(`RUNNING SCRIPT ${scriptFile}`);
// const subprocess = fork(scriptFile, ['--checkParent', '--max-old-space-size=8192'], {
const subprocess = fork(scriptFile, ['--checkParent', ...process.argv.slice(3)], {
cwd: directory,
stdio: ['ignore', 'pipe', 'pipe', 'ipc'],
env: {
...process.env,
DBGATE_API: global['API_PACKAGE'] || global['dbgateApiModulePath'] || process.argv[1],
..._.fromPairs(pluginNames.map(name => [`PLUGIN_${_.camelCase(name)}`, getPluginBackendPath(name)])),
},
});
const subprocess = fork(
scriptFile,
[
'--checkParent', // ...process.argv.slice(3)
...processArgs.getPassArgs(),
],
{
cwd: directory,
stdio: ['ignore', 'pipe', 'pipe', 'ipc'],
env: {
...process.env,
DBGATE_API: global['API_PACKAGE'] || global['dbgateApiModulePath'] || process.argv[1],
..._.fromPairs(pluginNames.map(name => [`PLUGIN_${_.camelCase(name)}`, getPluginBackendPath(name)])),
},
}
);
const pipeDispatcher = severity => data =>
this.dispatchMessage(runid, { severity, message: data.toString().trim() });

View File

@@ -6,6 +6,7 @@ const AsyncLock = require('async-lock');
const { handleProcessCommunication } = require('../utility/processComm');
const lock = new AsyncLock();
const config = require('./config');
const processArgs = require('../utility/processArgs');
module.exports = {
opened: [],
@@ -41,7 +42,8 @@ module.exports = {
'--is-forked-api',
'--start-process',
'serverConnectionProcess',
...process.argv.slice(3),
...processArgs.getPassArgs(),
// ...process.argv.slice(3),
]);
const newOpened = {
conid,

View File

@@ -5,6 +5,7 @@ const socket = require('../utility/socket');
const { fork } = require('child_process');
const jsldata = require('./jsldata');
const { handleProcessCommunication } = require('../utility/processComm');
const processArgs = require('../utility/processArgs');
module.exports = {
/** @type {import('dbgate-types').OpenedSession[]} */
@@ -69,7 +70,8 @@ module.exports = {
'--is-forked-api',
'--start-process',
'sessionProcess',
...process.argv.slice(3),
...processArgs.getPassArgs(),
// ...process.argv.slice(3),
]);
const newOpened = {
conid,

View File

@@ -1,5 +1,13 @@
const argIndex = process.argv.indexOf('--native-modules');
const redirectFile = argIndex > 0 ? process.argv[argIndex + 1] : null;
// @ts-ignore
module.exports = redirectFile ? __non_webpack_require__(redirectFile) : require('./nativeModulesContent');
function requireDynamic(file) {
try {
// @ts-ignore
return __non_webpack_require__(redirectFile);
} catch (err) {
return require(redirectFile);
}
}
module.exports = redirectFile ? requireDynamic(redirectFile) : require('./nativeModulesContent');

View File

@@ -1,6 +1,7 @@
const { fork } = require('child_process');
const uuidv1 = require('uuid/v1');
const { handleProcessCommunication } = require('./processComm');
const processArgs = require('../utility/processArgs');
class DatastoreProxy {
constructor(file) {
@@ -33,7 +34,8 @@ class DatastoreProxy {
'--is-forked-api',
'--start-process',
'jslDatastoreProcess',
...process.argv.slice(3),
...processArgs.getPassArgs(),
// ...process.argv.slice(3),
]);
this.subprocess.on('message', message => {

View File

@@ -7,13 +7,17 @@ function getNamedArg(name) {
}
const checkParent = process.argv.includes('--checkParent');
const nativeModules = getNamedArg('--native-modules');
const startProcess = getNamedArg('--start-process');
const isForkedApi = process.argv.includes('--is-forked-api');
function getPassArgs() {
if (global['NATIVE_MODULES']) return ['--native-modules', global['NATIVE_MODULES']];
return [];
}
module.exports = {
checkParent,
nativeModules,
startProcess,
isForkedApi,
getPassArgs,
};