mirror of
https://github.com/ToolJet/ToolJet
synced 2026-05-02 10:57:20 +00:00
* 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 a8926b36e1.
* 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>
53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
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);
|
|
}
|
|
}
|
|
}
|