Initial commit

This commit is contained in:
2023-08-29 19:55:48 +02:00
commit 7c2eec4446
473 changed files with 40947 additions and 0 deletions

View File

@@ -0,0 +1,267 @@
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
to[j] = from[i];
return to;
};
exports.__esModule = true;
exports.IntegrationsManager = void 0;
var path = require("path");
var Logger_1 = require("../Logger");
var IntegrationApi_1 = require("./IntegrationApi");
var EditorAPI_1 = require("./EditorAPI");
var fs = require("fs-extra");
var ensureDir = fs.ensureDir, pathExists = fs.pathExists, readdir = fs.readdir, readJSON = fs.readJSON, readJson = fs.readJson;
var IntegrationsManager = /** @class */ (function () {
function IntegrationsManager() {
this.integrations = {};
this.openEditors = {};
}
IntegrationsManager.prototype.load = function (callback) {
var _this = this;
Logger_1.Log('info', 'Loading integrations');
ensureDir(path.join(Undecked.dataPath, 'custom_integrations'), function (err) {
if (err)
throw err;
_this.loadIntegrations(callback);
});
};
IntegrationsManager.prototype.loadIntegrations = function (callback) {
var instance = this;
var integrations = { buildin: [], custom: [] };
readdir(path.join(__filename, '..', 'buildin'), function (err, buildinfiles) {
if (err)
throw err;
integrations.buildin = buildinfiles;
readdir(path.join(Undecked.dataPath, 'custom_integrations'), function (err, customfiles) {
if (err)
throw err;
integrations.custom = customfiles;
var loaded = { buildin: 0, custom: 0 };
function loadIntegrations(type, cb, i) {
if (i === void 0) { i = 0; }
if (integrations[type][i]) {
var integrationID = integrations[type][i];
var integrationAddress = type == 'buildin'
? path.join(__filename, '..', 'buildin', integrationID, 'integration')
: path.join(Undecked.dataPath, 'custom_integrations', integrationID, 'integration');
var waitInterval;
try {
instance.integrations[integrationID] = {
type: type,
api: null,
connectionslist: [],
connectionsmap: {},
integration: require(integrationAddress)
};
var waitCounter = 0;
waitInterval = setInterval(function () {
if (instance.integrations[integrationID].integration != undefined &&
instance.integrations[integrationID].integration.main != undefined) {
clearInterval(waitInterval);
loaded[type]++;
loadIntegrations(type, function () {
Logger_1.Log('info', "Loaded " + type + " integration '" + integrationID + "'");
cb();
}, i + 1);
}
else {
waitCounter++;
if (waitCounter > 200) {
clearInterval(waitInterval);
delete instance.integrations[integrationID];
Logger_1.Log('error', "Unable to load " + type + " integration '" + integrationID + "': Loading timeout");
loadIntegrations(type, cb, i + 1);
}
}
}, 10);
}
catch (error) {
clearInterval(waitInterval);
Logger_1.Log('error', "Unable to load " + type + " integration '" + integrationID + "': " + error.message);
loadIntegrations(type, cb, i + 1);
}
}
else
cb();
}
loadIntegrations('buildin', function () {
loadIntegrations('custom', function () {
for (var integrationID in instance.integrations) {
var integration = instance.integrations[integrationID];
// for (let i = 0; i < integration.integration.actions.length; i++) {
// if (integration.integration.actions[i] != undefined)
// integration.actionslist.push(integration.integration.actions[i].id);
// else
// Log(
// `warn`,
// `Invalid action of ${integrationID} ${JSON.stringify(
// integration.integration.actions[i],
// null,
// 4
// )}`
// );
// }
if (integration.integration.connections != undefined)
for (var i = 0; i < integration.integration.connections.length; i++) {
integration.connectionslist.push(integration.integration.connections[i].type);
integration.connectionsmap[integration.integration.connections[i].type] =
integration.integration.connections[i];
}
integration.api = new IntegrationApi_1.IntegrationAPI({ integrationID: integrationID, integration: integration });
try {
integration.integration.main(integration.api);
}
catch (error) {
Logger_1.Log('error', "Error in '" + integrationID + "'", error.message, error.stack);
}
}
Logger_1.Log('info', "Loaded " + loaded.buildin + " buildin integrations and " + loaded.custom + " integrations");
callback();
});
});
});
});
};
IntegrationsManager.prototype.exists = function (integrationID) {
return this.integrations[integrationID] != undefined;
};
IntegrationsManager.prototype.get = function (integrationID) {
if (this.exists(integrationID))
return this.integrations[integrationID];
return null;
};
IntegrationsManager.prototype.getActions = function () {
var actions = [];
for (var integrationID in this.integrations) {
var integration = this.integrations[integrationID];
actions = actions.concat(integration.api.getActionList().map(function (action) {
return {
integrationID: integrationID,
integrationName: integration.integration.name,
actionID: action.id,
actionName: action.name
};
}));
}
return actions;
};
IntegrationsManager.prototype.getConnections = function () {
var connections = [];
for (var integrationID in this.integrations) {
var integration = this.integrations[integrationID];
if (integration.integration.connections != undefined)
for (var i = 0; i < integration.integration.connections.length; i++) {
var con = integration.integration.connections[i];
connections.push({
integrationID: integrationID,
integrationName: integration.integration.name,
connectionType: con.type,
connectionName: con.name
});
}
}
connections.sort(function (a, b) {
if (a.integrationName == b.integrationName)
return 0;
return a.integrationName > b.integrationName ? 1 : -1;
});
return connections;
};
IntegrationsManager.prototype.startEditor = function (settings) {
var _this = this;
if (this.exists(settings.integrationID)) {
var integrationWrapper = this.get(settings.integrationID);
var integration = integrationWrapper.integration;
var integrationAPI = integrationWrapper.api;
if (integrationAPI.hasAction(settings.actionID)) {
var action = integrationAPI.getAction(settings.actionID);
if (Undecked.Pages.exists(settings.pageID)) {
var page = Undecked.Pages.get(settings.pageID);
if (page.hasKey(settings.keyX, settings.keyY)) {
var key = page.getKey(settings.keyX, settings.keyY);
var actionInstance = page.getActionInstance(key, settings.actionInstanceID);
if (actionInstance) {
var editorID = Undecked.generateRandom(8, function (generatedValid) {
return !_this.exists(generatedValid);
});
var editorAPI = new EditorAPI_1.EditorAPI({
actionInstance: actionInstance,
integrationID: settings.integrationID,
pageID: settings.pageID,
editorID: editorID,
x: settings.keyX,
y: settings.keyY,
key: key
});
this.openEditors[editorID] = {
editor: editorAPI,
editorID: editorID,
ready: function () {
editorAPI.isOpen = true;
action._openEditor(editorAPI, actionInstance.properties);
},
destroy: function () {
if (_this.openEditors[editorID] != undefined) {
_this.openEditors[editorID].editor.close();
delete _this.openEditors[editorID];
}
}
};
return { actionEditorID: editorID, properties: {} };
}
else
return { error: "Key does not have this actioninstance" };
}
else
return { error: "Key does not exist" };
}
else
return { error: "Page '" + settings.pageID + "' does not exist" };
}
else
return { error: "Action '" + settings.actionID + "' does not exist" };
}
else
return { error: "Integration '" + settings.integrationID + "' does not exist" };
};
IntegrationsManager.prototype.editorExists = function (editorID) {
return this.openEditors[editorID] != undefined;
};
IntegrationsManager.prototype.getEditor = function (editorID) {
if (this.editorExists(editorID))
return this.openEditors[editorID];
return null;
};
IntegrationsManager.prototype.executeActions = function (actions, deck) {
for (var actionInstanceID in actions) {
var actionInstance = actions[actionInstanceID];
if (Undecked.Integrations.exists(actionInstance.integrationID)) {
var integration = Undecked.Integrations.get(actionInstance.integrationID);
if (integration.api.hasAction(actionInstance.actionID)) {
var action = integration.api.getAction(actionInstance.actionID);
if (typeof action._hdl == 'function')
action._hdl(actionInstance.properties, function (text, type) {
if (type === void 0) { type = 'info'; }
if (actionInstance.logs == undefined)
actionInstance.logs = [];
actionInstance.logs = __spreadArray([
{ timestamp: Date.now(), type: type, text: text }
], actionInstance.logs);
if (actionInstance.logs.length > 20)
actionInstance.logs.splice(20, actionInstance.logs.length - 20);
// Log(
// <any>type.replace('warning', 'warn'),
// `[Deck:${deck != null ? deck.getName() : 'Internal'}][Integration:${integration
// .integration.name}][Action:${actionInstance.actionID}] ${text}`
// );
}, deck);
else
Logger_1.Log('warn', "Tried calling non-exisintg handler for action '" + actionInstance.actionID + "' of integration '" + actionInstance.integrationID + "'");
}
}
}
};
return IntegrationsManager;
}());
exports.IntegrationsManager = IntegrationsManager;
//# sourceMappingURL=IntegrationsManager.js.map