Socket
Socket
Sign inDemoInstall

@onereach/channel-transformers

Package Overview
Dependencies
146
Maintainers
2
Versions
4
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @onereach/channel-transformers

Convert data models between different channels (Slack, Microsoft Teams...) to a generic CB model and vice versa


Version published
Weekly downloads
0
decreased by-100%
Maintainers
2
Created
Weekly downloads
 

Readme

Source

🤖 This Transformer between differend data model channels

✅ Developing:

  • Slack
  • Microsoft Teams
  • Default (schema for content builder)

👉 Future channels: ...

How to use

npm i

Sample of code in ./user-test.js If you use ./user-test.js than just run:

npm run dev

Or, create local file and require from ./index.js next functions

import {
  transformSlackToMicrosoftTeams,
  transformMicrosoftTeamsToSlack
} from './index';

After that import json data. Fot example, slack model

const slackToMsTeamsData = require('./slack->msTeams.json');

And transform Slack model to Microsoft team:

const microsoftTeamsModel = transformSlackToMicrosoftTeams({ data: slackToMsTeamsData });
console.log(JSON.stringify(microsoftTeamsModel))

How to test

We use unit testing based on cases. Create new case, just run script, before run command look up in derictory ./test/cases and enter NUMBER_OF_CASE next after existing (change NUMBER_OF_CASE to Number of case)

sh scripts/createCase.sh NUMBER_OF_CASE

Than open ./test/cases/NUMBER_OF_CASE and add original data model to from.json file open ./test/cases/NUMBER_OF_CASE and add expected data model to to.json file

npm run test

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

Structure

...



Default schema:

{
  itmes: [
    {
      itemType: type, // type of block or element
      children: [],  // array of atributes, children, items,
      attributes: {} // additional data (title, styles and so on),
      value: // anu value data
    }
  ]
}

Default types:

  • section
  itemType: 'section',
  children,
  attributes: {
    position // could be left of undefined
  }
  • text
{
  itemType: 'text',
  textType: type, // could be mrkdown, markdown, plain_text
  text
}
  • image
{
  itemType: 'image',
  url: image_url,
  alt: alt_text,
  attributes: {
    title,
    position // could be left of undefined
  }
}
  • divider
{
  itemType: 'divider'
}
  • actions
{
  itemType: 'actions',
  children
}
  • button
{
  itemType: 'button',
  value,
  url,
  text,
  attributes: {
    text,
    style     // color styling default, blue, red, green
  }
}
  • columnSet
{ 
  itemType: 'columnset',
  columnLength:  0, 
  children: [
    {
      numberOfColumn: Number // have to be cleared
    }
  ]
}
  • select
{ 
  itemType: 'select',
  id,
  placeholder: { type: 'plain_text', text: 'Select a date', emoji: true } || 'Just a string',
  options: [
    {
      label: item.text,
      value: item.value
    };
  ],
  isMultiSelect: false,
  attributes: {
    position
  }
}
  • datepicker
{
  itemType: 'datepicker',
  placeholder: { type: 'plain_text', text: 'Select a date', emoji: true } || 'Just a string',
  value: '1990-04-28',
  id: '123',
  attributes: { position: 'left' }
}
  • input
{
  itemType: 'input',
  input: {
    placeholder,
    isMultiline
  },
  label: text or text object
}
  • Error dev extra types:
{
  itemType: 'error',
  message: `Method for ${type} not found`
}

FAQs

Last updated on 20 Aug 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc