UNPKG

@onereach/channel-transformer

Version:

Convert data model between different channels (Slack, Microsoft Teams, Generic...)

148 lines (121 loc) • 3.78 kB
## 🚜 Transformer between differend data model channels Channles: - Generic model - Skack Block kit model ## Installing: *We use TypeScript, and all types are described, full documentation you can find*: https://onereach.gitlab.io/platform/transform-channels/index.html > In Browser using unpkg: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Channel transfromer. Browser + UNPKG</title> </head> <body> <script src="https://unpkg.com/@onereach/channel-transformer@latest/dist/channel-transformer.umd.min.js"></script> <script> var slackDataModel = { "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "This is a mrkdwn section block :ghost: *this is bold*, and ~this is crossed out~, and <https://google.com|this is a link>" } } ] } // Transform Slack data model to Generic model var genericModel = channelTransformer.transformSlackToGeneric(slackDataModel); // Transfrom back from Generic model to Slack data model var slackModel = channelTransformer.transformGenericToSlack(genericModel); console.log(genericModel, slackModel); </script> </body> </html> ``` > ES6 ```zsh npm i @onereach/channel-transformer ``` ```javascript import { transformSlackToGeneric, transformGenericToSlack } from '@onereach/channel-transformer'; ``` > Node.js ```zsh npm i @onereach/channel-transformer ``` ```javascript const { transformSlackToGeneric, transformGenericToSlack } = require('@onereach/channel-transformer'); const slackDataModel = { "blocks": [ { "type": "section", "text": { "type": "mrkdwn", "text": "This is a mrkdwn section block :ghost: *this is bold*, and ~this is crossed out~, and <https://google.com|this is a link>" } } ] } // Transform Slack data model to Generic model const genericModel = transformSlackToGeneric(slackDataModel); // Transfrom back from Generic model to Slack data model const slackModel = transformGenericToSlack(genericModel); console.log(genericModel, slackModel); ``` Developing: āœ… Tests for Slack -> Generic -> Slack āœ… Export types āœ… Can be imported in any js env - Microsoft Teams channel - Zoom channel ## How it works Sample: Microsoft Teams and Slack - Microsoft Teams Adaptive Cards data model šŸ‘‰ transform to default data model šŸ‘‰ transform from default data model to Slack Block kit data model - Slack Block kit data model šŸ‘‰ transform to default data model šŸ‘‰ transform from default data model to Microsoft Teams Adaptive Cards data model ## Generic data model schema based on rule: All data soted in Array of Object. Each object have three required and only possible properties: 1) type - type is unic name of field 2) props - all settings, states and so on of field 3) children - Array of Objects dependent elements Sample: ```javascript [ { type: 'section', props: { variableName: '...', column: 2, value: '' }, children: [] }, { type: 'input', props: { value: '', required: true }, children: [] } ] ``` Small html app for transfroming data from Slack to Genric > https://content-assets.onereach.ai/apps/channel-transformer-app/0.0.3/index.html ## How to add new channels? Before runnning dev mode install latest node.js and nvm then use command ```nvm use``` 1) Create new brnach 2) Copy structure of anu channel (Slack, Web) in ```./src/channels``` 3) Export main functions to ```./src/``` 4) Create script in package.json, take for example already created channels ## How to test 1) Slack -> Generic -> Slack. Command ```npm run test:slack```