move multiplex plugin out to reveal/reveal-multiplex repo
This commit is contained in:
		
							
								
								
									
										142
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										142
									
								
								README.md
									
									
									
									
									
								
							| @@ -56,9 +56,6 @@ This project was started and is maintained by [@hakimel](https://github.com/haki | |||||||
|   - [Server Side Speaker Notes](#server-side-speaker-notes) |   - [Server Side Speaker Notes](#server-side-speaker-notes) | ||||||
| - [Plugins](#plugins) | - [Plugins](#plugins) | ||||||
| - [Multiplexing](#multiplexing) | - [Multiplexing](#multiplexing) | ||||||
|   - [Master presentation](#master-presentation) |  | ||||||
|   - [Client presentation](#client-presentation) |  | ||||||
|   - [Socket.io server](#socketio-server) |  | ||||||
| - [MathJax](#mathjax) | - [MathJax](#mathjax) | ||||||
| - [License](#license) | - [License](#license) | ||||||
|  |  | ||||||
| @@ -1449,144 +1446,7 @@ If you want to check if a specific plugin is registered you can use the `Reveal. | |||||||
|  |  | ||||||
| ## Multiplexing | ## Multiplexing | ||||||
|  |  | ||||||
| The multiplex plugin allows your audience to view the slides of the presentation you are controlling on their own phone, tablet or laptop. As the master presentation navigates the slides, all client presentations will update in real time. See a demo at [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/). | The multiplex plugin allows your audience to follow the slides of the presentation you are controlling on their own phone, tablet or laptop. As of 4.0.0 this plugin has moved to its own repo at <https://github.com/reveal/multiplex>; | ||||||
|  |  | ||||||
| The multiplex plugin needs the following 3 things to operate: |  | ||||||
|  |  | ||||||
| 1. Master presentation that has control |  | ||||||
| 2. Client presentations that follow the master |  | ||||||
| 3. Socket.io server to broadcast events from the master to the clients |  | ||||||
|  |  | ||||||
| #### Master presentation |  | ||||||
|  |  | ||||||
| Served from a static file server accessible (preferably) only to the presenter. This need only be on your (the presenter's) computer. (It's safer to run the master presentation from your own computer, so if the venue's Internet goes down it doesn't stop the show.) An example would be to execute the following commands in the directory of your master presentation: |  | ||||||
|  |  | ||||||
| 1. `npm install node-static` |  | ||||||
| 2. `static` |  | ||||||
|  |  | ||||||
| If you want to use the speaker notes plugin with your master presentation then make sure you have the speaker notes plugin configured correctly along with the configuration shown below, then execute `node plugin/notes-server` in the directory of your master presentation. The configuration below will cause it to connect to the socket.io server as a master, as well as launch your speaker-notes/static-file server. |  | ||||||
|  |  | ||||||
| You can then access your master presentation at `http://localhost:1947` |  | ||||||
|  |  | ||||||
| Example configuration: |  | ||||||
|  |  | ||||||
| ```javascript |  | ||||||
| Reveal.initialize({ |  | ||||||
|   // other options... |  | ||||||
|  |  | ||||||
|   multiplex: { |  | ||||||
|     // Example values. To generate your own, see the socket.io server instructions. |  | ||||||
|     secret: '13652805320794272084', // Obtained from the socket.io server. Gives this (the master) control of the presentation |  | ||||||
|     id: '1ea875674b17ca76', // Obtained from socket.io server |  | ||||||
|     url: 'https://reveal-js-multiplex-ccjbegmaii.now.sh' // Location of socket.io server |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   // Don't forget to add the dependencies |  | ||||||
|   dependencies: [ |  | ||||||
|     { src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js', async: true }, |  | ||||||
|     { src: 'plugin/multiplex/master.js', async: true }, |  | ||||||
|  |  | ||||||
|     // and if you want speaker notes |  | ||||||
|     { src: 'plugin/notes-server/client.js', async: true } |  | ||||||
|  |  | ||||||
|     // other dependencies... |  | ||||||
|   ] |  | ||||||
| }); |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| #### Client presentation |  | ||||||
|  |  | ||||||
| Served from a publicly accessible static file server. Examples include: GitHub Pages, Amazon S3, Dreamhost, Akamai, etc. The more reliable, the better. Your audience can then access the client presentation via `https://example.com/path/to/presentation/client/index.html`, with the configuration below causing them to connect to the socket.io server as clients. |  | ||||||
|  |  | ||||||
| Example configuration: |  | ||||||
|  |  | ||||||
| ```javascript |  | ||||||
| Reveal.initialize({ |  | ||||||
|   // other options... |  | ||||||
|  |  | ||||||
|   multiplex: { |  | ||||||
|     // Example values. To generate your own, see the socket.io server instructions. |  | ||||||
|     secret: null, // null so the clients do not have control of the master presentation |  | ||||||
|     id: '1ea875674b17ca76', // id, obtained from socket.io server |  | ||||||
|     url: 'https://reveal-js-multiplex-ccjbegmaii.now.sh' // Location of socket.io server |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   // Don't forget to add the dependencies |  | ||||||
|   dependencies: [ |  | ||||||
|     { src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js', async: true }, |  | ||||||
|     { src: 'plugin/multiplex/client.js', async: true } |  | ||||||
|  |  | ||||||
|     // other dependencies... |  | ||||||
|   ] |  | ||||||
| }); |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| #### Socket.io server |  | ||||||
|  |  | ||||||
| Server that receives the `slideChanged` events from the master presentation and broadcasts them out to the connected client presentations. This needs to be publicly accessible. You can run your own socket.io server with the commands: |  | ||||||
|  |  | ||||||
| 1. `npm install` |  | ||||||
| 2. `node plugin/multiplex` |  | ||||||
|  |  | ||||||
| Or you can use the socket.io server at [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/). |  | ||||||
|  |  | ||||||
| You'll need to generate a unique secret and token pair for your master and client presentations. To do so, visit `https://example.com/token`, where `https://example.com` is the location of your socket.io server. Or if you're going to use the socket.io server at [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/), visit [https://reveal-js-multiplex-ccjbegmaii.now.sh/token](https://reveal-js-multiplex-ccjbegmaii.now.sh/token). |  | ||||||
|  |  | ||||||
| You are very welcome to point your presentations at the Socket.io server running at [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/), but availability and stability are not guaranteed. |  | ||||||
|  |  | ||||||
| For anything mission critical I recommend you run your own server. The easiest way to do this is by installing [now](https://zeit.co/now). With that installed, deploying your own Multiplex server is as easy running the following command from the reveal.js folder: `now plugin/multiplex`. |  | ||||||
|  |  | ||||||
| ##### socket.io server as file static server |  | ||||||
|  |  | ||||||
| The socket.io server can play the role of static file server for your client presentation, as in the example at [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/). (Open [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/) in two browsers. Navigate through the slides on one, and the other will update to match.) |  | ||||||
|  |  | ||||||
| Example configuration: |  | ||||||
|  |  | ||||||
| ```javascript |  | ||||||
| Reveal.initialize({ |  | ||||||
|   // other options... |  | ||||||
|  |  | ||||||
|   multiplex: { |  | ||||||
|     // Example values. To generate your own, see the socket.io server instructions. |  | ||||||
|     secret: null, // null so the clients do not have control of the master presentation |  | ||||||
|     id: '1ea875674b17ca76', // id, obtained from socket.io server |  | ||||||
|     url: 'example.com:80' // Location of your socket.io server |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   // Don't forget to add the dependencies |  | ||||||
|   dependencies: [ |  | ||||||
|     { src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js', async: true }, |  | ||||||
|     { src: 'plugin/multiplex/client.js', async: true } |  | ||||||
|  |  | ||||||
|     // other dependencies... |  | ||||||
|   ] |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
| It can also play the role of static file server for your master presentation and client presentations at the same time (as long as you don't want to use speaker notes). (Open [https://reveal-js-multiplex-ccjbegmaii.now.sh/](https://reveal-js-multiplex-ccjbegmaii.now.sh/) in two browsers. Navigate through the slides on one, and the other will update to match. Navigate through the slides on the second, and the first will update to match.) This is probably not desirable, because you don't want your audience to mess with your slides while you're presenting. ;) |  | ||||||
|  |  | ||||||
| Example configuration: |  | ||||||
|  |  | ||||||
| ```javascript |  | ||||||
| Reveal.initialize({ |  | ||||||
|   // other options... |  | ||||||
|  |  | ||||||
|   multiplex: { |  | ||||||
|     // Example values. To generate your own, see the socket.io server instructions. |  | ||||||
|     secret: '13652805320794272084', // Obtained from the socket.io server. Gives this (the master) control of the presentation |  | ||||||
|     id: '1ea875674b17ca76', // Obtained from socket.io server |  | ||||||
|     url: 'example.com:80' // Location of your socket.io server |  | ||||||
|   }, |  | ||||||
|  |  | ||||||
|   // Don't forget to add the dependencies |  | ||||||
|   dependencies: [ |  | ||||||
|     { src: '//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js', async: true }, |  | ||||||
|     { src: 'plugin/multiplex/master.js', async: true }, |  | ||||||
|     { src: 'plugin/multiplex/client.js', async: true } |  | ||||||
|  |  | ||||||
|     // other dependencies... |  | ||||||
|   ] |  | ||||||
| }); |  | ||||||
| ``` |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## MathJax | ## MathJax | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								dist/reveal.es5.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/reveal.es5.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/reveal.es5.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/reveal.es5.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/reveal.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/reveal.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/reveal.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/reveal.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										529
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										529
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -993,12 +993,6 @@ | |||||||
|       "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", |       "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "after": { |  | ||||||
|       "version": "0.8.2", |  | ||||||
|       "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", |  | ||||||
|       "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "agent-base": { |     "agent-base": { | ||||||
|       "version": "5.1.1", |       "version": "5.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", |       "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", | ||||||
| @@ -1282,12 +1276,6 @@ | |||||||
|       "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", |       "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "array-flatten": { |  | ||||||
|       "version": "1.1.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", |  | ||||||
|       "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "array-initial": { |     "array-initial": { | ||||||
|       "version": "1.1.0", |       "version": "1.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", |       "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", | ||||||
| @@ -1354,12 +1342,6 @@ | |||||||
|       "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", |       "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "arraybuffer.slice": { |  | ||||||
|       "version": "0.0.7", |  | ||||||
|       "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", |  | ||||||
|       "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "asn1": { |     "asn1": { | ||||||
|       "version": "0.2.4", |       "version": "0.2.4", | ||||||
|       "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", |       "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", | ||||||
| @@ -1505,12 +1487,6 @@ | |||||||
|         "now-and-later": "^2.0.0" |         "now-and-later": "^2.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "backo2": { |  | ||||||
|       "version": "1.0.2", |  | ||||||
|       "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", |  | ||||||
|       "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "balanced-match": { |     "balanced-match": { | ||||||
|       "version": "1.0.0", |       "version": "1.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", | ||||||
| @@ -1572,18 +1548,6 @@ | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "base64-arraybuffer": { |  | ||||||
|       "version": "0.1.5", |  | ||||||
|       "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", |  | ||||||
|       "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "base64id": { |  | ||||||
|       "version": "2.0.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", |  | ||||||
|       "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "batch": { |     "batch": { | ||||||
|       "version": "0.6.1", |       "version": "0.6.1", | ||||||
|       "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", |       "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", | ||||||
| @@ -1599,15 +1563,6 @@ | |||||||
|         "tweetnacl": "^0.14.3" |         "tweetnacl": "^0.14.3" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "better-assert": { |  | ||||||
|       "version": "1.0.2", |  | ||||||
|       "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", |  | ||||||
|       "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "callsite": "1.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "binary-extensions": { |     "binary-extensions": { | ||||||
|       "version": "1.13.1", |       "version": "1.13.1", | ||||||
|       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", |       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", | ||||||
| @@ -1624,12 +1579,6 @@ | |||||||
|         "file-uri-to-path": "1.0.0" |         "file-uri-to-path": "1.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "blob": { |  | ||||||
|       "version": "0.0.5", |  | ||||||
|       "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", |  | ||||||
|       "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "block-stream": { |     "block-stream": { | ||||||
|       "version": "0.0.9", |       "version": "0.0.9", | ||||||
|       "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", |       "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", | ||||||
| @@ -1675,41 +1624,6 @@ | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "body-parser": { |  | ||||||
|       "version": "1.19.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", |  | ||||||
|       "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "bytes": "3.1.0", |  | ||||||
|         "content-type": "~1.0.4", |  | ||||||
|         "debug": "2.6.9", |  | ||||||
|         "depd": "~1.1.2", |  | ||||||
|         "http-errors": "1.7.2", |  | ||||||
|         "iconv-lite": "0.4.24", |  | ||||||
|         "on-finished": "~2.3.0", |  | ||||||
|         "qs": "6.7.0", |  | ||||||
|         "raw-body": "2.4.0", |  | ||||||
|         "type-is": "~1.6.17" |  | ||||||
|       }, |  | ||||||
|       "dependencies": { |  | ||||||
|         "debug": { |  | ||||||
|           "version": "2.6.9", |  | ||||||
|           "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |  | ||||||
|           "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", |  | ||||||
|           "dev": true, |  | ||||||
|           "requires": { |  | ||||||
|             "ms": "2.0.0" |  | ||||||
|           } |  | ||||||
|         }, |  | ||||||
|         "ms": { |  | ||||||
|           "version": "2.0.0", |  | ||||||
|           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |  | ||||||
|           "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", |  | ||||||
|           "dev": true |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "brace-expansion": { |     "brace-expansion": { | ||||||
|       "version": "1.1.11", |       "version": "1.1.11", | ||||||
|       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", |       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||||||
| @@ -1765,12 +1679,6 @@ | |||||||
|       "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", |       "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "bytes": { |  | ||||||
|       "version": "3.1.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", |  | ||||||
|       "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "cache-base": { |     "cache-base": { | ||||||
|       "version": "1.0.1", |       "version": "1.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", |       "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", | ||||||
| @@ -1788,12 +1696,6 @@ | |||||||
|         "unset-value": "^1.0.0" |         "unset-value": "^1.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "callsite": { |  | ||||||
|       "version": "1.0.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", |  | ||||||
|       "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "callsites": { |     "callsites": { | ||||||
|       "version": "3.1.0", |       "version": "3.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", |       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", | ||||||
| @@ -2112,24 +2014,12 @@ | |||||||
|       "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", |       "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "component-bind": { |  | ||||||
|       "version": "1.0.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", |  | ||||||
|       "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "component-emitter": { |     "component-emitter": { | ||||||
|       "version": "1.3.0", |       "version": "1.3.0", | ||||||
|       "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", |       "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", | ||||||
|       "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", |       "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "component-inherit": { |  | ||||||
|       "version": "0.0.3", |  | ||||||
|       "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", |  | ||||||
|       "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "concat-map": { |     "concat-map": { | ||||||
|       "version": "0.0.1", |       "version": "0.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||||||
| @@ -2206,21 +2096,6 @@ | |||||||
|       "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", |       "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "content-disposition": { |  | ||||||
|       "version": "0.5.3", |  | ||||||
|       "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", |  | ||||||
|       "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "safe-buffer": "5.1.2" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "content-type": { |  | ||||||
|       "version": "1.0.4", |  | ||||||
|       "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", |  | ||||||
|       "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "continuable-cache": { |     "continuable-cache": { | ||||||
|       "version": "0.3.1", |       "version": "0.3.1", | ||||||
|       "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", |       "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", | ||||||
| @@ -2236,18 +2111,6 @@ | |||||||
|         "safe-buffer": "~5.1.1" |         "safe-buffer": "~5.1.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "cookie": { |  | ||||||
|       "version": "0.4.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", |  | ||||||
|       "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "cookie-signature": { |  | ||||||
|       "version": "1.0.6", |  | ||||||
|       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", |  | ||||||
|       "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "copy-descriptor": { |     "copy-descriptor": { | ||||||
|       "version": "0.1.1", |       "version": "0.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", |       "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", | ||||||
| @@ -2539,83 +2402,6 @@ | |||||||
|         "once": "^1.4.0" |         "once": "^1.4.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "engine.io": { |  | ||||||
|       "version": "3.4.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.0.tgz", |  | ||||||
|       "integrity": "sha512-XCyYVWzcHnK5cMz7G4VTu2W7zJS7SM1QkcelghyIk/FmobWBtXE7fwhBusEKvCSqc3bMh8fNFMlUkCKTFRxH2w==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "accepts": "~1.3.4", |  | ||||||
|         "base64id": "2.0.0", |  | ||||||
|         "cookie": "0.3.1", |  | ||||||
|         "debug": "~4.1.0", |  | ||||||
|         "engine.io-parser": "~2.2.0", |  | ||||||
|         "ws": "^7.1.2" |  | ||||||
|       }, |  | ||||||
|       "dependencies": { |  | ||||||
|         "cookie": { |  | ||||||
|           "version": "0.3.1", |  | ||||||
|           "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", |  | ||||||
|           "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", |  | ||||||
|           "dev": true |  | ||||||
|         }, |  | ||||||
|         "ws": { |  | ||||||
|           "version": "7.2.3", |  | ||||||
|           "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz", |  | ||||||
|           "integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ==", |  | ||||||
|           "dev": true |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "engine.io-client": { |  | ||||||
|       "version": "3.4.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.0.tgz", |  | ||||||
|       "integrity": "sha512-a4J5QO2k99CM2a0b12IznnyQndoEvtA4UAldhGzKqnHf42I3Qs2W5SPnDvatZRcMaNZs4IevVicBPayxYt6FwA==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "component-emitter": "1.2.1", |  | ||||||
|         "component-inherit": "0.0.3", |  | ||||||
|         "debug": "~4.1.0", |  | ||||||
|         "engine.io-parser": "~2.2.0", |  | ||||||
|         "has-cors": "1.1.0", |  | ||||||
|         "indexof": "0.0.1", |  | ||||||
|         "parseqs": "0.0.5", |  | ||||||
|         "parseuri": "0.0.5", |  | ||||||
|         "ws": "~6.1.0", |  | ||||||
|         "xmlhttprequest-ssl": "~1.5.4", |  | ||||||
|         "yeast": "0.1.2" |  | ||||||
|       }, |  | ||||||
|       "dependencies": { |  | ||||||
|         "component-emitter": { |  | ||||||
|           "version": "1.2.1", |  | ||||||
|           "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", |  | ||||||
|           "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", |  | ||||||
|           "dev": true |  | ||||||
|         }, |  | ||||||
|         "ws": { |  | ||||||
|           "version": "6.1.4", |  | ||||||
|           "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", |  | ||||||
|           "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", |  | ||||||
|           "dev": true, |  | ||||||
|           "requires": { |  | ||||||
|             "async-limiter": "~1.0.0" |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "engine.io-parser": { |  | ||||||
|       "version": "2.2.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz", |  | ||||||
|       "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "after": "0.8.2", |  | ||||||
|         "arraybuffer.slice": "~0.0.7", |  | ||||||
|         "base64-arraybuffer": "0.1.5", |  | ||||||
|         "blob": "0.0.5", |  | ||||||
|         "has-binary2": "~1.0.2" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "error": { |     "error": { | ||||||
|       "version": "7.2.1", |       "version": "7.2.1", | ||||||
|       "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", |       "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", | ||||||
| @@ -2927,61 +2713,6 @@ | |||||||
|         "homedir-polyfill": "^1.0.1" |         "homedir-polyfill": "^1.0.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "express": { |  | ||||||
|       "version": "4.17.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", |  | ||||||
|       "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "accepts": "~1.3.7", |  | ||||||
|         "array-flatten": "1.1.1", |  | ||||||
|         "body-parser": "1.19.0", |  | ||||||
|         "content-disposition": "0.5.3", |  | ||||||
|         "content-type": "~1.0.4", |  | ||||||
|         "cookie": "0.4.0", |  | ||||||
|         "cookie-signature": "1.0.6", |  | ||||||
|         "debug": "2.6.9", |  | ||||||
|         "depd": "~1.1.2", |  | ||||||
|         "encodeurl": "~1.0.2", |  | ||||||
|         "escape-html": "~1.0.3", |  | ||||||
|         "etag": "~1.8.1", |  | ||||||
|         "finalhandler": "~1.1.2", |  | ||||||
|         "fresh": "0.5.2", |  | ||||||
|         "merge-descriptors": "1.0.1", |  | ||||||
|         "methods": "~1.1.2", |  | ||||||
|         "on-finished": "~2.3.0", |  | ||||||
|         "parseurl": "~1.3.3", |  | ||||||
|         "path-to-regexp": "0.1.7", |  | ||||||
|         "proxy-addr": "~2.0.5", |  | ||||||
|         "qs": "6.7.0", |  | ||||||
|         "range-parser": "~1.2.1", |  | ||||||
|         "safe-buffer": "5.1.2", |  | ||||||
|         "send": "0.17.1", |  | ||||||
|         "serve-static": "1.14.1", |  | ||||||
|         "setprototypeof": "1.1.1", |  | ||||||
|         "statuses": "~1.5.0", |  | ||||||
|         "type-is": "~1.6.18", |  | ||||||
|         "utils-merge": "1.0.1", |  | ||||||
|         "vary": "~1.1.2" |  | ||||||
|       }, |  | ||||||
|       "dependencies": { |  | ||||||
|         "debug": { |  | ||||||
|           "version": "2.6.9", |  | ||||||
|           "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |  | ||||||
|           "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", |  | ||||||
|           "dev": true, |  | ||||||
|           "requires": { |  | ||||||
|             "ms": "2.0.0" |  | ||||||
|           } |  | ||||||
|         }, |  | ||||||
|         "ms": { |  | ||||||
|           "version": "2.0.0", |  | ||||||
|           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |  | ||||||
|           "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", |  | ||||||
|           "dev": true |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "ext": { |     "ext": { | ||||||
|       "version": "1.4.0", |       "version": "1.4.0", | ||||||
|       "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", |       "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", | ||||||
| @@ -3455,12 +3186,6 @@ | |||||||
|         "mime-types": "^2.1.12" |         "mime-types": "^2.1.12" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "forwarded": { |  | ||||||
|       "version": "0.1.2", |  | ||||||
|       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", |  | ||||||
|       "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "fragment-cache": { |     "fragment-cache": { | ||||||
|       "version": "0.2.1", |       "version": "0.2.1", | ||||||
|       "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", |       "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", | ||||||
| @@ -4603,29 +4328,6 @@ | |||||||
|         "ansi-regex": "^2.0.0" |         "ansi-regex": "^2.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "has-binary2": { |  | ||||||
|       "version": "1.0.3", |  | ||||||
|       "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", |  | ||||||
|       "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "isarray": "2.0.1" |  | ||||||
|       }, |  | ||||||
|       "dependencies": { |  | ||||||
|         "isarray": { |  | ||||||
|           "version": "2.0.1", |  | ||||||
|           "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", |  | ||||||
|           "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", |  | ||||||
|           "dev": true |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "has-cors": { |  | ||||||
|       "version": "1.1.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", |  | ||||||
|       "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "has-flag": { |     "has-flag": { | ||||||
|       "version": "3.0.0", |       "version": "3.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", |       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", | ||||||
| @@ -4797,12 +4499,6 @@ | |||||||
|         "repeating": "^2.0.0" |         "repeating": "^2.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "indexof": { |  | ||||||
|       "version": "0.0.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", |  | ||||||
|       "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "inflight": { |     "inflight": { | ||||||
|       "version": "1.0.6", |       "version": "1.0.6", | ||||||
|       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", |       "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", | ||||||
| @@ -4951,12 +4647,6 @@ | |||||||
|       "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", |       "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "ipaddr.js": { |  | ||||||
|       "version": "1.9.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", |  | ||||||
|       "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "is-absolute": { |     "is-absolute": { | ||||||
|       "version": "1.0.0", |       "version": "1.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", |       "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", | ||||||
| @@ -5647,12 +5337,6 @@ | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "media-typer": { |  | ||||||
|       "version": "0.3.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", |  | ||||||
|       "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "meow": { |     "meow": { | ||||||
|       "version": "3.7.0", |       "version": "3.7.0", | ||||||
|       "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", |       "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", | ||||||
| @@ -5671,24 +5355,12 @@ | |||||||
|         "trim-newlines": "^1.0.0" |         "trim-newlines": "^1.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "merge-descriptors": { |  | ||||||
|       "version": "1.0.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", |  | ||||||
|       "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "merge-stream": { |     "merge-stream": { | ||||||
|       "version": "2.0.0", |       "version": "2.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", |       "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", | ||||||
|       "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", |       "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "methods": { |  | ||||||
|       "version": "1.1.2", |  | ||||||
|       "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", |  | ||||||
|       "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "micromatch": { |     "micromatch": { | ||||||
|       "version": "4.0.2", |       "version": "4.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", |       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", | ||||||
| @@ -5777,12 +5449,6 @@ | |||||||
|       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", |       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "mustache": { |  | ||||||
|       "version": "4.0.1", |  | ||||||
|       "resolved": "https://registry.npmjs.org/mustache/-/mustache-4.0.1.tgz", |  | ||||||
|       "integrity": "sha512-yL5VE97+OXn4+Er3THSmTdCFCtx5hHWzrolvH+JObZnUYwuaG7XV+Ch4fR2cIrcYI0tFHxS7iyFYl14bW8y2sA==", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "mute-stdout": { |     "mute-stdout": { | ||||||
|       "version": "1.0.1", |       "version": "1.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", |       "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", | ||||||
| @@ -6037,12 +5703,6 @@ | |||||||
|       "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", |       "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "object-component": { |  | ||||||
|       "version": "0.0.3", |  | ||||||
|       "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", |  | ||||||
|       "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "object-copy": { |     "object-copy": { | ||||||
|       "version": "0.1.0", |       "version": "0.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", |       "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", | ||||||
| @@ -6288,24 +5948,6 @@ | |||||||
|       "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", |       "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "parseqs": { |  | ||||||
|       "version": "0.0.5", |  | ||||||
|       "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", |  | ||||||
|       "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "better-assert": "~1.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "parseuri": { |  | ||||||
|       "version": "0.0.5", |  | ||||||
|       "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", |  | ||||||
|       "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "better-assert": "~1.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "parseurl": { |     "parseurl": { | ||||||
|       "version": "1.3.3", |       "version": "1.3.3", | ||||||
|       "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", |       "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | ||||||
| @@ -6363,12 +6005,6 @@ | |||||||
|       "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", |       "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "path-to-regexp": { |  | ||||||
|       "version": "0.1.7", |  | ||||||
|       "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", |  | ||||||
|       "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "path-type": { |     "path-type": { | ||||||
|       "version": "1.1.0", |       "version": "1.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", |       "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", | ||||||
| @@ -6510,16 +6146,6 @@ | |||||||
|       "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", |       "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "proxy-addr": { |  | ||||||
|       "version": "2.0.6", |  | ||||||
|       "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", |  | ||||||
|       "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "forwarded": "~0.1.2", |  | ||||||
|         "ipaddr.js": "1.9.1" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "proxy-from-env": { |     "proxy-from-env": { | ||||||
|       "version": "1.1.0", |       "version": "1.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", |       "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", | ||||||
| @@ -6633,18 +6259,6 @@ | |||||||
|       "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", |       "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "raw-body": { |  | ||||||
|       "version": "2.4.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", |  | ||||||
|       "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "bytes": "3.1.0", |  | ||||||
|         "http-errors": "1.7.2", |  | ||||||
|         "iconv-lite": "0.4.24", |  | ||||||
|         "unpipe": "1.0.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "read-pkg": { |     "read-pkg": { | ||||||
|       "version": "1.1.0", |       "version": "1.1.0", | ||||||
|       "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", |       "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", | ||||||
| @@ -7584,115 +7198,6 @@ | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "socket.io": { |  | ||||||
|       "version": "2.3.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", |  | ||||||
|       "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "debug": "~4.1.0", |  | ||||||
|         "engine.io": "~3.4.0", |  | ||||||
|         "has-binary2": "~1.0.2", |  | ||||||
|         "socket.io-adapter": "~1.1.0", |  | ||||||
|         "socket.io-client": "2.3.0", |  | ||||||
|         "socket.io-parser": "~3.4.0" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "socket.io-adapter": { |  | ||||||
|       "version": "1.1.2", |  | ||||||
|       "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", |  | ||||||
|       "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "socket.io-client": { |  | ||||||
|       "version": "2.3.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", |  | ||||||
|       "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "backo2": "1.0.2", |  | ||||||
|         "base64-arraybuffer": "0.1.5", |  | ||||||
|         "component-bind": "1.0.0", |  | ||||||
|         "component-emitter": "1.2.1", |  | ||||||
|         "debug": "~4.1.0", |  | ||||||
|         "engine.io-client": "~3.4.0", |  | ||||||
|         "has-binary2": "~1.0.2", |  | ||||||
|         "has-cors": "1.1.0", |  | ||||||
|         "indexof": "0.0.1", |  | ||||||
|         "object-component": "0.0.3", |  | ||||||
|         "parseqs": "0.0.5", |  | ||||||
|         "parseuri": "0.0.5", |  | ||||||
|         "socket.io-parser": "~3.3.0", |  | ||||||
|         "to-array": "0.1.4" |  | ||||||
|       }, |  | ||||||
|       "dependencies": { |  | ||||||
|         "component-emitter": { |  | ||||||
|           "version": "1.2.1", |  | ||||||
|           "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", |  | ||||||
|           "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", |  | ||||||
|           "dev": true |  | ||||||
|         }, |  | ||||||
|         "isarray": { |  | ||||||
|           "version": "2.0.1", |  | ||||||
|           "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", |  | ||||||
|           "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", |  | ||||||
|           "dev": true |  | ||||||
|         }, |  | ||||||
|         "ms": { |  | ||||||
|           "version": "2.0.0", |  | ||||||
|           "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |  | ||||||
|           "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", |  | ||||||
|           "dev": true |  | ||||||
|         }, |  | ||||||
|         "socket.io-parser": { |  | ||||||
|           "version": "3.3.0", |  | ||||||
|           "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", |  | ||||||
|           "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", |  | ||||||
|           "dev": true, |  | ||||||
|           "requires": { |  | ||||||
|             "component-emitter": "1.2.1", |  | ||||||
|             "debug": "~3.1.0", |  | ||||||
|             "isarray": "2.0.1" |  | ||||||
|           }, |  | ||||||
|           "dependencies": { |  | ||||||
|             "debug": { |  | ||||||
|               "version": "3.1.0", |  | ||||||
|               "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", |  | ||||||
|               "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", |  | ||||||
|               "dev": true, |  | ||||||
|               "requires": { |  | ||||||
|                 "ms": "2.0.0" |  | ||||||
|               } |  | ||||||
|             } |  | ||||||
|           } |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "socket.io-parser": { |  | ||||||
|       "version": "3.4.0", |  | ||||||
|       "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.0.tgz", |  | ||||||
|       "integrity": "sha512-/G/VOI+3DBp0+DJKW4KesGnQkQPFmUCbA/oO2QGT6CWxU7hLGWqU3tyuzeSK/dqcyeHsQg1vTe9jiZI8GU9SCQ==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "component-emitter": "1.2.1", |  | ||||||
|         "debug": "~4.1.0", |  | ||||||
|         "isarray": "2.0.1" |  | ||||||
|       }, |  | ||||||
|       "dependencies": { |  | ||||||
|         "component-emitter": { |  | ||||||
|           "version": "1.2.1", |  | ||||||
|           "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", |  | ||||||
|           "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", |  | ||||||
|           "dev": true |  | ||||||
|         }, |  | ||||||
|         "isarray": { |  | ||||||
|           "version": "2.0.1", |  | ||||||
|           "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", |  | ||||||
|           "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", |  | ||||||
|           "dev": true |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "source-map": { |     "source-map": { | ||||||
|       "version": "0.5.7", |       "version": "0.5.7", | ||||||
|       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", |       "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", | ||||||
| @@ -8102,12 +7607,6 @@ | |||||||
|         "is-negated-glob": "^1.0.0" |         "is-negated-glob": "^1.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "to-array": { |  | ||||||
|       "version": "0.1.4", |  | ||||||
|       "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", |  | ||||||
|       "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "to-fast-properties": { |     "to-fast-properties": { | ||||||
|       "version": "2.0.0", |       "version": "2.0.0", | ||||||
|       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", |       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", | ||||||
| @@ -8237,16 +7736,6 @@ | |||||||
|       "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", |       "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "type-is": { |  | ||||||
|       "version": "1.6.18", |  | ||||||
|       "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", |  | ||||||
|       "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", |  | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |  | ||||||
|         "media-typer": "0.3.0", |  | ||||||
|         "mime-types": "~2.1.24" |  | ||||||
|       } |  | ||||||
|     }, |  | ||||||
|     "typedarray": { |     "typedarray": { | ||||||
|       "version": "0.0.6", |       "version": "0.0.6", | ||||||
|       "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", |       "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", | ||||||
| @@ -8454,12 +7943,6 @@ | |||||||
|       "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", |       "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|     "vary": { |  | ||||||
|       "version": "1.1.2", |  | ||||||
|       "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", |  | ||||||
|       "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "verror": { |     "verror": { | ||||||
|       "version": "1.10.0", |       "version": "1.10.0", | ||||||
|       "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", |       "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", | ||||||
| @@ -8615,12 +8098,6 @@ | |||||||
|         "async-limiter": "~1.0.0" |         "async-limiter": "~1.0.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     "xmlhttprequest-ssl": { |  | ||||||
|       "version": "1.5.5", |  | ||||||
|       "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", |  | ||||||
|       "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", |  | ||||||
|       "dev": true |  | ||||||
|     }, |  | ||||||
|     "xtend": { |     "xtend": { | ||||||
|       "version": "4.0.2", |       "version": "4.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", |       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", | ||||||
| @@ -8855,12 +8332,6 @@ | |||||||
|       "requires": { |       "requires": { | ||||||
|         "buffer-crc32": "~0.2.3" |         "buffer-crc32": "~0.2.3" | ||||||
|       } |       } | ||||||
|     }, |  | ||||||
|     "yeast": { |  | ||||||
|       "version": "0.1.2", |  | ||||||
|       "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", |  | ||||||
|       "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", |  | ||||||
|       "dev": true |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -30,7 +30,6 @@ | |||||||
|     "babel-eslint": "^10.1.0", |     "babel-eslint": "^10.1.0", | ||||||
|     "colors": "^1.4.0", |     "colors": "^1.4.0", | ||||||
|     "core-js": "^3.6.5", |     "core-js": "^3.6.5", | ||||||
|     "express": "^4.17.1", |  | ||||||
|     "glob": "^7.1.6", |     "glob": "^7.1.6", | ||||||
|     "gulp": "^4.0.2", |     "gulp": "^4.0.2", | ||||||
|     "gulp-autoprefixer": "^7.0.1", |     "gulp-autoprefixer": "^7.0.1", | ||||||
| @@ -41,13 +40,11 @@ | |||||||
|     "gulp-sass": "^4.0.2", |     "gulp-sass": "^4.0.2", | ||||||
|     "gulp-tap": "^2.0.0", |     "gulp-tap": "^2.0.0", | ||||||
|     "gulp-zip": "^5.0.1", |     "gulp-zip": "^5.0.1", | ||||||
|     "mustache": "^4.0.0", |  | ||||||
|     "node-qunit-puppeteer": "^2.0.1", |     "node-qunit-puppeteer": "^2.0.1", | ||||||
|     "qunit": "^2.9.3", |     "qunit": "^2.9.3", | ||||||
|     "rollup": "^2.6.1", |     "rollup": "^2.6.1", | ||||||
|     "rollup-plugin-babel": "^4.4.0", |     "rollup-plugin-babel": "^4.4.0", | ||||||
|     "rollup-plugin-terser": "^5.3.0", |     "rollup-plugin-terser": "^5.3.0", | ||||||
|     "socket.io": "^2.3.0", |  | ||||||
|     "yargs": "^15.1.0" |     "yargs": "^15.1.0" | ||||||
|   }, |   }, | ||||||
|   "browserslist": "> 0.5%, IE 11, not dead", |   "browserslist": "> 0.5%, IE 11, not dead", | ||||||
|   | |||||||
| @@ -1,13 +0,0 @@ | |||||||
| (function() { |  | ||||||
| 	var multiplex = Reveal.getConfig().multiplex; |  | ||||||
| 	var socketId = multiplex.id; |  | ||||||
| 	var socket = io.connect(multiplex.url); |  | ||||||
|  |  | ||||||
| 	socket.on(multiplex.id, function(data) { |  | ||||||
| 		// ignore data from sockets that aren't ours |  | ||||||
| 		if (data.socketId !== socketId) { return; } |  | ||||||
| 		if( window.location.host === 'localhost:1947' ) return; |  | ||||||
|  |  | ||||||
| 		Reveal.setState(data.state); |  | ||||||
| 	}); |  | ||||||
| }()); |  | ||||||
| @@ -1,64 +0,0 @@ | |||||||
| var http        = require('http'); |  | ||||||
| var express		= require('express'); |  | ||||||
| var fs			= require('fs'); |  | ||||||
| var io			= require('socket.io'); |  | ||||||
| var crypto		= require('crypto'); |  | ||||||
|  |  | ||||||
| var app       	= express(); |  | ||||||
| var staticDir 	= express.static; |  | ||||||
| var server    	= http.createServer(app); |  | ||||||
|  |  | ||||||
| io = io(server); |  | ||||||
|  |  | ||||||
| var opts = { |  | ||||||
| 	port: process.env.PORT || 1948, |  | ||||||
| 	baseDir : __dirname + '/../../' |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| io.on( 'connection', function( socket ) { |  | ||||||
| 	socket.on('multiplex-statechanged', function(data) { |  | ||||||
| 		if (typeof data.secret == 'undefined' || data.secret == null || data.secret === '') return; |  | ||||||
| 		if (createHash(data.secret) === data.socketId) { |  | ||||||
| 			data.secret = null; |  | ||||||
| 			socket.broadcast.emit(data.socketId, data); |  | ||||||
| 		}; |  | ||||||
| 	}); |  | ||||||
| }); |  | ||||||
|  |  | ||||||
| [ 'css', 'js', 'plugin', 'lib' ].forEach(function(dir) { |  | ||||||
| 	app.use('/' + dir, staticDir(opts.baseDir + dir)); |  | ||||||
| }); |  | ||||||
|  |  | ||||||
| app.get("/", function(req, res) { |  | ||||||
| 	res.writeHead(200, {'Content-Type': 'text/html'}); |  | ||||||
|  |  | ||||||
| 	var stream = fs.createReadStream(opts.baseDir + '/index.html'); |  | ||||||
| 	stream.on('error', function( error ) { |  | ||||||
| 		res.write('<style>body{font-family: sans-serif;}</style><h2>reveal.js multiplex server.</h2><a href="/token">Generate token</a>'); |  | ||||||
| 		res.end(); |  | ||||||
| 	}); |  | ||||||
| 	stream.on('readable', function() { |  | ||||||
| 		stream.pipe(res); |  | ||||||
| 	}); |  | ||||||
| }); |  | ||||||
|  |  | ||||||
| app.get("/token", function(req,res) { |  | ||||||
| 	var ts = new Date().getTime(); |  | ||||||
| 	var rand = Math.floor(Math.random()*9999999); |  | ||||||
| 	var secret = ts.toString() + rand.toString(); |  | ||||||
| 	res.send({secret: secret, socketId: createHash(secret)}); |  | ||||||
| }); |  | ||||||
|  |  | ||||||
| var createHash = function(secret) { |  | ||||||
| 	var cipher = crypto.createCipher('blowfish', secret); |  | ||||||
| 	return(cipher.final('hex')); |  | ||||||
| }; |  | ||||||
|  |  | ||||||
| // Actually listen |  | ||||||
| server.listen( opts.port || null ); |  | ||||||
|  |  | ||||||
| var brown = '\033[33m', |  | ||||||
| 	green = '\033[32m', |  | ||||||
| 	reset = '\033[0m'; |  | ||||||
|  |  | ||||||
| console.log( brown + "reveal.js:" + reset + " Multiplex running on port " + green + opts.port + reset ); |  | ||||||
| @@ -1,34 +0,0 @@ | |||||||
| (function() { |  | ||||||
|  |  | ||||||
| 	// Don't emit events from inside of notes windows |  | ||||||
| 	if ( window.location.search.match( /receiver/gi ) ) { return; } |  | ||||||
|  |  | ||||||
| 	var multiplex = Reveal.getConfig().multiplex; |  | ||||||
|  |  | ||||||
| 	var socket = io.connect( multiplex.url ); |  | ||||||
|  |  | ||||||
| 	function post() { |  | ||||||
|  |  | ||||||
| 		var messageData = { |  | ||||||
| 			state: Reveal.getState(), |  | ||||||
| 			secret: multiplex.secret, |  | ||||||
| 			socketId: multiplex.id |  | ||||||
| 		}; |  | ||||||
|  |  | ||||||
| 		socket.emit( 'multiplex-statechanged', messageData ); |  | ||||||
|  |  | ||||||
| 	}; |  | ||||||
|  |  | ||||||
| 	// post once the page is loaded, so the client follows also on "open URL". |  | ||||||
| 	window.addEventListener( 'load', post ); |  | ||||||
|  |  | ||||||
| 	// Monitor events that trigger a change in state |  | ||||||
| 	Reveal.on( 'slidechanged', post ); |  | ||||||
| 	Reveal.on( 'fragmentshown', post ); |  | ||||||
| 	Reveal.on( 'fragmenthidden', post ); |  | ||||||
| 	Reveal.on( 'overviewhidden', post ); |  | ||||||
| 	Reveal.on( 'overviewshown', post ); |  | ||||||
| 	Reveal.on( 'paused', post ); |  | ||||||
| 	Reveal.on( 'resumed', post ); |  | ||||||
|  |  | ||||||
| }()); |  | ||||||
| @@ -1,19 +0,0 @@ | |||||||
| { |  | ||||||
|   "name": "reveal-js-multiplex", |  | ||||||
|   "version": "1.0.0", |  | ||||||
|   "description": "reveal.js multiplex server", |  | ||||||
|   "homepage": "http://revealjs.com", |  | ||||||
|   "scripts": { |  | ||||||
|     "start": "node index.js" |  | ||||||
|   }, |  | ||||||
|   "engines": { |  | ||||||
|     "node": "~4.1.1" |  | ||||||
|   }, |  | ||||||
|   "dependencies": { |  | ||||||
|     "express": "~4.13.3", |  | ||||||
|     "grunt-cli": "~0.1.13", |  | ||||||
|     "mustache": "~2.2.1", |  | ||||||
|     "socket.io": "~1.3.7" |  | ||||||
|   }, |  | ||||||
|   "license": "MIT" |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user