Git Product home page Git Product logo

netflux's Introduction

Netflux

Netflux logo

Isomorphic Javascript peer to peer transport API for client and server.

Secure and fault tolerant full mesh peer to peer network based on RTCDataChannel and WebSocket.

Send/receive String and Uint8Array data types.

Documentation: https://coast-team.github.io/netflux

version travis

codeclimate Test Coverage documentation

Conventional Changelog semantic-release gitter

Netflux example

Features

  • Peer to peer full mesh network tolerant to connection failures.
  • Same API for clients (Chrome, Firefox) and servers (NodeJS).
  • Send private or broadcast messages with String, Uint8Array data types.
  • Send large amounts of data (over the limit of ~16kb used in RTCDataChannel).
  • Automatic rejoin the group when connection lost.
  • Hide the connection nature ( WebSocket or RTCDataChannel) from API consumer.
  • All connections are encrypted.
  • Full control over WebRTC servers: Signaling, STUN and TURN.
    • Deploy your own Signaling server (Sigver) or use the one provided by default.
    • Configure STUN and TURN servers.
  • Small Signaling server payload.
  • Signaling server is only used to establish connection between two peers, no user data is passing through it.
  • TypeScript declaration files are included.
  • Simple and familiar API usage.
  • Multiple bundles to suit your workflow:
    • For NodeJS
      • dist/netflux.node.es5.cjs.js commonjs format, es5 code (see package.json#main).
      • dist/netflux.node.es5.esm.js ES module format, es5 code (see package.json#module).
    • For browsers
      • dist/netflux.browser.es5.umd.js UMD format, es5 code
      • dist/netflux.browser.es5.esm.js ES module format, es5 code (see package.json#browser).
      • dist/netflux.browser.es2015.esm.js ES module format, es2015 code (see package.json#es2015).
      • dist/netflux.browser.esnext.esm.js ES module format, esnext code (see package.json#esnext).

Install

npm install netflux

3 peer dependencies to be installed in some cases:

  • rxjs is necessary for both NodeJS and browsers if you want to take advantage of EcmaScript modules, tree-shaking etc. Otherwise it is already included into dist/netflux.browser.es5.umd.js and dist/netflux.node.es5.cjs.js bundles.
npm install rxjs
  • uws and text-encoding if you target NodeJS (developing a bot):
npm install uws text-encoding

Why peer dependencies?

  • Reduce the installation size by omitting unused dependencies.
  • Take advantage of new standards and techniques: EcmaScript modules, bundle tools like Webpack, Rollup etc.

Usage

Here is a basic usage example for client and server (checkout the documenation for more details).

Bot server is not mandatory. The group may completely be composed of clients only, as well as be composed of servers only or may also be mixed.

Client example

import { WebGroup, WebGroupState } from 'netflux'

// Create instance and set callbacks
const wg = new WebGroup()

wg.onMemberJoin = (id) => {
  console.log(`Member ${id} has joined. Current members list is: `, wg.members)
  // Say hello to the new peer
  wg.sendTo(id, 'Hello, my name is Bob')
}

wg.onMemberLeave = (id) => {
  console.log(`Member ${id} has left. Remained members are: `, wg.members)
}

wg.onMessage = (id, data) => {
  console.log(`Message from ${id} group member`, data)
}

wg.onStateChange = (state) => {
  console.log('The new Group state is ', state)
  switch (state) {
    case WebGroupState.JOINING:
      // Do something
      break
    case WebGroupState.JOINED:
      // Do something... for example invite a bot...
      wg.invite('BOT_SERVER_WEB_SOCKET_URL')
      // Or send message to all peers
      wg.send('Hello everybody. I have just joined the group.')
      break
    case WebGroupState.LEFT:
      // wg.key === ''
      // wg.id === 0
      // wg.myId === 0
      // wg.members === []
      // the current wg object is at the same state as if it was instantiated via new WebGroup(...), hence
      // it can be reused to join another group for example.
      // Do something...
      break
  }
}

// Join the group
wg.join('MY_UNIQUE_KEY_FOR_THE_GROUP')

Bot example

import { Bot, WebGroupState } from 'netflux'
const http = require('http') // https is also possible
const server = http.createServer()

const bot = new Bot({
  server: server,
  webGroupOptions: {
    // Any WebGroup options like for a client
  },
})

bot.onWebGroup = (wg) => {
  console.log('The current state is JOINING: ', wg.state === WebGroupState.JOINING)
  // New instance of a WebGroup (Someone has invited this bot).
  // See example above for client as it is the same API.
}

server.listen(BOT_PORT, _BOT_HOST)
// A client may invite this bot with the following URL: 'ws://BOT_HOST:BOT_PORT'

Demo

Netflux used as a transport layer for Multi User Text Editor (MUTE repo) developed by our team. The demo version is available on: https://coedit.re.

netflux's People

Contributors

conaclos avatar gitter-badger avatar greenkeeper[bot] avatar kalitine avatar oster avatar thlesa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

netflux's Issues

From ES2015 to TypeScript

Current Behavior

  • The source code and tests are valid ES2015 code. Netflux do not use any polyfill.
  • The builds are ES5 code compiled with Babel.
  • ESLint is used to for code linting
  • Code coverage is configured with Karma working with ES2015.

Expected Behavior

  • Code source and tests written in Typescript
  • Use TSLint for linting
  • Code coverage should be configured for TypeScript code source

An in-range update of uws is breaking the build 🚨

Version 0.14.3 of uws just got published.

Branch Build failing 🚨
Dependency uws
Current Version 0.14.1
Type peerDependency

This version is covered by your current version range and after updating it in your project the build failed.

As uws is β€œonly” a peerDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ

Status Details - ❌ **continuous-integration/travis-ci/push** The Travis CI build failed [Details](https://travis-ci.org/coast-team/netflux/builds/226145101)

Release Notes v0.14.3
  • Configurable maxPayload option
  • Properly handle connection errors
Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of eventsource is breaking the build 🚨

Version 0.2.2 of eventsource just got published.

Branch Build failing 🚨
Dependency eventsource
Current Version 0.2.1
Type dependency

This version is covered by your current version range and after updating it in your project the build failed.

As eventsource is a direct dependency of this project this is very likely breaking your project right now. If other packages depend on you it’s very likely also breaking them.
I recommend you give this issue a very high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

LEAVING WebGroup state

Leaving the WebGroup is an async process, thus the LEAVING state (state between JOINED and LEFT) might be useful.
For example it was useful in the case when the browser (by error) thinks that it is offline and then back online just after. The sequence of events are as follow:

Browser: OFFLINE
Netflux: calls leave(), but is still in JOINED state.
Browser: ONLINE
Netflux: Check the state... JOINED, so no reconnection needed
Netflux: finish leaving, the state is LEFT (here is the problem: Netflux should reconnect, as the browser is back online, but it does not)

An in-range update of eslint-config-conaclos is breaking the build 🚨

Version 1.2.4 of eslint-config-conaclos just got published.

Branch Build failing 🚨
Dependency eslint-config-conaclos
Current Version 1.2.3
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As eslint-config-conaclos is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Commits

The new version differs by 24 commits .

  • acd6323 chore(release): 1.2.4
  • a5472a9 feat(base): prevent comparison with -0
  • 6f4c074 feat(style): prevent space between template string and its tag
  • 8c6f61a feat(base): enforce the use of Error in Promise#reject
  • 500f620 feat(base): await function contains at least one await
  • e03e7be feat(style): enforce capitalization of the first comment letter
  • 502f311 style(dist-mod): fix comment style
  • 0f8e94e feat(base): prevent 'return await' statment
  • db2b326 chore(deps): update deps
  • f98edfe chore(deps): update eslint to 3.9
  • 6e05084 refactor(esnext-base): remove obsolete rule prefer-reflect
  • 2f6ef13 feat(base): prevent useless return
  • 571b99c feat(style): enforce function wrapping with call and apply
  • b460824 refactor(base): allow non-strict comparison against null
  • feeb96e refactor(esnext-style): relax comma-dangle

There are 24 commits in total. See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of rollup is breaking the build 🚨

Version 0.41.6 of rollup just got published.

Branch Build failing 🚨
Dependency rollup
Current Version 0.41.5
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As rollup is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build could not complete due to an error Details
Commits

The new version differs by 7 commits .

  • a96a923 -> v0.41.6
  • 7c8c6ba Merge pull request #1337 from krisselden/fix-cache-loader-sourcemaps
  • d94d8c2 Fix cache losing originalSourceMap for loaders with sourcemaps
  • ae9eb5c diction
  • d286702 Merge pull request #1330 from rollup/documentation
  • 5cafe1b license text
  • 5a718a2 quick start commands

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Extra ESLint config

Hi!

In addition to StandardJS, I propose to use conaclos/esnext-base. This addition catches more inconsistencies (mal-formed JSdoc, ...) and errors (e.g. undefined function detected in BotServer file).

Clarify difference between Peer.send() and Network.send()

As far as I can tell from the spec, Peer.send(string) does the same thing as Network.send(Peer, string). If they are indeed the same, perhaps Network.broadcast() should be renamed to Network.send() so one can think of a Network and a Peer as comparable items.

An in-range update of pm2 is breaking the build 🚨

Version 2.4.1 of pm2 just got published.

Branch Build failing 🚨
Dependency pm2
Current Version 2.4.0
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As pm2 is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Release Notes 2.4.1
  • #2720 multi user startup script
  • #2266 start and tail logs via pm2 start app.js --attach
  • #2699 add back previous termcaps interface via pm2 imonit
  • #2681 fix log folder create
  • #2724 make sure process is stopped even if there is a restart_delay
  • #2706 install pm2 modules via yarn if available
  • #2719 show 15 logs line bu default
  • #2703 allow custom timestamp with pm2-docker
  • #2698 fix unicode on pm2 monit
  • #2715 handle treekill edge case bug
  • Optimize CPU usage of pm2 monit command
  • [KM] URL web access dashboard
  • [KM] Auto install pm2-server-monit on keymetrics linking
  • [KM] Error reporting: add context (-B3 -A3 code lines)
  • [KM] Transaction Tracer: reset routes on app restart / wait some time before sending
Commits

The new version differs by 68 commits .

There are 68 commits in total. See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of sigver is breaking the build 🚨

Version 13.1.0 of sigver just got published.

Branch Build failing 🚨
Dependency sigver
Current Version 13.0.1
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As sigver is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ

Status Details - ❌ **continuous-integration/travis-ci/push** The Travis CI build failed [Details](https://travis-ci.org/coast-team/netflux/builds/226521258)

Release Notes v13.1.0

<a name"13.1.0">

13.1.0 (2017-04-27)

Features

  • https: server can listen on wss:// (e116af4c)
Commits

The new version differs by 1 commits0.

  • e116af4 feat(https): server can listen on wss://

false

See the full diff

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of pm2 is breaking the build 🚨

Version 2.4.6 of pm2 just got published.

Branch Build failing 🚨
Dependency pm2
Current Version 2.4.5
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As pm2 is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ

Status Details - ❌ **continuous-integration/travis-ci/push** The Travis CI build failed [Details](https://travis-ci.org/coast-team/netflux/builds/226550968)

Commits

The new version differs by 1 commits0.

false

See the full diff

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of webrtc-adapter is breaking the build 🚨

Version 3.1.2 of webrtc-adapter just got published.

Branch Build failing 🚨
Dependency webrtc-adapter
Current Version 3.1.1
Type dependency

This version is covered by your current version range and after updating it in your project the build failed.

As webrtc-adapter is a direct dependency of this project this is very likely breaking your project right now. If other packages depend on you it’s very likely also breaking them.
I recommend you give this issue a very high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Release Notes Reverts edge RTX fixes and disables it again, fixes getStats regression for older Firefox releases (prior 48)

Details in v3.1.1...v3.1.2

Commits

The new version differs by 9 commits .

  • ef352f0 Merge pull request #432 from webrtc/bumpVersion
  • 0588272 bump to 3.1.2
  • 8af2b5c Add adapter artifacts
  • 40a18fc Merge pull request #430 from fippo/revert-rtx
  • 742fbab Merge pull request #431 from jan-ivar/fixhyphenshim
  • e99d313 Merge pull request #429 from fippo/bad-day
  • 16d3302 Fix getStats hyphen shim regression in pre-48 FF.
  • fc3b879 Revert "edge: re-enable RTX"
  • 2cf8d48 Revert "edge: reject if there are no common video codecs"

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Problem for joining with the not original key

In my situation, you have 3 users :

  • A who create the webchannel and have the key K1,
  • B who have joined the wc with K1 and getAccess(), so have a new key K2,
  • C who want to join the wc with K2.

The issue is that msgBuilder have a call without .msg(, when this problem is resolved, the user C isn't in the wc.

An in-range update of rollup is breaking the build 🚨

Version 0.41.2 of rollup just got published.

Branch Build failing 🚨
Dependency rollup
Current Version 0.41.1
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As rollup is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Commits

The new version differs by 9 commits .

  • e2d9b6b -> v0.41.2
  • 2a01a99 Merge pull request #1241 from kzc/0_41_0_changelog_addition
  • c038cda Merge pull request #1240 from rollup/gh-841-updated
  • 61528b7 change log addition for 0.41.0
  • 82b284d optimize ns["foo"] (#841)
  • 40a0ed5 Merge pull request #1239 from rollup/gh-1213
  • bc0f791 suppress warnings with --silent (closes #1213)
  • 6384b6c Merge pull request #1238 from rollup/gh-797
  • 101ad28 use options.indent for UMD block - fixes #797

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of uglify-js is breaking the build 🚨

Version 2.8.17 of uglify-js just got published.

Branch Build failing 🚨
Dependency uglify-js
Current Version 2.8.16
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As uglify-js is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Release Notes v2.8.17

Β 

Commits

The new version differs by 26 commits .

  • 6ab3224 v2.8.17
  • c909ffb fix unused on var of the same name within catch (#1716)
  • f71f490 fix is_number() on += (#1714)
  • fb177a6 drop anonymous function name when overshadowed by other declarations (#1712)
  • 65da9ac handle var within catch of the same name (#1711)
  • 67d0237 fix tail trimming of switch blocks (#1707)
  • 984a217 fix mangle for variable declared within catch block (#1706)
  • aa3f647 ufuzz: workaround for Function.toString() v2 (#1700)
  • c526da5 has_side_effects() should take AST_Switch.expression into account (#1699)
  • 581630e fix typeof side effects (#1696)
  • f595293 preserve side effects in switch expression (#1694)
  • f001e4c fix cascade on anonymous function reference (#1693)
  • 57ce5bd handle overlapped variable definitions (#1691)
  • 861a79a fix delete related issues in collapse_vars and reduce_vars (#1689)
  • 00996af ufuzz: workaround function name and toString() (#1688)

There are 26 commits in total. See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Reception of splited messages

Hi!

Context

  • 6 or more computers
  • Sending of large messages (1000 characters or more)

Observation

The message is received as a spited message into several ones.
Therefore the parsed JSON is partial.
This is lead to two type of exceptions:

  • JSON syntax error
  • JSON token error

Hypothesis

A WebRTC message is divided into separate chunks (See Chromium issue 2270).

The delay between some chunk is too large and then several messages are produced upon reception.

Fix ideas

  • Check if SCTP provides a configuration to ensure message recovering from separate chunks
  • Switch to TCP (implies performance reduction)
  • Implement a custom buffer

An in-range update of uglify-js is breaking the build 🚨

Version 2.8.1 of uglify-js just got published.

Branch Build failing 🚨
Dependency uglify-js
Current Version 2.8.0
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As uglify-js is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Commits

The new version differs by 3 commits .

  • 320984c v2.8.1
  • 4365a51 temporarily disables reduce_vars (#1517)
  • 858e6c7 warn & drop #__PURE__ iff IIFE is dropped (#1511)

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Add ping/pong for sockets to catch disconnection.

Current behavior
When a WebSocket between two peers is closed abnormally, there is no event for this.

Expected behavior
Catch this event.

What is the motivation / use case for changing the behavior?
WebSocket are only between Bot & Bot or Bot & Browser. During some MUTE demonstration the bot is deployed on a raspberry pi and we disconnect it from the network (unplug the Ethernet cable or switch off the Wi-Fi) and we want Netflux to be aware of this.

Use Web Crypto API for id generation

Current behavior
Netflux generates an id for each new network member and for each new WebChannel instance.

Expected behavior
These ids should be generated by Web Crypto API.

What is the motivation / use case for changing the behavior?
Security enhancement.

Tips
NodeJS has its own Crypto API. Consider to use a polyfill or separate the implementation.

WebSocket.close(code) don't pass the code in the CloseEvent

There is a problem when closing a connection to a WebSocket with a custom code in Node JS.

The signaling servers I'm using are the one online at ws://sigver-coastteam.rhcloud.com:8000 and the one in the SigVer Chrome Application.

The results are identical : the CloseEvent fired when the socket is closed doesn't have the right code.

For example, in case there are 2 WebSockets opened, sending the same key to the server to initiate a channel, the second is closed with code 1000 whereas the signaling server used socket.closed(4002, 'Key already exists').

An in-range update of wrtc is breaking the build 🚨

Version 0.0.61 of wrtc just got published.

Branch Build failing 🚨
Dependency wrtc
Current Version 0.0.60
Type peerDependency

This version is covered by your current version range and after updating it in your project the build failed.

As wrtc is β€œonly” a peerDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build could not complete due to an error Details
Commits

The new version differs by 8 commits .

  • 71ef85f [skip travis] [publish binary]
  • 8bd339f Update .travis.yml & appveyor.yml [publish binary]
  • 094de5f Remove line about libwebrtc from README.md
  • 53f8164 Add Appveyor badge
  • d3c04c0 Merge pull request #272 from markandrus/build-webrtc-separately
  • ebab17e Add scripts/download-webrtc-libraries-and-headers.js
  • 28902a4 Get node-webrtc working with build-webrtc artifacts
  • 171d10d Fix environment variables [publish binary]

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of pm2 is breaking the build 🚨

Version 2.5.0 of pm2 just got published.

Branch Build failing 🚨
Dependency pm2
Current Version 2.4.6
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As pm2 is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ

Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details

Release Notes 2.5.0
  • pm2 register|login to create new account / login on Keymetrics + auto link
  • pm2 open to open dashboard on browser
  • pm2 monitor|unmonitor <pm_id|name|all> for selective monitoring
  • #2818 alias pm2-docker to pm2-daemon
  • #2809 correctly resolve git/npm repo when running pm2 install
  • #2861 better auto exit check for docker
  • #2870 avoid null error when preparing app config
  • #2872 avoid showing useless warning
  • #438 allow to override daemon config paths via env (example: PM2_PID_FILE_PATH to override pid file of the daemon)
  • #2849 better gentoo template for pm2 startup
  • #2868 allow tailing log with --raw flag
  • #452 Add PM2_WEB_STRIP_ENV_VARS to remove environnement vars from pm2 web endpoint
  • #2890 Fix wait-ready for cluster mode
  • #2906 randomize machine name with default pm2 link
  • #2888 allow to use regex for pm2 logs
  • #2045 allow to rename NODE_APP_INSTANCE env variable
  • #2809 add increment_var options to ask for a environnement variable to be incremented for each application started
  • more informations when failing to deploy on custom ecosystem file
  • fix tests for node 8
  • fix missing callback when overriding console.log
  • allow to rename daemon process name via PM2_DAEMON_NAME
  • few typo in the readme
Commits

The new version differs by 71 commits.

There are 71 commits in total.

See the full diff

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Use of Promises

I'm concerned about the use of Promises in the join leave send and broadcast functions. What promise specification are you planning on using (last I was aware there were a number of different promise libraries which are incompatible). Personally I would prefer that the library did not require me to use Promises and just stuck to the nodejs-like callback with (err, ret) parameters.

Consider an attribute of Peer to show which peers in a channel have closer network distance

In order for the realtime engine (e.g. ChainPad) to build the document, it needs to access the history of the channel to which it has joined. Since every ChainPad instance has the history, it is ok for us to alter ChainPad so that it can ask a peer for the history and then provide that history. However in order to ensure that peers with good network latency are selected, there should be an attribute which indicates how preferable a peer is for communicating with, this way the peers to ask can be selected from the peers in the channel.

Use Out-of-Band Channel Negotiation

Current behavior
When establishing a peer to peer connection with RTCDataChannel, Netflux delegates RTCDataChannel options negotiation to the WebRTC API.

Expected behavior
Use out-of-band negotiation of channel parameters when establishing an RTCDataChannel.

What is the motivation / use case for changing the behavior?
In practice, there are no additional performance benefits to using out-of-band negotiation with few participating peers. However, where this workflow can be useful is in cases with many participating peers, as a full-mesh network for example.

An in-range update of pm2 is breaking the build 🚨

Version 2.4.3 of pm2 just got published.

Branch Build failing 🚨
Dependency pm2
Current Version 2.4.2
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As pm2 is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Release Notes 2.4.3
  • #2759 disable default require of vxx in pmx
  • #2651 always spawn pm2 daemon with node binary
  • #2745 new issue template
  • #2761 Make JSON log stream timestamp in consistent format
  • #2770 Fix trigger API never calling callback
  • #2796 Fix absolute path on windows
  • [KM] profiler installation via pm2 install v8-profiler or pm2 install profiler
  • [KM] Agent rescue system
Commits

The new version differs by 46 commits .

There are 46 commits in total. See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of eslint-plugin-standard is breaking the build 🚨

Version 2.2.0 of eslint-plugin-standard just got published.

Branch Build failing 🚨
Dependency eslint-plugin-standard
Current Version 2.1.1
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As eslint-plugin-standard is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Commits

The new version differs by 3 commits .

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Do not allow a new member if he did not respect network topology

Current Behavior
We consider only the full mesh topology. For example:

A----B
 \  /
   C

A, B, C are together in a peer to peer network. Each is connected with each other.
D wants to join them, thus he should establish a connection with A, B and C.
D failed to connect to C and succeed with A and B.
The current network looks like this:

  C---------A---------D
  |         |         |
  +---------B---------+

From A and B point of view the network is composed of : A, B, C and D
From C point of view the network is composed of : A, B and C
From D point of view the network is composed of : A, B and D

Expected Behavior
After D tried to join, the network should stay intact:

A----B
 \  /
   C

From A, B and C point of view the network is composed of : A, B, C
From D point of view: he failed to join (next step may be try again, abandon...)

Clarify meaning of Network.startInviting() and Network.stopInviting()

It seems that a Network is a sort of multicast group within the overall network (since there is a Facade.onPeerMessage() I take it the Facade is really a network). I can see using an introducing server at the Facade level but I assume someone is not able to join a Network until they are reachable at the Facade level and so they have already been introduced. Perhaps I am not understanding the meaning of Network.startInviting() properly.

An in-range update of rxjs is breaking the build 🚨

Version 5.3.1 of rxjs just got published.

Branch Build failing 🚨
Dependency rxjs
Current Version 5.3.0
Type dependency

This version is covered by your current version range and after updating it in your project the build failed.

rxjs is a direct dependency of this project this is very likely breaking your project right now. If other packages depend on you it’s very likely also breaking them.
I recommend you give this issue a very high priority. I’m sure you can resolve this πŸ’ͺ

Status Details - ❌ **continuous-integration/travis-ci/push** The Travis CI build failed [Details](https://travis-ci.org/coast-team/netflux/builds/228108078?utm_source=github_status&utm_medium=notification)

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Consider usage of Uint8Array in message send/onMessage functions

In order to be able to encrypt data which is sent over the network, it is best that the send functions accept Uint8Array as opposed to only string. For my needs it is ok to only transfer Uint8Array and not accept or return strings.
If others require to send/accept strings, one might convert strings to Uint8Arrays when send() is called and add a parameter to onMessage() which specifies whether the callback would like the type converted to a string or kept as a Uint8Array.

An in-range update of rollup-plugin-filesize is breaking the build 🚨

Version 1.2.0 of rollup-plugin-filesize just got published.

Branch Build failing 🚨
Dependency rollup-plugin-filesize
Current Version 1.0.1
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As rollup-plugin-filesize is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build could not complete due to an error Details
Commits

The new version differs by 3 commits .

  • c62ab7a Merge pull request #13 from ritz078/destination-info
  • 9168d39 updated screenshot
  • 6ef2983 show destination with filesize

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of ws is breaking the build 🚨

Version 2.2.1 of ws just got published.

Branch Build failing 🚨
Dependency ws
Current Version 2.2.0
Type dependency

This version is covered by your current version range and after updating it in your project the build failed.

As ws is a direct dependency of this project this is very likely breaking your project right now. If other packages depend on you it’s very likely also breaking them.
I recommend you give this issue a very high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Release Notes 2.2.1

Bug fixes

  • WebSocket.prototype.terminate() now closes the connection immediately even
    if the other peer fails to work properly (#1033).
Commits

The new version differs by 15 commits .

  • 08eb827 [dist] 2.2.1
  • 738e07f [fix] Make WebSocket#terminate() destroy the socket (#1033)
  • 72170d4 [codestyle] Fix nits
  • d29f306 [minor] Improve error message for unsupported protocol version (#1036)
  • fecc4f5 chore(package): update eslint-config-standard to version 8.0.0-beta.1 (#1035)
  • 05970f6 [pkg] Add missing dependencies for eslint-config-standard@8
  • e057bfc [example] Avoid using deprecated APIs
  • 4a605b9 chore(package): update eslint to version 3.17.0 (#1030)
  • e13ef4a chore(package): update bufferutil to version 3.0.0 (#1029)
  • 4ae630a [perf] Avoid using Buffer.concat() (#1026)
  • a70c6d0 chore(package): update eslint-plugin-standard to version 2.1.0 (#1027)
  • 944b788 chore(package): update eslint-config-standard to version 7.0.0 (#1024)
  • 2aec9a4 [lint] Remove eslint-config-semistandard dev dependency
  • f9b2bdf [lint] Comply with the new standard rules
  • 703adf8 chore(package): update eslint-plugin-promise to version 3.5.0 (#1025)

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Facade.onBroadcastMessage() looks like a DoS issue.

Generally in networking we don't want to allow someone to send a message which will go to everyone, with a concept of channels or multicast groups, one can PART (exit) a channel/group and then they will nolonger be sent the messages intended for that group. I'm curious about the reasoning for Facade.onBroadcastMessage() which if I understand properly is global.

Use of ECMA 2015

I notice that the preliminary javascript is written in ECMA2015 language, at XWiki we are standardized on ECMA 5 and we have no plans of changing that in the near future. I suppose there is no harm if the WebRTC implementation is developed in ECMA2015 but it is very important to us that the API allows us to develop using standard ECMA 5 Javascript.

An in-range update of tslib is breaking the build 🚨

Version 1.7.0 of tslib just got published.

Branch Build failing 🚨
Dependency tslib
Current Version 1.6.1
Type dependency

This version is covered by your current version range and after updating it in your project the build failed.

tslib is a direct dependency of this project this is very likely breaking your project right now. If other packages depend on you it’s very likely also breaking them.
I recommend you give this issue a very high priority. I’m sure you can resolve this πŸ’ͺ

Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build could not complete due to an error Details

Release Notes tslib 1.7.0

This release contains the following changes:

  • Update to the latest helpers for async generators.

NOTE: This is a breaking change from TypeScript 2.3.2 and earlier when using tslib with async generators:

  • If you are using TypeScript 2.3.2 or earlier and are writing async generators, you must use tslib version 1.6.1.
  • If you are using TypeScript 2.3.3 or later and are writing async generators, you must use tslib version 1.7.0 or later.
Commits

The new version differs by 4 commits0.

  • 0cadbd0 Merge pull request #30 from Microsoft/updateAsyncGeneratorHelpers
  • 13a29ac Update version to 1.7.0
  • 24dd6c5 Update README
  • 01fbd36 Update async generator helpers to align with #15521

false

See the full diff

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of sigver is breaking the build 🚨

Version 9.1.0 of sigver just got published.

Branch Build failing 🚨
Dependency sigver
Current Version 9.0.1
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As sigver is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Release Notes v9.1.0

9.1.0 (2017-02-02)

Bug Fixes

  • SSE: align with WSServer and fix close event handling (630ff158)

Features

  • ws:
    • new wsLib option to choose between uws and ws modules (b825f91f)
    • use ws package if uws is not installed (954a1ae3)
  • wsServer: allow multiple openers per key (7d684a4c)
Commits

The new version differs by 16 commits .

  • 60e0aa3 docs: add description for the main classes
  • 90f7b0d style: change SSEServer to SseServer and WSServer to WsServer
  • 9170b4b refactor(core): combine common logic of SSE and WS into ServerCore
  • 81a87f4 test: polish code
  • 9980d2f refactor(sse): wrap sse response into an Object to be similar with WebSocket
  • 2c3abf2 refactor(error): combine SSE and WS errors together
  • b00a13b test(karma): fix karma config
  • 2028a5a test: combine sse and ws test together
  • 630ff15 fix(SSE): align with WSServer and fix close event handling
  • 3a307e2 chore(proto): remove unused proto files
  • 13b16ce test: add test: 1 opener and 2 joinings
  • d546298 refactor(join): clearify code
  • b825f91 feat(ws): new wsLib option to choose between uws and ws modules
  • 954a1ae feat(ws): use ws package if uws is not installed
  • 7d684a4 feat(wsServer): allow multiple openers per key

There are 16 commits in total. See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of wrtc is breaking the build 🚨

Version 0.0.62 of wrtc just got published.

Branch Build failing 🚨
Dependency wrtc
Current Version 0.0.61
Type peerDependency

This version is covered by your current version range and after updating it in your project the build failed.

As wrtc is β€œonly” a peerDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ

Status Details - ❌ **continuous-integration/travis-ci/push** The Travis CI build could not complete due to an error [Details](https://travis-ci.org/coast-team/netflux/builds/225078396)

Commits

The new version differs by 19 commits0.

  • 94d37ae [publish binary] [email protected]
  • 3a19f6c Allow createOffer to accept (fn, fn, undefined)
  • 6fdb485 Update peerconnection.cc
  • 987b25a Merge pull request #291 from manuguerra/cpu-usage-drop-when-connection-closes
  • f5d13d1 Merge pull request #294 from caseywebdev/node-7
  • 6f41dbf Merge pull request #295 from ryskov/develop
  • d95dab6 authors
  • 3d1dd1f now reads ICE servers from JS configuration object
  • b0fed76 Test for node 7
  • 5d22cd8 test method calls after connection is closed
  • 39ee525 [peerconnection.js : createDataChannel] handle undefined channel
  • a7cb8f1 fix some spacings
  • a8c1378 [peerconnection] guard accesses to _jinglePeerConnection
  • ef2b2fa dereference jinglePeerConnection pointers as soon as Close is called
  • 167cb81 Make the test/connect.js more robust

There are 19 commits in total.

See the full diff

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Apparently no way to join a channel/chatroom/document without being first invited.

I'm not completely sure if this issue is valid but I wanted to bring it up anyway. I see the sendJoinRequest() function which by it's description seems analogous to the RFC-1459 INVITE message ( https://tools.ietf.org/html/rfc1459#section-4.2.7 ) and should probably be called invite(). What I do not see is an analogue to the JOIN message ( https://tools.ietf.org/html/rfc1459#section-4.2.1 ) or for that matter the PART message.

An in-range update of karma-chrome-launcher is breaking the build 🚨

Version 2.1.0 of karma-chrome-launcher just got published.

Branch Build failing 🚨
Dependency karma-chrome-launcher
Current Version 2.0.0
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As karma-chrome-launcher is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ

Status Details - ❌ **continuous-integration/travis-ci/push** The Travis CI build failed [Details](https://travis-ci.org/coast-team/netflux/builds/228038428?utm_source=github_status&utm_medium=notification)

Release Notes v2.1.0

Features

  • add support for custom user-data-dir in Chromium (579fcfc), closes #89
  • add support for headless Chrome/ChromeCanary (7446181)
Commits

The new version differs by 19 commits0.

  • 2267df1 chore: release v2.1.0
  • f993c48 chore: update contributors
  • 7446181 feat: add support for headless Chrome/ChromeCanary
  • d81da0e Merge pull request #116 from maieutiquer/patch-1
  • 37513a9 clean-up irrelevant comment
  • a0235a2 Merge pull request #115 from karma-runner/greenkeeper-standard-10.0.0
  • 8987630 chore(package): update standard to version 10.0.0
  • 1e4b4ff Merge pull request #110 from karma-runner/greenkeeper-standard-9.0.2
  • 5d559e7 chore(package): update standard to version 9.0.2
  • fbe91ca Merge pull request #92 from karma-runner/greenkeeper-grunt-auto-release-0.0.7
  • 4a7efc0 chore(package): update grunt-auto-release to version 0.0.7
  • 7abf72d Merge pull request #109 from karma-runner/greenkeeper-sinon-2.0.0
  • e4d38c0 chore(package): update sinon to version 2.0.0
  • b9f9214 Merge pull request #84 from karma-runner/greenkeeper-mocha-3.2.0
  • f5c5874 Merge branch 'master' into greenkeeper-mocha-3.2.0

There are 19 commits in total.

See the full diff

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Add Browser prefix for test reporter (e.g. "Firefox βœ“").

Current behavior
When running test with Karma for both browsers (Chrome and Firefox) the successful tests reports do not contain the Browser name (failed test do).

Expected behavior
Know which Browser successfully executed the test in test reporter.

What is the motivation / use case for changing the behavior?
Improve debugging.

Use Protocol Buffer

Current Behavior
Netflux sends messages only as ArrayBuffer. DataView API is used to construct the ArrayBuffer with help of Encoding and JSON APIs. All services' messages are sent as an encoded string and only the message header (3 fields: message type, sender peer id and receiver peer id) are binaries.

Expected Behavior
Serialize/deserialize messages with Protocol Buffer. Use proto files for almost all internal messages, instead of string.

What is the motivation / use case for changing the behavior?
Improve code maintainability. Decrease the size of messages circulating over the network, thus improve performance.

Tips
Protocol Buffer is a specification created by Google. Two its major implementations for Javascript exist as for now:

An in-range update of karma-firefox-launcher is breaking the build 🚨

Version 1.0.1 of karma-firefox-launcher just got published.

Branch Build failing 🚨
Dependency karma-firefox-launcher
Current Version 1.0.0
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As karma-firefox-launcher is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Commits

The new version differs by 10 commits .

  • 2143fd2 chore(release): 1.0.1
  • e3eddff Merge pull request #66 from karma-runner/cleanup
  • 5bbf5c3 style: lint happy
  • e68a711 docs(readme): add badges
  • 92cc77c refactor: clean up code and add tests
  • 3ffa514 fix: only use $HOME environmental variable if it exists
  • 9f28aa9 fix: disable multi-process firefox
  • 1339149 Merge pull request #53 from markchagers/fix-windows-launch
  • 3322a61 fix(windows): change getFirefoxExe function to find exe on other drive
  • a332915 fix(windows): change getFirefoxExe function to allow running on win64

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of eslint is breaking the build 🚨

Version 3.16.1 of eslint just got published.

Branch Build failing 🚨
Dependency eslint
Current Version 3.16.0
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As eslint is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build failed Details
Release Notes v3.16.1
  • ff8a80c Fix: duplicated autofix output for inverted fix ranges (fixes #8116) (#8117) (Teddy Katz)
  • a421897 Docs: fix typo in arrow-parens.md (#8132) (Will Chen)
  • 22d7fbf Chore: fix invalid redeclared variables in tests (#8130) (Teddy Katz)
  • 8d95598 Chore: fix output assertion typos in rule tests (#8129) (Teddy Katz)
  • 9fa2559 Docs: Add missing quotes in key-spacing rule (#8121) (Glenn Reyes)
  • f3a6ced Build: package.json update for eslint-config-eslint release (ESLint Jenkins)
Commits

The new version differs by 8 commits .

  • 589ab67 3.16.1
  • 4fec5b2 Build: package.json and changelog update for 3.16.1
  • ff8a80c Fix: duplicated autofix output for inverted fix ranges (fixes #8116) (#8117)
  • a421897 Docs: fix typo in arrow-parens.md (#8132)
  • 22d7fbf Chore: fix invalid redeclared variables in tests (#8130)
  • 8d95598 Chore: fix output assertion typos in rule tests (#8129)
  • 9fa2559 Docs: Add missing quotes in key-spacing rule (#8121)
  • f3a6ced Build: package.json update for eslint-config-eslint release

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

An in-range update of uglify-js is breaking the build 🚨

Version 2.8.13 of uglify-js just got published.

Branch Build failing 🚨
Dependency uglify-js
Current Version 2.8.12
Type devDependency

This version is covered by your current version range and after updating it in your project the build failed.

As uglify-js is β€œonly” a devDependency of this project it might not break production or downstream projects, but β€œonly” your build or test tools – preventing new deploys or publishes.

I recommend you give this issue a high priority. I’m sure you can resolve this πŸ’ͺ


Status Details
  • ❌ continuous-integration/travis-ci/push The Travis CI build could not complete due to an error Details
Release Notes v2.8.13

Β 

Commits

The new version differs by 8 commits .

  • b2b8a0d v2.8.13
  • ac40301 fix chained evaluation (#1610)
  • 3563d8c extend test/run-tests.js to optionally execute uglified output (#1604)
  • 5ae04b3 make collapse_vars consistent with toplevel (#1608)
  • a80b228 fix hoist_vars on reduce_vars (#1607)
  • cf4bf4c fix stack issues with AST_Node.evaluate() (#1603)
  • 8223b2e fix AST_Node.optimize() (#1602)
  • 381bd38 minor clean-ups (#1600)

See the full diff.

Not sure how things should work exactly?

There is a collection of frequently asked questions and of course you may always ask my humans.


Your Greenkeeper Bot 🌴

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.