sockethub 5.0.0-alpha.2 → 5.0.0-alpha.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/README.md +6 -92
  2. package/bin/sockethub +3 -29
  3. package/bin/sockethub-logged +109 -0
  4. package/build.js +12 -0
  5. package/package.json +20 -66
  6. package/config.json.example +0 -32
  7. package/dist/bootstrap/init.js +0 -74
  8. package/dist/bootstrap/init.js.map +0 -1
  9. package/dist/bootstrap/platforms.js +0 -103
  10. package/dist/common.js +0 -20
  11. package/dist/common.js.map +0 -1
  12. package/dist/config.js +0 -60
  13. package/dist/config.js.map +0 -1
  14. package/dist/crypto.js +0 -38
  15. package/dist/crypto.js.map +0 -1
  16. package/dist/defaults.json +0 -32
  17. package/dist/janitor.js +0 -98
  18. package/dist/janitor.js.map +0 -1
  19. package/dist/middleware/create-activity-object.js +0 -19
  20. package/dist/middleware/create-activity-object.js.map +0 -1
  21. package/dist/middleware/expand-activity-stream.js +0 -33
  22. package/dist/middleware/expand-activity-stream.js.map +0 -1
  23. package/dist/middleware/expand-activity-stream.test.data.js +0 -360
  24. package/dist/middleware/expand-activity-stream.test.data.js.map +0 -1
  25. package/dist/middleware/store-credentials.js +0 -19
  26. package/dist/middleware/store-credentials.js.map +0 -1
  27. package/dist/middleware/validate.js +0 -77
  28. package/dist/middleware/validate.js.map +0 -1
  29. package/dist/middleware/validate.test.data.js +0 -321
  30. package/dist/middleware/validate.test.data.js.map +0 -1
  31. package/dist/middleware.js +0 -54
  32. package/dist/middleware.js.map +0 -1
  33. package/dist/platform-instance.js +0 -226
  34. package/dist/platform-instance.js.map +0 -1
  35. package/dist/platform.js +0 -186
  36. package/dist/platform.js.map +0 -1
  37. package/dist/process-manager.js +0 -78
  38. package/dist/process-manager.js.map +0 -1
  39. package/dist/routes.js +0 -84
  40. package/dist/routes.js.map +0 -1
  41. package/dist/serve.js +0 -102
  42. package/dist/serve.js.map +0 -1
  43. package/dist/sockethub-client.js +0 -2604
  44. package/dist/sockethub-client.js.map +0 -1
  45. package/dist/sockethub-client.min.js +0 -2
  46. package/dist/sockethub-client.min.js.LICENSE.txt +0 -24
  47. package/dist/sockethub.js +0 -130
  48. package/dist/sockethub.js.map +0 -1
  49. package/dist/store.js +0 -17
  50. package/dist/store.js.map +0 -1
  51. package/src/bootstrap/init.d.ts +0 -8
  52. package/src/bootstrap/init.ts +0 -91
  53. package/src/bootstrap/platforms.js +0 -103
  54. package/src/common.test.ts +0 -54
  55. package/src/common.ts +0 -14
  56. package/src/config.d.ts +0 -2
  57. package/src/config.test.ts +0 -28
  58. package/src/config.ts +0 -72
  59. package/src/crypto.d.ts +0 -5
  60. package/src/crypto.test.ts +0 -41
  61. package/src/crypto.ts +0 -41
  62. package/src/defaults.json +0 -32
  63. package/src/janitor.d.ts +0 -8
  64. package/src/janitor.ts +0 -89
  65. package/src/middleware/create-activity-object.test.ts +0 -10
  66. package/src/middleware/create-activity-object.ts +0 -13
  67. package/src/middleware/expand-activity-stream.test.data.ts +0 -365
  68. package/src/middleware/expand-activity-stream.test.ts +0 -78
  69. package/src/middleware/expand-activity-stream.ts +0 -27
  70. package/src/middleware/store-credentials.test.ts +0 -72
  71. package/src/middleware/store-credentials.ts +0 -16
  72. package/src/middleware/validate.d.ts +0 -1
  73. package/src/middleware/validate.test.data.ts +0 -320
  74. package/src/middleware/validate.test.ts +0 -47
  75. package/src/middleware/validate.ts +0 -49
  76. package/src/middleware.d.ts +0 -21
  77. package/src/middleware.test.ts +0 -148
  78. package/src/middleware.ts +0 -52
  79. package/src/platform-instance.test.ts +0 -237
  80. package/src/platform-instance.ts +0 -236
  81. package/src/platform.ts +0 -189
  82. package/src/process-manager.ts +0 -64
  83. package/src/routes.test.ts +0 -100
  84. package/src/routes.ts +0 -93
  85. package/src/serve.ts +0 -79
  86. package/src/sockethub-client.test.ts +0 -235
  87. package/src/sockethub-client.ts +0 -164
  88. package/src/sockethub.d.ts +0 -1
  89. package/src/sockethub.ts +0 -184
  90. package/src/store.test.ts +0 -26
  91. package/src/store.ts +0 -17
  92. package/test/init-suite.js +0 -41
  93. package/test/sockethub-suite.js +0 -25
  94. package/tsconfig.json +0 -79
  95. package/views/examples/dummy.ejs +0 -93
  96. package/views/examples/feeds.ejs +0 -90
  97. package/views/examples/irc.ejs +0 -239
  98. package/views/examples/shared.js +0 -72
  99. package/views/examples/xmpp.ejs +0 -191
  100. package/views/index.ejs +0 -17
  101. package/webpack.minified.config.js +0 -14
  102. package/webpack.normal.config.js +0 -14
