Skip to content

Commit 3cd9cbf

Browse files
committed
feat: add addRemoteFunctionConstantsScript api
1 parent dcf234d commit 3cd9cbf

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

src/LiveDevelopment/BrowserScripts/RemoteFunctions.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@ function RemoteFunctions(config = {}) {
103103
*/
104104
var _editHandler;
105105

106+
// the below code comment is replaced by added scripts for extensibility
107+
// REPLACE_WITH_ADDED_REMOTE_CONSTANT_SCRIPTS
108+
106109
/**
107110
* this function is responsible to auto scroll the live preview when
108111
* dragging an element to the viewport edges

src/LiveDevelopment/MultiBrowserImpl/protocol/LiveDevProtocol.js

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -336,18 +336,40 @@ define(function (require, exports, module) {
336336
}
337337

338338
let remoteFunctionsScripts = new Map();
339+
let remoteFunctionsConstantsScripts = new Map();
339340
let effectiveRemoteFunctionsScripts = RemoteFunctions;
341+
342+
function _computeRemoteScript() {
343+
const remoteScriptText = Array.from(remoteFunctionsScripts.values()).join("\n");
344+
const remoteConstantScriptText = Array.from(remoteFunctionsConstantsScripts.values()).join("\n");
345+
effectiveRemoteFunctionsScripts = RemoteFunctions
346+
.replace("// REPLACE_WITH_ADDED_REMOTE_CONSTANT_SCRIPTS", remoteConstantScriptText)
347+
.replace("// REPLACE_WITH_ADDED_REMOTE_SCRIPTS", remoteScriptText);
348+
}
349+
340350
function addRemoteFunctionScript(scriptName, scriptText) {
341-
if(remoteFunctionsScripts.has(scriptName)){
351+
if(remoteFunctionsConstantsScripts.has(scriptName) || remoteFunctionsScripts.has(scriptName)){
342352
console.error(`Remote function script ${scriptName} already exists. Script wont be added.`);
343353
return false;
344354
}
345355
remoteFunctionsScripts.set(scriptName, scriptText);
346356
if(!RemoteFunctions.includes("// REPLACE_WITH_ADDED_REMOTE_SCRIPTS")){
347357
throw new Error("RemoteFunctions script is missing the placeholder // REPLACE_WITH_ADDED_REMOTE_SCRIPTS");
348358
}
349-
effectiveRemoteFunctionsScripts = RemoteFunctions.replace("// REPLACE_WITH_ADDED_REMOTE_SCRIPTS",
350-
Array.from(remoteFunctionsScripts.values()).join("\n"));
359+
_computeRemoteScript();
360+
return true;
361+
}
362+
363+
function addRemoteFunctionConstantsScript(scriptName, scriptText) {
364+
if(remoteFunctionsConstantsScripts.has(scriptName) || remoteFunctionsScripts.has(scriptName)){
365+
console.error(`Remote function script ${scriptName} already exists. Script wont be added.`);
366+
return false;
367+
}
368+
remoteFunctionsConstantsScripts.set(scriptName, scriptText);
369+
if(!RemoteFunctions.includes("// REPLACE_WITH_ADDED_REMOTE_CONSTANT_SCRIPTS")){
370+
throw new Error("RemoteFunctions script missing placeholder // REPLACE_WITH_ADDED_REMOTE_CONSTANT_SCRIPTS");
371+
}
372+
_computeRemoteScript();
351373
return true;
352374
}
353375

@@ -502,6 +524,7 @@ define(function (require, exports, module) {
502524
exports.getConnectionIds = getConnectionIds;
503525
exports.closeAllConnections = closeAllConnections;
504526
exports.addRemoteFunctionScript = addRemoteFunctionScript;
527+
exports.addRemoteFunctionConstantsScript = addRemoteFunctionConstantsScript;
505528
exports.setLivePreviewMessageHandler = setLivePreviewMessageHandler;
506529
exports.LIVE_DEV_REMOTE_SCRIPTS_FILE_NAME = LIVE_DEV_REMOTE_SCRIPTS_FILE_NAME;
507530
exports.LIVE_DEV_REMOTE_WORKER_SCRIPTS_FILE_NAME = LIVE_DEV_REMOTE_WORKER_SCRIPTS_FILE_NAME;

0 commit comments

Comments
 (0)