├── .gitignore
├── README.md
├── clippings
├── Route Menus.maxpat
└── to_from_Server.maxpat
├── docs
├── README.md
├── refpages
│ ├── CH-Chat.maxref.xml
│ ├── CH-Client.maxref.xml
│ ├── CH-ClientTesting.maxref.xml
│ ├── CH-Controls.maxref.xml
│ ├── CH-Events.maxref.xml
│ ├── CH-Rooms.maxref.xml
│ ├── Collab-Hub Modules.maxref.xml
│ └── _c74_ref_modules.xml
├── topics
│ └── Collab-Hub_topic.maxvig.xml
├── tutorial-patchers
│ ├── 01-Connecting.maxpat
│ ├── 02-Sending Data.maxpat
│ └── 03-Receiving Data.maxpat
└── tutorials
│ ├── _c74_tut_common.xsl
│ └── ch-tut
│ ├── 00-ch-index.maxtut.xml
│ ├── 01-Getting Connected.maxtut.xml
│ ├── 02-Sending Data.maxtut.xml
│ ├── 03-Receiving Data.maxtut.xml
│ ├── 04-Rooms.maxtut.xml
│ ├── 05-Push and Publish.maxtut.xml
│ ├── _c74_tut.xsl
│ ├── images
│ ├── 01a_CH-Client.png
│ ├── 01b_CH-Client_Connected.png
│ ├── 01c_CH-Client_Change_Username.png
│ ├── 01d_CH-Client_Multiple_Connections.png
│ ├── 02_CH-Client_inlets_outlets.png
│ ├── 02_Control_Value.png
│ ├── 02_Control_XY.png
│ ├── 02_Event_Targets.png
│ ├── 02_to_and_from_Server.png
│ ├── 03_Route_by_Header.png
│ ├── 03_Using Sender Flags.png
│ ├── 04-Rooms.png
│ ├── 04-Rooms_Details.png
│ ├── 05-CH-Controls details.png
│ ├── 05-CH-Controls module.png
│ ├── 05-CH-Events details.png
│ ├── 05-CH-Events module.png
│ ├── 05-Publish Max Example.png
│ └── 05-Push Max Example.png
│ ├── tzeropage.html
│ └── tzeropage.js
├── examples
├── CH-Collaborative-Web-Sequencer
│ ├── CH-Collaborative-Web-Sequencer.maxpat
│ └── local_seq_four_tracks.maxpat
├── CH-Controls-and-Events.maxpat
├── CH-Drum-Demo.maxpat
├── CH-Max-Web-Audience Participation.maxpat
├── CH-Push-Publish-Rooms.maxpat
├── CH-Sequence-Trader
│ ├── CH-Sequencer-Trader.maxpat
│ └── bpatchers
│ │ ├── local_seq.maxpat
│ │ └── send_seq.maxpat
├── CH-Simple-Routing.maxpat
├── Mapping-Strategies.maxpat
├── README.md
└── resources
│ ├── lookupTable.maxpat
│ ├── manyOsc.maxpat
│ ├── mass-biquad.gendsp
│ ├── simpleFM.maxpat
│ ├── simpleSaw.maxpat
│ └── stepSeq.maxpat
├── extras
└── Collab-Hub Modules.maxpat
├── help
├── CH-Chat.maxhelp
├── CH-Client.maxhelp
├── CH-ClientTesting.maxhelp
├── CH-Controls.maxhelp
├── CH-Events.maxhelp
└── CH-Rooms.maxhelp
├── icon.png
├── javascript
├── CH-Chat-JS.js
├── CH-Chat-UI.html
├── CH-ClientInstanceManager.js
├── CH-ClientScript.js
├── CH_Palette.maxpalette
├── config.json
├── node_modules
│ ├── .package-lock.json
│ ├── @types
│ │ └── component-emitter
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── index.d.ts
│ │ │ └── package.json
│ ├── backo2
│ │ ├── .npmignore
│ │ ├── History.md
│ │ ├── Makefile
│ │ ├── Readme.md
│ │ ├── component.json
│ │ ├── index.js
│ │ ├── package.json
│ │ └── test
│ │ │ └── index.js
│ ├── base64-arraybuffer
│ │ ├── .npmignore
│ │ ├── .travis.yml
│ │ ├── LICENSE-MIT
│ │ ├── README.md
│ │ ├── lib
│ │ │ └── base64-arraybuffer.js
│ │ └── package.json
│ ├── component-emitter
│ │ ├── History.md
│ │ ├── LICENSE
│ │ ├── Readme.md
│ │ ├── index.js
│ │ └── package.json
│ ├── debug
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── package.json
│ │ └── src
│ │ │ ├── browser.js
│ │ │ ├── common.js
│ │ │ ├── index.js
│ │ │ └── node.js
│ ├── engine.io-client
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── contrib
│ │ │ └── xmlhttprequest-ssl
│ │ │ │ └── XMLHttpRequest.js
│ │ ├── dist
│ │ │ ├── engine.io.js
│ │ │ └── engine.io.min.js
│ │ ├── lib
│ │ │ ├── globalThis.browser.js
│ │ │ ├── globalThis.js
│ │ │ ├── index.js
│ │ │ ├── socket.js
│ │ │ ├── transport.js
│ │ │ ├── transports
│ │ │ │ ├── index.js
│ │ │ │ ├── polling-jsonp.js
│ │ │ │ ├── polling-xhr.js
│ │ │ │ ├── polling.js
│ │ │ │ ├── websocket-constructor.browser.js
│ │ │ │ ├── websocket-constructor.js
│ │ │ │ └── websocket.js
│ │ │ ├── util.js
│ │ │ └── xmlhttprequest.js
│ │ └── package.json
│ ├── engine.io-parser
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── Readme.md
│ │ ├── lib
│ │ │ ├── commons.js
│ │ │ ├── decodePacket.browser.js
│ │ │ ├── decodePacket.js
│ │ │ ├── encodePacket.browser.js
│ │ │ ├── encodePacket.js
│ │ │ └── index.js
│ │ └── package.json
│ ├── has-cors
│ │ ├── .npmignore
│ │ ├── History.md
│ │ ├── Makefile
│ │ ├── Readme.md
│ │ ├── component.json
│ │ ├── index.js
│ │ ├── package.json
│ │ └── test.js
│ ├── ms
│ │ ├── index.js
│ │ ├── license.md
│ │ ├── package.json
│ │ └── readme.md
│ ├── parseqs
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── test.js
│ ├── parseuri
│ │ ├── History.md
│ │ ├── LICENSE
│ │ ├── Makefile
│ │ ├── README.md
│ │ ├── index.js
│ │ ├── package.json
│ │ └── test.js
│ ├── socket.io-client
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── build
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ ├── manager.d.ts
│ │ │ ├── manager.js
│ │ │ ├── on.d.ts
│ │ │ ├── on.js
│ │ │ ├── socket.d.ts
│ │ │ ├── socket.js
│ │ │ ├── typed-events.d.ts
│ │ │ ├── typed-events.js
│ │ │ ├── url.d.ts
│ │ │ └── url.js
│ │ ├── dist
│ │ │ ├── socket.io.js
│ │ │ ├── socket.io.js.map
│ │ │ ├── socket.io.min.js
│ │ │ ├── socket.io.min.js.map
│ │ │ ├── socket.io.msgpack.min.js
│ │ │ └── socket.io.msgpack.min.js.map
│ │ ├── package.json
│ │ └── wrapper.mjs
│ ├── socket.io-parser
│ │ ├── CHANGELOG.md
│ │ ├── LICENSE
│ │ ├── Readme.md
│ │ ├── dist
│ │ │ ├── binary.d.ts
│ │ │ ├── binary.js
│ │ │ ├── index.d.ts
│ │ │ ├── index.js
│ │ │ ├── is-binary.d.ts
│ │ │ └── is-binary.js
│ │ └── package.json
│ ├── ws
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── browser.js
│ │ ├── index.js
│ │ ├── lib
│ │ │ ├── buffer-util.js
│ │ │ ├── constants.js
│ │ │ ├── event-target.js
│ │ │ ├── extension.js
│ │ │ ├── limiter.js
│ │ │ ├── permessage-deflate.js
│ │ │ ├── receiver.js
│ │ │ ├── sender.js
│ │ │ ├── stream.js
│ │ │ ├── validation.js
│ │ │ ├── websocket-server.js
│ │ │ └── websocket.js
│ │ └── package.json
│ └── yeast
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── index.js
│ │ └── package.json
├── package-lock.json
└── package.json
├── license.md
├── media
└── img
│ ├── CH-Diagram-transparent.png
│ ├── CH-Diagram.png
│ ├── CH-Small-Logo-NoText.png
│ ├── CH-Title.png
│ ├── Collab-Hub-Style.jpg
│ ├── Max-Logo.png
│ ├── become-a-patron-button.png
│ ├── for-bpatchers
│ ├── CH-Chat-Title.png
│ ├── CH-Client-Title.png
│ ├── CH-Controls-Title.png
│ ├── CH-Events-Title.png
│ ├── CH-Rooms-Title.png
│ └── CH-Titles.svg
│ └── for-readme
│ ├── Chat-Cap.jpeg
│ ├── Chat-Cap.png
│ ├── Client-Cap.png
│ ├── Controls-Cap.jpeg
│ ├── Demo-Cap.png
│ ├── Events-Cap.jpeg
│ ├── Rooms-Cap.jpeg
│ └── Script-Cap.png
├── package-info.json
├── patchers
├── CH-Chat.maxpat
├── CH-Client.maxpat
├── CH-ClientTesting.maxpat
├── CH-Controls.maxpat
├── CH-Events.maxpat
├── CH-Rooms.maxpat
└── CH-Together.bak.maxpat
└── templates
└── collab-hub-template.maxpat
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .vscode
3 |
4 |
--------------------------------------------------------------------------------
/clippings/to_from_Server.maxpat:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 5,
7 | "revision" : 2,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 160.0, 140.0, 640.0, 480.0 ],
14 | "bglocked" : 0,
15 | "openinpresentation" : 0,
16 | "default_fontsize" : 12.0,
17 | "default_fontface" : 0,
18 | "default_fontname" : "Arial",
19 | "gridonopen" : 1,
20 | "gridsize" : [ 15.0, 15.0 ],
21 | "gridsnaponopen" : 1,
22 | "objectsnaponopen" : 1,
23 | "statusbarvisible" : 2,
24 | "toolbarvisible" : 1,
25 | "lefttoolbarpinned" : 0,
26 | "toptoolbarpinned" : 0,
27 | "righttoolbarpinned" : 0,
28 | "bottomtoolbarpinned" : 0,
29 | "toolbars_unpinned_last_save" : 0,
30 | "tallnewobj" : 0,
31 | "boxanimatetime" : 200,
32 | "enablehscroll" : 1,
33 | "enablevscroll" : 1,
34 | "devicewidth" : 0.0,
35 | "description" : "",
36 | "digest" : "",
37 | "tags" : "",
38 | "style" : "",
39 | "subpatcher_template" : "",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "id" : "obj-28",
44 | "maxclass" : "newobj",
45 | "numinlets" : 0,
46 | "numoutlets" : 1,
47 | "outlettype" : [ "" ],
48 | "patching_rect" : [ 17.0, 90.0, 97.0, 22.0 ],
49 | "text" : "r fromCH-Server"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-1",
56 | "maxclass" : "newobj",
57 | "numinlets" : 1,
58 | "numoutlets" : 0,
59 | "patching_rect" : [ 17.0, 50.0, 85.0, 22.0 ],
60 | "text" : "s toCH-Server"
61 | }
62 |
63 | }
64 | ],
65 | "lines" : [ ],
66 | "dependency_cache" : [ ],
67 | "autosave" : 0,
68 | "styles" : [ {
69 | "name" : "AudioStatus_Menu",
70 | "default" : {
71 | "bgfillcolor" : {
72 | "angle" : 270,
73 | "autogradient" : 0,
74 | "color" : [ 0.294118, 0.313726, 0.337255, 1 ],
75 | "color1" : [ 0.454902, 0.462745, 0.482353, 0 ],
76 | "color2" : [ 0.290196, 0.309804, 0.301961, 1 ],
77 | "proportion" : 0.39,
78 | "type" : "color"
79 | }
80 |
81 | }
82 | ,
83 | "parentstyle" : "",
84 | "multi" : 0
85 | }
86 | , {
87 | "name" : "blues",
88 | "default" : {
89 | "accentcolor" : [ 0.691232, 0.993878, 0.999509, 1.0 ],
90 | "bgcolor" : [ 0.240323, 0.247547, 0.573641, 1.0 ],
91 | "bgfillcolor" : {
92 | "angle" : 270.0,
93 | "autogradient" : 0,
94 | "color" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
95 | "color1" : [ 0.0, 0.078431, 0.321569, 1.0 ],
96 | "color2" : [ 0.240323, 0.247547, 0.573641, 1.0 ],
97 | "proportion" : 0.39,
98 | "type" : "gradient"
99 | }
100 | ,
101 | "color" : [ 0.897845, 0.934085, 0.993504, 1.0 ],
102 | "elementcolor" : [ 0.0, 0.078431, 0.321569, 1.0 ],
103 | "patchlinecolor" : [ 0.495624, 0.529709, 0.636972, 0.9 ],
104 | "textcolor" : [ 0.0, 0.078431, 0.321569, 1.0 ],
105 | "textcolor_inverse" : [ 1.0, 1.0, 1.0, 1.0 ]
106 | }
107 | ,
108 | "parentstyle" : "",
109 | "multi" : 0
110 | }
111 | , {
112 | "name" : "max6box",
113 | "default" : {
114 | "accentcolor" : [ 0.8, 0.839216, 0.709804, 1.0 ],
115 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.5 ],
116 | "textcolor_inverse" : [ 0.0, 0.0, 0.0, 1.0 ]
117 | }
118 | ,
119 | "parentstyle" : "",
120 | "multi" : 0
121 | }
122 | , {
123 | "name" : "max6inlet",
124 | "default" : {
125 | "color" : [ 0.423529, 0.372549, 0.27451, 1.0 ]
126 | }
127 | ,
128 | "parentstyle" : "",
129 | "multi" : 0
130 | }
131 | , {
132 | "name" : "max6message",
133 | "default" : {
134 | "bgfillcolor" : {
135 | "angle" : 270.0,
136 | "autogradient" : 0,
137 | "color" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
138 | "color1" : [ 0.866667, 0.866667, 0.866667, 1.0 ],
139 | "color2" : [ 0.788235, 0.788235, 0.788235, 1.0 ],
140 | "proportion" : 0.39,
141 | "type" : "gradient"
142 | }
143 | ,
144 | "textcolor_inverse" : [ 0.0, 0.0, 0.0, 1.0 ]
145 | }
146 | ,
147 | "parentstyle" : "max6box",
148 | "multi" : 0
149 | }
150 | , {
151 | "name" : "max6outlet",
152 | "default" : {
153 | "color" : [ 0.0, 0.454902, 0.498039, 1.0 ]
154 | }
155 | ,
156 | "parentstyle" : "",
157 | "multi" : 0
158 | }
159 | ]
160 | }
161 |
162 | }
163 |
--------------------------------------------------------------------------------
/docs/refpages/CH-Chat.maxref.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Chat Module for Collab-Hub
7 |
8 |
9 |
10 | Send chat messages to other clients. Messages can be sent to specific destinations of a username, a roomname, or keyword 'all'. Chat messages will appear in the right-side panel.
11 |
12 |
13 |
14 |
15 | Nick Hwang, Eric Sheffield, and Anthony T. Marasco
16 | Collab-Hub
17 | Networking
18 | Chat
19 |
20 |
21 |
22 |
23 |
24 | All Collab-Hub components have one inlet which can be used to send messages to the Server. Please see CH-Client for available messages.
25 |
26 |
27 |
28 |
29 |
30 |
31 | All Collab-Hub components have one outlet which can be used to route incoming messages from the Server.
32 |
33 |
34 |
35 |
36 |
41 |
42 |
43 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/docs/refpages/CH-Client.maxref.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Connect to the Collab-Hub Server. Client Module for Collab-Hub.
8 |
9 |
10 |
11 | When using Collab-Hub, only one instance of the CH-Client module is needed. If you have more than one instance of the CH-Client module, disable all but one of them.
12 |
13 |
14 |
15 |
16 | Nick Hwang, Eric Sheffield, and Anthony T. Marasco
17 | Collab-Hub
18 | Networking
19 | Client
20 |
21 |
22 |
23 |
24 |
25 | All Collab-Hub components have one inlet which can be used to send messages to the Server. Please see CH-Client for available messages.
26 |
27 |
28 |
29 |
30 |
31 |
32 | Incoming data messages.
33 |
34 |
35 |
36 |
37 |
38 |
39 | Enable or disable the Client Module
40 |
41 |
42 |
43 |
44 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
--------------------------------------------------------------------------------
/docs/refpages/CH-ClientTesting.maxref.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Node Debugging for Client Module.
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Nick Hwang, Eric Sheffield, and Anthony T. Marasco
16 | Collab-Hub
17 | Networking
18 | Client
19 |
20 |
21 |
22 |
23 |
24 | All Collab-Hub components have one inlet which can be used to send messages to the Server. Please see CH-Client for available messages.
25 |
26 |
27 |
28 |
29 |
30 |
31 | Incoming data messages.
32 |
33 |
34 |
35 |
36 |
41 |
42 |
43 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
--------------------------------------------------------------------------------
/docs/refpages/CH-Controls.maxref.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Observe Published Controls on the Collab-Hub Server.
8 |
9 |
10 |
11 | One method of sharing data is through Publishing and Observing Controls.
12 | When a Control is published and is available, you can observe that Control. You observe Controls in Max with the CH-Control module.
13 |
14 |
15 |
16 |
17 | Nick Hwang, Eric Sheffield, and Anthony T. Marasco
18 | Collab-Hub
19 | Networking
20 | Client
21 |
22 |
23 |
24 |
25 |
26 | All Collab-Hub components have one inlet which can be used to send messages to the Server. Please see CH-Client for available messages.
27 |
28 |
29 |
30 |
31 |
32 |
33 | Incoming data messages.
34 |
35 |
36 |
37 |
38 |
43 |
44 |
45 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/docs/refpages/CH-Events.maxref.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Observe Published Events on the Collab-Hub Server.
8 |
9 |
10 |
11 | One method of sharing data is through Publishing and Observing Events.
12 | When an Event is published and is available, you can observe that Event. You observe Events in Max with the CH-Events module.
13 |
14 |
15 |
16 |
17 |
18 | Nick Hwang, Eric Sheffield, and Anthony T. Marasco
19 | Collab-Hub
20 | Networking
21 | Client
22 |
23 |
24 |
25 |
26 |
27 | All Collab-Hub components have one inlet which can be used to send messages to the Server. Please see CH-Client for available messages.
28 |
29 |
30 |
31 |
32 |
33 |
34 | Incoming data messages.
35 |
36 |
37 |
38 |
39 |
44 |
45 |
46 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/docs/refpages/CH-Rooms.maxref.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Rooms Module for Collab-Hub.
8 |
9 |
10 |
11 | Users can create, join, and leave rooms. Rooms may be used to share data (Controls and Events).
12 |
13 |
14 |
15 |
16 | Nick Hwang, Eric Sheffield, and Anthony T. Marasco
17 | Collab-Hub
18 | Networking
19 | Client
20 |
21 |
22 |
23 |
24 |
25 | All Collab-Hub components have one inlet which can be used to send messages to the Server. Please see CH-Client for available messages.
26 |
27 |
28 |
29 |
30 |
31 |
32 | Incoming data messages.
33 |
34 |
35 |
36 |
37 |
42 |
43 |
44 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/docs/refpages/Collab-Hub Modules.maxref.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | The Collection of Collab-Hub Modules.
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Nick Hwang, Eric Sheffield, and Anthony T. Marasco
15 | Collab-Hub
16 | Networking
17 | Chat
18 |
19 |
20 |
21 |
22 |
23 | All Collab-Hub components have one inlet which can be used to send messages to the Server. Please see CH-Client for available messages.
24 |
25 |
26 |
27 |
28 |
29 |
30 | Audio signal: Left channel output.
31 |
32 |
33 | Audio signal: Right channel output.
34 |
35 |
36 |
37 |
38 |
43 |
44 |
45 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/docs/refpages/_c74_ref_modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 | max-ref
22 | jit-ref
23 | kernel-ref
24 | msp-ref
25 | m4l-ref
26 |
--------------------------------------------------------------------------------
/docs/topics/Collab-Hub_topic.maxvig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Nick Hwang
6 | Collab-Hub
7 |
8 |
9 | Collab-Hub Package
10 | Collab-Hub is a server-based networking tool for sharing control data and
11 | events between creative applications - built off Node.Js and libraries we’ve
12 | written it work with Max, PD, Arduino,
13 | Web, JS libraries, and more.
14 | These modules are part of the Max client.
15 |
16 |
17 | Other clients for Collab-Hub can be found at http://www.collab-hub.io .
18 |
19 |
20 | Collab-Hub Max Modules
21 |
22 |
23 | CH-Client - Connect to the Collab-Hub Server.
24 |
25 | CH-Chat - Chat with other users.
26 |
27 | CH-Events - Observe Event data.
28 |
29 | CH-Controls - Observe Control data.
30 |
31 | CH-Rooms - Create, Join, and Leave Rooms on the server.
32 |
33 | CH-ClientTesting - Connect to the Collab-Hub Server.
34 |
35 | Collab-Hub Modules All Together
36 |
37 |
38 |
39 | Web Interface
40 |
45 |
46 | Tutorials
47 |
48 |
49 | Tutorial Index: Collab-Hub: Getting Started
50 |
51 | Tutorial 01: Getting Connected
52 |
53 | Tutorial 02: Sending Data
54 |
55 | Tutorial 03: Receiving Data
56 |
57 | Tutorial 04: Rooms
58 |
59 | Tutorial 04: Push and Publish
60 |
61 |
62 | Concepts
63 |
64 |
65 |
66 | Concepts: Push, Publish, Rooms - Understand Push, Publish, and Rooms
67 |
68 | Concepts: Controls and Events - Understand Controls and Events
69 |
70 |
71 |
72 |
73 | Example Patches
74 |
75 |
76 |
77 | Simple Routing - Example patch for routing
78 |
79 | Cross Platform Drums - Trigger drum synths (in Max and Web)
80 |
81 | Sequencer Trader - Collaboratively create a drum sequence
82 |
83 | Mapping Mapping-Strategies.maxpat - Examples in creative mapping.
84 |
85 |
86 |
87 |
88 |
89 |
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/00-ch-index.maxtut.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Getting Connected
7 |
8 | Collab-Hub: Getting Started
9 |
10 | Collab-Hub is a server-based networking tool for sharing control data and events between creative applications - built off Node.Js and libraries, we've written it work with Max, PD, Arduino, Web, JS libraries, and more. These modules are part of the Max client.
11 |
12 |
13 | Other clients for Collab-Hub can be found at http://www.collab-hub.io .
14 |
15 |
16 | Getting Started with Collab-Hub with Max
17 | If you've never used Collab-Hub, please use this tutorial to familiarize yourself with the modules. The following tutorials will guide you through
18 |
19 | connecting to and disconnecting from the Collab-Hub server and changing your username
20 | sending and receiving data
21 | observing data
22 | creating and managing rooms
23 |
24 |
25 | While following along, the Collab-Hub Web Interface will help you understand your interaction with Collab-Hub. The Web Interface is acting as another user/client on the server, which can do all the same things the Max modules can do: send and receive data, change username, join and leave rooms, observe to published data, and send/receive chat.
26 |
27 | Further Questions? Feel free to email us at info@collab-hub.io. Or visit our Discord at https://discord.com/invite/NANZf5RuRV .
28 |
29 | Topics
30 |
31 | Tutorial 01: Getting Connected
32 | Tutorial 02: Sending Data
33 | Tutorial 03: Receiving Data
34 | Tutorial 04: Rooms
35 | Tutorial 04: Push and Publish
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/01-Getting Connected.maxtut.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Creating objects and connections
8 |
9 |
10 | Sending Data
11 | Collab-Hub Tutorials
12 |
13 |
14 | Nick Hwang
15 | Collab-Hub
16 |
17 |
18 |
19 |
20 | Connecting to and disconnecting from the Collab-Hub server
21 | The CH-Client is the module that connects you to the server.
22 | The Collab-Hub Client Module
23 | Clicking on 'Connect' will initiate the connection with the server.
24 | You should receive feedback when connected...
25 |
26 | the button on the top-right corner of the module will light up.
27 | the 'Connect' button will change to 'Disconnect'.
28 | a 'serverMessage' should appear in the Max Console, with version number of the server.
29 | a 'Username' button with your current username.
30 |
31 |
32 | You are now connected to the server with your username.
33 |
34 |
35 |
36 | The Collab-Hub Client Module showing a connection to the Server, current username, and list of connected users.
37 |
38 | Using multiple CH-Client modules
39 | You can have multiple CH-Client modules in your Max patch, but only one module should be connected to the server.
40 | The modules are aware of each other and will only allow one connection to the server at a time. A pop-up dialog window will warn you if you try to connect to the server while another module is already connected.
41 |
42 | The pop-up dialog warning of multiple connections, offering the option to connect with a different CH-Client module.
43 | Because only one module can connect to the server at a time, we suggest you check your connection and messages using the Collab-Hub Demo Interface . You will be able to see your username on the user list, send and receive messages, and all other actions. See later tutorials for details.
44 |
45 |
46 |
47 | Disconnecting from the server
48 | To disconnect from the server, click on the Disconnect button.
49 |
50 | Change your Username
51 | You can change your username by clicking on your username -- a dialog window will appear.
52 | After you have input a new username, click on 'OK '.
53 | A new 'serverMessage' will appear in the Max Console: 'Username updated:...'
54 | Dialog for Username input
55 |
56 |
57 | Summary
58 | The Collab-Hub Client Module is the module that connects you to the server. It is the only module which can connect to the server. All other modules receive information from the CH-Client module. After the client module connects, you can change your username and send a 'simple chat' message to all users.
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/04-Rooms.maxtut.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Receiving Data
10 | Push and Publish
11 | Collab-Hub Tutorials
12 | Rooms
13 |
14 |
15 | Nick Hwang
16 | Collab-Hub
17 |
18 |
19 |
20 | Rooms
21 |
22 | Rooms for Routing
23 |
24 | While following along, the Collab-Hub Web Interface will help you understand your interaction with Collab-Hub. The Web Interface is acting as another user/client on the server, which can do all the same things the Max modules can do: send and receive data, change username, join and leave rooms, observe to published data, and send/receive chat.
25 |
26 |
27 | Rooms are a feature of Collab-Hub that allows for users to route messages to users with them. You can send messages to users within in rooms whether you are also in the room or not. Through our Max Package, you are able to create, join, and leave rooms.
28 | All message types (Control, Event, and Chat) can be routed to rooms.
29 | When you create a room, you are automatically joined to the room. If you are last to leave the room, the room is deleted.
30 |
31 |
32 |
33 | Create, Join, and Leave rooms with the CH-Rooms module.
34 |
35 |
36 | Details on Rooms
37 | You can see the other users within in a room by clicking on the Details button in the CH-Rooms module
38 |
39 |
40 |
41 |
42 | See the users in each room.
43 |
44 | Sending data to Rooms
45 | Previously, we set the 'target' component of our messages to 'all'. If you are using rooms with collaborators, you can send messages by naming the room as the second item in the message list:
46 | [mode] [roomname] [header] [values]
47 |
48 |
49 | Try Sending Data to a Room
50 | Try creating a room and joining from the CH-Room module. Then send a message to the room from the Web Interface:
51 |
52 | At the time of writing this tutorial, webSlider4 and webEvent4 send to room '123'. In Max, you can create and join a room '123', and you should be able to send webSlider4 and webEvent4 messages to Max -- make sure to set up your route object for those particular headers.
53 | The web interface will push the message to the room. If you're in that room, you'll receive that message.
54 |
55 | You can also try sending to a room from the Max module. In the Max module, you can send messages to the room by setting the target to the roomname.
56 |
57 | More Info
58 | Please look at the Rooms tab in our Concepts: Push, Publish, Rooms patcher for more information on Rooms.
59 | We have included a 'clipping' of how you might use a Umenu to populate room options. You might find this useful if you want to dynamically send messages to users in different rooms.
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/_c74_tut.xsl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/01a_CH-Client.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/01a_CH-Client.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/01b_CH-Client_Connected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/01b_CH-Client_Connected.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/01c_CH-Client_Change_Username.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/01c_CH-Client_Change_Username.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/01d_CH-Client_Multiple_Connections.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/01d_CH-Client_Multiple_Connections.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/02_CH-Client_inlets_outlets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/02_CH-Client_inlets_outlets.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/02_Control_Value.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/02_Control_Value.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/02_Control_XY.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/02_Control_XY.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/02_Event_Targets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/02_Event_Targets.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/02_to_and_from_Server.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/02_to_and_from_Server.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/03_Route_by_Header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/03_Route_by_Header.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/03_Using Sender Flags.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/03_Using Sender Flags.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/04-Rooms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/04-Rooms.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/04-Rooms_Details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/04-Rooms_Details.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/05-CH-Controls details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/05-CH-Controls details.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/05-CH-Controls module.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/05-CH-Controls module.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/05-CH-Events details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/05-CH-Events details.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/05-CH-Events module.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/05-CH-Events module.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/05-Publish Max Example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/05-Publish Max Example.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/images/05-Push Max Example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/docs/tutorials/ch-tut/images/05-Push Max Example.png
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/tzeropage.html:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Max Tutorial Zero: Always Save Your Work
10 |
11 |
12 | Tutorial Zero: Always Save Your Work
13 |
14 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/docs/tutorials/ch-tut/tzeropage.js:
--------------------------------------------------------------------------------
1 | // tzeropage.js
2 |
3 | function InsertSampleMovie(filename)
4 | {
5 | document.write('\n');
6 | document.write(' \n');
7 | document.write(' \n');
8 | document.write(' \n');
9 | document.write(' \n');
10 | document.write(' ')
11 | document.write(' \n');
12 | }
13 |
--------------------------------------------------------------------------------
/examples/README.md:
--------------------------------------------------------------------------------
1 | # Examples
2 |
3 | The patches in this folder are provided for general demonstration and use during workshops.
--------------------------------------------------------------------------------
/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/icon.png
--------------------------------------------------------------------------------
/javascript/CH-Chat-JS.js:
--------------------------------------------------------------------------------
1 | (function (){
2 | window.max.bindInlet("chat", setMessage);
3 | window.max.bindInlet("clear", clearMessages);
4 |
5 | let chatnode = document.querySelector("#chat-main");
6 |
7 | function clearMessages() {
8 | chatnode.innerHTML = "";
9 | }
10 |
11 | function setMessage(message) {
12 | console.log("set message");
13 | let index = message.indexOf(":");
14 |
15 | let sender = message.substring(0, index);
16 | max.outlet("sender", sender);
17 | let chat = message.substring(index, message.length);
18 | const newnode = document.createElement("li");
19 | newnode.innerHTML = `${sender} ${chat} `;
20 | document.getElementById("chat-main").prepend(newnode);
21 | // document.getElementById("chat-main").appendChild(newnode);
22 | }
23 | })();
--------------------------------------------------------------------------------
/javascript/CH-Chat-UI.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
53 |
54 |
55 |
95 |
96 |
97 |
102 |
103 |
104 |
--------------------------------------------------------------------------------
/javascript/CH-ClientInstanceManager.js:
--------------------------------------------------------------------------------
1 | // Edited: 3/4/2022 - Nick Hwang
2 | // keeps track of connected client modules, using a dictionary
3 | // helps handle disconnect and reconnect scenarios regarding multiple clients
4 |
5 | inlets = 1;
6 | outlets = 1;
7 |
8 | var CH_CLIENT_DICT_NAME = "CH-Clients";
9 | var clientDict = new Dict(CH_CLIENT_DICT_NAME);
10 |
11 | var thisClient;
12 |
13 | function start() {
14 | // post("start, keys?:", clientDict.getkeys());
15 | }
16 |
17 | function client() {
18 | var a = arrayfromargs(messagename, arguments);
19 | // post("received message " + a + "\n");
20 | thisClient = a[1].toString();
21 |
22 | clientDict.set(thisClient, thisClient);
23 | if (clientDict.get("connected") != null && clientDict.getkeys().length == 2) {
24 | // post("removing connected bc we have no more clients \n");
25 | clientDict.remove("connected");
26 | }
27 | }
28 |
29 | function close() {
30 | // post("closing " + thisClient + "\n");
31 | if (clientDict.contains(thisClient)) {
32 | clientDict.remove(thisClient);
33 | }
34 |
35 | // max dictionary sometimes includes carriage return / line breaks. Remove them.
36 | var connectedClient = clientDict.contains("connected") ? clientDict.get("connected").toString().replace(/[\r\n]+/ig, "") : null;
37 |
38 | if (
39 | clientDict.contains("connected") &&
40 | connectedClient == thisClient
41 | ) {
42 | clientDict.remove("connected");
43 | }
44 |
45 | if (clientDict.getkeys() == null) {
46 | return;
47 | }
48 |
49 | if (clientDict.getkeys().length == 9 && clientDict.contains("connected")) {
50 | clientDict.remove("connected");
51 | }
52 | }
53 |
54 | // attempt to connect, but first check if already connected
55 | function attempt() {
56 | var a = arrayfromargs(messagename, arguments);
57 | // post("received attempt: " + thisClient + "\n");
58 |
59 | // max dictionary sometimes includes carriage return / line breaks. Remove them.
60 | var connectedClient = clientDict.contains("connected") ? clientDict.get("connected").toString().replace(/[\r\n]+/ig, "") : null;
61 |
62 | if (
63 | clientDict.contains("connected") &&
64 | connectedClient != thisClient
65 | ) {
66 | // another module is connected, so we need to load a popup
67 | outlet(0, "popup");
68 | } else {
69 | // post("no other connections, so connect this module \n");
70 | outlet(0, "connect");
71 | }
72 | }
73 |
74 | // from client module
75 | function connection() {
76 | var a = arrayfromargs(messagename, arguments);
77 |
78 | // disconnect, remove from 'connected'
79 | // max dictionary sometimes includes carriage return / line breaks. Remove them.
80 | var connectedClient = clientDict.contains("connected") ? clientDict.get("connected").toString().replace(/[\r\n]+/ig, "") : null;
81 |
82 | if (arguments[0] == "0" && connectedClient == thisClient) {
83 | clientDict.remove("connected");
84 | }
85 |
86 | if (arguments[0] == "1") {
87 | clientDict.set("connected", thisClient + "\n");
88 | }
89 | }
90 |
91 | function confirm() {
92 | var a = arrayfromargs(messagename, arguments);
93 | // post("received confirm: " + arguments[0] + "\n");
94 |
95 | // max dictionary sometimes includes carriage return / line breaks. Remove them.
96 | var connectedClient = clientDict.contains("connected") ? clientDict.get("connected").toString().replace(/[\r\n]+/ig, "") : null;
97 |
98 | // remove current client from dictionary
99 | // send disconnect message to old client
100 | // send a connect message to this client
101 | if (
102 | clientDict.contains("connected") &&
103 | connectedClient != thisClient
104 | ) {
105 |
106 | var _message = "disconnect " + clientDict.get("connected").toString();
107 | // post("disconnect message: " + _message);
108 | // outlet(0, "disconnect", clientDict.get("connected").toString());
109 | outlet(0, _message);
110 | outlet(0, "connect");
111 | // post("disconnecting " + clientDict.get("connected"));
112 | return;
113 | }
114 | }
--------------------------------------------------------------------------------
/javascript/CH_Palette.maxpalette:
--------------------------------------------------------------------------------
1 | {
2 | "label" : "CH_Palette",
3 | "usercolors" : [ {
4 | "colorinfo" : [ 0.0, 0.6, 0.2, 1.0, 0.0, 0.6, 0.2, 1.0, "mix with black", 0, 0.0 ]
5 | }
6 | , {
7 | "colorinfo" : [ 0.6, 0.8, 0.6, 1.0, 0.6, 0.8, 0.6, 1.0, "mix with black", 0, 0.0 ]
8 | }
9 | , {
10 | "colorinfo" : [ 0.12156862745098, 0.207843137254902, 0.847058823529412, 1.0, 0.12156862745098, 0.207843137254902, 0.847058823529412, 1.0, "mix with black", 0, 0.0 ]
11 | }
12 | , {
13 | "colorinfo" : [ 0.019607843137255, 0.019607843137255, 0.019607843137255, 1.0, 0.015686274509804, 0.015686274509804, 0.015686274509804, 1.0, "mix with black", 1, 1.0 ]
14 | }
15 | , {
16 | "colorinfo" : [ 0.6, 0.8, 0.6, 1.0, 0.6, 0.8, 0.6, 1.0, "mix with black", 0, 0.0 ]
17 | }
18 | , {
19 | "colorinfo" : [ 0.831372549019608, 0.831372549019608, 0.831372549019608, 1.0, 0.576470588235294, 0.576470588235294, 0.576470588235294, 1.0, "mix with black", 2, 1.0 ]
20 | }
21 | , {
22 | "colorinfo" : [ 0.831372549019608, 0.831372549019608, 0.831372549019608, 1.0, 0.831372549019608, 0.831372549019608, 0.831372549019608, 1.0, "mix with black", 0, 1.0 ]
23 | }
24 | , {
25 | "colorinfo" : [ 0.831372549019608, 0.831372549019608, 0.831372549019608, 1.0, 0.450980392156863, 0.450980392156863, 0.450980392156863, 1.0, "mix with black", 3, 1.0 ]
26 | }
27 | , {
28 | "colorinfo" : [ 0.831372549019608, 0.831372549019608, 0.831372549019608, 1.0, 0.329411764705882, 0.329411764705882, 0.329411764705882, 1.0, "mix with black", 4, 1.0 ]
29 | }
30 | , {
31 | "colorinfo" : [ 0.831372549019608, 0.831372549019608, 0.831372549019608, 1.0, 0.329411764705882, 0.329411764705882, 0.329411764705882, 1.0, "mix with black", 4, 1.0 ]
32 | }
33 | , {
34 | "colorinfo" : [ 0.831372549019608, 0.831372549019608, 0.831372549019608, 1.0, 0.329411764705882, 0.329411764705882, 0.329411764705882, 1.0, "mix with black", 4, 1.0 ]
35 | }
36 | , {
37 |
38 | }
39 | , {
40 |
41 | }
42 | , {
43 |
44 | }
45 | , {
46 |
47 | }
48 | , {
49 |
50 | }
51 | , {
52 |
53 | }
54 | , {
55 |
56 | }
57 | , {
58 |
59 | }
60 | , {
61 | "colorinfo" : [ 0.831372549019608, 0.047058823529412, 0.047058823529412, 1.0, 0.701960784313725, 0.03921568627451, 0.03921568627451, 1.0, "mix with black", 1, 1.0 ]
62 | }
63 | , {
64 | "colorinfo" : [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, "mix with black", 0, 0.0 ]
65 | }
66 | , {
67 | "colorinfo" : [ 0.72156862745098, 0.850980392156863, 0.694117647058824, 1.0, 0.72156862745098, 0.850980392156863, 0.694117647058824, 1.0, "mix with black", 0, 1.0 ]
68 | }
69 | , {
70 | "colorinfo" : [ 0.184312760829926, 0.184312760829926, 0.184312760829926, 1.0, 0.184312760829926, 0.184312760829926, 0.184312760829926, 1.0, "mix with black", 0, 1.0 ]
71 | }
72 | , {
73 |
74 | }
75 | , {
76 |
77 | }
78 | , {
79 |
80 | }
81 | , {
82 |
83 | }
84 | , {
85 |
86 | }
87 | , {
88 |
89 | }
90 | , {
91 | "colorinfo" : [ 0.2, 0.2, 0.2, 1.0, 0.2, 0.2, 0.2, 1.0, "mix with black", 0, 0.0 ]
92 | }
93 | ]
94 | }
95 |
--------------------------------------------------------------------------------
/javascript/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "namespace": "hub",
3 | "username": "",
4 | "server": ""
5 | }
--------------------------------------------------------------------------------
/javascript/node_modules/@types/component-emitter/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) Microsoft Corporation.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE
22 |
--------------------------------------------------------------------------------
/javascript/node_modules/@types/component-emitter/README.md:
--------------------------------------------------------------------------------
1 | # Installation
2 | > `npm install --save @types/component-emitter`
3 |
4 | # Summary
5 | This package contains type definitions for component-emitter (https://www.npmjs.com/package/component-emitter).
6 |
7 | # Details
8 | Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/component-emitter.
9 |
10 | ### Additional Details
11 | * Last updated: Wed, 09 Sep 2020 21:18:32 GMT
12 | * Dependencies: none
13 | * Global values: none
14 |
15 | # Credits
16 | These definitions were written by [Peter Snider](https://github.com/psnider).
17 |
--------------------------------------------------------------------------------
/javascript/node_modules/@types/component-emitter/index.d.ts:
--------------------------------------------------------------------------------
1 | // Type definitions for component-emitter v1.2.1
2 | // Project: https://www.npmjs.com/package/component-emitter
3 | // Definitions by: Peter Snider
4 | // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
5 |
6 | // TypeScript Version: 2.2
7 |
8 | interface Emitter {
9 | on(event: Event, listener: Function): Emitter;
10 | once(event: Event, listener: Function): Emitter;
11 | off(event?: Event, listener?: Function): Emitter;
12 | emit(event: Event, ...args: any[]): Emitter;
13 | listeners(event: Event): Function[];
14 | hasListeners(event: Event): boolean;
15 | }
16 |
17 | declare const Emitter: {
18 | (obj?: object): Emitter;
19 | new (obj?: object): Emitter;
20 | };
21 |
22 | export = Emitter;
23 |
--------------------------------------------------------------------------------
/javascript/node_modules/@types/component-emitter/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "@types/component-emitter@^1.2.10",
3 | "_id": "@types/component-emitter@1.2.10",
4 | "_inBundle": false,
5 | "_integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg==",
6 | "_location": "/@types/component-emitter",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "@types/component-emitter@^1.2.10",
12 | "name": "@types/component-emitter",
13 | "escapedName": "@types%2fcomponent-emitter",
14 | "scope": "@types",
15 | "rawSpec": "^1.2.10",
16 | "saveSpec": null,
17 | "fetchSpec": "^1.2.10"
18 | },
19 | "_requiredBy": [
20 | "/socket.io-client",
21 | "/socket.io-parser"
22 | ],
23 | "_resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz",
24 | "_shasum": "ef5b1589b9f16544642e473db5ea5639107ef3ea",
25 | "_spec": "@types/component-emitter@^1.2.10",
26 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/socket.io-client",
27 | "bugs": {
28 | "url": "https://github.com/DefinitelyTyped/DefinitelyTyped/issues"
29 | },
30 | "bundleDependencies": false,
31 | "contributors": [
32 | {
33 | "name": "Peter Snider",
34 | "url": "https://github.com/psnider"
35 | }
36 | ],
37 | "dependencies": {},
38 | "deprecated": false,
39 | "description": "TypeScript definitions for component-emitter",
40 | "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped#readme",
41 | "license": "MIT",
42 | "main": "",
43 | "name": "@types/component-emitter",
44 | "repository": {
45 | "type": "git",
46 | "url": "git+https://github.com/DefinitelyTyped/DefinitelyTyped.git",
47 | "directory": "types/component-emitter"
48 | },
49 | "scripts": {},
50 | "typeScriptVersion": "3.1",
51 | "types": "index.d.ts",
52 | "typesPublisherContentHash": "446bfc6b04cc0bdf3afbaa65ac393c5c9056ab15d158199b96d266059c762403",
53 | "version": "1.2.10"
54 | }
55 |
--------------------------------------------------------------------------------
/javascript/node_modules/backo2/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 |
--------------------------------------------------------------------------------
/javascript/node_modules/backo2/History.md:
--------------------------------------------------------------------------------
1 |
2 | 1.0.1 / 2014-02-17
3 | ==================
4 |
5 | * go away decimal point
6 | * history
7 |
8 | 1.0.0 / 2014-02-17
9 | ==================
10 |
11 | * add jitter option
12 | * Initial commit
13 |
--------------------------------------------------------------------------------
/javascript/node_modules/backo2/Makefile:
--------------------------------------------------------------------------------
1 |
2 | test:
3 | @./node_modules/.bin/mocha \
4 | --require should \
5 | --reporter dot \
6 | --bail
7 |
8 | .PHONY: test
--------------------------------------------------------------------------------
/javascript/node_modules/backo2/Readme.md:
--------------------------------------------------------------------------------
1 | # backo
2 |
3 | Simple exponential backoff because the others seem to have weird abstractions.
4 |
5 | ## Installation
6 |
7 | ```
8 | $ npm install backo
9 | ```
10 |
11 | ## Options
12 |
13 | - `min` initial timeout in milliseconds [100]
14 | - `max` max timeout [10000]
15 | - `jitter` [0]
16 | - `factor` [2]
17 |
18 | ## Example
19 |
20 | ```js
21 | var Backoff = require('backo');
22 | var backoff = new Backoff({ min: 100, max: 20000 });
23 |
24 | setTimeout(function(){
25 | something.reconnect();
26 | }, backoff.duration());
27 |
28 | // later when something works
29 | backoff.reset()
30 | ```
31 |
32 | # License
33 |
34 | MIT
35 |
--------------------------------------------------------------------------------
/javascript/node_modules/backo2/component.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "backo",
3 | "repo": "segmentio/backo",
4 | "dependencies": {},
5 | "version": "1.0.1",
6 | "description": "simple backoff without the weird abstractions",
7 | "keywords": ["backoff"],
8 | "license": "MIT",
9 | "scripts": ["index.js"],
10 | "main": "index.js"
11 | }
12 |
--------------------------------------------------------------------------------
/javascript/node_modules/backo2/index.js:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Expose `Backoff`.
4 | */
5 |
6 | module.exports = Backoff;
7 |
8 | /**
9 | * Initialize backoff timer with `opts`.
10 | *
11 | * - `min` initial timeout in milliseconds [100]
12 | * - `max` max timeout [10000]
13 | * - `jitter` [0]
14 | * - `factor` [2]
15 | *
16 | * @param {Object} opts
17 | * @api public
18 | */
19 |
20 | function Backoff(opts) {
21 | opts = opts || {};
22 | this.ms = opts.min || 100;
23 | this.max = opts.max || 10000;
24 | this.factor = opts.factor || 2;
25 | this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;
26 | this.attempts = 0;
27 | }
28 |
29 | /**
30 | * Return the backoff duration.
31 | *
32 | * @return {Number}
33 | * @api public
34 | */
35 |
36 | Backoff.prototype.duration = function(){
37 | var ms = this.ms * Math.pow(this.factor, this.attempts++);
38 | if (this.jitter) {
39 | var rand = Math.random();
40 | var deviation = Math.floor(rand * this.jitter * ms);
41 | ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;
42 | }
43 | return Math.min(ms, this.max) | 0;
44 | };
45 |
46 | /**
47 | * Reset the number of attempts.
48 | *
49 | * @api public
50 | */
51 |
52 | Backoff.prototype.reset = function(){
53 | this.attempts = 0;
54 | };
55 |
56 | /**
57 | * Set the minimum duration
58 | *
59 | * @api public
60 | */
61 |
62 | Backoff.prototype.setMin = function(min){
63 | this.ms = min;
64 | };
65 |
66 | /**
67 | * Set the maximum duration
68 | *
69 | * @api public
70 | */
71 |
72 | Backoff.prototype.setMax = function(max){
73 | this.max = max;
74 | };
75 |
76 | /**
77 | * Set the jitter
78 | *
79 | * @api public
80 | */
81 |
82 | Backoff.prototype.setJitter = function(jitter){
83 | this.jitter = jitter;
84 | };
85 |
86 |
--------------------------------------------------------------------------------
/javascript/node_modules/backo2/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "backo2@~1.0.2",
3 | "_id": "backo2@1.0.2",
4 | "_inBundle": false,
5 | "_integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=",
6 | "_location": "/backo2",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "backo2@~1.0.2",
12 | "name": "backo2",
13 | "escapedName": "backo2",
14 | "rawSpec": "~1.0.2",
15 | "saveSpec": null,
16 | "fetchSpec": "~1.0.2"
17 | },
18 | "_requiredBy": [
19 | "/socket.io-client"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
22 | "_shasum": "31ab1ac8b129363463e35b3ebb69f4dfcfba7947",
23 | "_spec": "backo2@~1.0.2",
24 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/socket.io-client",
25 | "bugs": {
26 | "url": "https://github.com/mokesmokes/backo/issues"
27 | },
28 | "bundleDependencies": false,
29 | "dependencies": {},
30 | "deprecated": false,
31 | "description": "simple backoff based on segmentio/backo",
32 | "devDependencies": {
33 | "mocha": "*",
34 | "should": "*"
35 | },
36 | "homepage": "https://github.com/mokesmokes/backo#readme",
37 | "keywords": [
38 | "backoff"
39 | ],
40 | "license": "MIT",
41 | "name": "backo2",
42 | "repository": {
43 | "type": "git",
44 | "url": "git+https://github.com/mokesmokes/backo.git"
45 | },
46 | "version": "1.0.2"
47 | }
48 |
--------------------------------------------------------------------------------
/javascript/node_modules/backo2/test/index.js:
--------------------------------------------------------------------------------
1 |
2 | var Backoff = require('..');
3 | var assert = require('assert');
4 |
5 | describe('.duration()', function(){
6 | it('should increase the backoff', function(){
7 | var b = new Backoff;
8 |
9 | assert(100 == b.duration());
10 | assert(200 == b.duration());
11 | assert(400 == b.duration());
12 | assert(800 == b.duration());
13 |
14 | b.reset();
15 | assert(100 == b.duration());
16 | assert(200 == b.duration());
17 | })
18 | })
--------------------------------------------------------------------------------
/javascript/node_modules/base64-arraybuffer/.npmignore:
--------------------------------------------------------------------------------
1 | /node_modules/
2 | Gruntfile.js
3 | /test/
4 |
--------------------------------------------------------------------------------
/javascript/node_modules/base64-arraybuffer/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - '0.12'
4 | - iojs-1
5 | - iojs-2
6 | - iojs-3
7 | - '4.1'
8 | before_script:
9 | - npm install
10 | before_install: npm install -g npm@'>=2.13.5'
11 | deploy:
12 | provider: npm
13 | email: niklasvh@gmail.com
14 | api_key:
15 | secure: oHV9ArprTj5WOk7MP1UF7QMJ70huXw+y7xXb5wF4+V2H8Hyfa5TfE0DiOmqrube1WXTeH1FLgq54shp/sJWi47Hkg/GyeoB5NnsPhYEaJkaON9UG5blML+ODiNVsEnq/1kNBQ8e0+0JItMPLGySKyFmuZ3yflulXKS8O88mfINo=
16 | on:
17 | tags: true
18 | branch: master
19 | repo: niklasvh/base64-arraybuffer
20 |
--------------------------------------------------------------------------------
/javascript/node_modules/base64-arraybuffer/LICENSE-MIT:
--------------------------------------------------------------------------------
1 | Copyright (c) 2012 Niklas von Hertzen
2 |
3 | Permission is hereby granted, free of charge, to any person
4 | obtaining a copy of this software and associated documentation
5 | files (the "Software"), to deal in the Software without
6 | restriction, including without limitation the rights to use,
7 | copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the
9 | Software is furnished to do so, subject to the following
10 | conditions:
11 |
12 | The above copyright notice and this permission notice shall be
13 | included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 | OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/javascript/node_modules/base64-arraybuffer/README.md:
--------------------------------------------------------------------------------
1 | # base64-arraybuffer
2 |
3 | [](https://travis-ci.org/niklasvh/base64-arraybuffer)
4 | [](https://www.npmjs.org/package/base64-arraybuffer)
5 | [](https://www.npmjs.org/package/base64-arraybuffer)
6 |
7 | Encode/decode base64 data into ArrayBuffers
8 |
9 | ## Getting Started
10 | Install the module with: `npm install base64-arraybuffer`
11 |
12 | ## API
13 | The library encodes and decodes base64 to and from ArrayBuffers
14 |
15 | - __encode(buffer)__ - Encodes `ArrayBuffer` into base64 string
16 | - __decode(str)__ - Decodes base64 string to `ArrayBuffer`
17 |
18 | ## License
19 | Copyright (c) 2012 Niklas von Hertzen
20 | Licensed under the MIT license.
21 |
--------------------------------------------------------------------------------
/javascript/node_modules/base64-arraybuffer/lib/base64-arraybuffer.js:
--------------------------------------------------------------------------------
1 | /*
2 | * base64-arraybuffer
3 | * https://github.com/niklasvh/base64-arraybuffer
4 | *
5 | * Copyright (c) 2012 Niklas von Hertzen
6 | * Licensed under the MIT license.
7 | */
8 | (function(chars){
9 | "use strict";
10 |
11 | exports.encode = function(arraybuffer) {
12 | var bytes = new Uint8Array(arraybuffer),
13 | i, len = bytes.length, base64 = "";
14 |
15 | for (i = 0; i < len; i+=3) {
16 | base64 += chars[bytes[i] >> 2];
17 | base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];
18 | base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];
19 | base64 += chars[bytes[i + 2] & 63];
20 | }
21 |
22 | if ((len % 3) === 2) {
23 | base64 = base64.substring(0, base64.length - 1) + "=";
24 | } else if (len % 3 === 1) {
25 | base64 = base64.substring(0, base64.length - 2) + "==";
26 | }
27 |
28 | return base64;
29 | };
30 |
31 | exports.decode = function(base64) {
32 | var bufferLength = base64.length * 0.75,
33 | len = base64.length, i, p = 0,
34 | encoded1, encoded2, encoded3, encoded4;
35 |
36 | if (base64[base64.length - 1] === "=") {
37 | bufferLength--;
38 | if (base64[base64.length - 2] === "=") {
39 | bufferLength--;
40 | }
41 | }
42 |
43 | var arraybuffer = new ArrayBuffer(bufferLength),
44 | bytes = new Uint8Array(arraybuffer);
45 |
46 | for (i = 0; i < len; i+=4) {
47 | encoded1 = chars.indexOf(base64[i]);
48 | encoded2 = chars.indexOf(base64[i+1]);
49 | encoded3 = chars.indexOf(base64[i+2]);
50 | encoded4 = chars.indexOf(base64[i+3]);
51 |
52 | bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);
53 | bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);
54 | bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);
55 | }
56 |
57 | return arraybuffer;
58 | };
59 | })("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");
60 |
--------------------------------------------------------------------------------
/javascript/node_modules/base64-arraybuffer/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "base64-arraybuffer@0.1.4",
3 | "_id": "base64-arraybuffer@0.1.4",
4 | "_inBundle": false,
5 | "_integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=",
6 | "_location": "/base64-arraybuffer",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "base64-arraybuffer@0.1.4",
12 | "name": "base64-arraybuffer",
13 | "escapedName": "base64-arraybuffer",
14 | "rawSpec": "0.1.4",
15 | "saveSpec": null,
16 | "fetchSpec": "0.1.4"
17 | },
18 | "_requiredBy": [
19 | "/engine.io-client",
20 | "/engine.io-parser"
21 | ],
22 | "_resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
23 | "_shasum": "9818c79e059b1355f97e0428a017c838e90ba812",
24 | "_spec": "base64-arraybuffer@0.1.4",
25 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/engine.io-client",
26 | "author": {
27 | "name": "Niklas von Hertzen",
28 | "email": "niklasvh@gmail.com",
29 | "url": "http://hertzen.com"
30 | },
31 | "bugs": {
32 | "url": "https://github.com/niklasvh/base64-arraybuffer/issues"
33 | },
34 | "bundleDependencies": false,
35 | "deprecated": false,
36 | "description": "Encode/decode base64 data into ArrayBuffers",
37 | "devDependencies": {
38 | "grunt": "^0.4.5",
39 | "grunt-cli": "^0.1.13",
40 | "grunt-contrib-jshint": "^0.11.2",
41 | "grunt-contrib-nodeunit": "^0.4.1",
42 | "grunt-contrib-watch": "^0.6.1"
43 | },
44 | "engines": {
45 | "node": ">= 0.6.0"
46 | },
47 | "homepage": "https://github.com/niklasvh/base64-arraybuffer",
48 | "keywords": [],
49 | "licenses": [
50 | {
51 | "type": "MIT",
52 | "url": "https://github.com/niklasvh/base64-arraybuffer/blob/master/LICENSE-MIT"
53 | }
54 | ],
55 | "main": "lib/base64-arraybuffer",
56 | "name": "base64-arraybuffer",
57 | "repository": {
58 | "type": "git",
59 | "url": "git+https://github.com/niklasvh/base64-arraybuffer.git"
60 | },
61 | "scripts": {
62 | "test": "grunt nodeunit"
63 | },
64 | "version": "0.1.4"
65 | }
66 |
--------------------------------------------------------------------------------
/javascript/node_modules/component-emitter/History.md:
--------------------------------------------------------------------------------
1 |
2 | 1.3.0 / 2018-04-15
3 | ==================
4 |
5 | * removed bower support
6 | * expose emitter on `exports`
7 | * prevent de-optimization from using `arguments`
8 |
9 | 1.2.1 / 2016-04-18
10 | ==================
11 |
12 | * enable client side use
13 |
14 | 1.2.0 / 2014-02-12
15 | ==================
16 |
17 | * prefix events with `$` to support object prototype method names
18 |
19 | 1.1.3 / 2014-06-20
20 | ==================
21 |
22 | * republish for npm
23 | * add LICENSE file
24 |
25 | 1.1.2 / 2014-02-10
26 | ==================
27 |
28 | * package: rename to "component-emitter"
29 | * package: update "main" and "component" fields
30 | * Add license to Readme (same format as the other components)
31 | * created .npmignore
32 | * travis stuff
33 |
34 | 1.1.1 / 2013-12-01
35 | ==================
36 |
37 | * fix .once adding .on to the listener
38 | * docs: Emitter#off()
39 | * component: add `.repo` prop
40 |
41 | 1.1.0 / 2013-10-20
42 | ==================
43 |
44 | * add `.addEventListener()` and `.removeEventListener()` aliases
45 |
46 | 1.0.1 / 2013-06-27
47 | ==================
48 |
49 | * add support for legacy ie
50 |
51 | 1.0.0 / 2013-02-26
52 | ==================
53 |
54 | * add `.off()` support for removing all listeners
55 |
56 | 0.0.6 / 2012-10-08
57 | ==================
58 |
59 | * add `this._callbacks` initialization to prevent funky gotcha
60 |
61 | 0.0.5 / 2012-09-07
62 | ==================
63 |
64 | * fix `Emitter.call(this)` usage
65 |
66 | 0.0.3 / 2012-07-11
67 | ==================
68 |
69 | * add `.listeners()`
70 | * rename `.has()` to `.hasListeners()`
71 |
72 | 0.0.2 / 2012-06-28
73 | ==================
74 |
75 | * fix `.off()` with `.once()`-registered callbacks
76 |
--------------------------------------------------------------------------------
/javascript/node_modules/component-emitter/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014 Component contributors
4 |
5 | Permission is hereby granted, free of charge, to any person
6 | obtaining a copy of this software and associated documentation
7 | files (the "Software"), to deal in the Software without
8 | restriction, including without limitation the rights to use,
9 | copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the
11 | Software is furnished to do so, subject to the following
12 | conditions:
13 |
14 | The above copyright notice and this permission notice shall be
15 | included in all copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
19 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
21 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
22 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
24 | OTHER DEALINGS IN THE SOFTWARE.
25 |
--------------------------------------------------------------------------------
/javascript/node_modules/component-emitter/Readme.md:
--------------------------------------------------------------------------------
1 | # Emitter [](https://travis-ci.org/component/emitter)
2 |
3 | Event emitter component.
4 |
5 | ## Installation
6 |
7 | ```
8 | $ component install component/emitter
9 | ```
10 |
11 | ## API
12 |
13 | ### Emitter(obj)
14 |
15 | The `Emitter` may also be used as a mixin. For example
16 | a "plain" object may become an emitter, or you may
17 | extend an existing prototype.
18 |
19 | As an `Emitter` instance:
20 |
21 | ```js
22 | var Emitter = require('emitter');
23 | var emitter = new Emitter;
24 | emitter.emit('something');
25 | ```
26 |
27 | As a mixin:
28 |
29 | ```js
30 | var Emitter = require('emitter');
31 | var user = { name: 'tobi' };
32 | Emitter(user);
33 |
34 | user.emit('im a user');
35 | ```
36 |
37 | As a prototype mixin:
38 |
39 | ```js
40 | var Emitter = require('emitter');
41 | Emitter(User.prototype);
42 | ```
43 |
44 | ### Emitter#on(event, fn)
45 |
46 | Register an `event` handler `fn`.
47 |
48 | ### Emitter#once(event, fn)
49 |
50 | Register a single-shot `event` handler `fn`,
51 | removed immediately after it is invoked the
52 | first time.
53 |
54 | ### Emitter#off(event, fn)
55 |
56 | * Pass `event` and `fn` to remove a listener.
57 | * Pass `event` to remove all listeners on that event.
58 | * Pass nothing to remove all listeners on all events.
59 |
60 | ### Emitter#emit(event, ...)
61 |
62 | Emit an `event` with variable option args.
63 |
64 | ### Emitter#listeners(event)
65 |
66 | Return an array of callbacks, or an empty array.
67 |
68 | ### Emitter#hasListeners(event)
69 |
70 | Check if this emitter has `event` handlers.
71 |
72 | ## License
73 |
74 | MIT
75 |
--------------------------------------------------------------------------------
/javascript/node_modules/component-emitter/index.js:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Expose `Emitter`.
4 | */
5 |
6 | if (typeof module !== 'undefined') {
7 | module.exports = Emitter;
8 | }
9 |
10 | /**
11 | * Initialize a new `Emitter`.
12 | *
13 | * @api public
14 | */
15 |
16 | function Emitter(obj) {
17 | if (obj) return mixin(obj);
18 | };
19 |
20 | /**
21 | * Mixin the emitter properties.
22 | *
23 | * @param {Object} obj
24 | * @return {Object}
25 | * @api private
26 | */
27 |
28 | function mixin(obj) {
29 | for (var key in Emitter.prototype) {
30 | obj[key] = Emitter.prototype[key];
31 | }
32 | return obj;
33 | }
34 |
35 | /**
36 | * Listen on the given `event` with `fn`.
37 | *
38 | * @param {String} event
39 | * @param {Function} fn
40 | * @return {Emitter}
41 | * @api public
42 | */
43 |
44 | Emitter.prototype.on =
45 | Emitter.prototype.addEventListener = function(event, fn){
46 | this._callbacks = this._callbacks || {};
47 | (this._callbacks['$' + event] = this._callbacks['$' + event] || [])
48 | .push(fn);
49 | return this;
50 | };
51 |
52 | /**
53 | * Adds an `event` listener that will be invoked a single
54 | * time then automatically removed.
55 | *
56 | * @param {String} event
57 | * @param {Function} fn
58 | * @return {Emitter}
59 | * @api public
60 | */
61 |
62 | Emitter.prototype.once = function(event, fn){
63 | function on() {
64 | this.off(event, on);
65 | fn.apply(this, arguments);
66 | }
67 |
68 | on.fn = fn;
69 | this.on(event, on);
70 | return this;
71 | };
72 |
73 | /**
74 | * Remove the given callback for `event` or all
75 | * registered callbacks.
76 | *
77 | * @param {String} event
78 | * @param {Function} fn
79 | * @return {Emitter}
80 | * @api public
81 | */
82 |
83 | Emitter.prototype.off =
84 | Emitter.prototype.removeListener =
85 | Emitter.prototype.removeAllListeners =
86 | Emitter.prototype.removeEventListener = function(event, fn){
87 | this._callbacks = this._callbacks || {};
88 |
89 | // all
90 | if (0 == arguments.length) {
91 | this._callbacks = {};
92 | return this;
93 | }
94 |
95 | // specific event
96 | var callbacks = this._callbacks['$' + event];
97 | if (!callbacks) return this;
98 |
99 | // remove all handlers
100 | if (1 == arguments.length) {
101 | delete this._callbacks['$' + event];
102 | return this;
103 | }
104 |
105 | // remove specific handler
106 | var cb;
107 | for (var i = 0; i < callbacks.length; i++) {
108 | cb = callbacks[i];
109 | if (cb === fn || cb.fn === fn) {
110 | callbacks.splice(i, 1);
111 | break;
112 | }
113 | }
114 |
115 | // Remove event specific arrays for event types that no
116 | // one is subscribed for to avoid memory leak.
117 | if (callbacks.length === 0) {
118 | delete this._callbacks['$' + event];
119 | }
120 |
121 | return this;
122 | };
123 |
124 | /**
125 | * Emit `event` with the given args.
126 | *
127 | * @param {String} event
128 | * @param {Mixed} ...
129 | * @return {Emitter}
130 | */
131 |
132 | Emitter.prototype.emit = function(event){
133 | this._callbacks = this._callbacks || {};
134 |
135 | var args = new Array(arguments.length - 1)
136 | , callbacks = this._callbacks['$' + event];
137 |
138 | for (var i = 1; i < arguments.length; i++) {
139 | args[i - 1] = arguments[i];
140 | }
141 |
142 | if (callbacks) {
143 | callbacks = callbacks.slice(0);
144 | for (var i = 0, len = callbacks.length; i < len; ++i) {
145 | callbacks[i].apply(this, args);
146 | }
147 | }
148 |
149 | return this;
150 | };
151 |
152 | /**
153 | * Return array of callbacks for `event`.
154 | *
155 | * @param {String} event
156 | * @return {Array}
157 | * @api public
158 | */
159 |
160 | Emitter.prototype.listeners = function(event){
161 | this._callbacks = this._callbacks || {};
162 | return this._callbacks['$' + event] || [];
163 | };
164 |
165 | /**
166 | * Check if this emitter has `event` handlers.
167 | *
168 | * @param {String} event
169 | * @return {Boolean}
170 | * @api public
171 | */
172 |
173 | Emitter.prototype.hasListeners = function(event){
174 | return !! this.listeners(event).length;
175 | };
176 |
--------------------------------------------------------------------------------
/javascript/node_modules/component-emitter/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "component-emitter@~1.3.0",
3 | "_id": "component-emitter@1.3.0",
4 | "_inBundle": false,
5 | "_integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
6 | "_location": "/component-emitter",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "component-emitter@~1.3.0",
12 | "name": "component-emitter",
13 | "escapedName": "component-emitter",
14 | "rawSpec": "~1.3.0",
15 | "saveSpec": null,
16 | "fetchSpec": "~1.3.0"
17 | },
18 | "_requiredBy": [
19 | "/engine.io-client",
20 | "/socket.io-client",
21 | "/socket.io-parser"
22 | ],
23 | "_resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
24 | "_shasum": "16e4070fba8ae29b679f2215853ee181ab2eabc0",
25 | "_spec": "component-emitter@~1.3.0",
26 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/socket.io-client",
27 | "bugs": {
28 | "url": "https://github.com/component/emitter/issues"
29 | },
30 | "bundleDependencies": false,
31 | "component": {
32 | "scripts": {
33 | "emitter/index.js": "index.js"
34 | }
35 | },
36 | "deprecated": false,
37 | "description": "Event emitter",
38 | "devDependencies": {
39 | "mocha": "*",
40 | "should": "*"
41 | },
42 | "files": [
43 | "index.js",
44 | "LICENSE"
45 | ],
46 | "homepage": "https://github.com/component/emitter#readme",
47 | "license": "MIT",
48 | "main": "index.js",
49 | "name": "component-emitter",
50 | "repository": {
51 | "type": "git",
52 | "url": "git+https://github.com/component/emitter.git"
53 | },
54 | "scripts": {
55 | "test": "make test"
56 | },
57 | "version": "1.3.0"
58 | }
59 |
--------------------------------------------------------------------------------
/javascript/node_modules/debug/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014 TJ Holowaychuk
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software
6 | and associated documentation files (the 'Software'), to deal in the Software without restriction,
7 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
9 | subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in all copies or substantial
12 | portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
15 | LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
16 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
17 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
18 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
20 |
--------------------------------------------------------------------------------
/javascript/node_modules/debug/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "debug@~4.3.1",
3 | "_id": "debug@4.3.1",
4 | "_inBundle": false,
5 | "_integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
6 | "_location": "/debug",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "debug@~4.3.1",
12 | "name": "debug",
13 | "escapedName": "debug",
14 | "rawSpec": "~4.3.1",
15 | "saveSpec": null,
16 | "fetchSpec": "~4.3.1"
17 | },
18 | "_requiredBy": [
19 | "/engine.io-client",
20 | "/socket.io-client",
21 | "/socket.io-parser"
22 | ],
23 | "_resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
24 | "_shasum": "f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee",
25 | "_spec": "debug@~4.3.1",
26 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/socket.io-client",
27 | "author": {
28 | "name": "TJ Holowaychuk",
29 | "email": "tj@vision-media.ca"
30 | },
31 | "browser": "./src/browser.js",
32 | "bugs": {
33 | "url": "https://github.com/visionmedia/debug/issues"
34 | },
35 | "bundleDependencies": false,
36 | "contributors": [
37 | {
38 | "name": "Nathan Rajlich",
39 | "email": "nathan@tootallnate.net",
40 | "url": "http://n8.io"
41 | },
42 | {
43 | "name": "Andrew Rhyne",
44 | "email": "rhyneandrew@gmail.com"
45 | },
46 | {
47 | "name": "Josh Junon",
48 | "email": "josh@junon.me"
49 | }
50 | ],
51 | "dependencies": {
52 | "ms": "2.1.2"
53 | },
54 | "deprecated": false,
55 | "description": "small debugging utility",
56 | "devDependencies": {
57 | "brfs": "^2.0.1",
58 | "browserify": "^16.2.3",
59 | "coveralls": "^3.0.2",
60 | "istanbul": "^0.4.5",
61 | "karma": "^3.1.4",
62 | "karma-browserify": "^6.0.0",
63 | "karma-chrome-launcher": "^2.2.0",
64 | "karma-mocha": "^1.3.0",
65 | "mocha": "^5.2.0",
66 | "mocha-lcov-reporter": "^1.2.0",
67 | "xo": "^0.23.0"
68 | },
69 | "engines": {
70 | "node": ">=6.0"
71 | },
72 | "files": [
73 | "src",
74 | "LICENSE",
75 | "README.md"
76 | ],
77 | "homepage": "https://github.com/visionmedia/debug#readme",
78 | "keywords": [
79 | "debug",
80 | "log",
81 | "debugger"
82 | ],
83 | "license": "MIT",
84 | "main": "./src/index.js",
85 | "name": "debug",
86 | "peerDependenciesMeta": {
87 | "supports-color": {
88 | "optional": true
89 | }
90 | },
91 | "repository": {
92 | "type": "git",
93 | "url": "git://github.com/visionmedia/debug.git"
94 | },
95 | "scripts": {
96 | "lint": "xo",
97 | "test": "npm run test:node && npm run test:browser && npm run lint",
98 | "test:browser": "karma start --single-run",
99 | "test:coverage": "cat ./coverage/lcov.info | coveralls",
100 | "test:node": "istanbul cover _mocha -- test.js"
101 | },
102 | "version": "4.3.1"
103 | }
104 |
--------------------------------------------------------------------------------
/javascript/node_modules/debug/src/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Detect Electron renderer / nwjs process, which is node, but we should
3 | * treat as a browser.
4 | */
5 |
6 | if (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {
7 | module.exports = require('./browser.js');
8 | } else {
9 | module.exports = require('./node.js');
10 | }
11 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-client/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014-2015 Automattic
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-client/lib/globalThis.browser.js:
--------------------------------------------------------------------------------
1 | module.exports = (() => {
2 | if (typeof self !== "undefined") {
3 | return self;
4 | } else if (typeof window !== "undefined") {
5 | return window;
6 | } else {
7 | return Function("return this")();
8 | }
9 | })();
10 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-client/lib/globalThis.js:
--------------------------------------------------------------------------------
1 | module.exports = global;
2 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-client/lib/index.js:
--------------------------------------------------------------------------------
1 | const Socket = require("./socket");
2 |
3 | module.exports = (uri, opts) => new Socket(uri, opts);
4 |
5 | /**
6 | * Expose deps for legacy compatibility
7 | * and standalone browser access.
8 | */
9 |
10 | module.exports.Socket = Socket;
11 | module.exports.protocol = Socket.protocol; // this is an int
12 | module.exports.Transport = require("./transport");
13 | module.exports.transports = require("./transports/index");
14 | module.exports.parser = require("engine.io-parser");
15 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-client/lib/transport.js:
--------------------------------------------------------------------------------
1 | const parser = require("engine.io-parser");
2 | const Emitter = require("component-emitter");
3 |
4 | class Transport extends Emitter {
5 | /**
6 | * Transport abstract constructor.
7 | *
8 | * @param {Object} options.
9 | * @api private
10 | */
11 | constructor(opts) {
12 | super();
13 |
14 | this.opts = opts;
15 | this.query = opts.query;
16 | this.readyState = "";
17 | this.socket = opts.socket;
18 | }
19 |
20 | /**
21 | * Emits an error.
22 | *
23 | * @param {String} str
24 | * @return {Transport} for chaining
25 | * @api public
26 | */
27 | onError(msg, desc) {
28 | const err = new Error(msg);
29 | err.type = "TransportError";
30 | err.description = desc;
31 | this.emit("error", err);
32 | return this;
33 | }
34 |
35 | /**
36 | * Opens the transport.
37 | *
38 | * @api public
39 | */
40 | open() {
41 | if ("closed" === this.readyState || "" === this.readyState) {
42 | this.readyState = "opening";
43 | this.doOpen();
44 | }
45 |
46 | return this;
47 | }
48 |
49 | /**
50 | * Closes the transport.
51 | *
52 | * @api private
53 | */
54 | close() {
55 | if ("opening" === this.readyState || "open" === this.readyState) {
56 | this.doClose();
57 | this.onClose();
58 | }
59 |
60 | return this;
61 | }
62 |
63 | /**
64 | * Sends multiple packets.
65 | *
66 | * @param {Array} packets
67 | * @api private
68 | */
69 | send(packets) {
70 | if ("open" === this.readyState) {
71 | this.write(packets);
72 | } else {
73 | throw new Error("Transport not open");
74 | }
75 | }
76 |
77 | /**
78 | * Called upon open
79 | *
80 | * @api private
81 | */
82 | onOpen() {
83 | this.readyState = "open";
84 | this.writable = true;
85 | this.emit("open");
86 | }
87 |
88 | /**
89 | * Called with data.
90 | *
91 | * @param {String} data
92 | * @api private
93 | */
94 | onData(data) {
95 | const packet = parser.decodePacket(data, this.socket.binaryType);
96 | this.onPacket(packet);
97 | }
98 |
99 | /**
100 | * Called with a decoded packet.
101 | */
102 | onPacket(packet) {
103 | this.emit("packet", packet);
104 | }
105 |
106 | /**
107 | * Called upon close.
108 | *
109 | * @api private
110 | */
111 | onClose() {
112 | this.readyState = "closed";
113 | this.emit("close");
114 | }
115 | }
116 |
117 | module.exports = Transport;
118 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-client/lib/transports/index.js:
--------------------------------------------------------------------------------
1 | const XMLHttpRequest = require("../../contrib/xmlhttprequest-ssl/XMLHttpRequest");
2 | const XHR = require("./polling-xhr");
3 | const JSONP = require("./polling-jsonp");
4 | const websocket = require("./websocket");
5 |
6 | exports.polling = polling;
7 | exports.websocket = websocket;
8 |
9 | /**
10 | * Polling transport polymorphic constructor.
11 | * Decides on xhr vs jsonp based on feature detection.
12 | *
13 | * @api private
14 | */
15 |
16 | function polling(opts) {
17 | let xhr;
18 | let xd = false;
19 | let xs = false;
20 | const jsonp = false !== opts.jsonp;
21 |
22 | if (typeof location !== "undefined") {
23 | const isSSL = "https:" === location.protocol;
24 | let port = location.port;
25 |
26 | // some user agents have empty `location.port`
27 | if (!port) {
28 | port = isSSL ? 443 : 80;
29 | }
30 |
31 | xd = opts.hostname !== location.hostname || port !== opts.port;
32 | xs = opts.secure !== isSSL;
33 | }
34 |
35 | opts.xdomain = xd;
36 | opts.xscheme = xs;
37 | xhr = new XMLHttpRequest(opts);
38 |
39 | if ("open" in xhr && !opts.forceJSONP) {
40 | return new XHR(opts);
41 | } else {
42 | if (!jsonp) throw new Error("JSONP disabled");
43 | return new JSONP(opts);
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-client/lib/transports/websocket-constructor.browser.js:
--------------------------------------------------------------------------------
1 | const globalThis = require("../globalThis");
2 |
3 | module.exports = {
4 | WebSocket: globalThis.WebSocket || globalThis.MozWebSocket,
5 | usingBrowserWebSocket: true,
6 | defaultBinaryType: "arraybuffer"
7 | };
8 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-client/lib/transports/websocket-constructor.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | WebSocket: require("ws"),
3 | usingBrowserWebSocket: false,
4 | defaultBinaryType: "nodebuffer"
5 | };
6 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-client/lib/util.js:
--------------------------------------------------------------------------------
1 | module.exports.pick = (obj, ...attr) => {
2 | return attr.reduce((acc, k) => {
3 | if (obj.hasOwnProperty(k)) {
4 | acc[k] = obj[k];
5 | }
6 | return acc;
7 | }, {});
8 | };
9 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-client/lib/xmlhttprequest.js:
--------------------------------------------------------------------------------
1 | // browser shim for xmlhttprequest module
2 |
3 | const hasCORS = require("has-cors");
4 | const globalThis = require("./globalThis");
5 |
6 | module.exports = function(opts) {
7 | const xdomain = opts.xdomain;
8 |
9 | // scheme must be same when usign XDomainRequest
10 | // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx
11 | const xscheme = opts.xscheme;
12 |
13 | // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default.
14 | // https://github.com/Automattic/engine.io-client/pull/217
15 | const enablesXDR = opts.enablesXDR;
16 |
17 | // XMLHttpRequest can be disabled on IE
18 | try {
19 | if ("undefined" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {
20 | return new XMLHttpRequest();
21 | }
22 | } catch (e) {}
23 |
24 | // Use XDomainRequest for IE8 if enablesXDR is true
25 | // because loading bar keeps flashing when using jsonp-polling
26 | // https://github.com/yujiosaka/socke.io-ie8-loading-example
27 | try {
28 | if ("undefined" !== typeof XDomainRequest && !xscheme && enablesXDR) {
29 | return new XDomainRequest();
30 | }
31 | } catch (e) {}
32 |
33 | if (!xdomain) {
34 | try {
35 | return new globalThis[["Active"].concat("Object").join("X")](
36 | "Microsoft.XMLHTTP"
37 | );
38 | } catch (e) {}
39 | }
40 | };
41 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-client/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "engine.io-client@~5.0.0",
3 | "_id": "engine.io-client@5.0.0",
4 | "_inBundle": false,
5 | "_integrity": "sha512-e6GK0Fqvq45Nu/j7YdIVqXtDPvlsggAcfml3QiEiGdJ1qeh7IQU6knxSN3+yy9BmbnXtIfjo1hK4MFyHKdc9mQ==",
6 | "_location": "/engine.io-client",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "engine.io-client@~5.0.0",
12 | "name": "engine.io-client",
13 | "escapedName": "engine.io-client",
14 | "rawSpec": "~5.0.0",
15 | "saveSpec": null,
16 | "fetchSpec": "~5.0.0"
17 | },
18 | "_requiredBy": [
19 | "/socket.io-client"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-5.0.0.tgz",
22 | "_shasum": "65733887c8999d280e1dd7f241779a2c66e9559e",
23 | "_spec": "engine.io-client@~5.0.0",
24 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/socket.io-client",
25 | "browser": {
26 | "ws": false,
27 | "./contrib/xmlhttprequest-ssl/XMLHttpRequest.js": "./lib/xmlhttprequest.js",
28 | "./test/node.js": false,
29 | "./lib/transports/websocket-constructor.js": "./lib/transports/websocket-constructor.browser.js",
30 | "./lib/globalThis.js": "./lib/globalThis.browser.js"
31 | },
32 | "bugs": {
33 | "url": "https://github.com/socketio/engine.io-client/issues"
34 | },
35 | "bundleDependencies": false,
36 | "contributors": [
37 | {
38 | "name": "Guillermo Rauch",
39 | "email": "rauchg@gmail.com"
40 | },
41 | {
42 | "name": "Vladimir Dronnikov",
43 | "email": "dronnikov@gmail.com"
44 | },
45 | {
46 | "name": "Christoph Dorn",
47 | "url": "https://github.com/cadorn"
48 | },
49 | {
50 | "name": "Mark Mokryn",
51 | "email": "mokesmokes@gmail.com"
52 | }
53 | ],
54 | "dependencies": {
55 | "base64-arraybuffer": "0.1.4",
56 | "component-emitter": "~1.3.0",
57 | "debug": "~4.3.1",
58 | "engine.io-parser": "~4.0.1",
59 | "has-cors": "1.1.0",
60 | "parseqs": "0.0.6",
61 | "parseuri": "0.0.6",
62 | "ws": "~7.4.2",
63 | "yeast": "0.1.2"
64 | },
65 | "deprecated": false,
66 | "description": "Client for the realtime Engine",
67 | "devDependencies": {
68 | "@babel/core": "^7.12.9",
69 | "@babel/plugin-transform-object-assign": "^7.12.1",
70 | "@babel/preset-env": "^7.12.7",
71 | "babel-eslint": "^10.1.0",
72 | "babel-loader": "^8.2.2",
73 | "blob": "0.0.5",
74 | "engine.io": "4.0.2",
75 | "eslint": "^6.8.0",
76 | "eslint-config-prettier": "^6.15.0",
77 | "expect.js": "^0.3.1",
78 | "express": "^4.17.1",
79 | "mocha": "^3.2.0",
80 | "prettier": "^1.19.1",
81 | "socket.io-browsers": "~1.0.4",
82 | "webpack": "^4.44.2",
83 | "webpack-cli": "^3.3.12",
84 | "webpack-remove-debug": "^0.1.0",
85 | "zuul": "3.11.1",
86 | "zuul-builder-webpack": "^1.2.0",
87 | "zuul-ngrok": "4.0.0"
88 | },
89 | "files": [
90 | "index.js",
91 | "lib/",
92 | "dist/",
93 | "contrib/"
94 | ],
95 | "homepage": "https://github.com/socketio/engine.io-client",
96 | "license": "MIT",
97 | "main": "lib/index.js",
98 | "name": "engine.io-client",
99 | "repository": {
100 | "type": "git",
101 | "url": "git+https://github.com/socketio/engine.io-client.git"
102 | },
103 | "scripts": {
104 | "build": "webpack --config ./support/webpack.config.js --config ./support/prod.config.js",
105 | "format:check": "prettier --check 'lib/**/*.js' 'test/**/*.js' 'support/**/*.js'",
106 | "format:fix": "prettier --write 'lib/**/*.js' 'test/**/*.js' 'support/**/*.js'",
107 | "lint": "eslint lib/**/*.js test/**/*.js",
108 | "test": "npm run lint && npm run format:check && if test \"$BROWSERS\" = \"1\" ; then npm run test:browser; else npm run test:node; fi",
109 | "test:browser": "zuul test/index.js",
110 | "test:node": "mocha --reporter dot --require test/support/server.js test/index.js"
111 | },
112 | "version": "5.0.0"
113 | }
114 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-parser/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## [4.0.2](https://github.com/socketio/engine.io-parser/compare/4.0.1...4.0.2) (2020-12-07)
2 |
3 |
4 | ### Bug Fixes
5 |
6 | * add base64-arraybuffer as prod dependency ([2ccdeb2](https://github.com/socketio/engine.io-parser/commit/2ccdeb277955bed8742a29f2dcbbf57ca95eb12a))
7 |
8 |
9 | ## [2.2.1](https://github.com/socketio/engine.io-parser/compare/2.2.0...2.2.1) (2020-09-30)
10 |
11 |
12 | ## [4.0.1](https://github.com/socketio/engine.io-parser/compare/4.0.0...4.0.1) (2020-09-10)
13 |
14 |
15 | ### Bug Fixes
16 |
17 | * use a terser-compatible representation of the separator ([886f9ea](https://github.com/socketio/engine.io-parser/commit/886f9ea7c4e717573152c31320f6fb6c6664061b))
18 |
19 |
20 | # [4.0.0](https://github.com/socketio/engine.io-parser/compare/v4.0.0-alpha.1...4.0.0) (2020-09-08)
21 |
22 | This major release contains the necessary changes for the version 4 of the Engine.IO protocol. More information about the new version can be found [there](https://github.com/socketio/engine.io-protocol#difference-between-v3-and-v4).
23 |
24 | Encoding changes between v3 and v4:
25 |
26 | - encodePacket with string
27 | - input: `{ type: "message", data: "hello" }`
28 | - output in v3: `"4hello"`
29 | - output in v4: `"4hello"`
30 |
31 | - encodePacket with binary
32 | - input: `{ type: 'message', data: }`
33 | - output in v3: ``
34 | - output in v4: ``
35 |
36 | - encodePayload with strings
37 | - input: `[ { type: 'message', data: 'hello' }, { type: 'message', data: '€€€' } ]`
38 | - output in v3: `"6:4hello4:4€€€"`
39 | - output in v4: `"4hello\x1e4€€€"`
40 |
41 | - encodePayload with string and binary
42 | - input: `[ { type: 'message', data: 'hello' }, { type: 'message', data: } ]`
43 | - output in v3: ``
44 | - output in v4: `"4hello\x1ebAQID"`
45 |
46 | Please note that the parser is now dependency-free! This should help reduce the size of the browser bundle.
47 |
48 | ### Bug Fixes
49 |
50 | * keep track of the buffer initial length ([8edf2d1](https://github.com/socketio/engine.io-parser/commit/8edf2d1478026da442f519c2d2521af43ba01832))
51 |
52 |
53 | ### Features
54 |
55 | * restore the upgrade mechanism ([6efedfa](https://github.com/socketio/engine.io-parser/commit/6efedfa0f3048506a4ba99e70674ddf4c0732e0c))
56 |
57 |
58 |
59 | # [4.0.0-alpha.1](https://github.com/socketio/engine.io-parser/compare/v4.0.0-alpha.0...v4.0.0-alpha.1) (2020-05-19)
60 |
61 |
62 | ### Features
63 |
64 | * implement the version 4 of the protocol ([cab7db0](https://github.com/socketio/engine.io-parser/commit/cab7db0404e0a69f86a05ececd62c8c31f4d97d5))
65 |
66 |
67 |
68 | # [4.0.0-alpha.0](https://github.com/socketio/engine.io-parser/compare/2.2.0...v4.0.0-alpha.0) (2020-02-04)
69 |
70 |
71 | ### Bug Fixes
72 |
73 | * properly decode binary packets ([5085373](https://github.com/socketio/engine.io-parser/commit/50853738e0c6c16f9cee0d7887651155f4b78240))
74 |
75 |
76 | ### Features
77 |
78 | * remove packet type when encoding binary packets ([a947ae5](https://github.com/socketio/engine.io-parser/commit/a947ae59a2844e4041db58ff36b270d1528b3bee))
79 |
80 |
81 | ### BREAKING CHANGES
82 |
83 | * the packet containing binary data will now be sent without any transformation
84 |
85 | Protocol v3: { type: 'message', data: } =>
86 | Protocol v4: { type: 'message', data: } =>
87 |
88 |
89 |
90 | # [2.2.0](https://github.com/socketio/engine.io-parser/compare/2.1.3...2.2.0) (2019-09-13)
91 |
92 |
93 | * [refactor] Use `Buffer.allocUnsafe` instead of `new Buffer` (#104) ([aedf8eb](https://github.com/socketio/engine.io-parser/commit/aedf8eb29e8bf6aeb5c6cc68965d986c4c958ae2)), closes [#104](https://github.com/socketio/engine.io-parser/issues/104)
94 |
95 |
96 | ### BREAKING CHANGES
97 |
98 | * drop support for Node.js 4 (since Buffer.allocUnsafe was added in v5.10.0)
99 |
100 | Reference: https://nodejs.org/docs/latest/api/buffer.html#buffer_class_method_buffer_allocunsafe_size
101 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-parser/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2016 Guillermo Rauch (@rauchg)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-parser/lib/commons.js:
--------------------------------------------------------------------------------
1 | const PACKET_TYPES = Object.create(null); // no Map = no polyfill
2 | PACKET_TYPES["open"] = "0";
3 | PACKET_TYPES["close"] = "1";
4 | PACKET_TYPES["ping"] = "2";
5 | PACKET_TYPES["pong"] = "3";
6 | PACKET_TYPES["message"] = "4";
7 | PACKET_TYPES["upgrade"] = "5";
8 | PACKET_TYPES["noop"] = "6";
9 |
10 | const PACKET_TYPES_REVERSE = Object.create(null);
11 | Object.keys(PACKET_TYPES).forEach(key => {
12 | PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;
13 | });
14 |
15 | const ERROR_PACKET = { type: "error", data: "parser error" };
16 |
17 | module.exports = {
18 | PACKET_TYPES,
19 | PACKET_TYPES_REVERSE,
20 | ERROR_PACKET
21 | };
22 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-parser/lib/decodePacket.browser.js:
--------------------------------------------------------------------------------
1 | const { PACKET_TYPES_REVERSE, ERROR_PACKET } = require("./commons");
2 |
3 | const withNativeArrayBuffer = typeof ArrayBuffer === "function";
4 |
5 | let base64decoder;
6 | if (withNativeArrayBuffer) {
7 | base64decoder = require("base64-arraybuffer");
8 | }
9 |
10 | const decodePacket = (encodedPacket, binaryType) => {
11 | if (typeof encodedPacket !== "string") {
12 | return {
13 | type: "message",
14 | data: mapBinary(encodedPacket, binaryType)
15 | };
16 | }
17 | const type = encodedPacket.charAt(0);
18 | if (type === "b") {
19 | return {
20 | type: "message",
21 | data: decodeBase64Packet(encodedPacket.substring(1), binaryType)
22 | };
23 | }
24 | const packetType = PACKET_TYPES_REVERSE[type];
25 | if (!packetType) {
26 | return ERROR_PACKET;
27 | }
28 | return encodedPacket.length > 1
29 | ? {
30 | type: PACKET_TYPES_REVERSE[type],
31 | data: encodedPacket.substring(1)
32 | }
33 | : {
34 | type: PACKET_TYPES_REVERSE[type]
35 | };
36 | };
37 |
38 | const decodeBase64Packet = (data, binaryType) => {
39 | if (base64decoder) {
40 | const decoded = base64decoder.decode(data);
41 | return mapBinary(decoded, binaryType);
42 | } else {
43 | return { base64: true, data }; // fallback for old browsers
44 | }
45 | };
46 |
47 | const mapBinary = (data, binaryType) => {
48 | switch (binaryType) {
49 | case "blob":
50 | return data instanceof ArrayBuffer ? new Blob([data]) : data;
51 | case "arraybuffer":
52 | default:
53 | return data; // assuming the data is already an ArrayBuffer
54 | }
55 | };
56 |
57 | module.exports = decodePacket;
58 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-parser/lib/decodePacket.js:
--------------------------------------------------------------------------------
1 | const { PACKET_TYPES_REVERSE, ERROR_PACKET } = require("./commons");
2 |
3 | const decodePacket = (encodedPacket, binaryType) => {
4 | if (typeof encodedPacket !== "string") {
5 | return {
6 | type: "message",
7 | data: mapBinary(encodedPacket, binaryType)
8 | };
9 | }
10 | const type = encodedPacket.charAt(0);
11 | if (type === "b") {
12 | const buffer = Buffer.from(encodedPacket.substring(1), "base64");
13 | return {
14 | type: "message",
15 | data: mapBinary(buffer, binaryType)
16 | };
17 | }
18 | if (!PACKET_TYPES_REVERSE[type]) {
19 | return ERROR_PACKET;
20 | }
21 | return encodedPacket.length > 1
22 | ? {
23 | type: PACKET_TYPES_REVERSE[type],
24 | data: encodedPacket.substring(1)
25 | }
26 | : {
27 | type: PACKET_TYPES_REVERSE[type]
28 | };
29 | };
30 |
31 | const mapBinary = (data, binaryType) => {
32 | const isBuffer = Buffer.isBuffer(data);
33 | switch (binaryType) {
34 | case "arraybuffer":
35 | return isBuffer ? toArrayBuffer(data) : data;
36 | case "nodebuffer":
37 | default:
38 | return data; // assuming the data is already a Buffer
39 | }
40 | };
41 |
42 | const toArrayBuffer = buffer => {
43 | const arrayBuffer = new ArrayBuffer(buffer.length);
44 | const view = new Uint8Array(arrayBuffer);
45 | for (let i = 0; i < buffer.length; i++) {
46 | view[i] = buffer[i];
47 | }
48 | return arrayBuffer;
49 | };
50 |
51 | module.exports = decodePacket;
52 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-parser/lib/encodePacket.browser.js:
--------------------------------------------------------------------------------
1 | const { PACKET_TYPES } = require("./commons");
2 |
3 | const withNativeBlob =
4 | typeof Blob === "function" ||
5 | (typeof Blob !== "undefined" &&
6 | Object.prototype.toString.call(Blob) === "[object BlobConstructor]");
7 | const withNativeArrayBuffer = typeof ArrayBuffer === "function";
8 |
9 | // ArrayBuffer.isView method is not defined in IE10
10 | const isView = obj => {
11 | return typeof ArrayBuffer.isView === "function"
12 | ? ArrayBuffer.isView(obj)
13 | : obj && obj.buffer instanceof ArrayBuffer;
14 | };
15 |
16 | const encodePacket = ({ type, data }, supportsBinary, callback) => {
17 | if (withNativeBlob && data instanceof Blob) {
18 | if (supportsBinary) {
19 | return callback(data);
20 | } else {
21 | return encodeBlobAsBase64(data, callback);
22 | }
23 | } else if (
24 | withNativeArrayBuffer &&
25 | (data instanceof ArrayBuffer || isView(data))
26 | ) {
27 | if (supportsBinary) {
28 | return callback(data instanceof ArrayBuffer ? data : data.buffer);
29 | } else {
30 | return encodeBlobAsBase64(new Blob([data]), callback);
31 | }
32 | }
33 | // plain string
34 | return callback(PACKET_TYPES[type] + (data || ""));
35 | };
36 |
37 | const encodeBlobAsBase64 = (data, callback) => {
38 | const fileReader = new FileReader();
39 | fileReader.onload = function() {
40 | const content = fileReader.result.split(",")[1];
41 | callback("b" + content);
42 | };
43 | return fileReader.readAsDataURL(data);
44 | };
45 |
46 | module.exports = encodePacket;
47 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-parser/lib/encodePacket.js:
--------------------------------------------------------------------------------
1 | const { PACKET_TYPES } = require("./commons");
2 |
3 | const encodePacket = ({ type, data }, supportsBinary, callback) => {
4 | if (data instanceof ArrayBuffer || ArrayBuffer.isView(data)) {
5 | const buffer = toBuffer(data);
6 | return callback(encodeBuffer(buffer, supportsBinary));
7 | }
8 | // plain string
9 | return callback(PACKET_TYPES[type] + (data || ""));
10 | };
11 |
12 | const toBuffer = data => {
13 | if (Buffer.isBuffer(data)) {
14 | return data;
15 | } else if (data instanceof ArrayBuffer) {
16 | return Buffer.from(data);
17 | } else {
18 | return Buffer.from(data.buffer, data.byteOffset, data.byteLength);
19 | }
20 | };
21 |
22 | // only 'message' packets can contain binary, so the type prefix is not needed
23 | const encodeBuffer = (data, supportsBinary) => {
24 | return supportsBinary ? data : "b" + data.toString("base64");
25 | };
26 |
27 | module.exports = encodePacket;
28 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-parser/lib/index.js:
--------------------------------------------------------------------------------
1 | const encodePacket = require("./encodePacket");
2 | const decodePacket = require("./decodePacket");
3 |
4 | const SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text
5 |
6 | const encodePayload = (packets, callback) => {
7 | // some packets may be added to the array while encoding, so the initial length must be saved
8 | const length = packets.length;
9 | const encodedPackets = new Array(length);
10 | let count = 0;
11 |
12 | packets.forEach((packet, i) => {
13 | // force base64 encoding for binary packets
14 | encodePacket(packet, false, encodedPacket => {
15 | encodedPackets[i] = encodedPacket;
16 | if (++count === length) {
17 | callback(encodedPackets.join(SEPARATOR));
18 | }
19 | });
20 | });
21 | };
22 |
23 | const decodePayload = (encodedPayload, binaryType) => {
24 | const encodedPackets = encodedPayload.split(SEPARATOR);
25 | const packets = [];
26 | for (let i = 0; i < encodedPackets.length; i++) {
27 | const decodedPacket = decodePacket(encodedPackets[i], binaryType);
28 | packets.push(decodedPacket);
29 | if (decodedPacket.type === "error") {
30 | break;
31 | }
32 | }
33 | return packets;
34 | };
35 |
36 | module.exports = {
37 | protocol: 4,
38 | encodePacket,
39 | encodePayload,
40 | decodePacket,
41 | decodePayload
42 | };
43 |
--------------------------------------------------------------------------------
/javascript/node_modules/engine.io-parser/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "engine.io-parser@~4.0.1",
3 | "_id": "engine.io-parser@4.0.2",
4 | "_inBundle": false,
5 | "_integrity": "sha512-sHfEQv6nmtJrq6TKuIz5kyEKH/qSdK56H/A+7DnAuUPWosnIZAS2NHNcPLmyjtY3cGS/MqJdZbUjW97JU72iYg==",
6 | "_location": "/engine.io-parser",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "engine.io-parser@~4.0.1",
12 | "name": "engine.io-parser",
13 | "escapedName": "engine.io-parser",
14 | "rawSpec": "~4.0.1",
15 | "saveSpec": null,
16 | "fetchSpec": "~4.0.1"
17 | },
18 | "_requiredBy": [
19 | "/engine.io-client"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-4.0.2.tgz",
22 | "_shasum": "e41d0b3fb66f7bf4a3671d2038a154024edb501e",
23 | "_spec": "engine.io-parser@~4.0.1",
24 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/engine.io-client",
25 | "browser": {
26 | "./lib/encodePacket.js": "./lib/encodePacket.browser.js",
27 | "./lib/decodePacket.js": "./lib/decodePacket.browser.js"
28 | },
29 | "bugs": {
30 | "url": "https://github.com/socketio/engine.io-parser/issues"
31 | },
32 | "bundleDependencies": false,
33 | "dependencies": {
34 | "base64-arraybuffer": "0.1.4"
35 | },
36 | "deprecated": false,
37 | "description": "Parser for the client for the realtime Engine",
38 | "devDependencies": {
39 | "@babel/core": "~7.9.6",
40 | "@babel/preset-env": "~7.9.6",
41 | "babel-eslint": "^10.0.3",
42 | "babelify": "^10.0.0",
43 | "benchmark": "^2.1.4",
44 | "eslint": "^6.8.0",
45 | "eslint-config-prettier": "^6.9.0",
46 | "expect.js": "0.3.1",
47 | "mocha": "^5.2.0",
48 | "nyc": "~15.0.1",
49 | "prettier": "^1.19.1",
50 | "socket.io-browsers": "^1.0.4",
51 | "zuul": "3.11.1",
52 | "zuul-ngrok": "4.0.0"
53 | },
54 | "engines": {
55 | "node": ">=8.0.0"
56 | },
57 | "files": [
58 | "lib/"
59 | ],
60 | "homepage": "https://github.com/socketio/engine.io-parser",
61 | "license": "MIT",
62 | "main": "lib/index.js",
63 | "name": "engine.io-parser",
64 | "repository": {
65 | "type": "git",
66 | "url": "git+ssh://git@github.com/socketio/engine.io-parser.git"
67 | },
68 | "scripts": {
69 | "format:check": "prettier --check 'lib/**/*.js' 'test/**/*.js'",
70 | "format:fix": "prettier --write 'lib/**/*.js' 'test/**/*.js'",
71 | "lint": "eslint 'lib/**/*.js' 'test/**/*.js'",
72 | "test": "npm run lint && npm run format:check && if test \"$BROWSERS\" = \"1\" ; then npm run test:browser; else npm run test:node; fi",
73 | "test:browser": "zuul test/index.js --no-coverage",
74 | "test:node": "nyc mocha test/index.js"
75 | },
76 | "version": "4.0.2"
77 | }
78 |
--------------------------------------------------------------------------------
/javascript/node_modules/has-cors/.npmignore:
--------------------------------------------------------------------------------
1 | components
2 | build
3 | node_modules
4 |
--------------------------------------------------------------------------------
/javascript/node_modules/has-cors/History.md:
--------------------------------------------------------------------------------
1 |
2 | 1.1.0 / 2014-11-12
3 | ==================
4 |
5 | * remove "global" module dependency (#2, @achingbrain)
6 |
7 | 1.0.2 / 2013-08-27
8 | ==================
9 |
10 | * explicitly use `global` instead of being implicit
11 | * pin "component/global" to v2.0.1
12 |
13 | 1.0.1 / 2013-08-23
14 | ==================
15 |
16 | * package: add "component" section
17 |
18 | 1.0.0 / 2013-08-22
19 | ==================
20 |
21 | * Initial release
22 |
--------------------------------------------------------------------------------
/javascript/node_modules/has-cors/Makefile:
--------------------------------------------------------------------------------
1 |
2 | build: components index.js
3 | @component build --dev
4 |
5 | components: component.json
6 | @component install --dev
7 |
8 | clean:
9 | rm -fr build components template.js
10 |
11 | .PHONY: clean
12 |
--------------------------------------------------------------------------------
/javascript/node_modules/has-cors/Readme.md:
--------------------------------------------------------------------------------
1 |
2 | # has-cors
3 |
4 | Detects support for Cross-Origin Resource Sharing
5 |
6 | ## Installation
7 |
8 | Install with [component(1)](http://component.io):
9 |
10 | $ component install component/has-cors
11 |
12 | ## API
13 |
14 | Exports `true` if the user-agent supports CORS, or `false` otherwise.
15 |
16 | ``` js
17 | var hasCORS = require('has-cors');
18 | console.log(hasCORS);
19 | // true
20 | ```
21 |
22 | ## License
23 |
24 | MIT
25 |
--------------------------------------------------------------------------------
/javascript/node_modules/has-cors/component.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "has-cors",
3 | "repo": "component/has-cors",
4 | "description": "Detects support for Cross-Origin Resource Sharing",
5 | "version": "1.1.0",
6 | "keywords": [],
7 | "development": {},
8 | "license": "MIT",
9 | "main": "index.js",
10 | "scripts": [
11 | "index.js"
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/javascript/node_modules/has-cors/index.js:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * Module exports.
4 | *
5 | * Logic borrowed from Modernizr:
6 | *
7 | * - https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cors.js
8 | */
9 |
10 | try {
11 | module.exports = typeof XMLHttpRequest !== 'undefined' &&
12 | 'withCredentials' in new XMLHttpRequest();
13 | } catch (err) {
14 | // if XMLHttp support is disabled in IE then it will throw
15 | // when trying to create
16 | module.exports = false;
17 | }
18 |
--------------------------------------------------------------------------------
/javascript/node_modules/has-cors/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "has-cors@1.1.0",
3 | "_id": "has-cors@1.1.0",
4 | "_inBundle": false,
5 | "_integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=",
6 | "_location": "/has-cors",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "has-cors@1.1.0",
12 | "name": "has-cors",
13 | "escapedName": "has-cors",
14 | "rawSpec": "1.1.0",
15 | "saveSpec": null,
16 | "fetchSpec": "1.1.0"
17 | },
18 | "_requiredBy": [
19 | "/engine.io-client"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz",
22 | "_shasum": "5e474793f7ea9843d1bb99c23eef49ff126fff39",
23 | "_spec": "has-cors@1.1.0",
24 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/engine.io-client",
25 | "author": {
26 | "name": "Nathan Rajlich",
27 | "email": "nathan@tootallnate.net",
28 | "url": "http://n8.io/"
29 | },
30 | "bugs": {
31 | "url": "https://github.com/component/has-cors/issues"
32 | },
33 | "bundleDependencies": false,
34 | "component": {
35 | "scripts": {
36 | "has-cors/index.js": "index.js"
37 | }
38 | },
39 | "deprecated": false,
40 | "description": "Detects support for Cross-Origin Resource Sharing",
41 | "devDependencies": {
42 | "chai": "^1.10",
43 | "mocha": "^2.0"
44 | },
45 | "homepage": "https://github.com/component/has-cors#readme",
46 | "keywords": [
47 | "cors",
48 | "cross",
49 | "origin",
50 | "resource",
51 | "sharing",
52 | "domain"
53 | ],
54 | "license": "MIT",
55 | "main": "index.js",
56 | "name": "has-cors",
57 | "repository": {
58 | "type": "git",
59 | "url": "git://github.com/component/has-cors.git"
60 | },
61 | "scripts": {
62 | "test": "mocha"
63 | },
64 | "version": "1.1.0"
65 | }
66 |
--------------------------------------------------------------------------------
/javascript/node_modules/has-cors/test.js:
--------------------------------------------------------------------------------
1 | var expect = require('chai').expect;
2 |
3 | describe('has-cors', function() {
4 | beforeEach(function() {
5 | // make sure result is not cached
6 | delete require.cache[require.resolve('./')];
7 | });
8 |
9 | it('should not have cors', function() {
10 | var hasCors = require('./');
11 |
12 | expect(hasCors).to.be.false;
13 | });
14 |
15 | it('should have cors', function() {
16 | global.XMLHttpRequest = function() {
17 | this.withCredentials = true;
18 | };
19 |
20 | var hasCors = require('./');
21 |
22 | expect(hasCors).to.be.true;
23 | });
24 | });
25 |
--------------------------------------------------------------------------------
/javascript/node_modules/ms/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Helpers.
3 | */
4 |
5 | var s = 1000;
6 | var m = s * 60;
7 | var h = m * 60;
8 | var d = h * 24;
9 | var w = d * 7;
10 | var y = d * 365.25;
11 |
12 | /**
13 | * Parse or format the given `val`.
14 | *
15 | * Options:
16 | *
17 | * - `long` verbose formatting [false]
18 | *
19 | * @param {String|Number} val
20 | * @param {Object} [options]
21 | * @throws {Error} throw an error if val is not a non-empty string or a number
22 | * @return {String|Number}
23 | * @api public
24 | */
25 |
26 | module.exports = function(val, options) {
27 | options = options || {};
28 | var type = typeof val;
29 | if (type === 'string' && val.length > 0) {
30 | return parse(val);
31 | } else if (type === 'number' && isFinite(val)) {
32 | return options.long ? fmtLong(val) : fmtShort(val);
33 | }
34 | throw new Error(
35 | 'val is not a non-empty string or a valid number. val=' +
36 | JSON.stringify(val)
37 | );
38 | };
39 |
40 | /**
41 | * Parse the given `str` and return milliseconds.
42 | *
43 | * @param {String} str
44 | * @return {Number}
45 | * @api private
46 | */
47 |
48 | function parse(str) {
49 | str = String(str);
50 | if (str.length > 100) {
51 | return;
52 | }
53 | var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(
54 | str
55 | );
56 | if (!match) {
57 | return;
58 | }
59 | var n = parseFloat(match[1]);
60 | var type = (match[2] || 'ms').toLowerCase();
61 | switch (type) {
62 | case 'years':
63 | case 'year':
64 | case 'yrs':
65 | case 'yr':
66 | case 'y':
67 | return n * y;
68 | case 'weeks':
69 | case 'week':
70 | case 'w':
71 | return n * w;
72 | case 'days':
73 | case 'day':
74 | case 'd':
75 | return n * d;
76 | case 'hours':
77 | case 'hour':
78 | case 'hrs':
79 | case 'hr':
80 | case 'h':
81 | return n * h;
82 | case 'minutes':
83 | case 'minute':
84 | case 'mins':
85 | case 'min':
86 | case 'm':
87 | return n * m;
88 | case 'seconds':
89 | case 'second':
90 | case 'secs':
91 | case 'sec':
92 | case 's':
93 | return n * s;
94 | case 'milliseconds':
95 | case 'millisecond':
96 | case 'msecs':
97 | case 'msec':
98 | case 'ms':
99 | return n;
100 | default:
101 | return undefined;
102 | }
103 | }
104 |
105 | /**
106 | * Short format for `ms`.
107 | *
108 | * @param {Number} ms
109 | * @return {String}
110 | * @api private
111 | */
112 |
113 | function fmtShort(ms) {
114 | var msAbs = Math.abs(ms);
115 | if (msAbs >= d) {
116 | return Math.round(ms / d) + 'd';
117 | }
118 | if (msAbs >= h) {
119 | return Math.round(ms / h) + 'h';
120 | }
121 | if (msAbs >= m) {
122 | return Math.round(ms / m) + 'm';
123 | }
124 | if (msAbs >= s) {
125 | return Math.round(ms / s) + 's';
126 | }
127 | return ms + 'ms';
128 | }
129 |
130 | /**
131 | * Long format for `ms`.
132 | *
133 | * @param {Number} ms
134 | * @return {String}
135 | * @api private
136 | */
137 |
138 | function fmtLong(ms) {
139 | var msAbs = Math.abs(ms);
140 | if (msAbs >= d) {
141 | return plural(ms, msAbs, d, 'day');
142 | }
143 | if (msAbs >= h) {
144 | return plural(ms, msAbs, h, 'hour');
145 | }
146 | if (msAbs >= m) {
147 | return plural(ms, msAbs, m, 'minute');
148 | }
149 | if (msAbs >= s) {
150 | return plural(ms, msAbs, s, 'second');
151 | }
152 | return ms + ' ms';
153 | }
154 |
155 | /**
156 | * Pluralization helper.
157 | */
158 |
159 | function plural(ms, msAbs, n, name) {
160 | var isPlural = msAbs >= n * 1.5;
161 | return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
162 | }
163 |
--------------------------------------------------------------------------------
/javascript/node_modules/ms/license.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 Zeit, Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/javascript/node_modules/ms/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "ms@2.1.2",
3 | "_id": "ms@2.1.2",
4 | "_inBundle": false,
5 | "_integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
6 | "_location": "/ms",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "ms@2.1.2",
12 | "name": "ms",
13 | "escapedName": "ms",
14 | "rawSpec": "2.1.2",
15 | "saveSpec": null,
16 | "fetchSpec": "2.1.2"
17 | },
18 | "_requiredBy": [
19 | "/debug"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
22 | "_shasum": "d09d1f357b443f493382a8eb3ccd183872ae6009",
23 | "_spec": "ms@2.1.2",
24 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/debug",
25 | "bugs": {
26 | "url": "https://github.com/zeit/ms/issues"
27 | },
28 | "bundleDependencies": false,
29 | "deprecated": false,
30 | "description": "Tiny millisecond conversion utility",
31 | "devDependencies": {
32 | "eslint": "4.12.1",
33 | "expect.js": "0.3.1",
34 | "husky": "0.14.3",
35 | "lint-staged": "5.0.0",
36 | "mocha": "4.0.1"
37 | },
38 | "eslintConfig": {
39 | "extends": "eslint:recommended",
40 | "env": {
41 | "node": true,
42 | "es6": true
43 | }
44 | },
45 | "files": [
46 | "index.js"
47 | ],
48 | "homepage": "https://github.com/zeit/ms#readme",
49 | "license": "MIT",
50 | "lint-staged": {
51 | "*.js": [
52 | "npm run lint",
53 | "prettier --single-quote --write",
54 | "git add"
55 | ]
56 | },
57 | "main": "./index",
58 | "name": "ms",
59 | "repository": {
60 | "type": "git",
61 | "url": "git+https://github.com/zeit/ms.git"
62 | },
63 | "scripts": {
64 | "lint": "eslint lib/* bin/*",
65 | "precommit": "lint-staged",
66 | "test": "mocha tests.js"
67 | },
68 | "version": "2.1.2"
69 | }
70 |
--------------------------------------------------------------------------------
/javascript/node_modules/ms/readme.md:
--------------------------------------------------------------------------------
1 | # ms
2 |
3 | [](https://travis-ci.org/zeit/ms)
4 | [](https://spectrum.chat/zeit)
5 |
6 | Use this package to easily convert various time formats to milliseconds.
7 |
8 | ## Examples
9 |
10 | ```js
11 | ms('2 days') // 172800000
12 | ms('1d') // 86400000
13 | ms('10h') // 36000000
14 | ms('2.5 hrs') // 9000000
15 | ms('2h') // 7200000
16 | ms('1m') // 60000
17 | ms('5s') // 5000
18 | ms('1y') // 31557600000
19 | ms('100') // 100
20 | ms('-3 days') // -259200000
21 | ms('-1h') // -3600000
22 | ms('-200') // -200
23 | ```
24 |
25 | ### Convert from Milliseconds
26 |
27 | ```js
28 | ms(60000) // "1m"
29 | ms(2 * 60000) // "2m"
30 | ms(-3 * 60000) // "-3m"
31 | ms(ms('10 hours')) // "10h"
32 | ```
33 |
34 | ### Time Format Written-Out
35 |
36 | ```js
37 | ms(60000, { long: true }) // "1 minute"
38 | ms(2 * 60000, { long: true }) // "2 minutes"
39 | ms(-3 * 60000, { long: true }) // "-3 minutes"
40 | ms(ms('10 hours'), { long: true }) // "10 hours"
41 | ```
42 |
43 | ## Features
44 |
45 | - Works both in [Node.js](https://nodejs.org) and in the browser
46 | - If a number is supplied to `ms`, a string with a unit is returned
47 | - If a string that contains the number is supplied, it returns it as a number (e.g.: it returns `100` for `'100'`)
48 | - If you pass a string with a number and a valid unit, the number of equivalent milliseconds is returned
49 |
50 | ## Related Packages
51 |
52 | - [ms.macro](https://github.com/knpwrs/ms.macro) - Run `ms` as a macro at build-time.
53 |
54 | ## Caught a Bug?
55 |
56 | 1. [Fork](https://help.github.com/articles/fork-a-repo/) this repository to your own GitHub account and then [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device
57 | 2. Link the package to the global module directory: `npm link`
58 | 3. Within the module you want to test your local development instance of ms, just link it to the dependencies: `npm link ms`. Instead of the default one from npm, Node.js will now use your clone of ms!
59 |
60 | As always, you can run the tests using: `npm test`
61 |
--------------------------------------------------------------------------------
/javascript/node_modules/parseqs/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Gal Koren
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/javascript/node_modules/parseqs/Makefile:
--------------------------------------------------------------------------------
1 |
2 | test:
3 | @./node_modules/.bin/mocha test.js
4 |
--------------------------------------------------------------------------------
/javascript/node_modules/parseqs/README.md:
--------------------------------------------------------------------------------
1 | Provides methods for converting an object into string representation, and vice versa.
2 |
--------------------------------------------------------------------------------
/javascript/node_modules/parseqs/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Compiles a querystring
3 | * Returns string representation of the object
4 | *
5 | * @param {Object}
6 | * @api private
7 | */
8 |
9 | exports.encode = function (obj) {
10 | var str = '';
11 |
12 | for (var i in obj) {
13 | if (obj.hasOwnProperty(i)) {
14 | if (str.length) str += '&';
15 | str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);
16 | }
17 | }
18 |
19 | return str;
20 | };
21 |
22 | /**
23 | * Parses a simple querystring into an object
24 | *
25 | * @param {String} qs
26 | * @api private
27 | */
28 |
29 | exports.decode = function(qs){
30 | var qry = {};
31 | var pairs = qs.split('&');
32 | for (var i = 0, l = pairs.length; i < l; i++) {
33 | var pair = pairs[i].split('=');
34 | qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
35 | }
36 | return qry;
37 | };
38 |
--------------------------------------------------------------------------------
/javascript/node_modules/parseqs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "parseqs@0.0.6",
3 | "_id": "parseqs@0.0.6",
4 | "_inBundle": false,
5 | "_integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==",
6 | "_location": "/parseqs",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "parseqs@0.0.6",
12 | "name": "parseqs",
13 | "escapedName": "parseqs",
14 | "rawSpec": "0.0.6",
15 | "saveSpec": null,
16 | "fetchSpec": "0.0.6"
17 | },
18 | "_requiredBy": [
19 | "/engine.io-client"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
22 | "_shasum": "8e4bb5a19d1cdc844a08ac974d34e273afa670d5",
23 | "_spec": "parseqs@0.0.6",
24 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/engine.io-client",
25 | "author": {
26 | "name": "Gal Koren"
27 | },
28 | "bugs": {
29 | "url": "https://github.com/get/querystring/issues"
30 | },
31 | "bundleDependencies": false,
32 | "deprecated": false,
33 | "description": "Provides methods for parsing a query string into an object, and vice versa.",
34 | "devDependencies": {
35 | "better-assert": "~1.0.0",
36 | "mocha": "1.17.1"
37 | },
38 | "homepage": "https://github.com/get/querystring",
39 | "license": "MIT",
40 | "name": "parseqs",
41 | "repository": {
42 | "type": "git",
43 | "url": "git+https://github.com/get/querystring.git"
44 | },
45 | "scripts": {
46 | "test": "make test"
47 | },
48 | "version": "0.0.6"
49 | }
50 |
--------------------------------------------------------------------------------
/javascript/node_modules/parseqs/test.js:
--------------------------------------------------------------------------------
1 | var assert = require('better-assert');
2 | var expect = require('expect.js');
3 | var util = require('./index.js');
4 |
5 | describe('querystring test suite', function(){
6 | it('should parse a querystring and return an object', function () {
7 |
8 | // Single assignment
9 | var queryObj = util.decode("foo=bar");
10 | expect(queryObj.foo).to.be("bar");
11 |
12 | // Multiple assignments
13 | queryObj = util.decode("france=paris&germany=berlin");
14 | expect(queryObj.france).to.be("paris");
15 | expect(queryObj.germany).to.be("berlin");
16 |
17 | // Assignments containing non-alphanumeric characters
18 | queryObj = util.decode("india=new%20delhi");
19 | expect(queryObj.india).to.be("new delhi");
20 | });
21 |
22 | it('should construct a query string from an object', function () {
23 | expect(util.encode({ a: 'b' })).to.be('a=b');
24 | expect(util.encode({ a: 'b', c: 'd' })).to.be('a=b&c=d');
25 | expect(util.encode({ a: 'b', c: 'tobi rocks' })).to.be('a=b&c=tobi%20rocks');
26 | });
27 | });
28 |
--------------------------------------------------------------------------------
/javascript/node_modules/parseuri/History.md:
--------------------------------------------------------------------------------
1 |
2 | n.n.n / 2014-02-09
3 | ==================
4 |
5 | * parseuri first commit
6 |
--------------------------------------------------------------------------------
/javascript/node_modules/parseuri/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Gal Koren
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/javascript/node_modules/parseuri/Makefile:
--------------------------------------------------------------------------------
1 |
2 | test:
3 | @./node_modules/.bin/mocha test.js
4 |
--------------------------------------------------------------------------------
/javascript/node_modules/parseuri/README.md:
--------------------------------------------------------------------------------
1 | # parseuri
2 | Module for parsing URI's in engine.io-client
3 |
--------------------------------------------------------------------------------
/javascript/node_modules/parseuri/index.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Parses an URI
3 | *
4 | * @author Steven Levithan (MIT license)
5 | * @api private
6 | */
7 |
8 | var re = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;
9 |
10 | var parts = [
11 | 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'
12 | ];
13 |
14 | module.exports = function parseuri(str) {
15 | var src = str,
16 | b = str.indexOf('['),
17 | e = str.indexOf(']');
18 |
19 | if (b != -1 && e != -1) {
20 | str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);
21 | }
22 |
23 | var m = re.exec(str || ''),
24 | uri = {},
25 | i = 14;
26 |
27 | while (i--) {
28 | uri[parts[i]] = m[i] || '';
29 | }
30 |
31 | if (b != -1 && e != -1) {
32 | uri.source = src;
33 | uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');
34 | uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');
35 | uri.ipv6uri = true;
36 | }
37 |
38 | uri.pathNames = pathNames(uri, uri['path']);
39 | uri.queryKey = queryKey(uri, uri['query']);
40 |
41 | return uri;
42 | };
43 |
44 | function pathNames(obj, path) {
45 | var regx = /\/{2,9}/g,
46 | names = path.replace(regx, "/").split("/");
47 |
48 | if (path.substr(0, 1) == '/' || path.length === 0) {
49 | names.splice(0, 1);
50 | }
51 | if (path.substr(path.length - 1, 1) == '/') {
52 | names.splice(names.length - 1, 1);
53 | }
54 |
55 | return names;
56 | }
57 |
58 | function queryKey(uri, query) {
59 | var data = {};
60 |
61 | query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {
62 | if ($1) {
63 | data[$1] = $2;
64 | }
65 | });
66 |
67 | return data;
68 | }
69 |
--------------------------------------------------------------------------------
/javascript/node_modules/parseuri/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "parseuri@0.0.6",
3 | "_id": "parseuri@0.0.6",
4 | "_inBundle": false,
5 | "_integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==",
6 | "_location": "/parseuri",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "parseuri@0.0.6",
12 | "name": "parseuri",
13 | "escapedName": "parseuri",
14 | "rawSpec": "0.0.6",
15 | "saveSpec": null,
16 | "fetchSpec": "0.0.6"
17 | },
18 | "_requiredBy": [
19 | "/engine.io-client",
20 | "/socket.io-client"
21 | ],
22 | "_resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
23 | "_shasum": "e1496e829e3ac2ff47f39a4dd044b32823c4a25a",
24 | "_spec": "parseuri@0.0.6",
25 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/socket.io-client",
26 | "author": {
27 | "name": "Gal Koren"
28 | },
29 | "bugs": {
30 | "url": "https://github.com/get/parseuri/issues"
31 | },
32 | "bundleDependencies": false,
33 | "deprecated": false,
34 | "description": "Method that parses a URI and returns an array of its components",
35 | "devDependencies": {
36 | "better-assert": "~1.0.0",
37 | "expect.js": "^0.3.1",
38 | "mocha": "1.17.1"
39 | },
40 | "homepage": "https://github.com/get/parseuri",
41 | "license": "MIT",
42 | "name": "parseuri",
43 | "repository": {
44 | "type": "git",
45 | "url": "git+https://github.com/get/parseuri.git"
46 | },
47 | "scripts": {
48 | "test": "make test"
49 | },
50 | "version": "0.0.6"
51 | }
52 |
--------------------------------------------------------------------------------
/javascript/node_modules/parseuri/test.js:
--------------------------------------------------------------------------------
1 | var assert = require('better-assert');
2 | var expect = require('expect.js');
3 | var parseuri = require('./index.js');
4 |
5 | describe('my suite', function(){
6 | it('should parse an uri', function () {
7 | var http = parseuri('http://google.com')
8 | , https = parseuri('https://www.google.com:80')
9 | , query = parseuri('google.com:8080/foo/bar?foo=bar')
10 | , localhost = parseuri('localhost:8080')
11 | , ipv6 = parseuri('2001:0db8:85a3:0042:1000:8a2e:0370:7334')
12 | , ipv6short = parseuri('2001:db8:85a3:42:1000:8a2e:370:7334')
13 | , ipv6port = parseuri('2001:db8:85a3:42:1000:8a2e:370:7334:80')
14 | , ipv6abbrev = parseuri('2001::7334:a:80')
15 | , ipv6http = parseuri('http://[2001::7334:a]:80')
16 | , ipv6query = parseuri('http://[2001::7334:a]:80/foo/bar?foo=bar')
17 |
18 | expect(http.protocol).to.be('http');
19 | expect(http.port).to.be('');
20 | expect(http.host).to.be('google.com');
21 | expect(https.protocol).to.be('https');
22 | expect(https.port).to.be('80');
23 | expect(https.host).to.be('www.google.com');
24 | expect(query.port).to.be('8080');
25 | expect(query.query).to.be('foo=bar');
26 | expect(query.path).to.be('/foo/bar');
27 | expect(query.relative).to.be('/foo/bar?foo=bar');
28 | expect(query.queryKey.foo).to.be('bar');
29 | expect(query.pathNames[0]).to.be('foo');
30 | expect(query.pathNames[1]).to.be('bar');
31 | expect(localhost.protocol).to.be('');
32 | expect(localhost.host).to.be('localhost');
33 | expect(localhost.port).to.be('8080');
34 | expect(ipv6.protocol).to.be('');
35 | expect(ipv6.host).to.be('2001:0db8:85a3:0042:1000:8a2e:0370:7334');
36 | expect(ipv6.port).to.be('');
37 | expect(ipv6short.protocol).to.be('');
38 | expect(ipv6short.host).to.be('2001:db8:85a3:42:1000:8a2e:370:7334');
39 | expect(ipv6short.port).to.be('');
40 | expect(ipv6port.protocol).to.be('');
41 | expect(ipv6port.host).to.be('2001:db8:85a3:42:1000:8a2e:370:7334');
42 | expect(ipv6port.port).to.be('80');
43 | expect(ipv6abbrev.protocol).to.be('');
44 | expect(ipv6abbrev.host).to.be('2001::7334:a:80');
45 | expect(ipv6abbrev.port).to.be('');
46 | expect(ipv6http.protocol).to.be('http');
47 | expect(ipv6http.port).to.be('80');
48 | expect(ipv6http.host).to.be('2001::7334:a');
49 | expect(ipv6query.protocol).to.be('http');
50 | expect(ipv6query.port).to.be('80');
51 | expect(ipv6query.host).to.be('2001::7334:a');
52 | expect(ipv6query.relative).to.be('/foo/bar?foo=bar');
53 | });
54 | });
55 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-client/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Guillermo Rauch
4 |
5 |
6 | Permission is hereby granted, free of charge, to any person obtaining a copy
7 | of this software and associated documentation files (the "Software"), to deal
8 | in the Software without restriction, including without limitation the rights
9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10 | copies of the Software, and to permit persons to whom the Software is
11 | furnished to do so, subject to the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be included in
14 | all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22 | THE SOFTWARE.
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-client/README.md:
--------------------------------------------------------------------------------
1 |
2 | # socket.io-client
3 |
4 | [](https://github.com/socketio/socket.io-client/actions)
5 | [](https://david-dm.org/socketio/socket.io-client)
6 | [](https://david-dm.org/socketio/socket.io-client#info=devDependencies)
7 | [](https://www.npmjs.com/package/socket.io-client)
8 | 
9 | [](http://slack.socket.io)
10 |
11 | [](https://saucelabs.com/u/socket)
12 |
13 | ## Documentation
14 |
15 | Please see the documentation [here](https://socket.io/docs/v3/client-initialization/).
16 |
17 | The source code of the website can be found [here](https://github.com/socketio/socket.io-website). Contributions are welcome!
18 |
19 | ## Debug / logging
20 |
21 | In order to see all the client debug output, run the following command on the browser console – including the desired scope – and reload your app page:
22 |
23 | ```
24 | localStorage.debug = '*';
25 | ```
26 |
27 | And then, filter by the scopes you're interested in. See also: https://socket.io/docs/v3/logging-and-debugging/
28 |
29 | ## License
30 |
31 | [MIT](/LICENSE)
32 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-client/build/index.d.ts:
--------------------------------------------------------------------------------
1 | import { ManagerOptions } from "./manager";
2 | import { Socket, SocketOptions } from "./socket";
3 | /**
4 | * Looks up an existing `Manager` for multiplexing.
5 | * If the user summons:
6 | *
7 | * `io('http://localhost/a');`
8 | * `io('http://localhost/b');`
9 | *
10 | * We reuse the existing instance based on same scheme/port/host,
11 | * and we initialize sockets for each namespace.
12 | *
13 | * @public
14 | */
15 | declare function lookup(opts?: Partial): Socket;
16 | declare function lookup(uri: string, opts?: Partial): Socket;
17 | declare function lookup(uri: string | Partial, opts?: Partial): Socket;
18 | /**
19 | * Protocol version.
20 | *
21 | * @public
22 | */
23 | export { protocol } from "socket.io-parser";
24 | /**
25 | * Expose constructors for standalone build.
26 | *
27 | * @public
28 | */
29 | export { Manager, ManagerOptions } from "./manager";
30 | export { lookup as io, Socket, SocketOptions };
31 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-client/build/index.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.Socket = exports.io = exports.Manager = exports.protocol = void 0;
4 | const url_1 = require("./url");
5 | const manager_1 = require("./manager");
6 | const socket_1 = require("./socket");
7 | Object.defineProperty(exports, "Socket", { enumerable: true, get: function () { return socket_1.Socket; } });
8 | const debug = require("debug")("socket.io-client");
9 | /**
10 | * Module exports.
11 | */
12 | module.exports = exports = lookup;
13 | /**
14 | * Managers cache.
15 | */
16 | const cache = (exports.managers = {});
17 | function lookup(uri, opts) {
18 | if (typeof uri === "object") {
19 | opts = uri;
20 | uri = undefined;
21 | }
22 | opts = opts || {};
23 | const parsed = url_1.url(uri, opts.path);
24 | const source = parsed.source;
25 | const id = parsed.id;
26 | const path = parsed.path;
27 | const sameNamespace = cache[id] && path in cache[id]["nsps"];
28 | const newConnection = opts.forceNew ||
29 | opts["force new connection"] ||
30 | false === opts.multiplex ||
31 | sameNamespace;
32 | let io;
33 | if (newConnection) {
34 | debug("ignoring socket cache for %s", source);
35 | io = new manager_1.Manager(source, opts);
36 | }
37 | else {
38 | if (!cache[id]) {
39 | debug("new io instance for %s", source);
40 | cache[id] = new manager_1.Manager(source, opts);
41 | }
42 | io = cache[id];
43 | }
44 | if (parsed.query && !opts.query) {
45 | opts.query = parsed.queryKey;
46 | }
47 | return io.socket(parsed.path, opts);
48 | }
49 | exports.io = lookup;
50 | /**
51 | * Protocol version.
52 | *
53 | * @public
54 | */
55 | var socket_io_parser_1 = require("socket.io-parser");
56 | Object.defineProperty(exports, "protocol", { enumerable: true, get: function () { return socket_io_parser_1.protocol; } });
57 | /**
58 | * `connect`.
59 | *
60 | * @param {String} uri
61 | * @public
62 | */
63 | exports.connect = lookup;
64 | /**
65 | * Expose constructors for standalone build.
66 | *
67 | * @public
68 | */
69 | var manager_2 = require("./manager");
70 | Object.defineProperty(exports, "Manager", { enumerable: true, get: function () { return manager_2.Manager; } });
71 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-client/build/on.d.ts:
--------------------------------------------------------------------------------
1 | import type * as Emitter from "component-emitter";
2 | import { StrictEventEmitter } from "./typed-events";
3 | export declare function on(obj: Emitter | StrictEventEmitter, ev: string, fn: (err?: any) => any): VoidFunction;
4 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-client/build/on.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.on = void 0;
4 | function on(obj, ev, fn) {
5 | obj.on(ev, fn);
6 | return function subDestroy() {
7 | obj.off(ev, fn);
8 | };
9 | }
10 | exports.on = on;
11 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-client/build/typed-events.d.ts:
--------------------------------------------------------------------------------
1 | import Emitter = require("component-emitter");
2 | /**
3 | * An events map is an interface that maps event names to their value, which
4 | * represents the type of the `on` listener.
5 | */
6 | export interface EventsMap {
7 | [event: string]: any;
8 | }
9 | /**
10 | * The default events map, used if no EventsMap is given. Using this EventsMap
11 | * is equivalent to accepting all event names, and any data.
12 | */
13 | export interface DefaultEventsMap {
14 | [event: string]: (...args: any[]) => void;
15 | }
16 | /**
17 | * Returns a union type containing all the keys of an event map.
18 | */
19 | export declare type EventNames = keyof Map & (string | symbol);
20 | /** The tuple type representing the parameters of an event listener */
21 | export declare type EventParams> = Parameters;
22 | /**
23 | * The event names that are either in ReservedEvents or in UserEvents
24 | */
25 | export declare type ReservedOrUserEventNames = EventNames | EventNames;
26 | /**
27 | * Type of a listener of a user event or a reserved event. If `Ev` is in
28 | * `ReservedEvents`, the reserved event listener is returned.
29 | */
30 | export declare type ReservedOrUserListener> = Ev extends EventNames ? ReservedEvents[Ev] : Ev extends EventNames ? UserEvents[Ev] : never;
31 | /**
32 | * Strictly typed version of an `EventEmitter`. A `TypedEventEmitter` takes type
33 | * parameters for mappings of event names to event data types, and strictly
34 | * types method calls to the `EventEmitter` according to these event maps.
35 | *
36 | * @typeParam ListenEvents - `EventsMap` of user-defined events that can be
37 | * listened to with `on` or `once`
38 | * @typeParam EmitEvents - `EventsMap` of user-defined events that can be
39 | * emitted with `emit`
40 | * @typeParam ReservedEvents - `EventsMap` of reserved events, that can be
41 | * emitted by socket.io with `emitReserved`, and can be listened to with
42 | * `listen`.
43 | */
44 | export declare abstract class StrictEventEmitter extends Emitter {
45 | /**
46 | * Adds the `listener` function as an event listener for `ev`.
47 | *
48 | * @param ev Name of the event
49 | * @param listener Callback function
50 | */
51 | on>(ev: Ev, listener: ReservedOrUserListener): this;
52 | /**
53 | * Adds a one-time `listener` function as an event listener for `ev`.
54 | *
55 | * @param ev Name of the event
56 | * @param listener Callback function
57 | */
58 | once>(ev: Ev, listener: ReservedOrUserListener): this;
59 | /**
60 | * Emits an event.
61 | *
62 | * @param ev Name of the event
63 | * @param args Values to send to listeners of this event
64 | */
65 | emit>(ev: Ev, ...args: EventParams): this;
66 | /**
67 | * Emits a reserved event.
68 | *
69 | * This method is `protected`, so that only a class extending
70 | * `StrictEventEmitter` can emit its own reserved events.
71 | *
72 | * @param ev Reserved event name
73 | * @param args Arguments to emit along with the event
74 | */
75 | protected emitReserved>(ev: Ev, ...args: EventParams): this;
76 | /**
77 | * Returns the listeners listening to an event.
78 | *
79 | * @param event Event name
80 | * @returns Array of listeners subscribed to `event`
81 | */
82 | listeners>(event: Ev): ReservedOrUserListener[];
83 | }
84 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-client/build/typed-events.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.StrictEventEmitter = void 0;
4 | const Emitter = require("component-emitter");
5 | /**
6 | * Strictly typed version of an `EventEmitter`. A `TypedEventEmitter` takes type
7 | * parameters for mappings of event names to event data types, and strictly
8 | * types method calls to the `EventEmitter` according to these event maps.
9 | *
10 | * @typeParam ListenEvents - `EventsMap` of user-defined events that can be
11 | * listened to with `on` or `once`
12 | * @typeParam EmitEvents - `EventsMap` of user-defined events that can be
13 | * emitted with `emit`
14 | * @typeParam ReservedEvents - `EventsMap` of reserved events, that can be
15 | * emitted by socket.io with `emitReserved`, and can be listened to with
16 | * `listen`.
17 | */
18 | class StrictEventEmitter extends Emitter {
19 | /**
20 | * Adds the `listener` function as an event listener for `ev`.
21 | *
22 | * @param ev Name of the event
23 | * @param listener Callback function
24 | */
25 | on(ev, listener) {
26 | super.on(ev, listener);
27 | return this;
28 | }
29 | /**
30 | * Adds a one-time `listener` function as an event listener for `ev`.
31 | *
32 | * @param ev Name of the event
33 | * @param listener Callback function
34 | */
35 | once(ev, listener) {
36 | super.once(ev, listener);
37 | return this;
38 | }
39 | /**
40 | * Emits an event.
41 | *
42 | * @param ev Name of the event
43 | * @param args Values to send to listeners of this event
44 | */
45 | emit(ev, ...args) {
46 | super.emit(ev, ...args);
47 | return this;
48 | }
49 | /**
50 | * Emits a reserved event.
51 | *
52 | * This method is `protected`, so that only a class extending
53 | * `StrictEventEmitter` can emit its own reserved events.
54 | *
55 | * @param ev Reserved event name
56 | * @param args Arguments to emit along with the event
57 | */
58 | emitReserved(ev, ...args) {
59 | super.emit(ev, ...args);
60 | return this;
61 | }
62 | /**
63 | * Returns the listeners listening to an event.
64 | *
65 | * @param event Event name
66 | * @returns Array of listeners subscribed to `event`
67 | */
68 | listeners(event) {
69 | return super.listeners(event);
70 | }
71 | }
72 | exports.StrictEventEmitter = StrictEventEmitter;
73 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-client/build/url.d.ts:
--------------------------------------------------------------------------------
1 | declare type ParsedUrl = {
2 | source: string;
3 | protocol: string;
4 | authority: string;
5 | userInfo: string;
6 | user: string;
7 | password: string;
8 | host: string;
9 | port: string;
10 | relative: string;
11 | path: string;
12 | directory: string;
13 | file: string;
14 | query: string;
15 | anchor: string;
16 | pathNames: Array;
17 | queryKey: {
18 | [key: string]: string;
19 | };
20 | id: string;
21 | href: string;
22 | };
23 | /**
24 | * URL parser.
25 | *
26 | * @param uri - url
27 | * @param path - the request path of the connection
28 | * @param loc - An object meant to mimic window.location.
29 | * Defaults to window.location.
30 | * @public
31 | */
32 | export declare function url(uri: string | ParsedUrl, path?: string, loc?: Location): ParsedUrl;
33 | export {};
34 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-client/build/url.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.url = void 0;
4 | const parseuri = require("parseuri");
5 | const debug = require("debug")("socket.io-client:url");
6 | /**
7 | * URL parser.
8 | *
9 | * @param uri - url
10 | * @param path - the request path of the connection
11 | * @param loc - An object meant to mimic window.location.
12 | * Defaults to window.location.
13 | * @public
14 | */
15 | function url(uri, path = "", loc) {
16 | let obj = uri;
17 | // default to window.location
18 | loc = loc || (typeof location !== "undefined" && location);
19 | if (null == uri)
20 | uri = loc.protocol + "//" + loc.host;
21 | // relative path support
22 | if (typeof uri === "string") {
23 | if ("/" === uri.charAt(0)) {
24 | if ("/" === uri.charAt(1)) {
25 | uri = loc.protocol + uri;
26 | }
27 | else {
28 | uri = loc.host + uri;
29 | }
30 | }
31 | if (!/^(https?|wss?):\/\//.test(uri)) {
32 | debug("protocol-less url %s", uri);
33 | if ("undefined" !== typeof loc) {
34 | uri = loc.protocol + "//" + uri;
35 | }
36 | else {
37 | uri = "https://" + uri;
38 | }
39 | }
40 | // parse
41 | debug("parse %s", uri);
42 | obj = parseuri(uri);
43 | }
44 | // make sure we treat `localhost:80` and `localhost` equally
45 | if (!obj.port) {
46 | if (/^(http|ws)$/.test(obj.protocol)) {
47 | obj.port = "80";
48 | }
49 | else if (/^(http|ws)s$/.test(obj.protocol)) {
50 | obj.port = "443";
51 | }
52 | }
53 | obj.path = obj.path || "/";
54 | const ipv6 = obj.host.indexOf(":") !== -1;
55 | const host = ipv6 ? "[" + obj.host + "]" : obj.host;
56 | // define unique id
57 | obj.id = obj.protocol + "://" + host + ":" + obj.port + path;
58 | // define href
59 | obj.href =
60 | obj.protocol +
61 | "://" +
62 | host +
63 | (loc && loc.port === obj.port ? "" : ":" + obj.port);
64 | return obj;
65 | }
66 | exports.url = url;
67 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-client/wrapper.mjs:
--------------------------------------------------------------------------------
1 | import io from "./build/index.js";
2 |
3 | export const Manager = io.Manager;
4 | export { io };
5 | export default io;
6 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-parser/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## [4.0.4](https://github.com/socketio/socket.io-parser/compare/4.0.3...4.0.4) (2021-01-15)
2 |
3 |
4 | ### Bug Fixes
5 |
6 | * allow integers as event names ([1c220dd](https://github.com/socketio/socket.io-parser/commit/1c220ddbf45ea4b44bc8dbf6f9ae245f672ba1b9))
7 |
8 |
9 | ## [4.0.3](https://github.com/socketio/socket.io-parser/compare/4.0.2...4.0.3) (2021-01-05)
10 |
11 |
12 | ## [4.0.2](https://github.com/socketio/socket.io-parser/compare/4.0.1...4.0.2) (2020-11-25)
13 |
14 |
15 | ### Bug Fixes
16 |
17 | * move @types/component-emitter to dependencies ([#99](https://github.com/socketio/socket.io-parser/issues/99)) ([4efa005](https://github.com/socketio/socket.io-parser/commit/4efa005846ae15ecc7fb0a7f27141439113b1179))
18 |
19 |
20 | ## [4.0.1](https://github.com/socketio/socket.io-parser/compare/3.4.1...4.0.1) (2020-11-05)
21 |
22 | ### Features
23 |
24 | * move binary detection back to the parser ([285e7cd](https://github.com/socketio/socket.io-parser/commit/285e7cd0d837adfc911c999e7294788681226ae1))
25 | * add support for a payload in a CONNECT packet ([78f9fc2](https://github.com/socketio/socket.io-parser/commit/78f9fc2999b15804b02f2c22a2b4007734a26af9))
26 |
27 | ### Bug Fixes
28 |
29 | * do not catch encoding errors ([aeae87c](https://github.com/socketio/socket.io-parser/commit/aeae87c220287197cb78370dbd86b950a7dd29eb))
30 | * throw upon invalid payload format ([c327acb](https://github.com/socketio/socket.io-parser/commit/c327acbc3c3c2d0b2b439136cbcb56c81db173d6))
31 |
32 | ### BREAKING CHANGES
33 |
34 | * the encode method is now synchronous ([28d4f03](https://github.com/socketio/socket.io-parser/commit/28d4f0309bdd9e306b78d1946d3e1760941d6544))
35 |
36 |
37 |
38 | ## [4.0.1-rc3](https://github.com/socketio/socket.io-parser/compare/4.0.1-rc2...4.0.1-rc3) (2020-10-25)
39 |
40 |
41 |
42 | ## [4.0.1-rc2](https://github.com/socketio/socket.io-parser/compare/4.0.1-rc1...4.0.1-rc2) (2020-10-15)
43 |
44 |
45 | ### Features
46 |
47 | * move binary detection back to the parser ([285e7cd](https://github.com/socketio/socket.io-parser/commit/285e7cd0d837adfc911c999e7294788681226ae1))
48 |
49 |
50 |
51 | ## [4.0.1-rc1](https://github.com/socketio/socket.io-parser/compare/4.0.0...4.0.1-rc1) (2020-10-12)
52 |
53 |
54 | ### Features
55 |
56 | * add support for a payload in a CONNECT packet ([78f9fc2](https://github.com/socketio/socket.io-parser/commit/78f9fc2999b15804b02f2c22a2b4007734a26af9))
57 |
58 |
59 |
60 | ## [3.3.1](https://github.com/socketio/socket.io-parser/compare/3.3.0...3.3.1) (2020-09-30)
61 |
62 |
63 | # [4.0.0](https://github.com/socketio/socket.io-parser/compare/3.4.1...4.0.0) (2020-09-28)
64 |
65 | This release will be included in Socket.IO v3.
66 |
67 | There is a breaking API change (see below), but the exchange [protocol](https://github.com/socketio/socket.io-protocol) is left untouched and thus stays in version 4.
68 |
69 | ### Bug Fixes
70 |
71 | * do not catch encoding errors ([aeae87c](https://github.com/socketio/socket.io-parser/commit/aeae87c220287197cb78370dbd86b950a7dd29eb))
72 | * throw upon invalid payload format ([c327acb](https://github.com/socketio/socket.io-parser/commit/c327acbc3c3c2d0b2b439136cbcb56c81db173d6))
73 |
74 |
75 | ### BREAKING CHANGES
76 |
77 | * the encode method is now synchronous ([28d4f03](https://github.com/socketio/socket.io-parser/commit/28d4f0309bdd9e306b78d1946d3e1760941d6544))
78 |
79 |
80 |
81 | ## [3.4.1](https://github.com/socketio/socket.io-parser/compare/3.4.0...3.4.1) (2020-05-13)
82 |
83 |
84 | ### Bug Fixes
85 |
86 | * prevent DoS (OOM) via massive packets ([#95](https://github.com/socketio/socket.io-parser/issues/95)) ([dcb942d](https://github.com/socketio/socket.io-parser/commit/dcb942d24db97162ad16a67c2a0cf30875342d55))
87 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-parser/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2014 Guillermo Rauch
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the 'Software'), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 | the Software, and to permit persons to whom the Software is furnished to do so,
10 | subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-parser/Readme.md:
--------------------------------------------------------------------------------
1 |
2 | # socket.io-parser
3 |
4 | [](https://github.com/socketio/socket.io-parser/actions)
5 | [](http://badge.fury.io/js/socket.io-parser)
6 |
7 | A socket.io encoder and decoder written in JavaScript complying with version `5`
8 | of [socket.io-protocol](https://github.com/socketio/socket.io-protocol).
9 | Used by [socket.io](https://github.com/automattic/socket.io) and
10 | [socket.io-client](https://github.com/automattic/socket.io-client).
11 |
12 | Compatibility table:
13 |
14 | | Parser version | Socket.IO server version | Protocol revision |
15 | |----------------| ------------------------ | ----------------- |
16 | | 3.x | 1.x / 2.x | 4 |
17 | | 4.x | 3.x | 5 |
18 |
19 |
20 | ## Parser API
21 |
22 | socket.io-parser is the reference implementation of socket.io-protocol. Read
23 | the full API here:
24 | [socket.io-protocol](https://github.com/learnboost/socket.io-protocol).
25 |
26 | ## Example Usage
27 |
28 | ### Encoding and decoding a packet
29 |
30 | ```js
31 | var parser = require('socket.io-parser');
32 | var encoder = new parser.Encoder();
33 | var packet = {
34 | type: parser.EVENT,
35 | data: 'test-packet',
36 | id: 13
37 | };
38 | encoder.encode(packet, function(encodedPackets) {
39 | var decoder = new parser.Decoder();
40 | decoder.on('decoded', function(decodedPacket) {
41 | // decodedPacket.type == parser.EVENT
42 | // decodedPacket.data == 'test-packet'
43 | // decodedPacket.id == 13
44 | });
45 |
46 | for (var i = 0; i < encodedPackets.length; i++) {
47 | decoder.add(encodedPackets[i]);
48 | }
49 | });
50 | ```
51 |
52 | ### Encoding and decoding a packet with binary data
53 |
54 | ```js
55 | var parser = require('socket.io-parser');
56 | var encoder = new parser.Encoder();
57 | var packet = {
58 | type: parser.BINARY_EVENT,
59 | data: {i: new Buffer(1234), j: new Blob([new ArrayBuffer(2)])},
60 | id: 15
61 | };
62 | encoder.encode(packet, function(encodedPackets) {
63 | var decoder = new parser.Decoder();
64 | decoder.on('decoded', function(decodedPacket) {
65 | // decodedPacket.type == parser.BINARY_EVENT
66 | // Buffer.isBuffer(decodedPacket.data.i) == true
67 | // Buffer.isBuffer(decodedPacket.data.j) == true
68 | // decodedPacket.id == 15
69 | });
70 |
71 | for (var i = 0; i < encodedPackets.length; i++) {
72 | decoder.add(encodedPackets[i]);
73 | }
74 | });
75 | ```
76 | See the test suite for more examples of how socket.io-parser is used.
77 |
78 |
79 | ## License
80 |
81 | MIT
82 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-parser/dist/binary.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.
3 | *
4 | * @param {Object} packet - socket.io event packet
5 | * @return {Object} with deconstructed packet and list of buffers
6 | * @public
7 | */
8 | export declare function deconstructPacket(packet: any): {
9 | packet: any;
10 | buffers: any[];
11 | };
12 | /**
13 | * Reconstructs a binary packet from its placeholder packet and buffers
14 | *
15 | * @param {Object} packet - event packet with placeholders
16 | * @param {Array} buffers - binary buffers to put in placeholder positions
17 | * @return {Object} reconstructed packet
18 | * @public
19 | */
20 | export declare function reconstructPacket(packet: any, buffers: any): any;
21 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-parser/dist/binary.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.reconstructPacket = exports.deconstructPacket = void 0;
4 | const is_binary_1 = require("./is-binary");
5 | /**
6 | * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.
7 | *
8 | * @param {Object} packet - socket.io event packet
9 | * @return {Object} with deconstructed packet and list of buffers
10 | * @public
11 | */
12 | function deconstructPacket(packet) {
13 | const buffers = [];
14 | const packetData = packet.data;
15 | const pack = packet;
16 | pack.data = _deconstructPacket(packetData, buffers);
17 | pack.attachments = buffers.length; // number of binary 'attachments'
18 | return { packet: pack, buffers: buffers };
19 | }
20 | exports.deconstructPacket = deconstructPacket;
21 | function _deconstructPacket(data, buffers) {
22 | if (!data)
23 | return data;
24 | if (is_binary_1.isBinary(data)) {
25 | const placeholder = { _placeholder: true, num: buffers.length };
26 | buffers.push(data);
27 | return placeholder;
28 | }
29 | else if (Array.isArray(data)) {
30 | const newData = new Array(data.length);
31 | for (let i = 0; i < data.length; i++) {
32 | newData[i] = _deconstructPacket(data[i], buffers);
33 | }
34 | return newData;
35 | }
36 | else if (typeof data === "object" && !(data instanceof Date)) {
37 | const newData = {};
38 | for (const key in data) {
39 | if (data.hasOwnProperty(key)) {
40 | newData[key] = _deconstructPacket(data[key], buffers);
41 | }
42 | }
43 | return newData;
44 | }
45 | return data;
46 | }
47 | /**
48 | * Reconstructs a binary packet from its placeholder packet and buffers
49 | *
50 | * @param {Object} packet - event packet with placeholders
51 | * @param {Array} buffers - binary buffers to put in placeholder positions
52 | * @return {Object} reconstructed packet
53 | * @public
54 | */
55 | function reconstructPacket(packet, buffers) {
56 | packet.data = _reconstructPacket(packet.data, buffers);
57 | packet.attachments = undefined; // no longer useful
58 | return packet;
59 | }
60 | exports.reconstructPacket = reconstructPacket;
61 | function _reconstructPacket(data, buffers) {
62 | if (!data)
63 | return data;
64 | if (data && data._placeholder) {
65 | return buffers[data.num]; // appropriate buffer (should be natural order anyway)
66 | }
67 | else if (Array.isArray(data)) {
68 | for (let i = 0; i < data.length; i++) {
69 | data[i] = _reconstructPacket(data[i], buffers);
70 | }
71 | }
72 | else if (typeof data === "object") {
73 | for (const key in data) {
74 | if (data.hasOwnProperty(key)) {
75 | data[key] = _reconstructPacket(data[key], buffers);
76 | }
77 | }
78 | }
79 | return data;
80 | }
81 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-parser/dist/index.d.ts:
--------------------------------------------------------------------------------
1 | import Emitter = require("component-emitter");
2 | /**
3 | * Protocol version.
4 | *
5 | * @public
6 | */
7 | export declare const protocol: number;
8 | export declare enum PacketType {
9 | CONNECT = 0,
10 | DISCONNECT = 1,
11 | EVENT = 2,
12 | ACK = 3,
13 | CONNECT_ERROR = 4,
14 | BINARY_EVENT = 5,
15 | BINARY_ACK = 6
16 | }
17 | export interface Packet {
18 | type: PacketType;
19 | nsp: string;
20 | data?: any;
21 | id?: number;
22 | attachments?: number;
23 | }
24 | /**
25 | * A socket.io Encoder instance
26 | */
27 | export declare class Encoder {
28 | /**
29 | * Encode a packet as a single string if non-binary, or as a
30 | * buffer sequence, depending on packet type.
31 | *
32 | * @param {Object} obj - packet object
33 | */
34 | encode(obj: Packet): any[];
35 | /**
36 | * Encode packet as string.
37 | */
38 | private encodeAsString;
39 | /**
40 | * Encode packet as 'buffer sequence' by removing blobs, and
41 | * deconstructing packet into object with placeholders and
42 | * a list of buffers.
43 | */
44 | private encodeAsBinary;
45 | }
46 | /**
47 | * A socket.io Decoder instance
48 | *
49 | * @return {Object} decoder
50 | */
51 | export declare class Decoder extends Emitter {
52 | private reconstructor;
53 | constructor();
54 | /**
55 | * Decodes an encoded packet string into packet JSON.
56 | *
57 | * @param {String} obj - encoded packet
58 | */
59 | add(obj: any): void;
60 | /**
61 | * Decode a packet String (JSON data)
62 | *
63 | * @param {String} str
64 | * @return {Object} packet
65 | */
66 | private decodeString;
67 | private static isPayloadValid;
68 | /**
69 | * Deallocates a parser's resources
70 | */
71 | destroy(): void;
72 | }
73 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-parser/dist/is-binary.d.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.
3 | *
4 | * @private
5 | */
6 | export declare function isBinary(obj: any): boolean;
7 | export declare function hasBinary(obj: any, toJSON?: boolean): any;
8 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-parser/dist/is-binary.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.hasBinary = exports.isBinary = void 0;
4 | const withNativeArrayBuffer = typeof ArrayBuffer === "function";
5 | const isView = (obj) => {
6 | return typeof ArrayBuffer.isView === "function"
7 | ? ArrayBuffer.isView(obj)
8 | : obj.buffer instanceof ArrayBuffer;
9 | };
10 | const toString = Object.prototype.toString;
11 | const withNativeBlob = typeof Blob === "function" ||
12 | (typeof Blob !== "undefined" &&
13 | toString.call(Blob) === "[object BlobConstructor]");
14 | const withNativeFile = typeof File === "function" ||
15 | (typeof File !== "undefined" &&
16 | toString.call(File) === "[object FileConstructor]");
17 | /**
18 | * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.
19 | *
20 | * @private
21 | */
22 | function isBinary(obj) {
23 | return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||
24 | (withNativeBlob && obj instanceof Blob) ||
25 | (withNativeFile && obj instanceof File));
26 | }
27 | exports.isBinary = isBinary;
28 | function hasBinary(obj, toJSON) {
29 | if (!obj || typeof obj !== "object") {
30 | return false;
31 | }
32 | if (Array.isArray(obj)) {
33 | for (let i = 0, l = obj.length; i < l; i++) {
34 | if (hasBinary(obj[i])) {
35 | return true;
36 | }
37 | }
38 | return false;
39 | }
40 | if (isBinary(obj)) {
41 | return true;
42 | }
43 | if (obj.toJSON &&
44 | typeof obj.toJSON === "function" &&
45 | arguments.length === 1) {
46 | return hasBinary(obj.toJSON(), true);
47 | }
48 | for (const key in obj) {
49 | if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {
50 | return true;
51 | }
52 | }
53 | return false;
54 | }
55 | exports.hasBinary = hasBinary;
56 |
--------------------------------------------------------------------------------
/javascript/node_modules/socket.io-parser/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "socket.io-parser@~4.0.4",
3 | "_id": "socket.io-parser@4.0.4",
4 | "_inBundle": false,
5 | "_integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
6 | "_location": "/socket.io-parser",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "socket.io-parser@~4.0.4",
12 | "name": "socket.io-parser",
13 | "escapedName": "socket.io-parser",
14 | "rawSpec": "~4.0.4",
15 | "saveSpec": null,
16 | "fetchSpec": "~4.0.4"
17 | },
18 | "_requiredBy": [
19 | "/socket.io-client"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz",
22 | "_shasum": "9ea21b0d61508d18196ef04a2c6b9ab630f4c2b0",
23 | "_spec": "socket.io-parser@~4.0.4",
24 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/socket.io-client",
25 | "bugs": {
26 | "url": "https://github.com/socketio/socket.io-parser/issues"
27 | },
28 | "bundleDependencies": false,
29 | "dependencies": {
30 | "@types/component-emitter": "^1.2.10",
31 | "component-emitter": "~1.3.0",
32 | "debug": "~4.3.1"
33 | },
34 | "deprecated": false,
35 | "description": "socket.io protocol parser",
36 | "devDependencies": {
37 | "@babel/core": "~7.9.6",
38 | "@babel/preset-env": "~7.9.6",
39 | "@types/debug": "^4.1.5",
40 | "@types/node": "^14.11.1",
41 | "babelify": "~10.0.0",
42 | "benchmark": "2.1.2",
43 | "expect.js": "0.3.1",
44 | "mocha": "3.2.0",
45 | "prettier": "^2.1.2",
46 | "rimraf": "^3.0.2",
47 | "socket.io-browsers": "^1.0.0",
48 | "typescript": "^4.0.3",
49 | "zuul": "3.11.1",
50 | "zuul-ngrok": "4.0.0"
51 | },
52 | "engines": {
53 | "node": ">=10.0.0"
54 | },
55 | "files": [
56 | "dist/"
57 | ],
58 | "homepage": "https://github.com/socketio/socket.io-parser#readme",
59 | "license": "MIT",
60 | "main": "./dist/index.js",
61 | "name": "socket.io-parser",
62 | "repository": {
63 | "type": "git",
64 | "url": "git+https://github.com/socketio/socket.io-parser.git"
65 | },
66 | "scripts": {
67 | "compile": "rimraf ./dist && tsc",
68 | "format:check": "prettier --check --parser typescript 'lib/**/*.ts' 'test/**/*.js'",
69 | "format:fix": "prettier --write --parser typescript 'lib/**/*.ts' 'test/**/*.js'",
70 | "prepack": "npm run compile",
71 | "test": "npm run format:check && npm run compile && if test \"$BROWSERS\" = \"1\" ; then npm run test:browser; else npm run test:node; fi",
72 | "test:browser": "zuul test/index.js --no-coverage",
73 | "test:node": "mocha --reporter dot --bail test/index.js"
74 | },
75 | "types": "./dist/index.d.ts",
76 | "version": "4.0.4"
77 | }
78 |
--------------------------------------------------------------------------------
/javascript/node_modules/ws/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2011 Einar Otto Stangvik
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/javascript/node_modules/ws/browser.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | module.exports = function () {
4 | throw new Error(
5 | 'ws does not work in the browser. Browser clients must use the native ' +
6 | 'WebSocket object'
7 | );
8 | };
9 |
--------------------------------------------------------------------------------
/javascript/node_modules/ws/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const WebSocket = require('./lib/websocket');
4 |
5 | WebSocket.createWebSocketStream = require('./lib/stream');
6 | WebSocket.Server = require('./lib/websocket-server');
7 | WebSocket.Receiver = require('./lib/receiver');
8 | WebSocket.Sender = require('./lib/sender');
9 |
10 | module.exports = WebSocket;
11 |
--------------------------------------------------------------------------------
/javascript/node_modules/ws/lib/buffer-util.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const { EMPTY_BUFFER } = require('./constants');
4 |
5 | /**
6 | * Merges an array of buffers into a new buffer.
7 | *
8 | * @param {Buffer[]} list The array of buffers to concat
9 | * @param {Number} totalLength The total length of buffers in the list
10 | * @return {Buffer} The resulting buffer
11 | * @public
12 | */
13 | function concat(list, totalLength) {
14 | if (list.length === 0) return EMPTY_BUFFER;
15 | if (list.length === 1) return list[0];
16 |
17 | const target = Buffer.allocUnsafe(totalLength);
18 | let offset = 0;
19 |
20 | for (let i = 0; i < list.length; i++) {
21 | const buf = list[i];
22 | target.set(buf, offset);
23 | offset += buf.length;
24 | }
25 |
26 | if (offset < totalLength) return target.slice(0, offset);
27 |
28 | return target;
29 | }
30 |
31 | /**
32 | * Masks a buffer using the given mask.
33 | *
34 | * @param {Buffer} source The buffer to mask
35 | * @param {Buffer} mask The mask to use
36 | * @param {Buffer} output The buffer where to store the result
37 | * @param {Number} offset The offset at which to start writing
38 | * @param {Number} length The number of bytes to mask.
39 | * @public
40 | */
41 | function _mask(source, mask, output, offset, length) {
42 | for (let i = 0; i < length; i++) {
43 | output[offset + i] = source[i] ^ mask[i & 3];
44 | }
45 | }
46 |
47 | /**
48 | * Unmasks a buffer using the given mask.
49 | *
50 | * @param {Buffer} buffer The buffer to unmask
51 | * @param {Buffer} mask The mask to use
52 | * @public
53 | */
54 | function _unmask(buffer, mask) {
55 | // Required until https://github.com/nodejs/node/issues/9006 is resolved.
56 | const length = buffer.length;
57 | for (let i = 0; i < length; i++) {
58 | buffer[i] ^= mask[i & 3];
59 | }
60 | }
61 |
62 | /**
63 | * Converts a buffer to an `ArrayBuffer`.
64 | *
65 | * @param {Buffer} buf The buffer to convert
66 | * @return {ArrayBuffer} Converted buffer
67 | * @public
68 | */
69 | function toArrayBuffer(buf) {
70 | if (buf.byteLength === buf.buffer.byteLength) {
71 | return buf.buffer;
72 | }
73 |
74 | return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
75 | }
76 |
77 | /**
78 | * Converts `data` to a `Buffer`.
79 | *
80 | * @param {*} data The data to convert
81 | * @return {Buffer} The buffer
82 | * @throws {TypeError}
83 | * @public
84 | */
85 | function toBuffer(data) {
86 | toBuffer.readOnly = true;
87 |
88 | if (Buffer.isBuffer(data)) return data;
89 |
90 | let buf;
91 |
92 | if (data instanceof ArrayBuffer) {
93 | buf = Buffer.from(data);
94 | } else if (ArrayBuffer.isView(data)) {
95 | buf = Buffer.from(data.buffer, data.byteOffset, data.byteLength);
96 | } else {
97 | buf = Buffer.from(data);
98 | toBuffer.readOnly = false;
99 | }
100 |
101 | return buf;
102 | }
103 |
104 | try {
105 | const bufferUtil = require('bufferutil');
106 | const bu = bufferUtil.BufferUtil || bufferUtil;
107 |
108 | module.exports = {
109 | concat,
110 | mask(source, mask, output, offset, length) {
111 | if (length < 48) _mask(source, mask, output, offset, length);
112 | else bu.mask(source, mask, output, offset, length);
113 | },
114 | toArrayBuffer,
115 | toBuffer,
116 | unmask(buffer, mask) {
117 | if (buffer.length < 32) _unmask(buffer, mask);
118 | else bu.unmask(buffer, mask);
119 | }
120 | };
121 | } catch (e) /* istanbul ignore next */ {
122 | module.exports = {
123 | concat,
124 | mask: _mask,
125 | toArrayBuffer,
126 | toBuffer,
127 | unmask: _unmask
128 | };
129 | }
130 |
--------------------------------------------------------------------------------
/javascript/node_modules/ws/lib/constants.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | module.exports = {
4 | BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],
5 | GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',
6 | kStatusCode: Symbol('status-code'),
7 | kWebSocket: Symbol('websocket'),
8 | EMPTY_BUFFER: Buffer.alloc(0),
9 | NOOP: () => {}
10 | };
11 |
--------------------------------------------------------------------------------
/javascript/node_modules/ws/lib/limiter.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const kDone = Symbol('kDone');
4 | const kRun = Symbol('kRun');
5 |
6 | /**
7 | * A very simple job queue with adjustable concurrency. Adapted from
8 | * https://github.com/STRML/async-limiter
9 | */
10 | class Limiter {
11 | /**
12 | * Creates a new `Limiter`.
13 | *
14 | * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed
15 | * to run concurrently
16 | */
17 | constructor(concurrency) {
18 | this[kDone] = () => {
19 | this.pending--;
20 | this[kRun]();
21 | };
22 | this.concurrency = concurrency || Infinity;
23 | this.jobs = [];
24 | this.pending = 0;
25 | }
26 |
27 | /**
28 | * Adds a job to the queue.
29 | *
30 | * @param {Function} job The job to run
31 | * @public
32 | */
33 | add(job) {
34 | this.jobs.push(job);
35 | this[kRun]();
36 | }
37 |
38 | /**
39 | * Removes a job from the queue and runs it if possible.
40 | *
41 | * @private
42 | */
43 | [kRun]() {
44 | if (this.pending === this.concurrency) return;
45 |
46 | if (this.jobs.length) {
47 | const job = this.jobs.shift();
48 |
49 | this.pending++;
50 | job(this[kDone]);
51 | }
52 | }
53 | }
54 |
55 | module.exports = Limiter;
56 |
--------------------------------------------------------------------------------
/javascript/node_modules/ws/lib/validation.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | try {
4 | const isValidUTF8 = require('utf-8-validate');
5 |
6 | exports.isValidUTF8 =
7 | typeof isValidUTF8 === 'object'
8 | ? isValidUTF8.Validation.isValidUTF8 // utf-8-validate@<3.0.0
9 | : isValidUTF8;
10 | } catch (e) /* istanbul ignore next */ {
11 | exports.isValidUTF8 = () => true;
12 | }
13 |
14 | /**
15 | * Checks if a status code is allowed in a close frame.
16 | *
17 | * @param {Number} code The status code
18 | * @return {Boolean} `true` if the status code is valid, else `false`
19 | * @public
20 | */
21 | exports.isValidStatusCode = (code) => {
22 | return (
23 | (code >= 1000 &&
24 | code <= 1014 &&
25 | code !== 1004 &&
26 | code !== 1005 &&
27 | code !== 1006) ||
28 | (code >= 3000 && code <= 4999)
29 | );
30 | };
31 |
--------------------------------------------------------------------------------
/javascript/node_modules/ws/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "ws@~7.4.2",
3 | "_id": "ws@7.4.4",
4 | "_inBundle": false,
5 | "_integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw==",
6 | "_location": "/ws",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "range",
10 | "registry": true,
11 | "raw": "ws@~7.4.2",
12 | "name": "ws",
13 | "escapedName": "ws",
14 | "rawSpec": "~7.4.2",
15 | "saveSpec": null,
16 | "fetchSpec": "~7.4.2"
17 | },
18 | "_requiredBy": [
19 | "/engine.io-client"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz",
22 | "_shasum": "383bc9742cb202292c9077ceab6f6047b17f2d59",
23 | "_spec": "ws@~7.4.2",
24 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/engine.io-client",
25 | "author": {
26 | "name": "Einar Otto Stangvik",
27 | "email": "einaros@gmail.com",
28 | "url": "http://2x.io"
29 | },
30 | "browser": "browser.js",
31 | "bugs": {
32 | "url": "https://github.com/websockets/ws/issues"
33 | },
34 | "bundleDependencies": false,
35 | "deprecated": false,
36 | "description": "Simple to use, blazing fast and thoroughly tested websocket client and server for Node.js",
37 | "devDependencies": {
38 | "benchmark": "^2.1.4",
39 | "bufferutil": "^4.0.1",
40 | "eslint": "^7.2.0",
41 | "eslint-config-prettier": "^8.1.0",
42 | "eslint-plugin-prettier": "^3.0.1",
43 | "mocha": "^7.0.0",
44 | "nyc": "^15.0.0",
45 | "prettier": "^2.0.5",
46 | "utf-8-validate": "^5.0.2"
47 | },
48 | "engines": {
49 | "node": ">=8.3.0"
50 | },
51 | "files": [
52 | "browser.js",
53 | "index.js",
54 | "lib/*.js"
55 | ],
56 | "homepage": "https://github.com/websockets/ws",
57 | "keywords": [
58 | "HyBi",
59 | "Push",
60 | "RFC-6455",
61 | "WebSocket",
62 | "WebSockets",
63 | "real-time"
64 | ],
65 | "license": "MIT",
66 | "main": "index.js",
67 | "name": "ws",
68 | "peerDependencies": {
69 | "bufferutil": "^4.0.1",
70 | "utf-8-validate": "^5.0.2"
71 | },
72 | "peerDependenciesMeta": {
73 | "bufferutil": {
74 | "optional": true
75 | },
76 | "utf-8-validate": {
77 | "optional": true
78 | }
79 | },
80 | "repository": {
81 | "type": "git",
82 | "url": "git+https://github.com/websockets/ws.git"
83 | },
84 | "scripts": {
85 | "integration": "mocha --throw-deprecation test/*.integration.js",
86 | "lint": "eslint --ignore-path .gitignore . && prettier --check --ignore-path .gitignore \"**/*.{json,md,yaml,yml}\"",
87 | "test": "nyc --reporter=lcov --reporter=text mocha --throw-deprecation test/*.test.js"
88 | },
89 | "version": "7.4.4"
90 | }
91 |
--------------------------------------------------------------------------------
/javascript/node_modules/yeast/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Unshift.io, Arnout Kazemier, the Contributors.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/javascript/node_modules/yeast/README.md:
--------------------------------------------------------------------------------
1 | # yeast
2 |
3 | [](http://unshift.io)[](http://browsenpm.org/package/yeast)[](https://travis-ci.org/unshiftio/yeast)[](https://david-dm.org/unshiftio/yeast)[](https://coveralls.io/r/unshiftio/yeast?branch=master)[](https://webchat.freenode.net/?channels=unshift)
4 |
5 | [](https://saucelabs.com/u/yeast)
6 |
7 | Yeast is a unique id generator. It has been primarily designed to generate a
8 | unique id which can be used for cache busting. A common practice for this is
9 | to use a timestamp, but there are couple of downsides when using timestamps.
10 |
11 | 1. The timestamp is already 13 chars long. This might not matter for 1 request
12 | but if you make hundreds of them this quickly adds up in bandwidth and
13 | processing time.
14 | 2. It's not unique enough. If you generate two stamps right after each other,
15 | they would be identical because the timing accuracy is limited to
16 | milliseconds.
17 |
18 | Yeast solves both of these issues by:
19 |
20 | 1. Compressing the generated timestamp using a custom `encode()` function that
21 | returns a string representation of the number.
22 | 2. Seeding the id in case of collision (when the id is identical to the previous
23 | one).
24 |
25 | To keep the strings unique it will use the `.` char to separate the generated
26 | stamp from the seed.
27 |
28 | ## Installation
29 |
30 | The module is intended to be used in browsers as well as in Node.js and is
31 | therefore released in the npm registry and can be installed using:
32 |
33 | ```
34 | npm install --save yeast
35 | ```
36 |
37 | ## Usage
38 |
39 | All the examples assume that this library is initialized as follow:
40 |
41 | ```js
42 | 'use strict';
43 |
44 | var yeast = require('yeast');
45 | ```
46 |
47 | To generate an id just call the `yeast` function.
48 |
49 | ```js
50 | console.log(yeast(), yeast(), yeast()); // outputs: KyxidwN KyxidwN.0 KyxidwN.1
51 |
52 | setTimeout(function () {
53 | console.log(yeast()); // outputs: KyxidwO
54 | });
55 | ```
56 |
57 | ### yeast.encode(num)
58 |
59 | An helper function that returns a string representing the specified number. The
60 | returned string contains only URL safe characters.
61 |
62 | ```js
63 | yeast.encode(+new Date()); // outputs: Kyxjuo1
64 | ```
65 |
66 | ### yeast.decode(str)
67 |
68 | An helper function that returns the integer value specified by the given string.
69 | This function can be used to retrieve the timestamp from a `yeast` id.
70 |
71 | ```js
72 | var id = yeast(); // holds the value: Kyxl1OU
73 |
74 | yeast.decode(id); // outputs: 1439816226334
75 | ```
76 |
77 | That's all folks. If you have ideas on how we can further compress the ids
78 | please open an issue!
79 |
80 | ## License
81 |
82 | [MIT](LICENSE)
83 |
--------------------------------------------------------------------------------
/javascript/node_modules/yeast/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split('')
4 | , length = 64
5 | , map = {}
6 | , seed = 0
7 | , i = 0
8 | , prev;
9 |
10 | /**
11 | * Return a string representing the specified number.
12 | *
13 | * @param {Number} num The number to convert.
14 | * @returns {String} The string representation of the number.
15 | * @api public
16 | */
17 | function encode(num) {
18 | var encoded = '';
19 |
20 | do {
21 | encoded = alphabet[num % length] + encoded;
22 | num = Math.floor(num / length);
23 | } while (num > 0);
24 |
25 | return encoded;
26 | }
27 |
28 | /**
29 | * Return the integer value specified by the given string.
30 | *
31 | * @param {String} str The string to convert.
32 | * @returns {Number} The integer value represented by the string.
33 | * @api public
34 | */
35 | function decode(str) {
36 | var decoded = 0;
37 |
38 | for (i = 0; i < str.length; i++) {
39 | decoded = decoded * length + map[str.charAt(i)];
40 | }
41 |
42 | return decoded;
43 | }
44 |
45 | /**
46 | * Yeast: A tiny growing id generator.
47 | *
48 | * @returns {String} A unique id.
49 | * @api public
50 | */
51 | function yeast() {
52 | var now = encode(+new Date());
53 |
54 | if (now !== prev) return seed = 0, prev = now;
55 | return now +'.'+ encode(seed++);
56 | }
57 |
58 | //
59 | // Map each character to its index.
60 | //
61 | for (; i < length; i++) map[alphabet[i]] = i;
62 |
63 | //
64 | // Expose the `yeast`, `encode` and `decode` functions.
65 | //
66 | yeast.encode = encode;
67 | yeast.decode = decode;
68 | module.exports = yeast;
69 |
--------------------------------------------------------------------------------
/javascript/node_modules/yeast/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "_from": "yeast@0.1.2",
3 | "_id": "yeast@0.1.2",
4 | "_inBundle": false,
5 | "_integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
6 | "_location": "/yeast",
7 | "_phantomChildren": {},
8 | "_requested": {
9 | "type": "version",
10 | "registry": true,
11 | "raw": "yeast@0.1.2",
12 | "name": "yeast",
13 | "escapedName": "yeast",
14 | "rawSpec": "0.1.2",
15 | "saveSpec": null,
16 | "fetchSpec": "0.1.2"
17 | },
18 | "_requiredBy": [
19 | "/engine.io-client"
20 | ],
21 | "_resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
22 | "_shasum": "008e06d8094320c372dbc2f8ed76a0ca6c8ac419",
23 | "_spec": "yeast@0.1.2",
24 | "_where": "/Users/ersheff/Documents/GitStuff/Collab-Hub-Client/node_modules/engine.io-client",
25 | "author": {
26 | "name": "Arnout Kazemier"
27 | },
28 | "bugs": {
29 | "url": "https://github.com/unshiftio/yeast/issues"
30 | },
31 | "bundleDependencies": false,
32 | "deprecated": false,
33 | "description": "Tiny but linear growing unique id generator",
34 | "devDependencies": {
35 | "assume": "1.3.x",
36 | "istanbul": "0.3.x",
37 | "mocha": "2.3.x",
38 | "pre-commit": "1.1.x",
39 | "zuul": "3.4.x"
40 | },
41 | "homepage": "https://github.com/unshiftio/yeast",
42 | "keywords": [
43 | "yeast",
44 | "id",
45 | "generator",
46 | "unique"
47 | ],
48 | "license": "MIT",
49 | "main": "index.js",
50 | "name": "yeast",
51 | "repository": {
52 | "type": "git",
53 | "url": "git+https://github.com/unshiftio/yeast.git"
54 | },
55 | "scripts": {
56 | "100%": "istanbul check-coverage --statements 100 --functions 100 --lines 100 --branches 100",
57 | "coverage": "istanbul cover _mocha -- test.js",
58 | "test": "mocha test.js",
59 | "test-browser": "zuul -- test.js",
60 | "test-node": "istanbul cover _mocha --report lcovonly -- test.js",
61 | "watch": "mocha --watch test.js"
62 | },
63 | "version": "0.1.2"
64 | }
65 |
--------------------------------------------------------------------------------
/javascript/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "collab-hub-client",
3 | "version": "0.5.0",
4 | "description": "client for Collab-Hub 0.5",
5 | "main": "CH-ClientScript-v5.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git+https://github.com/ersheff/Collab-Hub-Client.git"
12 | },
13 | "author": "",
14 | "license": "ISC",
15 | "bugs": {
16 | "url": "https://github.com/ersheff/Collab-Hub-Client/issues"
17 | },
18 | "homepage": "https://github.com/ersheff/Collab-Hub-Client#readme",
19 | "dependencies": {
20 | "socket.io-client": "^4.0.0"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/license.md:
--------------------------------------------------------------------------------
1 | # Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0
2 |
3 | https://creativecommons.org/licenses/by-nc-sa/4.0/
4 |
5 | This is a human-readable summary of (and not a substitute for) the [license](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode). [Disclaimer](https://creativecommons.org/licenses/by-nc-sa/4.0/#).
6 |
7 | ## You are free to:
8 |
9 | **Share** — copy and redistribute the material in any medium or format
10 | **Adapt** — remix, transform, and build upon the material
11 | The licensor cannot revoke these freedoms as long as you follow the license terms.
12 |
13 | --
14 |
15 | ## Under the following terms:
16 |
17 | **Attribution** — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
18 | **NonCommercial** — You may not use the material for commercial purposes.
19 | **ShareAlike** — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
20 | **No additional restrictions** — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
21 |
22 | ---
23 |
24 | ## Notices:
25 |
26 | You do not have to comply with the license for elements of the material in the public domain or where your use is permitted by an applicable exception or limitation.
27 | No warranties are given. The license may not give you all of the permissions necessary for your intended use. For example, other rights such as publicity, privacy, or moral rights may limit how you use the material.
--------------------------------------------------------------------------------
/media/img/CH-Diagram-transparent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/CH-Diagram-transparent.png
--------------------------------------------------------------------------------
/media/img/CH-Diagram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/CH-Diagram.png
--------------------------------------------------------------------------------
/media/img/CH-Small-Logo-NoText.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/CH-Small-Logo-NoText.png
--------------------------------------------------------------------------------
/media/img/CH-Title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/CH-Title.png
--------------------------------------------------------------------------------
/media/img/Collab-Hub-Style.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/Collab-Hub-Style.jpg
--------------------------------------------------------------------------------
/media/img/Max-Logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/Max-Logo.png
--------------------------------------------------------------------------------
/media/img/become-a-patron-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/become-a-patron-button.png
--------------------------------------------------------------------------------
/media/img/for-bpatchers/CH-Chat-Title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/for-bpatchers/CH-Chat-Title.png
--------------------------------------------------------------------------------
/media/img/for-bpatchers/CH-Client-Title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/for-bpatchers/CH-Client-Title.png
--------------------------------------------------------------------------------
/media/img/for-bpatchers/CH-Controls-Title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/for-bpatchers/CH-Controls-Title.png
--------------------------------------------------------------------------------
/media/img/for-bpatchers/CH-Events-Title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/for-bpatchers/CH-Events-Title.png
--------------------------------------------------------------------------------
/media/img/for-bpatchers/CH-Rooms-Title.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/for-bpatchers/CH-Rooms-Title.png
--------------------------------------------------------------------------------
/media/img/for-readme/Chat-Cap.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/for-readme/Chat-Cap.jpeg
--------------------------------------------------------------------------------
/media/img/for-readme/Chat-Cap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/for-readme/Chat-Cap.png
--------------------------------------------------------------------------------
/media/img/for-readme/Client-Cap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/for-readme/Client-Cap.png
--------------------------------------------------------------------------------
/media/img/for-readme/Controls-Cap.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/for-readme/Controls-Cap.jpeg
--------------------------------------------------------------------------------
/media/img/for-readme/Demo-Cap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/for-readme/Demo-Cap.png
--------------------------------------------------------------------------------
/media/img/for-readme/Events-Cap.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/for-readme/Events-Cap.jpeg
--------------------------------------------------------------------------------
/media/img/for-readme/Rooms-Cap.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/for-readme/Rooms-Cap.jpeg
--------------------------------------------------------------------------------
/media/img/for-readme/Script-Cap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Collab-Hub-io/Collab-Hub-Max-Client/b1fed33637a9b98b862d2a9cb33ad64d2755b66a/media/img/for-readme/Script-Cap.png
--------------------------------------------------------------------------------
/package-info.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Collab-Hub",
3 | "displayname": "Collab-Hub Max Client",
4 | "version": "0.3.4",
5 | "author": "Nick Hwang, Eric Sheffield, Anthony T. Marasco",
6 | "authors": [
7 | "Nick Hwang",
8 | "Eric Sheffield",
9 | "Anthony T. Marasco"
10 | ],
11 | "description": "Max Client for Collab-Hub.io -- a server-based collaborative tool meant to connect creative apps including Max, PD, Arduino, Unity, etc. Contains modules to use Collab-Hub with Max, implemented with Node4Max: Chat, Rooms, Observe, etc. Visit Collab-Hub.io for more information for other clients.",
12 | "tags": [
13 | "networking",
14 | "remote collaboration",
15 | "network musical performance",
16 | "collaborative",
17 | "remote",
18 | "nodejs",
19 | "PD",
20 | "Arduino",
21 | "OSC"
22 | ],
23 | "website": "https://www.collab-hub.io",
24 | "extends": "",
25 | "extensible": 0,
26 | "max_version_min": "8.0",
27 | "max_version_max": "none",
28 | "os": {
29 | "macintosh": {
30 | "min_version": "8.0",
31 | "platform": [
32 | "x64",
33 | "aarch64"
34 | ]
35 | },
36 | "windows": {
37 | "min_version": "8.0",
38 | "platform": [
39 | "x64"
40 | ]
41 | }
42 | },
43 | "homepatcher": "Collab-Hub Modules.maxpat",
44 | "package_extra": {
45 | "reverse_domain": "io.collab-hub",
46 | "copyright": "Copyright © 2020-2022, Nick Hwang. All rights reserved."
47 | },
48 | "filelist": {
49 | "externals": [],
50 | "patchers": [
51 | "CH-Client.maxpat",
52 | "CH-ClientTesting.maxpat",
53 | "CH-Controls.maxpat",
54 | "CH-Events.maxpat",
55 | "CH-Rooms.maxpat",
56 | "CH-Chat.maxpat"
57 | ],
58 | "help": [
59 | "CH-Client.maxhelp",
60 | "CH-ClientTesting.maxhelp",
61 | "CH-Controls.maxhelp",
62 | "CH-Events.maxhelp",
63 | "CH-Rooms.maxhelp",
64 | "CH-Chat.maxhelp"
65 | ],
66 | "media": [
67 | "img/CH-Title.png",
68 | "img/CH-Diagram.png",
69 | "img/CH-Diagram-transparent.png",
70 | "img/Max-Logo.png",
71 | "img/Collab-Hub-Style.jpg",
72 | "img/CH-Title.png",
73 | "img/CH-Small-Logo-NoText.png"
74 | ],
75 | "docs": [
76 | "CH-Client.maxref.xml",
77 | "CH-ClientTesting.maxref.xml",
78 | "CH-Controls.maxref.xml",
79 | "CH-Events.maxref.xml",
80 | "CH-Rooms.maxref.xml",
81 | "CH-Chat.maxref.xml",
82 | "Collab-Hub Modules.maxref.xml",
83 | "topics/Collab-Hub_topic.maxvig.xml",
84 | "tutorials/ch-tut/00-ch-index.maxtut.xml"
85 | ],
86 | "javascript": [
87 | "CH-ClientScript.js",
88 | "CH-ClientInstanceManager.js",
89 | "CH-Chat-JS.js"
90 | ],
91 | "extras": [
92 | "Collab-Hub Modules.maxpat"
93 | ],
94 | "examples": [
95 | "CH-Simple-Routing.maxpat",
96 | "CH-Controls-and-Events.maxpat",
97 | "CH-Drum-Demo.maxpat",
98 | "CH-Push-Publish-Rooms.maxpat",
99 | "CH-Sequence-Trader/CH-Sequencer-Trader.maxpat",
100 | "Mapping-Strategies.maxpat"
101 | ],
102 | "templates": [
103 | "collab-hub-template.maxpat"
104 | ],
105 | "clippings": [
106 | "to_from_Server.maxpat"
107 | ]
108 | },
109 | "c74install": 1,
110 | "installdate": 3716758452
111 | }
--------------------------------------------------------------------------------