package/tsconfig.json DELETED
@@ -1,79 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- /* Basic Options */
4
- // "incremental": true, /* Enable incremental compilation */
5
- "target": "es6",
6
- /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
7
- "module": "commonjs",
8
- /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
9
- "lib": ["esnext"], /* Specify library files to be included in the compilation. */
10
- "allowJs": false,
11
- /* Allow javascript files to be compiled. */
12
- // "checkJs": true, /* Report errors in .js files. */
13
- // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
14
- // "declaration": true, /* Generates corresponding '.d.ts' file. */
15
- // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
16
- "sourceMap": true,
17
- /* Generates corresponding '.map' file. */
18
- // "outFile": "./", /* Concatenate and emit output to single file. */
19
- "outDir": "dist",
20
- /* Redirect output structure to the directory. */
21
- "rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
22
- // "composite": true, /* Enable project compilation */
23
- // "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
24
- // "removeComments": true, /* Do not emit comments to output. */
25
- // "noEmit": true, /* Do not emit outputs. */
26
- // "importHelpers": true, /* Import emit helpers from 'tslib'. */
27
- "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
28
- // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
29
-
30
- /* Strict Type-Checking Options */
31
- // "strict": true, /* Enable all strict type-checking options. */
32
- "noImplicitAny": false,
33
- /* Raise error on expressions and declarations with an implied 'any' type. */
34
- // "strictNullChecks": true, /* Enable strict null checks. */
35
- // "strictFunctionTypes": true, /* Enable strict checking of function types. */
36
- // "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
37
- // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
38
- "noImplicitThis": false,
39
- /* Raise error on 'this' expressions with an implied 'any' type. */
40
- // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
41
-
42
- /* Additional Checks */
43
- // "noUnusedLocals": true, /* Report errors on unused locals. */
44
- // "noUnusedParameters": true, /* Report errors on unused parameters. */
45
- // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
46
- // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
47
-
48
- /* Module Resolution Options */
49
- "moduleResolution": "node",
50
- /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
51
- "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
52
- // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
53
- // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
54
- // "typeRoots": [], /* List of folders to include type definitions from. */
55
- "types": ["mocha", "node"], /* Type declaration files to be included in compilation. */
56
- // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
57
- "esModuleInterop": true,
58
- /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
59
- // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
60
- // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
61
-
62
- /* Source Map Options */
63
- "sourceRoot": "/", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
64
- "mapRoot": "/", /* Specify the location where debugger should locate map files instead of generated locations. */
65
- // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
66
- // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
67
-
68
- /* Experimental Options */
69
- // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
70
- // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
71
- "resolveJsonModule": true
72
- },
73
- "include": [
74
- "src"
75
- ],
76
- "exclude": [
77
- "**/test", "**/node_modules", "**/dist", "**/*.test.ts"
78
- ]
79
- }
@@ -1,93 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <title>Sockethub Example Dummy</title>
5
- <style>
6
- * { margin: 0; padding: 0; box-sizing: border-box; }
7
- body { font: 13px Helvetica, Arial; }
8
- form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
9
- form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
10
- form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
11
- #messages { list-style-type: none; margin: 0; padding: 0; }
12
- #messages li { padding: 5px 10px; }
13
- #messages li:nth-child(odd) { background: #eee; }
14
- </style>
15
- </head>
16
- <body>
17
- <ul id="messages"></ul>
18
- <form action="">
19
- <input id="m" autocomplete="off" /><button>Send</button>
20
- </form>
21
-
22
- <script src="<%= address %>jquery.js"></script>
23
- <script src="<%= address %>socket.io.js"></script>
24
- <script src="<%= address %>activity-streams.min.js"></script>
25
- <script src="<%= address %>sockethub-client.js"></script>
26
- <script>
27
- bdebug = function (msg, obj) { console.log(msg, obj); };
28
- localStorage.debug = '<%= debug_scope %>';
29
- var sc = new SockethubClient(io('<%= address %>', { path: '/sockethub' }));
30
-
31
- // our user info
32
- sc.ActivityStreams.Object.create({
33
- 'id': 'https://sockethub.org/examples/dummyUser',
34
- 'type': "person",
35
- name: "Sockethub Examples - Dummy User"
36
- });
37
-
38
- // errors
39
- sc.socket.on('failure', function (msg) {
40
- bdebug('received failure: ', msg);
41
- });
42
-
43
- function displayMessage(msg) {
44
- msg.actor = sc.ActivityStreams.Object.get(msg.actor);
45
- bdebug('displaying message: ', msg);
46
- $('#messages').append($('<li>').text(msg.actor.name + ': ' + msg.object.title));
47
- }
48
-
49
- sc.socket.on('completed', function (msg) {
50
- bdebug('received completed event for: ', msg);
51
- });
52
-
53
- // handle incoming messages from the sockethub server
54
- sc.socket.on('message', function (msg) {
55
- bdebug('received message: ', msg);
56
- if (Array.isArray(msg)) {
57
- bdebug('is array len:' + msg.length);
58
- for (var i = 0, len = msg.length; i < len; i++) {
59
- bdebug('looping '+i+' ', msg[i]);
60
- displayMessage(msg[i]);
61
- }
62
- } else {
63
- displayMessage(msg);
64
- }
65
- });
66
-
67
- // handler for user input, emit messages to sockethub server
68
- $('form').submit(function () {
69
- let text = $('#m').val();
70
- const parts = text.split('fail:');
71
- let type = 'echo';
72
- text = parts[parts.length-1];
73
- if (parts.length > 1) {
74
- type = 'fail';
75
- }
76
- const msg = {
77
- context: 'dummy',
78
- 'type': type,
79
- actor: 'https://sockethub.org/examples/dummyUser',
80
- object: {
81
- 'type': 'message',
82
- content: text
83
- }
84
- };
85
- bdebug('sending message: ', msg);
86
- sc.socket.emit('message', msg);
87
-
88
- $('#m').val('');
89
- return false;
90
- });
91
- </script>
92
- </body>
93
- </html>
@@ -1,90 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <title>Sockethub Example Feed Reader</title>
5
- <style>
6
- * { margin: 0; padding: 0; box-sizing: border-box; }
7
- body { font: 13px Helvetica, Arial; }
8
- form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
9
- form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
10
- form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
11
- #messages { list-style-type: none; margin: 0; padding: 0; }
12
- #messages li { padding: 5px 10px; }
13
- #messages li:nth-child(odd) { background: #eee; }
14
- </style>
15
- </head>
16
- <body>
17
- <ul id="messages"></ul>
18
- <form action="">
19
- <input id="m" autocomplete="off" /><button>Send</button>
20
- </form>
21
-
22
- <script src="<%= address %>jquery.js"></script>
23
- <script src="<%= address %>socket.io.js"></script>
24
- <script src="<%= address %>activity-streams.min.js"></script>
25
- <script src="<%= address %>sockethub-client.js"></script>
26
- <script>
27
- localStorage.debug = '<%= debug_scope %>';
28
- const sc = new SockethubClient(io('<%= address %>', { path: '/sockethub' }));
29
-
30
- // errors
31
- sc.socket.on('failure', function (msg) {
32
- console.log('received failure: ', msg);
33
- });
34
-
35
- sc.socket.on('completed', function (msg) {
36
- console.log('received completed event for: ', msg);
37
- displayMessages(msg.object.content || []);
38
- });
39
-
40
- // handle incoming messages from the sockethub server
41
- sc.socket.on('message', function (msg) {
42
- console.log('received message: ', msg);
43
- displayMessages(msg);
44
- });
45
-
46
- function displayMessages(msgs) {
47
- if (Array.isArray(msgs)) {
48
- for (let i = 0, len = msgs.length; i < len; i++) {
49
- displayMessage(msgs[i]);
50
- }
51
- } else {
52
- displayMessage(msgs);
53
- }
54
- }
55
-
56
- function displayMessage(msg) {
57
- console.log('displaying message: ', msg);
58
- $('#messages').append($('<li>').html(`<b>${msg.object.name}</b>: ${msg.object.html}`));
59
- }
60
-
61
- // handler for user input, emit messages to sockethub server
62
- $('form').submit(function () {
63
- const msg = {
64
- context: 'feeds',
65
- 'type': 'fetch',
66
- actor: 'https://sockethub.org/examples/feeds',
67
- object: {
68
- 'type': 'parameters'
69
- },
70
- target: {
71
- 'type': 'feed',
72
- 'id': $('#m').val()
73
- }
74
- };
75
-
76
- console.log('sending message: ', msg);
77
- sc.socket.emit('message', msg, (data) => { console.log('CALLBACK', data); });
78
- $('#m').val('');
79
- return false;
80
- });
81
-
82
- // our feed actor info
83
- sc.ActivityStreams.Object.create({
84
- 'id': 'https://sockethub.org/examples/feeds',
85
- 'type': "website",
86
- name: "Sockethub Examples - Feeds"
87
- });
88
- </script>
89
- </body>
90
- </html>
@@ -1,239 +0,0 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <title>Sockethub Example IRC Chat</title>
5
- <style>
6
- * { margin: 0; padding: 0; box-sizing: border-box; }
7
- body { font: 0.8em Helvetica, Arial; }
8
- h3 { color: #6B6767; font-size: 0.8em; margin-bottom: 1em; }
9
- form#chat { background: #000; padding: 0.3em; position: fixed; bottom: 0; width: 100%; }
10
- input { border: 0; padding: 5%; }
11
- button { width: 20%; background: rgb(130, 224, 255); border: none; padding: 5%; }
12
- button.invis { background-color: rgba(0, 0, 0, 0); color: rgba(0, 0, 0, 0);}
13
- button:hover { cursor: pointer; }
14
- .messageInput { width: 80%; }
15
- #messages { list-style-type: none; margin: 0; padding: 0; }
16
- #messages li { padding: 0.1em 1%; }
17
- #messages li:nth-child(odd) { background: #eee; }
18
- .modal { position: fixed; top: 15%; left: 5%; width: 90%;
19
- line-height: 1em; padding: 3% 0 3%;
20
- background-color: #f1c40f; text-align: center;
21
- z-index: 10; outline: 9999px solid rgba(0,0,0,0.5); }
22
- @media only screen and (max-width: 1050px) {
23
- body { font: 1em Helvetica, Arial; }
24
- h3 { color: #6B6767; font-size: 1em; margin-bottom: 1.5em; }
25
- input { border: 0; padding: 3%; width: 70%; font-size: 1em; }
26
- button { width: 20%; border: none; padding: 3%; font-size: 1em; }
27
- }
28
- @media only screen and (max-width: 5000px) {
29
- body { font: 0.9em Helvetica, Arial; }
30
- h3 { color: #6B6767; font-size: 1.2em; margin-bottom: 1.5em; }
31
- .modal input { border: 0; padding: 2%; width: 80%; font-size: 0.8em; }
32
- .modal button { width: 10%; border: none; padding: 2%; font-size: 0.8em; }
33
- input { padding: 1%; }
34
- button { padding: 1%; width: 10%; }
35
- .messageInput { width: 90%; }
36
- }
37
- </style>
38
- </head>
39
- <body>
40
- <div class="modal">
41
- <h3>Click `Join` to connect and join the IRC channel.</h3>
42
- <form id="intro" action="">
43
- <!-- <input id="n" autocomplete="off" value="sh-"><button class="invis" disabled>nick</button>-->
44
- <input id="j" autocomplete="off" value=""><button id="join">Join</button>
45
- </form>
46
- </div>
47
- <ul id="messages"></ul>
48
- <form id="chat" action="">
49
- <input id="m" autocomplete="off" class="messageInput" disabled><button id="send" disabled>Send</button>
50
- </form>
51
-
52
- <script src="<%= address %>jquery.js"></script>
53
- <script src="<%= address %>socket.io.js"></script>
54
- <script src="<%= address %>sockethub-client.js"></script>
55
- <script src="<%= address %>examples/shared.js"></script>
56
- <script>
57
- debug = function (msg, obj) { console.log(msg, obj); };
58
- const examplesShared = new ExamplesShared();
59
- const ircServer = 'irc.libera.chat';
60
- localStorage.debug = 'sockethub:*';
61
- const sc = new SockethubClient(io('<%= address %>', { path: '/sockethub' }));
62
- let channel = 'sockethub-test';
63
- let nick = `sh-${Math.random().toString(36).substr(2)}`;
64
- console.log('nick: ' + nick);
65
-
66
- $('#j').val('#' + channel);
67
-
68
- function __normalizeMessage(msg) {
69
- function __normalizeTargetFromContent(string) {
70
- const postCMD = msg.object.content.substr(string.length + 1) + ' ';
71
- const target = postCMD.substr(0, postCMD.indexOf(' '));
72
- if (target.indexOf('#') === 0) {
73
- msg.target = ircServer + '/' + target;
74
- sc.ActivityStreams.Object.create({
75
- 'id': ircServer + '/' + target,
76
- 'type': "room",
77
- name: target
78
- });
79
- } else {
80
- msg.target = target + '@' + ircServer;
81
- sc.ActivityStreams.Object.create({
82
- 'id': target + '@' + ircServer,
83
- 'type': "person",
84
- name: target
85
- });
86
- }
87
- }
88
-
89
- if ((typeof msg.object === 'object') &&
90
- (typeof msg.object.content === 'string')) {
91
-
92
- if (msg.object.content.indexOf('/me') === 0) {
93
- // show completed emotes from us
94
- // rewrite as object to what the incoming objects should look like
95
- msg.object['type'] = 'me';
96
- msg.object.content = msg.object.content.substr(4);
97
- } else if (msg.object.content.indexOf('/nick') === 0) {
98
- msg.object['type'] = 'address';
99
- msg['type'] = 'update';
100
- __normalizeTargetFromContent('/nick');
101
- delete msg.object.content;
102
- } else if (msg.object.content.indexOf('/notice') === 0) {
103
- // show completed emotes from us
104
- // rewrite as object to what the incoming objects should look like
105
- msg.object['type'] = 'notice';
106
- __normalizeTargetFromContent('/notice');
107
- msg.object.content = msg.object.content.substr(8 + object.target.name.length + 1);
108
- }
109
- }
110
- return msg;
111
- }
112
-
113
- // creates an ActivityStreams object for our actor (us)
114
- function __updateActor(_nick) {
115
- debug(`update nick ${nick} to ${_nick}`);
116
- // our irc user info
117
- nick = _nick; // set global nick
118
- sc.ActivityStreams.Object.create({
119
- id: nick,
120
- type: "person",
121
- name: nick,
122
- url: "http://sockethub.org",
123
- image: {
124
- url: "http://example.org/image.jpg",
125
- mediaType: "image/jpeg",
126
- width: 250,
127
- height: 250
128
- }
129
- });
130
- __updateCredentials();
131
- }
132
-
133
- function __updateCredentials() {
134
- // sending irc credentials to sockethub server
135
- const credentials = {
136
- actor: nick,
137
- context: 'irc',
138
- type: 'credentials',
139
- object: {
140
- type: 'credentials',
141
- nick: nick,
142
- server: ircServer,
143
- secure: true
144
- }
145
- };
146
- debug('sending credentials: ', credentials);
147
- sc.socket.emit('credentials', credentials, (err) => {
148
- if (err) { console.log('failed to set credentials ', err); }
149
- else { console.log('credentials set'); }
150
- });
151
- }
152
-
153
- function handleMessage(msg) {
154
- msg = sc.ActivityStreams.Stream(msg);
155
- msg = __normalizeMessage(msg);
156
- if (msg.error) {
157
- debug('error', msg);
158
- $('#messages').append($('<li>').text(msg.error));
159
- // } else if (msg.type === 'connect') {
160
- // __updateActor(nick);
161
- } else if ((typeof msg.object === 'object') &&
162
- (typeof msg.object.content === 'string')) {
163
- examplesShared.processIncomingMessage(msg);
164
- } else if ((msg.type === 'update') &&
165
- (msg.object.type === 'address') &&
166
- (msg.actor.name === nick)) {
167
- // our nick has been updated
168
- __updateActor(msg.target.name);
169
- examplesShared.processIncomingMessage(msg);
170
- } else if (msg.type === 'join') {
171
- $('.modal').css('display', 'none');
172
- $('input#m').prop('disabled', false);
173
- $('button#send').prop('disabled', false);
174
- } else {
175
- debug('nothing to do for message ', msg);
176
- examplesShared.processIncomingMessage(msg);
177
- }
178
- }
179
-
180
- // handle incoming messages from the sockethub server
181
- sc.socket.on('message', handleMessage);
182
-
183
- // handler for user input, emit messages to sockethub server
184
- $('#chat').submit(function () {
185
- let msg = {
186
- type: 'send',
187
- context: 'irc',
188
- actor: nick,
189
- object: {
190
- type: 'message',
191
- content: $('#m').val()
192
- },
193
- target: channel
194
- };
195
-
196
- msg = __normalizeMessage(msg);
197
- debug('sending message: ', msg);
198
- sc.socket.emit('message', msg, handleMessage);
199
- $('#m').val('');
200
- return false;
201
- });
202
-
203
- // handler for user input, emit messages to sockethub server
204
- $('#join').click(function () {
205
- channel = $('#j').val();
206
-
207
- __updateActor(nick);
208
- // the irc chatroom we're connecting to
209
- sc.ActivityStreams.Object.create({
210
- id: channel,
211
- type: "room",
212
- name: channel
213
- });
214
- debug('socket id: ', sc.socket.id);
215
-
216
- const connect = {
217
- type: 'connect',
218
- context: 'irc',
219
- actor: nick,
220
- }
221
-
222
- const join = {
223
- type: 'join',
224
- context: 'irc',
225
- actor: nick,
226
- target: channel
227
- };
228
-
229
- debug('sending connect: ', connect);
230
- sc.socket.emit('message', connect, (msg) => {
231
- handleMessage(msg);
232
- debug('sending join: ', join);
233
- sc.socket.emit('message', join, handleMessage);
234
- });
235
- return false;
236
- });
237
- </script>
238
- </body>
239
- </html>
@@ -1,72 +0,0 @@
1
-
2
- function ExamplesShared() {}
3
-
4
- ExamplesShared.prototype.__displayPresenceUpdate = function (msg) {
5
- const status = (msg.object.status) ? ': ' + msg.object.status : '';
6
- let actor = msg.actor.id;
7
- if (msg.object.presence !== 'offline') {
8
- actor = document.createElement('a');
9
- actor.appendChild(document.createTextNode(msg.actor.id));
10
- actor.title = msg.actor.id;
11
- actor.href = msg.actor.id;
12
- $('#messages').append(actor);
13
- // actor = '<a class="actor" href="' + msg.actor.id + '>' + msg.actor.id + '</a>';
14
- }
15
- $('#messages')
16
- .append($('<li>').text(
17
- '[ ' + msg.actor.id + ' is ' + msg.object.presence + ']' + status));
18
- };
19
-
20
- ExamplesShared.prototype.__displayMessageContent = function (msg) {
21
- const name = (typeof msg.actor === 'object') ?
22
- msg.actor.name || msg.actor.id : msg.type;
23
- $('#messages').append($('<li>').text(name + ': ' + msg.object.content));
24
- };
25
-
26
- ExamplesShared.prototype.__displayUnknownContent = function (msg) {
27
- debug('unknown message, applying default display rule ', msg);
28
- $('#messages').append($('<li>').text(': ' + JSON.stringify(msg)));
29
- };
30
-
31
- ExamplesShared.prototype.processIncomingMessage = function (msg) {
32
- console.log('incoming message: ', msg);
33
- if (msg.type === 'query') {
34
- if (msg.object.members) {
35
- $('#messages').append($('<li>').text(` users in ${msg.actor.name}`))
36
- .append($('<li>').text(` [ ${msg.object.members.join(', ')} ]`));
37
- }
38
- } else if ((msg.type === 'pong') || (msg.type === 'ping')) {
39
- $('#messages').append($('<li>').text(
40
- `${msg.type} received from ${msg.actor.id} at ${msg.published}`));
41
- } else if ((msg.type === 'update') && (msg.object.type === 'address')) {
42
- $('#messages').append($('<li>').text(
43
- `${msg.actor.name} is now known as ${msg.target.name}`));
44
- } else if ((msg.type === 'update') && (msg.object.type === 'presence')) {
45
- this.__displayPresenceUpdate(msg);
46
- } else if ((msg.type === 'add' || msg.type === 'remove') &&
47
- (msg.object.type === 'relationship')) {
48
- const action = msg.type === 'add' ? 'set' : 'removed';
49
- $('#messages').append($('<li>').text(
50
- `${msg.actor.name} ${action} ${msg.object.relationship} of
51
- ${msg.object.subject.role}`));
52
- } else if (msg.type === 'join') {
53
- $('#messages').append($('<li>').text(
54
- `${msg.actor.name} has joined ${msg.target.name}`));
55
- } else if ((msg.type === 'announce') && (msg.actor.type === 'service')) {
56
- $('#messages').append($('<li>').text(`connected to ${msg.actor.id}`));
57
- } else if (msg.type === 'error') {
58
- console.log('error received: ', msg);
59
- } else if (msg.type === 'close') {
60
- console.log('close event received... offline.');
61
- } else if (msg.object && msg.object.type === 'me') {
62
- $('#messages').append($('<li>').text(
63
- `* ${msg.actor.name} ${msg.object.content}`));
64
- } else if (msg.object && msg.object.type === 'notice') {
65
- $('#messages').append($(
66
- '<li>').text(`NOTICE from ${msg.actor.name}: ${msg.object.content}`));
67
- } else if (msg.object && msg.object.content) {
68
- this.__displayMessageContent(msg);
69
- } else {
70
- this.__displayUnknownContent(msg);
71
- }
72
- };