---
# System prepended metadata

title: 'Dubai Call Girls+971567875158 provide professional and independent Call Girls in Dubai to their clients for enjoyment purposes to make nights beautiful and charming. Dubai Call Girls, Call Girls in Dubai, Call Girls Dubai, Russian Call Girls in Dubai, Indian Call Girl +971567875158'

---

---
title: Dubai Call Girls+971567875158 provide professional and independent Call Girls in Dubai to their clients for enjoyment purposes to make nights beautiful and charming. Dubai Call Girls, Call Girls in Dubai, Call Girls Dubai, Russian Call Girls in Dubai, Indian Call Girl +971567875158
tags: 
description: Dubai Call Girls+971567875158 provide professional and independent Call Girls in Dubai to their clients for enjoyment purposes to make nights beautiful and charming. Dubai Call Girls, Call Girls in Dubai, Call Girls Dubai, Russian Call Girls in Dubai, Indian Call Girl +971567875158 "Slide Mode".
---

# Unleash the power!

<!-- Put the link to this slide here so people can follow -->
slide: https://63b1a482b5c98.site123.me/

---

We have a collaborative session

please prepare laptop or smartphone to join!

---

## Who am I?

- Front-end developer
- VSCode :heart: 
- I use tabs. :cat: 

---

### 70% of our users are developers. Developers :heart: GitHub.

---

{[%youtube E8Nj7RwXf0s %](https://portfolio.adobe.com/)}

---

### Usage flow

---


```graphviz
digraph {
  compound=true
  rankdir=RL

  graph [ fontname="Source Sans Pro", fontsize=20 ];
  node [ fontname="Source Sans Pro", fontsize=18];
  edge [ fontname="Source Sans Pro", fontsize=12 ];


  subgraph core {
    c [label="Hackmd-it \ncore"] [shape=box]
  }
  
  c -> sync [ltail=session lhead=session]

  subgraph cluster1 {
     concentrate=true
    a [label="Text source\nGithub, Gitlab, ..."] [shape=box]
    b [label="HackMD Editor"] [shape=box]
    sync [label="sync" shape=plaintext ]
    b -> sync  [dir="both"]
    sync -> a [dir="both"]
    label="An edit session"
  }
}
```

---

### Architecture of extension

---

![https://portfolio.adobe.com/][(https://i.imgur.com/ij69tPh.png](https://portfolio.adobe.com/))

---

## Content script

- Bind with each page
- Manipulate DOM
- Add event listeners
- Isolated JavaScript environment
  - It doesn't break things

---

# :fork_and_knife: 

---

<style>
code.blue {
  color: #337AB7 !important;
}
code.orange {
  color: #F7A004 !important;
}
</style>

- <code class="orange">onMessage('event')</code>: Register event listener
- <code class="blue">sendMessage('event')</code>: Trigger event

---

# :bulb: 

---

- Dead simple API
- Only cares about application logic

---

```typescript
import * as Channeru from 'channeru'

// setup channel in different page environment, once
const channel = Channeru.create()
```

---

```typescript
// in background script
const fakeLogin = async () => true

channel.answer('isLogin', async () => {
  return await fakeLogin()
})
```

<br>

```typescript
// in inject script
const isLogin = await channel.callBackground('isLogin')
console.log(isLogin) //-> true
```

---

# :100: :muscle: :tada:

---

### Wrap up

- Cross envornment commnication
- A small library to solve messaging pain
- TypeScript Rocks :tada: 

---

### Thank you! :sheep: 

You can find me on

- GitHub
- Twitter
- or email me
