ToolJet/marketplace/plugins/common/lib/utils.helper.ts

54 lines
1.3 KiB
TypeScript
Raw Normal View History

[Feature] Make plugins installable (#3069) * feat: add user avatar * update: @nest/platform-express from 8.0.0 to 8.4.4 * add avatar_id in login response * add user avatar upload in frontend * align cross divider with layout icons' * generate nest model - extensions * Add extensions module * Add extension to datasouce * add not implemented check * create extension * refactor * cleanup * fix tests * reduce the avatar size on homepage * poc: run js code from string * resolve conflicts * fix conflicts * add globals * add new route * add icon, manifest file upload * complete user flow * add flow for data queries * add dynamic manifest instead of local datasource types * add version attr * remove unused code * add version * rename extension(s) -> plugins(s) * add test connection method * feat: add marketplace listing page * Add install plugin cmd + missing attrs {name, repo, desc} to plugin * add missing icon * - Add npm workspaces for marketplace monorepo - Added cassandra datasource plugin - Created upload to s3 script - Created plugins.json entry file * install plugin from s3 bucket * cleanup * update pkg locks * fix icon render * cleanup * marketplace changes * ui changes * operations file load fix + revert vm2 * update module from string to 3.2.1 * load plugins.json from local file instead of remote * install plugin from local file if not production environment * add sqlite * feat: add plivo api plugin * exp: add heroku 22 stack * update assets include path * Revert "exp: add heroku 22 stack" This reverts commit a8926b36e116fb76cd3b6d0aa41778779c9273c8. * add integrations link * Add casl ability for plugin * load host from env else fallback to default * update imports * remove sqlite * typo * add marketplace flag to cli command * move ts and ncc to devDep * add hygen templates for marketplace * cli tree-node path fix * template indent fix * TOOLJET_URL -> MARKETPLACE_TOOLJET_URL * add tests * refactor: move to plugins.helper for get-service helper utility * fix; typo * update package-lock.json * review changes * remove a href * remove bg color + redirect issue due to href * add test url * fix crash on search * remove extra slash * feat: allow plugin to be installed from github repository * remove unwanted args from cli command * add repo attr while save * feat: add feature toggle for marketplace feature * fix: make default config as false * chore: remove hyperlink * fix: failing build * chore: update s3 url to point to prod * fix failing test * fix test * fix: test case * update module from string pkg * update env * fix test * fix test * add readme file * Update README.md Co-authored-by: Akshay Sasidharan <akshaysasidharan93@gmail.com>
2022-10-27 11:29:43 +00:00
import { QueryError } from './query.error';
const CACHED_CONNECTIONS: any = {};
export function parseJson(jsonString: string, errorMessage?: string): object {
try {
return JSON.parse(jsonString);
} catch (err) {
throw new QueryError(errorMessage, err.message, {});
}
}
export function cacheConnection(dataSourceId: string, connection: any): any {
const updatedAt = new Date();
CACHED_CONNECTIONS[dataSourceId] = { connection, updatedAt };
}
export function getCachedConnection(dataSourceId: string | number, dataSourceUpdatedAt: any): any {
const cachedData = CACHED_CONNECTIONS[dataSourceId];
if (cachedData) {
const updatedAt = new Date(dataSourceUpdatedAt || null);
const cachedAt = new Date(cachedData.updatedAt || null);
const diffTime = (cachedAt.getTime() - updatedAt.getTime()) / 1000;
if (diffTime < 0) {
return null;
} else {
return cachedData['connection'];
}
}
}
export function cleanSensitiveData(data, keys) {
if (!data || typeof data !== 'object') return;
const dataObj = { ...data };
clearData(dataObj, keys);
return dataObj;
}
function clearData(data, keys) {
if (!data || typeof data !== 'object') return;
for (const key in data) {
if (keys.includes(key)) {
delete data[key];
} else {
clearData(data[key], keys);
}
}
}