New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

debug-adapter-for-office-addins

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

debug-adapter-for-office-addins - npm Package Compare versions

Comparing version 1.0.9 to 1.0.10

out/src/defaults.js

406

out/src/adapterService/edgeAdapterService.js

@@ -8,4 +8,2 @@ "use strict";

var edgeAdapter = require("../../lib/Addon.node");
// const binding_path = binary.find(path.resolve(path.join(__dirname,'../../../package.json')));
// var edgeAdapter = require(binding_path);
var http = require("http");

@@ -15,2 +13,3 @@ var fs = require("fs");

var ws_1 = require("ws");
var defaults_1 = require("./../defaults");
var EdgeAdapter;

@@ -30,16 +29,22 @@ (function (EdgeAdapter) {

var _this = this;
this._serverPort = serverPort;
this._chromeToolsPort = chromeToolsPort;
edgeAdapter.initialize(__dirname, function (id, msg) { return _this.onEdgeMessage(id, msg); }, function (msg) { return _this.onLogMessage(msg); });
edgeAdapter.setSecurityACLs(__dirname + "\\..\\..\\lib\\");
if (chromeToolsPort > 0) {
edgeAdapter.serveChromeDevTools(chromeToolsPort);
try {
this._serverPort = serverPort;
this._chromeToolsPort = chromeToolsPort;
edgeAdapter.initialize(__dirname, function (id, msg) { return _this.onEdgeMessage(id, msg); }, function (msg) { return _this.onLogMessage(msg); });
edgeAdapter.setSecurityACLs(__dirname + "\\..\\..\\lib\\");
if (chromeToolsPort > 0) {
edgeAdapter.serveChromeDevTools(chromeToolsPort);
}
if (url) {
edgeAdapter.openEdge(url);
}
this._httpServer = http.createServer(function (req, res) { return _this.onServerRequest(req, res); });
this._webSocketServer = new ws_1.Server({ server: this._httpServer });
this._webSocketServer.on('connection', function (client, message) { return _this.onWSSConnection(client, message); });
this._httpServer.listen(serverPort, "0.0.0.0");
defaults_1.usageDataObject.sendUsageDataSuccessEvent("run");
}
if (url) {
edgeAdapter.openEdge(url);
catch (err) {
defaults_1.usageDataObject.sendUsageDataException("run", err);
}
this._httpServer = http.createServer(function (req, res) { return _this.onServerRequest(req, res); });
this._webSocketServer = new ws_1.Server({ server: this._httpServer });
this._webSocketServer.on('connection', function (client, message) { return _this.onWSSConnection(client, message); });
this._httpServer.listen(serverPort, "0.0.0.0");
};

@@ -106,19 +111,24 @@ Service.prototype.onServerRequest = function (request, response) {

var _this = this;
var initialChromeTabs = this.getEdgeJson(host);
var retries = 200; // Retry for 30 seconds.
if (edgeAdapter.openEdge(param)) {
var getNewTab_1 = function () {
var actualChromeTabs = _this.getEdgeJson(host);
var newTabInfo = _this.getNewTabInfo(initialChromeTabs, actualChromeTabs, param);
if (!newTabInfo && retries > 0) {
retries--;
return setTimeout(getNewTab_1, 150);
}
response.write(JSON.stringify(newTabInfo));
try {
var initialChromeTabs_1 = this.getEdgeJson(host);
var retries_1 = 200; // Retry for 30 seconds.
if (edgeAdapter.openEdge(param)) {
var getNewTab_1 = function () {
var actualChromeTabs = _this.getEdgeJson(host);
var newTabInfo = _this.getNewTabInfo(initialChromeTabs_1, actualChromeTabs, param);
if (!newTabInfo && retries_1 > 0) {
retries_1--;
return setTimeout(getNewTab_1, 150);
}
response.write(JSON.stringify(newTabInfo));
response.end();
};
return getNewTab_1();
}
else {
response.end();
};
return getNewTab_1();
}
}
else {
response.end();
catch (err) {
defaults_1.usageDataObject.sendUsageDataException("createNewTab", err);
}

@@ -142,89 +152,96 @@ };

var _this = this;
// Normalize request url
if (!message) {
return;
}
var url = message.url.trim().toUpperCase();
if (url.lastIndexOf('/') == url.length - 1) {
url = url.substr(0, url.length - 1);
}
var guid = url;
var index = guid.lastIndexOf('/');
if (index != -1) {
guid = guid.substr(index + 1);
}
var succeeded = false;
var instanceId = null;
var networkInstanceId = null;
if (this._guidToIdMap.has(guid)) {
var id = this._guidToIdMap.get(guid);
instanceId = this._idToEdgeMap.get(id);
if (!instanceId) {
// New connection
instanceId = edgeAdapter.connectTo(id);
if (instanceId) {
this.injectAdapterFiles(instanceId);
this._idToEdgeMap.set(id, instanceId);
this._edgeToWSMap.set(instanceId, [ws]);
succeeded = true;
}
try {
// Normalize request url
if (!message) {
return;
}
else {
// Already connected
var sockets = this._edgeToWSMap.get(instanceId);
sockets.push(ws);
this._edgeToWSMap.set(instanceId, sockets);
succeeded = true;
var url = message.url.trim().toUpperCase();
if (url.lastIndexOf('/') == url.length - 1) {
url = url.substr(0, url.length - 1);
}
networkInstanceId = this._idToNetWorkProxyMap.get(id);
if (!networkInstanceId) {
networkInstanceId = edgeAdapter.createNetworkProxyFor(id);
if (networkInstanceId) {
this._idToNetWorkProxyMap.set(id, networkInstanceId);
this._idToNetWorkProxyMap.set(networkInstanceId, id);
}
var guid = url;
var index = guid.lastIndexOf('/');
if (index != -1) {
guid = guid.substr(index + 1);
}
}
if (succeeded && networkInstanceId) {
// Forward messages to the proxy
ws.on('message', function (msg) {
if (typeof msg === "string" && msg.search("Debugger.setBreakpointByUrl") !== -1) {
var obj = JSON.parse(msg);
var urlCheck = obj["params"]["url"];
var urlRegex = obj["params"]["urlRegex"];
if (!urlCheck && urlRegex) {
obj["params"]["url"] = _this.convertUrlRegex(obj["params"]["urlRegex"]);
delete obj["params"]["urlRegex"];
msg = JSON.stringify(obj);
var succeeded = false;
var instanceId_1 = null;
var networkInstanceId_1 = null;
if (this._guidToIdMap.has(guid)) {
var id = this._guidToIdMap.get(guid);
instanceId_1 = this._idToEdgeMap.get(id);
if (!instanceId_1) {
// New connection
instanceId_1 = edgeAdapter.connectTo(id);
if (instanceId_1) {
this.injectAdapterFiles(instanceId_1);
this._idToEdgeMap.set(id, instanceId_1);
this._edgeToWSMap.set(instanceId_1, [ws]);
succeeded = true;
}
}
if (_this._diagLogging) {
console.log("Client:", instanceId, msg);
}
if (_this.isMessageForNetworkProxy(msg)) {
edgeAdapter.forwardTo(networkInstanceId.toString(), msg.toString());
}
else {
edgeAdapter.forwardTo(instanceId.toString(), msg.toString());
// Already connected
var sockets = this._edgeToWSMap.get(instanceId_1);
sockets.push(ws);
this._edgeToWSMap.set(instanceId_1, sockets);
succeeded = true;
}
});
var removeSocket_1 = function (instanceId) {
var sockets = _this._edgeToWSMap.get(instanceId);
var index = sockets.indexOf(ws);
if (index > -1) {
sockets.splice(index, 1);
networkInstanceId_1 = this._idToNetWorkProxyMap.get(id);
if (!networkInstanceId_1) {
networkInstanceId_1 = edgeAdapter.createNetworkProxyFor(id);
if (networkInstanceId_1) {
this._idToNetWorkProxyMap.set(id, networkInstanceId_1);
this._idToNetWorkProxyMap.set(networkInstanceId_1, id);
}
}
_this._edgeToWSMap.set(instanceId, sockets);
};
// Remove socket on close or error
ws.on('close', function () {
removeSocket_1(instanceId);
});
ws.on('error', function () {
removeSocket_1(instanceId);
});
}
if (succeeded && networkInstanceId_1) {
// Forward messages to the proxy
ws.on('message', function (msg) {
if (typeof msg === "string" && msg.search("Debugger.setBreakpointByUrl") !== -1) {
var obj = JSON.parse(msg);
var urlCheck = obj["params"]["url"];
var urlRegex = obj["params"]["urlRegex"];
if (!urlCheck && urlRegex) {
obj["params"]["url"] = _this.convertUrlRegex(obj["params"]["urlRegex"]);
delete obj["params"]["urlRegex"];
msg = JSON.stringify(obj);
}
}
if (_this._diagLogging) {
console.log("Client:", instanceId_1, msg);
}
if (_this.isMessageForNetworkProxy(msg)) {
edgeAdapter.forwardTo(networkInstanceId_1.toString(), msg.toString());
}
else {
edgeAdapter.forwardTo(instanceId_1.toString(), msg.toString());
}
});
var removeSocket_1 = function (instanceId) {
var sockets = _this._edgeToWSMap.get(instanceId);
var index = sockets.indexOf(ws);
if (index > -1) {
sockets.splice(index, 1);
}
_this._edgeToWSMap.set(instanceId, sockets);
};
// Remove socket on close or error
ws.on('close', function () {
removeSocket_1(instanceId_1);
});
ws.on('error', function () {
removeSocket_1(instanceId_1);
});
defaults_1.usageDataObject.sendUsageDataSuccessEvent("onWSSConnection");
}
else {
// No matching Edge instance
defaults_1.usageDataObject.sendUsageDataEvent({ "onWSSConnection": "No matching Edge Instances found" });
ws.close();
}
}
else {
// No matching Edge instance
ws.close();
catch (err) {
defaults_1.usageDataObject.sendUsageDataException("onWSSConnection", err);
}

@@ -290,42 +307,52 @@ };

];
for (var i = 0; i < files.length; i++) {
var script = fs.readFileSync(__dirname + '/../chromeProtocol/' + files[i].filename, 'utf8');
this.log("Injecting '" + files[i].engine + ":" + files[i].filename + "'");
edgeAdapter.injectScriptTo(instanceId, files[i].engine, files[i].filename, script);
try {
for (var i = 0; i < files.length; i++) {
var script = fs.readFileSync(__dirname + '/../chromeProtocol/' + files[i].filename, 'utf8');
this.log("Injecting '" + files[i].engine + ":" + files[i].filename + "'");
edgeAdapter.injectScriptTo(instanceId, files[i].engine, files[i].filename, script);
}
}
catch (err) {
defaults_1.usageDataObject.sendUsageDataException("injectAdapterFiles", err);
}
};
Service.prototype.getEdgeJson = function (host) {
var chromeInstances = [];
var map = new Map();
var instances = edgeAdapter.getEdgeInstances();
if (this._diagLogging) {
console.log("Edge Instances:", instances);
}
for (var i = 0; i < instances.length; i++) {
// Get or generate a new guid
var guid = null;
if (!this._guidToIdMap.has(instances[i].id)) {
guid = this.createGuid();
try {
var chromeInstances = [];
var map = new Map();
var instances = edgeAdapter.getEdgeInstances();
if (this._diagLogging) {
console.log("Edge Instances:", instances);
}
else {
guid = this._guidToIdMap.get(instances[i].id);
for (var i = 0; i < instances.length; i++) {
// Get or generate a new guid
var guid = null;
if (!this._guidToIdMap.has(instances[i].id)) {
guid = this.createGuid();
}
else {
guid = this._guidToIdMap.get(instances[i].id);
}
map.set(guid, instances[i].id);
map.set(instances[i].id, guid);
var websocket = "ws://" + host + "/devtools/page/" + guid;
var devtools = "chrome-devtools://devtools/bundled/inspector.html?ws=" + websocket.substr(5);
// Generate the json description of this instance
chromeInstances.push({
description: instances[i].processName,
devtoolsFrontendUrl: devtools,
id: guid,
title: instances[i].title,
type: "page",
url: instances[i].url,
webSocketDebuggerUrl: websocket
});
}
map.set(guid, instances[i].id);
map.set(instances[i].id, guid);
var websocket = "ws://" + host + "/devtools/page/" + guid;
var devtools = "chrome-devtools://devtools/bundled/inspector.html?ws=" + websocket.substr(5);
// Generate the json description of this instance
chromeInstances.push({
description: instances[i].processName,
devtoolsFrontendUrl: devtools,
id: guid,
title: instances[i].title,
type: "page",
url: instances[i].url,
webSocketDebuggerUrl: websocket
});
// Reset the map to the new instances
this._guidToIdMap = map;
return chromeInstances;
}
// Reset the map to the new instances
this._guidToIdMap = map;
return chromeInstances;
catch (err) {
defaults_1.usageDataObject.sendUsageDataException("getEdgeJson", err);
}
};

@@ -344,52 +371,73 @@ Service.prototype.getEdgeVersionJson = function () {

Service.prototype.getChromeProtocol = function () {
var script = fs.readFileSync(__dirname + '/../chromeProtocol/protocol.json', 'utf8');
return script;
try {
var script = fs.readFileSync(__dirname + '/../chromeProtocol/protocol.json', 'utf8');
return script;
}
catch (err) {
defaults_1.usageDataObject.sendUsageDataException("getChromeProtocol", err);
}
};
Service.prototype.createGuid = function () {
var g = crypto.createHash('md5').update(Math.random().toString()).digest('hex').toUpperCase();
return g.substring(0, 8) + "-" + g.substring(9, 13) + "-" + g.substring(13, 17) + "-" + g.substring(17, 21) + "-" + g.substring(21, 31);
try {
var g = crypto.createHash('md5').update(Math.random().toString()).digest('hex').toUpperCase();
return g.substring(0, 8) + "-" + g.substring(9, 13) + "-" + g.substring(13, 17) + "-" + g.substring(17, 21) + "-" + g.substring(21, 31);
}
catch (err) {
defaults_1.usageDataObject.sendUsageDataException("createGuid", err);
}
};
Service.prototype.extractParametersFromUrl = function (url) {
var parameters;
var closeUrl = '/json/close';
if (url.indexOf('/json/new') != -1) {
var urlSegements = url.split('?');
if (urlSegements.length > 1) {
url = urlSegements[0];
parameters = urlSegements[1];
try {
var parameters = void 0;
var closeUrl = '/json/close';
if (url.indexOf('/json/new') != -1) {
var urlSegements = url.split('?');
if (urlSegements.length > 1) {
url = urlSegements[0];
parameters = urlSegements[1];
}
}
else if (url.indexOf(closeUrl) != -1) {
parameters = url.replace(closeUrl + "/", '');
url = url.slice(0, closeUrl.length);
}
return { url: url, paramChain: parameters };
}
else if (url.indexOf(closeUrl) != -1) {
parameters = url.replace(closeUrl + "/", '');
url = url.slice(0, closeUrl.length);
catch (err) {
defaults_1.usageDataObject.sendUsageDataException("extractParametersFromUrl", err);
}
return { url: url, paramChain: parameters };
};
Service.prototype.closeEdgeInstance = function (guid) {
var edgeResult = false;
var networkProxyResult = false;
var id = this._guidToIdMap.get(guid.toLocaleUpperCase());
if (id) {
edgeResult = edgeAdapter.closeEdge(id);
var networkInstanceId = this._idToNetWorkProxyMap.get(id);
if (networkInstanceId) {
networkProxyResult = edgeAdapter.closeNetworkProxyInstance(networkInstanceId);
}
// tab is closed, clean all the mappings and close connections
var instanceId = this._idToEdgeMap.get(id);
var sockets = this._edgeToWSMap.get(instanceId);
if (sockets) {
for (var i = 0; i < sockets.length; i++) {
sockets[i].removeAllListeners();
sockets[i].close();
try {
var edgeResult = false;
var networkProxyResult = false;
var id = this._guidToIdMap.get(guid.toLocaleUpperCase());
if (id) {
edgeResult = edgeAdapter.closeEdge(id);
var networkInstanceId = this._idToNetWorkProxyMap.get(id);
if (networkInstanceId) {
networkProxyResult = edgeAdapter.closeNetworkProxyInstance(networkInstanceId);
}
// tab is closed, clean all the mappings and close connections
var instanceId = this._idToEdgeMap.get(id);
var sockets = this._edgeToWSMap.get(instanceId);
if (sockets) {
for (var i = 0; i < sockets.length; i++) {
sockets[i].removeAllListeners();
sockets[i].close();
}
}
this._edgeToWSMap.delete(instanceId);
this._guidToIdMap.delete(guid.toLocaleUpperCase());
this._guidToIdMap.delete(id);
this._idToNetWorkProxyMap.delete(id);
this._idToNetWorkProxyMap.delete(networkInstanceId);
this._idToEdgeMap.delete(id);
}
this._edgeToWSMap.delete(instanceId);
this._guidToIdMap.delete(guid.toLocaleUpperCase());
this._guidToIdMap.delete(id);
this._idToNetWorkProxyMap.delete(id);
this._idToNetWorkProxyMap.delete(networkInstanceId);
this._idToEdgeMap.delete(id);
edgeResult && networkProxyResult ? defaults_1.usageDataObject.sendUsageDataSuccessEvent("closeEdgeInstance") : defaults_1.usageDataObject.sendUsageDataEvent({ "closeEdgeInstance": "failed" });
return edgeResult && networkProxyResult;
}
return edgeResult && networkProxyResult;
catch (err) {
defaults_1.usageDataObject.sendUsageDataException("closeEdgeInstance", err);
}
};

@@ -396,0 +444,0 @@ return Service;

{
"name": "debug-adapter-for-office-addins",
"version": "1.0.9",
"version": "1.0.10",
"description": "Debug Adapter for Office Add-ins",

@@ -25,2 +25,3 @@ "main": "out/src/edgeAdapter.js",

"bufferutil": "4.0.1",
"office-addin-usage-data": "^1.1.3",
"regedit": "^3.0.3",

@@ -32,2 +33,3 @@ "utf-8-validate": "^5.0.2",

"devDependencies": {
"@types/mocha": "^7.0.2",
"@types/node": "^8.0.32",

@@ -42,2 +44,3 @@ "@types/ws": "^7.2.2",

"gulp-util": "^3.0.8",
"mocha": "^7.1.1",
"node-addon-api": "^2.0.0",

@@ -48,2 +51,4 @@ "node-gyp": "^6.1.0",

"rimraf": "^3.0.2",
"sync-request": "6.1.0",
"ts-node": "^8.9.0",
"tslint": "^5.7.0",

@@ -74,2 +79,3 @@ "typescript": "2.5.3",

"lint": "tslint /src/**/*.ts",
"test": "mocha -r ts-node/register test/*.ts",
"watch:ts": "tsc --watch"

@@ -76,0 +82,0 @@ },

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc