That’s brilliant @Alexandr ! Thank you so much.
I have updated your solution for those who don’t use TypeScript (yet )
And also to provide a way of making sure that there are no collision names.
src/resolvers/jira.js
import Resolver from '@forge/resolver';
const getJiraText = (req) => {
console.log(req);
return 'Hello, Jira world!';
}
const getText = (req) => {
console.log(req);
return 'Hello, world, from Jira!';
}
export const setDefinitions = (resolver, scope) => {
resolver.define(scope ? scope + '.getJiraText' : 'getJiraText', getJiraText);
resolver.define(scope ? scope + '.getText' : 'getText', getText);
};
src/resolvers/slack.js
import Resolver from '@forge/resolver';
import {Lambda} from './constants'
const getSlackText = (req) => {
console.log(req);
return 'Hello, Slack world!';
}
export const setDefinitions = (resolver, scope) => {
resolver.define(scope ? scope + '.getSlackText' : 'getSlackText', getSlackText);
};
src/resolvers/index.js
import Resolver from '@forge/resolver';
import {setDefinitions as setDefinitionsSlack} from './slack';
import {setDefinitions as setDefinitionsJira} from './jira';
const resolver = new Resolver();
setDefinitionsSlack(resolver);
setDefinitionsJira(resolver, 'Jira');
export const handler = resolver.getDefinitions();
src/index.js
export { handler } from './resolvers';
src/frontend/index.jsx
import { invoke } from '@forge/bridge';
invoke('Jira.getJiraText', { example: 'my-invoke-variable' }).then(setData);
invoke('Jira.getText', { example: 'my-invoke-variable' }).then(setData2);
invoke('getSlackText', { example: 'my-invoke-variable' }).then(setData3);