sockethub 4.1.0 → 5.0.0-alpha.2
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.
- package/bin/sockethub +23 -20
- package/dist/bootstrap/init.js +1 -1
- package/dist/bootstrap/init.js.map +1 -1
- package/dist/bootstrap/platforms.js +14 -18
- package/dist/janitor.js +11 -5
- package/dist/janitor.js.map +1 -1
- package/dist/middleware/create-activity-object.js.map +1 -1
- package/dist/middleware/expand-activity-stream.js +33 -0
- package/dist/middleware/expand-activity-stream.js.map +1 -0
- package/dist/middleware/expand-activity-stream.test.data.js +360 -0
- package/dist/middleware/expand-activity-stream.test.data.js.map +1 -0
- package/dist/middleware/store-credentials.js +1 -1
- package/dist/middleware/store-credentials.js.map +1 -1
- package/dist/middleware/validate.js +30 -104
- package/dist/middleware/validate.js.map +1 -1
- package/dist/middleware/validate.test.data.js +151 -111
- package/dist/middleware/validate.test.data.js.map +1 -1
- package/dist/middleware.js +47 -77
- package/dist/middleware.js.map +1 -1
- package/dist/platform-instance.js +47 -54
- package/dist/platform-instance.js.map +1 -1
- package/dist/platform.js +29 -10
- package/dist/platform.js.map +1 -1
- package/dist/process-manager.js +5 -2
- package/dist/process-manager.js.map +1 -1
- package/dist/routes.js +3 -5
- package/dist/routes.js.map +1 -1
- package/dist/sockethub-client.js +2604 -0
- package/dist/sockethub-client.js.map +1 -0
- package/dist/sockethub-client.min.js +2 -0
- package/dist/sockethub-client.min.js.LICENSE.txt +24 -0
- package/dist/sockethub.js +67 -36
- package/dist/sockethub.js.map +1 -1
- package/package.json +40 -36
- package/src/bootstrap/init.ts +6 -2
- package/src/bootstrap/platforms.js +14 -18
- package/src/crypto.ts +3 -3
- package/src/janitor.ts +18 -10
- package/src/middleware/create-activity-object.ts +1 -2
- package/src/middleware/expand-activity-stream.test.data.ts +365 -0
- package/src/middleware/expand-activity-stream.test.ts +78 -0
- package/src/middleware/expand-activity-stream.ts +27 -0
- package/src/middleware/store-credentials.test.ts +12 -12
- package/src/middleware/store-credentials.ts +4 -4
- package/src/middleware/validate.test.data.ts +154 -120
- package/src/middleware/validate.test.ts +7 -10
- package/src/middleware/validate.ts +30 -123
- package/src/middleware.test.ts +59 -26
- package/src/middleware.ts +44 -76
- package/src/platform-instance.test.ts +8 -10
- package/src/platform-instance.ts +58 -57
- package/src/platform.ts +30 -14
- package/src/process-manager.ts +7 -4
- package/src/routes.ts +3 -6
- package/src/serve.ts +1 -1
- package/src/sockethub-client.test.ts +235 -0
- package/src/sockethub-client.ts +164 -0
- package/src/sockethub.ts +75 -68
- package/views/examples/dummy.ejs +6 -6
- package/views/examples/feeds.ejs +8 -8
- package/views/examples/irc.ejs +64 -58
- package/views/examples/shared.js +31 -29
- package/views/examples/xmpp.ejs +48 -57
- package/webpack.minified.config.js +14 -0
- package/webpack.normal.config.js +14 -0
- package/coverage/tmp/coverage-24546-1630615250805-0.json +0 -1
- package/dist/client/sockethub-client.js +0 -171
- package/dist/client/sockethub-client.js.map +0 -1
- package/src/client/sockethub-client.js +0 -178
- package/test/middleware-suite.js +0 -101
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sockethub-client.js","sourceRoot":"/","sources":["sockethub-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see sockethub-client.min.js.LICENSE.txt */
|
|
2
|
+
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var n in r)("object"==typeof exports?exports:e)[n]=r[n]}}(self,(function(){return e={423:(e,t,r)=>{"use strict";var n=r(132),i=r(421),s=r(240),o=r(343),c=r(50),l=e.exports=function(e,t){var r,i,l,a,f;return arguments.length<2||"string"!=typeof e?(a=t,t=e,e=null):a=arguments[2],n(e)?(r=c.call(e,"c"),i=c.call(e,"e"),l=c.call(e,"w")):(r=l=!0,i=!1),f={value:t,configurable:r,enumerable:i,writable:l},a?s(o(a),f):f};l.gs=function(e,t,r){var l,a,f,u;return"string"!=typeof e?(f=r,r=t,t=e,e=null):f=arguments[3],n(t)?i(t)?n(r)?i(r)||(f=r,r=void 0):r=void 0:(f=t,t=r=void 0):t=void 0,n(e)?(l=c.call(e,"c"),a=c.call(e,"e")):(l=!0,a=!1),u={get:t,set:r,configurable:l,enumerable:a},f?s(o(f),u):u}},91:e=>{"use strict";e.exports=function(){}},240:(e,t,r)=>{"use strict";e.exports=r(229)()?Object.assign:r(640)},229:e=>{"use strict";e.exports=function(){var e,t=Object.assign;return"function"==typeof t&&(t(e={foo:"raz"},{bar:"dwa"},{trzy:"trzy"}),e.foo+e.bar+e.trzy==="razdwatrzy")}},640:(e,t,r)=>{"use strict";var n=r(255),i=r(110),s=Math.max;e.exports=function(e,t){var r,o,c,l=s(arguments.length,2);for(e=Object(i(e)),c=function(n){try{e[n]=t[n]}catch(e){r||(r=e)}},o=1;o<l;++o)n(t=arguments[o]).forEach(c);if(void 0!==r)throw r;return e}},515:(e,t,r)=>{"use strict";var n=r(91)();e.exports=function(e){return e!==n&&null!==e}},255:(e,t,r)=>{"use strict";e.exports=r(291)()?Object.keys:r(184)},291:e=>{"use strict";e.exports=function(){try{return Object.keys("primitive"),!0}catch(e){return!1}}},184:(e,t,r)=>{"use strict";var n=r(515),i=Object.keys;e.exports=function(e){return i(n(e)?Object(e):e)}},343:(e,t,r)=>{"use strict";var n=r(515),i=Array.prototype.forEach,s=Object.create,o=function(e,t){var r;for(r in e)t[r]=e[r]};e.exports=function(e){var t=s(null);return i.call(arguments,(function(e){n(e)&&o(Object(e),t)})),t}},979:e=>{"use strict";e.exports=function(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return e}},110:(e,t,r)=>{"use strict";var n=r(515);e.exports=function(e){if(!n(e))throw new TypeError("Cannot use null or undefined");return e}},50:(e,t,r)=>{"use strict";e.exports=r(459)()?String.prototype.contains:r(131)},459:e=>{"use strict";var t="razdwatrzy";e.exports=function(){return"function"==typeof t.contains&&!0===t.contains("dwa")&&!1===t.contains("foo")}},131:e=>{"use strict";var t=String.prototype.indexOf;e.exports=function(e){return t.call(this,e,arguments[1])>-1}},360:(e,t,r)=>{"use strict";var n,i,s,o,c,l,a,f=r(423),u=r(979),h=Function.prototype.apply,p=Function.prototype.call,y=Object.create,v=Object.defineProperty,_=Object.defineProperties,m=Object.prototype.hasOwnProperty,d={configurable:!0,enumerable:!1,writable:!0};i=function(e,t){var r,i;return u(t),i=this,n.call(this,e,r=function(){s.call(i,e,r),h.call(t,this,arguments)}),r.__eeOnceListener__=t,this},o=function(e){var t,r,n,i,s;if(m.call(this,"__ee__")&&(i=this.__ee__[e]))if("object"==typeof i){for(r=arguments.length,s=new Array(r-1),t=1;t<r;++t)s[t-1]=arguments[t];for(i=i.slice(),t=0;n=i[t];++t)h.call(n,this,s)}else switch(arguments.length){case 1:p.call(i,this);break;case 2:p.call(i,this,arguments[1]);break;case 3:p.call(i,this,arguments[1],arguments[2]);break;default:for(r=arguments.length,s=new Array(r-1),t=1;t<r;++t)s[t-1]=arguments[t];h.call(i,this,s)}},c={on:n=function(e,t){var r;return u(t),m.call(this,"__ee__")?r=this.__ee__:(r=d.value=y(null),v(this,"__ee__",d),d.value=null),r[e]?"object"==typeof r[e]?r[e].push(t):r[e]=[r[e],t]:r[e]=t,this},once:i,off:s=function(e,t){var r,n,i,s;if(u(t),!m.call(this,"__ee__"))return this;if(!(r=this.__ee__)[e])return this;if("object"==typeof(n=r[e]))for(s=0;i=n[s];++s)i!==t&&i.__eeOnceListener__!==t||(2===n.length?r[e]=n[s?0:1]:n.splice(s,1));else n!==t&&n.__eeOnceListener__!==t||delete r[e];return this},emit:o},l={on:f(n),once:f(i),off:f(s),emit:f(o)},a=_({},l),e.exports=t=function(e){return null==e?y(a):_(Object(e),l)},t.methods=c},414:(e,t,r)=>{"use strict";var n=r(670);e.exports=function(e){if("function"!=typeof e)return!1;if(!hasOwnProperty.call(e,"length"))return!1;try{if("number"!=typeof e.length)return!1;if("function"!=typeof e.call)return!1;if("function"!=typeof e.apply)return!1}catch(e){return!1}return!n(e)}},783:(e,t,r)=>{"use strict";var n=r(132),i={object:!0,function:!0,undefined:!0};e.exports=function(e){return!!n(e)&&hasOwnProperty.call(i,typeof e)}},421:(e,t,r)=>{"use strict";var n=r(414),i=/^\s*class[\s{/}]/,s=Function.prototype.toString;e.exports=function(e){return!!n(e)&&!i.test(s.call(e))}},670:(e,t,r)=>{"use strict";var n=r(783);e.exports=function(e){if(!n(e))return!1;try{return!!e.constructor&&e.constructor.prototype===e}catch(e){return!1}}},132:e=>{"use strict";e.exports=function(e){return null!=e}},744:(e,t,r)=>{const n=r(360)(),i={stream:["id","type","actor","target","object","context","context","published","error"],object:["id","type","context","alias","attachedTo","attachment","attributedTo","attributedWith","content","contentMap","context","contextOf","name","endTime","generator","generatorOf","group","icon","image","inReplyTo","members","memberOf","message","location","locationOf","objectOf","originOf","presence","preview","previewOf","provider","providerOf","published","rating","relationship","resultOf","replies","role","scope","scopeOf","startTime","status","summary","topic","tag","tagOf","targetOf","title","titleMap","updated","url"]},s={"@id":"id","@type":"type",verb:"type",displayName:"name",objectType:"type",platform:"context"},o={actor:{primary:"id",props:i},target:{primary:"id",props:i},object:{primary:"content",props:i}};let c=new Map,l=!1,a=[],f={};function u(e,t){return!("object"!=typeof f[e]||!f[e].includes(t))}function h(e,t){return e[s[t]]=e[t],delete e[t],e}function p(e,t={}){const r=Object.keys(t).filter((t=>{if(!i[e].includes(t))return t}));for(let e of r)if(s[e])t=h(t,e);else if(!u(t.type,e)&&!a.includes(t.type)){const t=`invalid property: "${e}"`;if(l)throw new Error(t);console.warn(t)}}function y(e){p("stream",e),"object"==typeof e.object&&p("object",e.object);const t=function(e){let t={};for(let r of Object.keys(e))if("string"==typeof e[r])t[r]=c.get(e[r])||e[r];else if(Array.isArray(e[r])){t[r]=[];for(let n of e[r])"string"==typeof n&&t[r].push(c.get(n)||n)}else t[r]=e[r];for(let e of Object.keys(o))if("string"==typeof t[e]){let r={};r[o[e].primary]=t[e],t[e]=r}return t}(e);return n.emit("activity-stream",t),t}const v={create:function(e){return p("object",e),e=e,c.set(e.id,e),n.emit("activity-object-create",e),e},delete:function(e){const t=c.delete(e);return t&&n.emit("activity-object-delete",e),t},get:function(e,t){let r=c.get(e);if(!r){if(!t)return e;r={id:e}}return r},list:function(){return c.keys()},getByType:function(e){}};function _(e={}){a=e.specialObjs||[],l="boolean"==typeof e.failOnUnknownObjectProperties&&e.failOnUnknownObjectProperties;for(let t of Object.keys(e.customProps||{}))"object"==typeof e.customProps[t]&&(f[t]=e.customProps[t]);return{Stream:y,Object:v,on:function(e,t){return n.on(e,t)},once:function(e,t){return n.once(e,t)},off:function(e,t){return n.off(e,t)}}}e.exports&&(e.exports=_),"object"==typeof window&&(window.ASFactory=_)},650:function(e,t,r){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const i=r(387),s=n(r(744));class o{constructor(e){if(this.events={credentials:new Map,"activity-object":new Map,connect:new Map,join:new Map},this.online=!1,this.debug=!0,!e)throw new Error("SockethubClient requires a socket.io instance");this._socket=e,this.ActivityStreams=(0,s.default)({specialObjs:["credentials"]}),this.socket=this.createPublicEmitter(),this.registerSocketIOHandlers(),this.ActivityStreams.on("activity-object-create",(t=>{e.emit("activity-object",t,(e=>{e?console.error("failed to create activity-object ",e):this.eventActivityObject(t)}))})),e.on("activity-object",(e=>{this.ActivityStreams.Object.create(e)}))}createPublicEmitter(){let e=new i.EventEmitter2({wildcard:!0,verboseMemoryLeak:!1});return e._emit=e.emit,e.emit=(e,t,r)=>{"credentials"===e?this.eventCredentials(t):"activity-object"===e?this.eventActivityObject(t):"message"===e&&this.eventMessage(t),this._socket.emit(e,t,r)},e}eventActivityObject(e){e.id&&this.events["activity-object"].set(e.id,e)}eventCredentials(e){e.object&&"credentials"===e.object.type&&this.events.credentials.set(e.actor.id||e.actor,e)}eventMessage(e){if(!this.online)return;const t=o.getKey(e);"join"===e.type||"connect"===e.type?this.events[e.type].set(t,e):"leave"===e.type?this.events.join.delete(t):"disconnect"===e.type&&this.events.connect.delete(t)}static getKey(e){var t;let r=(null===(t=e.actor)||void 0===t?void 0:t.id)||e.actor;if(!r)throw new Error("actor property not present for message type: "+(null==e?void 0:e.type));return r+"-"+(e.target?e.target.id||e.target:"")}log(e,t){this.debug&&console.log(e,t)}registerSocketIOHandlers(){const e=e=>(t,r)=>{"connect"===e?(this.online=!0,this.replay("activity-object",this.events["activity-object"]),this.replay("credentials",this.events.credentials),this.replay("message",this.events.connect),this.replay("message",this.events.join)):"disconnect"===e&&(this.online=!1),this.socket._emit(e,t,r)};this._socket.on("connect",e("connect")),this._socket.on("connect_error",e("connect_error")),this._socket.on("disconnect",e("disconnect")),this._socket.on("message",((e,t)=>{this.socket._emit("message",this.ActivityStreams.Stream(e),t)}))}replay(e,t){t.forEach((t=>{this.log(`replaying ${e}`,t),this._socket.emit(e,t)}))}}e.exports&&(e.exports=o),t=o,"object"==typeof window&&(window.SockethubClient=o)},387:(e,t,r)=>{var n;!function(i){var s=Object.hasOwnProperty,o=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},c="object"==typeof process&&"function"==typeof process.nextTick,l="function"==typeof Symbol,a="object"==typeof Reflect,f="function"==typeof setImmediate?setImmediate:setTimeout,u=l?a&&"function"==typeof Reflect.ownKeys?Reflect.ownKeys:function(e){var t=Object.getOwnPropertyNames(e);return t.push.apply(t,Object.getOwnPropertySymbols(e)),t}:Object.keys;function h(){this._events={},this._conf&&p.call(this,this._conf)}function p(e){e&&(this._conf=e,e.delimiter&&(this.delimiter=e.delimiter),e.maxListeners!==i&&(this._maxListeners=e.maxListeners),e.wildcard&&(this.wildcard=e.wildcard),e.newListener&&(this._newListener=e.newListener),e.removeListener&&(this._removeListener=e.removeListener),e.verboseMemoryLeak&&(this.verboseMemoryLeak=e.verboseMemoryLeak),e.ignoreErrors&&(this.ignoreErrors=e.ignoreErrors),this.wildcard&&(this.listenerTree={}))}function y(e,t){var r="(node) warning: possible EventEmitter memory leak detected. "+e+" listeners added. Use emitter.setMaxListeners() to increase limit.";if(this.verboseMemoryLeak&&(r+=" Event name: "+t+"."),"undefined"!=typeof process&&process.emitWarning){var n=new Error(r);n.name="MaxListenersExceededWarning",n.emitter=this,n.count=e,process.emitWarning(n)}else console.error(r),console.trace&&console.trace()}var v=function(e,t,r){var n=arguments.length;switch(n){case 0:return[];case 1:return[e];case 2:return[e,t];case 3:return[e,t,r];default:for(var i=new Array(n);n--;)i[n]=arguments[n];return i}};function _(e,t){for(var r={},n=e.length,s=t?value.length:0,o=0;o<n;o++)r[e[o]]=o<s?t[o]:i;return r}function m(e,t,r){var n,i;if(this._emitter=e,this._target=t,this._listeners={},this._listenersCount=0,(r.on||r.off)&&(n=r.on,i=r.off),t.addEventListener?(n=t.addEventListener,i=t.removeEventListener):t.addListener?(n=t.addListener,i=t.removeListener):t.on&&(n=t.on,i=t.off),!n&&!i)throw Error("target does not implement any known event API");if("function"!=typeof n)throw TypeError("on method must be a function");if("function"!=typeof i)throw TypeError("off method must be a function");this._on=n,this._off=i;var s=e._observers;s?s.push(this):e._observers=[this]}function d(e,t,r,n){var o=Object.assign({},t);if(!e)return o;if("object"!=typeof e)throw TypeError("options must be an object");var c,l,a,f=Object.keys(e),u=f.length;function h(e){throw Error('Invalid "'+c+'" option value'+(e?". Reason: "+e:""))}for(var p=0;p<u;p++){if(c=f[p],!n&&!s.call(t,c))throw Error('Unknown "'+c+'" option');(l=e[c])!==i&&(a=r[c],o[c]=a?a(l,h):l)}return o}function b(e,t){return"function"==typeof e&&e.hasOwnProperty("prototype")||t("value must be a constructor"),e}function g(e){var t="value must be type of "+e.join("|"),r=e.length,n=e[0],i=e[1];return 1===r?function(e,r){if(typeof e===n)return e;r(t)}:2===r?function(e,r){var s=typeof e;if(s===n||s===i)return e;r(t)}:function(n,i){for(var s=typeof n,o=r;o-- >0;)if(s===e[o])return n;i(t)}}Object.assign(m.prototype,{subscribe:function(e,t,r){var n=this,i=this._target,s=this._emitter,o=this._listeners,c=function(){var n=v.apply(null,arguments),o={data:n,name:t,original:e};if(r){var c=r.call(i,o);!1!==c&&s.emit.apply(s,[o.name].concat(n))}else s.emit.apply(s,[t].concat(n))};if(o[e])throw Error("Event '"+e+"' is already listening");this._listenersCount++,s._newListener&&s._removeListener&&!n._onNewListener?(this._onNewListener=function(r){r===t&&null===o[e]&&(o[e]=c,n._on.call(i,e,c))},s.on("newListener",this._onNewListener),this._onRemoveListener=function(r){r===t&&!s.hasListeners(r)&&o[e]&&(o[e]=null,n._off.call(i,e,c))},o[e]=null,s.on("removeListener",this._onRemoveListener)):(o[e]=c,n._on.call(i,e,c))},unsubscribe:function(e){var t,r,n,i=this,s=this._listeners,o=this._emitter,c=this._off,l=this._target;if(e&&"string"!=typeof e)throw TypeError("event must be a string");function a(){i._onNewListener&&(o.off("newListener",i._onNewListener),o.off("removeListener",i._onRemoveListener),i._onNewListener=null,i._onRemoveListener=null);var e=O.call(o,i);o._observers.splice(e,1)}if(e){if(!(t=s[e]))return;c.call(l,e,t),delete s[e],--this._listenersCount||a()}else{for(n=(r=u(s)).length;n-- >0;)e=r[n],c.call(l,e,s[e]);this._listeners={},this._listenersCount=0,a()}}});var w=g(["function"]),j=g(["object","function"]);function L(e,t,r){var n,i,s,o=0,c=new e((function(l,a,f){function u(){i&&(i=null),o&&(clearTimeout(o),o=0)}r=d(r,{timeout:0,overload:!1},{timeout:function(e,t){return("number"!=typeof(e*=1)||e<0||!Number.isFinite(e))&&t("timeout must be a positive number"),e}}),n=!r.overload&&"function"==typeof e.prototype.cancel&&"function"==typeof f;var h=function(e){u(),l(e)},p=function(e){u(),a(e)};n?t(h,p,f):(i=[function(e){p(e||Error("canceled"))}],t(h,p,(function(e){if(s)throw Error("Unable to subscribe on cancel event asynchronously");if("function"!=typeof e)throw TypeError("onCancel callback must be a function");i.push(e)})),s=!0),r.timeout>0&&(o=setTimeout((function(){var e=Error("timeout");e.code="ETIMEDOUT",o=0,c.cancel(e),a(e)}),r.timeout))}));return n||(c.cancel=function(e){if(i){for(var t=i.length,r=1;r<t;r++)i[r](e);i[0](e),i=null}}),c}function O(e){var t=this._observers;if(!t)return-1;for(var r=t.length,n=0;n<r;n++)if(t[n]._target===e)return n;return-1}function x(e,t,r,n,i){if(!r)return null;if(0===n){var s=typeof t;if("string"===s){var o,c,l=0,a=0,f=this.delimiter,h=f.length;if(-1!==(c=t.indexOf(f))){o=new Array(5);do{o[l++]=t.slice(a,c),a=c+h}while(-1!==(c=t.indexOf(f,a)));o[l++]=t.slice(a),t=o,i=l}else t=[t],i=1}else"object"===s?i=t.length:(t=[t],i=1)}var p,y,v,_,m,d,b,g=null,w=t[n],j=t[n+1];if(n===i)r._listeners&&("function"==typeof r._listeners?(e&&e.push(r._listeners),g=[r]):(e&&e.push.apply(e,r._listeners),g=[r]));else{if("*"===w){for(c=(d=u(r)).length;c-- >0;)"_listeners"!==(p=d[c])&&(b=x(e,t,r[p],n+1,i))&&(g?g.push.apply(g,b):g=b);return g}if("**"===w){for((m=n+1===i||n+2===i&&"*"===j)&&r._listeners&&(g=x(e,t,r,i,i)),c=(d=u(r)).length;c-- >0;)"_listeners"!==(p=d[c])&&("*"===p||"**"===p?(r[p]._listeners&&!m&&(b=x(e,t,r[p],i,i))&&(g?g.push.apply(g,b):g=b),b=x(e,t,r[p],n,i)):b=x(e,t,r[p],p===j?n+2:n,i),b&&(g?g.push.apply(g,b):g=b));return g}r[w]&&(g=x(e,t,r[w],n+1,i))}if((y=r["*"])&&x(e,t,y,n+1,i),v=r["**"])if(n<i)for(v._listeners&&x(e,t,v,i,i),c=(d=u(v)).length;c-- >0;)"_listeners"!==(p=d[c])&&(p===j?x(e,t,v[p],n+2,i):p===w?x(e,t,v[p],n+1,i):((_={})[p]=v[p],x(e,t,{"**":_},n+1,i)));else v._listeners?x(e,t,v,i,i):v["*"]&&v["*"]._listeners&&x(e,t,v["*"],i,i);return g}function k(e,t,r){var n,i,s=0,o=0,c=this.delimiter,l=c.length;if("string"==typeof e)if(-1!==(n=e.indexOf(c))){i=new Array(5);do{i[s++]=e.slice(o,n),o=n+l}while(-1!==(n=e.indexOf(c,o)));i[s++]=e.slice(o)}else i=[e],s=1;else i=e,s=e.length;if(s>1)for(n=0;n+1<s;n++)if("**"===i[n]&&"**"===i[n+1])return;var a,f=this.listenerTree;for(n=0;n<s;n++)if(f=f[a=i[n]]||(f[a]={}),n===s-1)return f._listeners?("function"==typeof f._listeners&&(f._listeners=[f._listeners]),r?f._listeners.unshift(t):f._listeners.push(t),!f._listeners.warned&&this._maxListeners>0&&f._listeners.length>this._maxListeners&&(f._listeners.warned=!0,y.call(this,f._listeners.length,a))):f._listeners=t,!0;return!0}function E(e,t,r,n){for(var i,s,o,c,l=u(e),a=l.length,f=e._listeners;a-- >0;)i=e[s=l[a]],o="_listeners"===s?r:r?r.concat(s):[s],c=n||"symbol"==typeof s,f&&t.push(c?o:o.join(this.delimiter)),"object"==typeof i&&E.call(this,i,t,o,c);return t}function T(e){for(var t,r,n,i=u(e),s=i.length;s-- >0;)(t=e[r=i[s]])&&(n=!0,"_listeners"===r||T(t)||delete e[r]);return n}function A(e,t,r){this.emitter=e,this.event=t,this.listener=r}function P(e,t,r){if(!0===r)s=!0;else if(!1===r)n=!0;else{if(!r||"object"!=typeof r)throw TypeError("options should be an object or true");var n=r.async,s=r.promisify,o=r.nextTick,l=r.objectify}if(n||o||s){var a=t,u=t._origin||t;if(o&&!c)throw Error("process.nextTick is not supported");s===i&&(s="AsyncFunction"===t.constructor.name),t=function(){var e=arguments,t=this,r=this.event;return s?o?Promise.resolve():new Promise((function(e){f(e)})).then((function(){return t.event=r,a.apply(t,e)})):(o?process.nextTick:f)((function(){t.event=r,a.apply(t,e)}))},t._async=!0,t._origin=u}return[t,l?new A(this,e,t):this]}function M(e){this._events={},this._newListener=!1,this._removeListener=!1,this.verboseMemoryLeak=!1,p.call(this,e)}A.prototype.off=function(){return this.emitter.off(this.event,this.listener),this},M.EventEmitter2=M,M.prototype.listenTo=function(e,t,r){if("object"!=typeof e)throw TypeError("target musts be an object");var n=this;function s(t){if("object"!=typeof t)throw TypeError("events must be an object");var i,s=r.reducers,o=O.call(n,e);i=-1===o?new m(n,e,r):n._observers[o];for(var c,l=u(t),a=l.length,f="function"==typeof s,h=0;h<a;h++)c=l[h],i.subscribe(c,t[c]||c,f?s:s&&s[c])}return r=d(r,{on:i,off:i,reducers:i},{on:w,off:w,reducers:j}),o(t)?s(_(t)):s("string"==typeof t?_(t.split(/\s+/)):t),this},M.prototype.stopListeningTo=function(e,t){var r=this._observers;if(!r)return!1;var n,i=r.length,s=!1;if(e&&"object"!=typeof e)throw TypeError("target should be an object");for(;i-- >0;)n=r[i],e&&n._target!==e||(n.unsubscribe(t),s=!0);return s},M.prototype.delimiter=".",M.prototype.setMaxListeners=function(e){e!==i&&(this._maxListeners=e,this._conf||(this._conf={}),this._conf.maxListeners=e)},M.prototype.getMaxListeners=function(){return this._maxListeners},M.prototype.event="",M.prototype.once=function(e,t,r){return this._once(e,t,!1,r)},M.prototype.prependOnceListener=function(e,t,r){return this._once(e,t,!0,r)},M.prototype._once=function(e,t,r,n){return this._many(e,1,t,r,n)},M.prototype.many=function(e,t,r,n){return this._many(e,t,r,!1,n)},M.prototype.prependMany=function(e,t,r,n){return this._many(e,t,r,!0,n)},M.prototype._many=function(e,t,r,n,i){var s=this;if("function"!=typeof r)throw new Error("many only accepts instances of Function");function o(){return 0==--t&&s.off(e,o),r.apply(this,arguments)}return o._origin=r,this._on(e,o,n,i)},M.prototype.emit=function(){if(!this._events&&!this._all)return!1;this._events||h.call(this);var e,t,r,n,i,s,o=arguments[0],c=this.wildcard;if("newListener"===o&&!this._newListener&&!this._events.newListener)return!1;if(c&&(e=o,"newListener"!==o&&"removeListener"!==o&&"object"==typeof o)){if(r=o.length,l)for(n=0;n<r;n++)if("symbol"==typeof o[n]){s=!0;break}s||(o=o.join(this.delimiter))}var a,f=arguments.length;if(this._all&&this._all.length)for(n=0,r=(a=this._all.slice()).length;n<r;n++)switch(this.event=o,f){case 1:a[n].call(this,o);break;case 2:a[n].call(this,o,arguments[1]);break;case 3:a[n].call(this,o,arguments[1],arguments[2]);break;default:a[n].apply(this,arguments)}if(c)a=[],x.call(this,a,e,this.listenerTree,0,r);else{if("function"==typeof(a=this._events[o])){switch(this.event=o,f){case 1:a.call(this);break;case 2:a.call(this,arguments[1]);break;case 3:a.call(this,arguments[1],arguments[2]);break;default:for(t=new Array(f-1),i=1;i<f;i++)t[i-1]=arguments[i];a.apply(this,t)}return!0}a&&(a=a.slice())}if(a&&a.length){if(f>3)for(t=new Array(f-1),i=1;i<f;i++)t[i-1]=arguments[i];for(n=0,r=a.length;n<r;n++)switch(this.event=o,f){case 1:a[n].call(this);break;case 2:a[n].call(this,arguments[1]);break;case 3:a[n].call(this,arguments[1],arguments[2]);break;default:a[n].apply(this,t)}return!0}if(!this.ignoreErrors&&!this._all&&"error"===o)throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");return!!this._all},M.prototype.emitAsync=function(){if(!this._events&&!this._all)return!1;this._events||h.call(this);var e,t,r,n,i,s,o=arguments[0],c=this.wildcard;if("newListener"===o&&!this._newListener&&!this._events.newListener)return Promise.resolve([!1]);if(c&&(e=o,"newListener"!==o&&"removeListener"!==o&&"object"==typeof o)){if(n=o.length,l)for(i=0;i<n;i++)if("symbol"==typeof o[i]){t=!0;break}t||(o=o.join(this.delimiter))}var a,f=[],u=arguments.length;if(this._all)for(i=0,n=this._all.length;i<n;i++)switch(this.event=o,u){case 1:f.push(this._all[i].call(this,o));break;case 2:f.push(this._all[i].call(this,o,arguments[1]));break;case 3:f.push(this._all[i].call(this,o,arguments[1],arguments[2]));break;default:f.push(this._all[i].apply(this,arguments))}if(c?(a=[],x.call(this,a,e,this.listenerTree,0)):a=this._events[o],"function"==typeof a)switch(this.event=o,u){case 1:f.push(a.call(this));break;case 2:f.push(a.call(this,arguments[1]));break;case 3:f.push(a.call(this,arguments[1],arguments[2]));break;default:for(r=new Array(u-1),s=1;s<u;s++)r[s-1]=arguments[s];f.push(a.apply(this,r))}else if(a&&a.length){if(a=a.slice(),u>3)for(r=new Array(u-1),s=1;s<u;s++)r[s-1]=arguments[s];for(i=0,n=a.length;i<n;i++)switch(this.event=o,u){case 1:f.push(a[i].call(this));break;case 2:f.push(a[i].call(this,arguments[1]));break;case 3:f.push(a[i].call(this,arguments[1],arguments[2]));break;default:f.push(a[i].apply(this,r))}}else if(!this.ignoreErrors&&!this._all&&"error"===o)return arguments[1]instanceof Error?Promise.reject(arguments[1]):Promise.reject("Uncaught, unspecified 'error' event.");return Promise.all(f)},M.prototype.on=function(e,t,r){return this._on(e,t,!1,r)},M.prototype.prependListener=function(e,t,r){return this._on(e,t,!0,r)},M.prototype.onAny=function(e){return this._onAny(e,!1)},M.prototype.prependAny=function(e){return this._onAny(e,!0)},M.prototype.addListener=M.prototype.on,M.prototype._onAny=function(e,t){if("function"!=typeof e)throw new Error("onAny only accepts instances of Function");return this._all||(this._all=[]),t?this._all.unshift(e):this._all.push(e),this},M.prototype._on=function(e,t,r,n){if("function"==typeof e)return this._onAny(e,t),this;if("function"!=typeof t)throw new Error("on only accepts instances of Function");this._events||h.call(this);var s,o=this;return n!==i&&(t=(s=P.call(this,e,t,n))[0],o=s[1]),this._newListener&&this.emit("newListener",e,t),this.wildcard?(k.call(this,e,t,r),o):(this._events[e]?("function"==typeof this._events[e]&&(this._events[e]=[this._events[e]]),r?this._events[e].unshift(t):this._events[e].push(t),!this._events[e].warned&&this._maxListeners>0&&this._events[e].length>this._maxListeners&&(this._events[e].warned=!0,y.call(this,this._events[e].length,e))):this._events[e]=t,o)},M.prototype.off=function(e,t){if("function"!=typeof t)throw new Error("removeListener only takes instances of Function");var r,n=[];if(this.wildcard){var i="string"==typeof e?e.split(this.delimiter):e.slice();if(!(n=x.call(this,null,i,this.listenerTree,0)))return this}else{if(!this._events[e])return this;r=this._events[e],n.push({_listeners:r})}for(var s=0;s<n.length;s++){var c=n[s];if(r=c._listeners,o(r)){for(var l=-1,a=0,f=r.length;a<f;a++)if(r[a]===t||r[a].listener&&r[a].listener===t||r[a]._origin&&r[a]._origin===t){l=a;break}if(l<0)continue;return this.wildcard?c._listeners.splice(l,1):this._events[e].splice(l,1),0===r.length&&(this.wildcard?delete c._listeners:delete this._events[e]),this._removeListener&&this.emit("removeListener",e,t),this}(r===t||r.listener&&r.listener===t||r._origin&&r._origin===t)&&(this.wildcard?delete c._listeners:delete this._events[e],this._removeListener&&this.emit("removeListener",e,t))}return this.listenerTree&&T(this.listenerTree),this},M.prototype.offAny=function(e){var t,r=0,n=0;if(e&&this._all&&this._all.length>0){for(r=0,n=(t=this._all).length;r<n;r++)if(e===t[r])return t.splice(r,1),this._removeListener&&this.emit("removeListenerAny",e),this}else{if(t=this._all,this._removeListener)for(r=0,n=t.length;r<n;r++)this.emit("removeListenerAny",t[r]);this._all=[]}return this},M.prototype.removeListener=M.prototype.off,M.prototype.removeAllListeners=function(e){if(e===i)return!this._events||h.call(this),this;if(this.wildcard){var t,r=x.call(this,null,e,this.listenerTree,0);if(!r)return this;for(t=0;t<r.length;t++)r[t]._listeners=null;this.listenerTree&&T(this.listenerTree)}else this._events&&(this._events[e]=null);return this},M.prototype.listeners=function(e){var t,r,n,s,o,c=this._events;if(e===i){if(this.wildcard)throw Error("event name required for wildcard emitter");if(!c)return[];for(s=(t=u(c)).length,n=[];s-- >0;)"function"==typeof(r=c[t[s]])?n.push(r):n.push.apply(n,r);return n}if(this.wildcard){if(!(o=this.listenerTree))return[];var l=[],a="string"==typeof e?e.split(this.delimiter):e.slice();return x.call(this,l,a,o,0),l}return c&&(r=c[e])?"function"==typeof r?[r]:r:[]},M.prototype.eventNames=function(e){var t=this._events;return this.wildcard?E.call(this,this.listenerTree,[],null,e):t?u(t):[]},M.prototype.listenerCount=function(e){return this.listeners(e).length},M.prototype.hasListeners=function(e){if(this.wildcard){var t=[],r="string"==typeof e?e.split(this.delimiter):e.slice();return x.call(this,t,r,this.listenerTree,0),t.length>0}var n=this._events,s=this._all;return!!(s&&s.length||n&&(e===i?u(n).length:n[e]))},M.prototype.listenersAny=function(){return this._all?this._all:[]},M.prototype.waitFor=function(e,t){var r=this,n=typeof t;return"number"===n?t={timeout:t}:"function"===n&&(t={filter:t}),L((t=d(t,{timeout:0,filter:i,handleError:!1,Promise,overload:!1},{filter:w,Promise:b})).Promise,(function(n,i,s){function o(){var s=t.filter;if(!s||s.apply(r,arguments))if(r.off(e,o),t.handleError){var c=arguments[0];c?i(c):n(v.apply(null,arguments).slice(1))}else n(v.apply(null,arguments))}s((function(){r.off(e,o)})),r._on(e,o,!1)}),{timeout:t.timeout,overload:t.overload})};var S=M.prototype;Object.defineProperties(M,{defaultMaxListeners:{get:function(){return S._maxListeners},set:function(e){if("number"!=typeof e||e<0||Number.isNaN(e))throw TypeError("n must be a non-negative number");S._maxListeners=e},enumerable:!0},once:{value:function(e,t,r){return L((r=d(r,{Promise,timeout:0,overload:!1},{Promise:b})).Promise,(function(r,n,i){var s;if("function"==typeof e.addEventListener)return s=function(){r(v.apply(null,arguments))},i((function(){e.removeEventListener(t,s)})),void e.addEventListener(t,s,{once:!0});var o,c=function(){o&&e.removeListener("error",o),r(v.apply(null,arguments))};"error"!==t&&(o=function(r){e.removeListener(t,c),n(r)},e.once("error",o)),i((function(){o&&e.removeListener("error",o),e.removeListener(t,c)})),e.once(t,c)}),{timeout:r.timeout,overload:r.overload})},writable:!0,configurable:!0}}),Object.defineProperties(S,{_maxListeners:{value:10,writable:!0,configurable:!0},_observers:{value:null,writable:!0,configurable:!0}}),(n=function(){return M}.call(t,r,t,e))===i||(e.exports=n)}()}},t={},function r(n){var i=t[n];if(void 0!==i)return i.exports;var s=t[n]={exports:{}};return e[n].call(s.exports,s,s.exports,r),s.exports}(650);var e,t}));
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* EventEmitter2
|
|
3
|
+
* https://github.com/hij1nx/EventEmitter2
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2013 hij1nx
|
|
6
|
+
* Licensed under the MIT license.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/*!
|
|
10
|
+
* activity-streams
|
|
11
|
+
* https://github.com/silverbucket/activity-streams
|
|
12
|
+
*
|
|
13
|
+
* Developed and Maintained by:
|
|
14
|
+
* Nick Jennings <nick@silverbucket.net>
|
|
15
|
+
*
|
|
16
|
+
* activity-streams is released under the MIT (see LICENSE).
|
|
17
|
+
*
|
|
18
|
+
* You don't have to do anything special to choose one license or the other
|
|
19
|
+
* and you don't have to notify anyone which license you are using.
|
|
20
|
+
* Please see the corresponding license file for details of these licenses.
|
|
21
|
+
* You are free to use, modify and distribute this software, but all copyright
|
|
22
|
+
* information must remain.
|
|
23
|
+
*
|
|
24
|
+
*/
|
package/dist/sockethub.js
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
13
|
};
|
|
@@ -8,6 +17,7 @@ const crypto_1 = __importDefault(require("./crypto"));
|
|
|
8
17
|
const init_1 = __importDefault(require("./bootstrap/init"));
|
|
9
18
|
const middleware_1 = __importDefault(require("./middleware"));
|
|
10
19
|
const create_activity_object_1 = __importDefault(require("./middleware/create-activity-object"));
|
|
20
|
+
const expand_activity_stream_1 = __importDefault(require("./middleware/expand-activity-stream"));
|
|
11
21
|
const store_credentials_1 = __importDefault(require("./middleware/store-credentials"));
|
|
12
22
|
const validate_1 = __importDefault(require("./middleware/validate"));
|
|
13
23
|
const janitor_1 = __importDefault(require("./janitor"));
|
|
@@ -16,15 +26,13 @@ const process_manager_1 = __importDefault(require("./process-manager"));
|
|
|
16
26
|
const platform_instance_1 = require("./platform-instance");
|
|
17
27
|
const store_1 = require("./store");
|
|
18
28
|
const log = (0, debug_1.default)('sockethub:core');
|
|
19
|
-
function
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
socket.emit('failure', msg);
|
|
27
|
-
};
|
|
29
|
+
function attachError(err, msg) {
|
|
30
|
+
if (typeof msg !== 'object') {
|
|
31
|
+
msg = { context: 'error' };
|
|
32
|
+
}
|
|
33
|
+
msg.error = err.toString();
|
|
34
|
+
delete msg.sessionSecret;
|
|
35
|
+
return msg;
|
|
28
36
|
}
|
|
29
37
|
class Sockethub {
|
|
30
38
|
constructor() {
|
|
@@ -51,48 +59,71 @@ class Sockethub {
|
|
|
51
59
|
janitor_1.default.clean(); // start cleanup cycle
|
|
52
60
|
serve_1.default.start(); // start external services
|
|
53
61
|
log('registering handlers');
|
|
54
|
-
serve_1.default.io.on('connection', this.
|
|
62
|
+
serve_1.default.io.on('connection', this.handleIncomingConnection.bind(this));
|
|
55
63
|
}
|
|
56
64
|
removeAllPlatformInstances() {
|
|
57
|
-
|
|
58
|
-
platform.
|
|
59
|
-
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
for (let platform of platform_instance_1.platformInstances) {
|
|
67
|
+
yield platform[1].destroy();
|
|
68
|
+
}
|
|
69
|
+
});
|
|
60
70
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
title: title,
|
|
68
|
-
sessionId: socket.id,
|
|
69
|
-
msg: crypto_1.default.encrypt(msg, this.parentSecret1 + this.parentSecret2)
|
|
70
|
-
};
|
|
71
|
-
platformInstance.queue.add(job);
|
|
72
|
-
done(job);
|
|
71
|
+
createJob(socketId, platformInstance, msg) {
|
|
72
|
+
const title = `${msg.context}-${(msg.id) ? msg.id : this.counter++}`;
|
|
73
|
+
const job = {
|
|
74
|
+
title: title,
|
|
75
|
+
sessionId: socketId,
|
|
76
|
+
msg: crypto_1.default.encrypt(msg, this.parentSecret1 + this.parentSecret2)
|
|
73
77
|
};
|
|
78
|
+
return job;
|
|
74
79
|
}
|
|
75
80
|
;
|
|
76
|
-
|
|
81
|
+
handleIncomingConnection(socket) {
|
|
77
82
|
const sessionLog = (0, debug_1.default)('sockethub:core:' + socket.id), // session-specific debug messages
|
|
78
83
|
sessionSecret = crypto_1.default.randToken(16),
|
|
79
84
|
// store instance is session-specific
|
|
80
85
|
store = (0, store_1.getSessionStore)(this.parentId, this.parentSecret1, socket.id, sessionSecret);
|
|
81
86
|
sessionLog(`socket.io connection`);
|
|
82
87
|
socket.on('disconnect', () => {
|
|
83
|
-
sessionLog('disconnect received from client
|
|
88
|
+
sessionLog('disconnect received from client');
|
|
84
89
|
});
|
|
85
|
-
socket.on('credentials', (0, middleware_1.default)(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
90
|
+
socket.on('credentials', (0, middleware_1.default)('credentials')
|
|
91
|
+
.use(expand_activity_stream_1.default)
|
|
92
|
+
.use((0, validate_1.default)('credentials', socket.id))
|
|
93
|
+
.use((0, store_credentials_1.default)(store, sessionLog))
|
|
94
|
+
.use((err, data, next) => {
|
|
95
|
+
// error handler
|
|
96
|
+
next(attachError(err, data));
|
|
97
|
+
}).use((data, next) => { next(); })
|
|
98
|
+
.done());
|
|
93
99
|
// when new activity objects are created on the client side, an event is
|
|
94
100
|
// fired and we receive a copy on the server side.
|
|
95
|
-
socket.on('activity-object', (0, middleware_1.default)(
|
|
101
|
+
socket.on('activity-object', (0, middleware_1.default)('activity-object')
|
|
102
|
+
.use((0, validate_1.default)('activity-object', socket.id))
|
|
103
|
+
.use(create_activity_object_1.default)
|
|
104
|
+
.use((err, data, next) => {
|
|
105
|
+
next(attachError(err, data));
|
|
106
|
+
}).use((data, next) => { next(); })
|
|
107
|
+
.done());
|
|
108
|
+
socket.on('message', (0, middleware_1.default)('message')
|
|
109
|
+
.use(expand_activity_stream_1.default)
|
|
110
|
+
.use((0, validate_1.default)('message', socket.id))
|
|
111
|
+
.use((msg, next) => {
|
|
112
|
+
// The platform thread must find the credentials on their own using the given
|
|
113
|
+
// sessionSecret, which indicates that this specific session (socket
|
|
114
|
+
// connection) has provided credentials.
|
|
115
|
+
msg.sessionSecret = sessionSecret;
|
|
116
|
+
next(msg);
|
|
117
|
+
}).use((err, data, next) => {
|
|
118
|
+
next(attachError(err, data));
|
|
119
|
+
}).use((msg, next) => {
|
|
120
|
+
const platformInstance = this.processManager.get(msg.context, msg.actor.id, socket.id);
|
|
121
|
+
sessionLog(`queued to channel ${platformInstance.id}`);
|
|
122
|
+
const job = this.createJob(socket.id, platformInstance, msg);
|
|
123
|
+
// job validated and queued, store socket.io callback for when job is completed
|
|
124
|
+
platformInstance.completedJobHandlers.set(job.title, next);
|
|
125
|
+
platformInstance.queue.add(job);
|
|
126
|
+
}).done());
|
|
96
127
|
}
|
|
97
128
|
}
|
|
98
129
|
exports.default = Sockethub;
|
package/dist/sockethub.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sockethub.js","sourceRoot":"/","sources":["sockethub.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sockethub.js","sourceRoot":"/","sources":["sockethub.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sockethub",
|
|
3
3
|
"description": "A polyglot messaging service",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "5.0.0-alpha.2",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "Nick Jennings <nick@silverbucket.net>",
|
|
7
7
|
"license": "LGPL-3.0+",
|
|
@@ -34,66 +34,70 @@
|
|
|
34
34
|
},
|
|
35
35
|
"homepage": "https://sockethub.org",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"activity-streams": "^4.
|
|
37
|
+
"activity-streams": "^4.4.0-alpha.0",
|
|
38
38
|
"body-parser": "^1.19.0",
|
|
39
|
-
"bull": "^
|
|
39
|
+
"bull": "^4.0.0",
|
|
40
40
|
"debug": "^4.3.1",
|
|
41
41
|
"ejs": "^3.0.1",
|
|
42
42
|
"express": "^4.17.1",
|
|
43
|
-
"findup-sync": "^
|
|
43
|
+
"findup-sync": "^5.0.0",
|
|
44
44
|
"jquery": "^3.4.1",
|
|
45
45
|
"nconf": "^0.11.2",
|
|
46
|
-
"object-hash": "^
|
|
46
|
+
"object-hash": "^3.0.0",
|
|
47
47
|
"secure-store-redis": "^1.4.7",
|
|
48
48
|
"socket.io": "^4.0.1",
|
|
49
|
-
"sockethub-platform-dummy": "^
|
|
50
|
-
"sockethub-platform-feeds": "^
|
|
51
|
-
"sockethub-platform-irc": "^
|
|
52
|
-
"sockethub-platform-xmpp": "^
|
|
53
|
-
"sockethub-schemas": "^
|
|
54
|
-
"tv4": "^1.3.0",
|
|
49
|
+
"sockethub-platform-dummy": "^3.0.0-alpha.0",
|
|
50
|
+
"sockethub-platform-feeds": "^3.0.0-alpha.0",
|
|
51
|
+
"sockethub-platform-irc": "^4.0.0-alpha.2",
|
|
52
|
+
"sockethub-platform-xmpp": "^5.0.0-alpha.2",
|
|
53
|
+
"sockethub-schemas": "^3.0.0-alpha.2",
|
|
55
54
|
"urijs": "^1.19.2"
|
|
56
55
|
},
|
|
57
56
|
"scripts": {
|
|
58
57
|
"compliance": "yarn run lint && yarn run test && yarn run coverage",
|
|
59
58
|
"test": "c8 -x src/bootstrap -x \"src/**/*.test.*\" mocha -r ts-node/register src/*.test.ts src/**/*.test.ts",
|
|
60
|
-
"coverage": "c8 check-coverage --statements
|
|
59
|
+
"coverage": "c8 check-coverage --statements 90 --branches 80 --functions 90 --lines 90",
|
|
61
60
|
"start": "DEBUG=sockethub* ./bin/sockethub",
|
|
62
61
|
"dev": "yarn run build && DEBUG=sockethub* ./bin/sockethub --examples",
|
|
63
62
|
"lint": "eslint \"**/*.ts\" ./bin/sockethub",
|
|
64
63
|
"lint:fix": "eslint --fix \"**/*.ts\" ./bin/sockethub",
|
|
65
64
|
"clean": "find . -maxdepth 1 -name dist -exec rm -rv {} +",
|
|
66
|
-
"build": "yarn run clean &&
|
|
65
|
+
"build": "yarn run clean && yarn run build:server && yarn run build:client",
|
|
66
|
+
"build:server": "tsc && cp ./src/defaults.json ./dist/defaults.json && cp src/bootstrap/platforms.js dist/bootstrap/",
|
|
67
|
+
"build:client": "webpack --config webpack.minified.config.js && webpack --config webpack.normal.config.js"
|
|
67
68
|
},
|
|
68
69
|
"engines": {
|
|
69
70
|
"node": ">= 12.0.0"
|
|
70
71
|
},
|
|
71
72
|
"devDependencies": {
|
|
72
|
-
"@types/body-parser": "
|
|
73
|
-
"@types/chai": "4.
|
|
74
|
-
"@types/debug": "
|
|
75
|
-
"@types/ejs": "
|
|
76
|
-
"@types/eslint": "
|
|
77
|
-
"@types/express": "
|
|
78
|
-
"@types/jquery": "
|
|
79
|
-
"@types/
|
|
80
|
-
"@types/
|
|
81
|
-
"@types/
|
|
82
|
-
"@types/
|
|
83
|
-
"@types/
|
|
84
|
-
"@types/tv4": "
|
|
85
|
-
"@types/urijs": "
|
|
86
|
-
"@typescript-eslint/parser": "
|
|
87
|
-
"c8": "7.
|
|
88
|
-
"chai": "4.3.
|
|
89
|
-
"eslint": "
|
|
73
|
+
"@types/body-parser": "1.19.2",
|
|
74
|
+
"@types/chai": "4.3.0",
|
|
75
|
+
"@types/debug": "4.1.7",
|
|
76
|
+
"@types/ejs": "3.1.0",
|
|
77
|
+
"@types/eslint": "8.4.1",
|
|
78
|
+
"@types/express": "4.17.13",
|
|
79
|
+
"@types/jquery": "3.5.13",
|
|
80
|
+
"@types/mocha": "9.1.0",
|
|
81
|
+
"@types/nconf": "0.10.1",
|
|
82
|
+
"@types/node": "17.0.13",
|
|
83
|
+
"@types/object-hash": "2.2.1",
|
|
84
|
+
"@types/proxyquire": "1.3.28",
|
|
85
|
+
"@types/tv4": "1.2.31",
|
|
86
|
+
"@types/urijs": "1.19.18",
|
|
87
|
+
"@typescript-eslint/parser": "5.12.1",
|
|
88
|
+
"c8": "7.11.0",
|
|
89
|
+
"chai": "4.3.6",
|
|
90
|
+
"eslint": "8.9.0",
|
|
90
91
|
"eslint-cli": "1.1.1",
|
|
92
|
+
"eventemitter2": "6.4.5",
|
|
91
93
|
"jaribu": "2.2.3",
|
|
92
|
-
"mocha": "9.1
|
|
94
|
+
"mocha": "9.2.1",
|
|
93
95
|
"proxyquire": "2.1.3",
|
|
94
|
-
"sinon": "
|
|
95
|
-
"ts-node": "10.
|
|
96
|
-
"typescript": "4.
|
|
96
|
+
"sinon": "13.0.1",
|
|
97
|
+
"ts-node": "10.5.0",
|
|
98
|
+
"typescript": "4.5.5",
|
|
99
|
+
"webpack": "5.69.1",
|
|
100
|
+
"webpack-cli": "4.9.2"
|
|
97
101
|
},
|
|
98
|
-
"gitHead": "
|
|
102
|
+
"gitHead": "29e87681a6ec6dab526efd28348881fbcc7bcb6f"
|
|
99
103
|
}
|
package/src/bootstrap/init.ts
CHANGED
|
@@ -55,7 +55,7 @@ if (config.get('help')) {
|
|
|
55
55
|
// eslint-disable-next-line security-node/detect-crlf
|
|
56
56
|
console.log(' ' + platform.id + ' v' + platform.version);
|
|
57
57
|
// eslint-disable-next-line security-node/detect-crlf
|
|
58
|
-
console.log(' AS
|
|
58
|
+
console.log(' AS types: ' + platform.types.join(', '));
|
|
59
59
|
}
|
|
60
60
|
console.log();
|
|
61
61
|
process.exit();
|
|
@@ -75,8 +75,12 @@ export interface IInitObject {
|
|
|
75
75
|
config: {
|
|
76
76
|
persist?: boolean
|
|
77
77
|
},
|
|
78
|
+
schemas: {
|
|
79
|
+
credentials?: object,
|
|
80
|
+
messages?: object
|
|
81
|
+
},
|
|
78
82
|
version: string,
|
|
79
|
-
|
|
83
|
+
types: Array<string>
|
|
80
84
|
}>,
|
|
81
85
|
}
|
|
82
86
|
|
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
* platforms, and whitelisting or blacklisting (or neither) based on the
|
|
6
6
|
* config.
|
|
7
7
|
*/
|
|
8
|
-
const
|
|
9
|
-
debug = require('debug'),
|
|
8
|
+
const debug = require('debug'),
|
|
10
9
|
schemas = require('sockethub-schemas'),
|
|
11
10
|
findup = require('findup-sync');
|
|
12
11
|
|
|
@@ -36,11 +35,11 @@ function platformIsAccepted(platformName) {
|
|
|
36
35
|
}
|
|
37
36
|
|
|
38
37
|
// if the platform schema lists valid types it implements (essentially methods/verbs for
|
|
39
|
-
// sockethub to call)
|
|
38
|
+
// sockethub to call) then add it to the supported types list.
|
|
40
39
|
function platformListsSupportedTypes(p) {
|
|
41
|
-
return ((p.schema.messages.properties) && (p.schema.messages.properties
|
|
42
|
-
(p.schema.messages.properties
|
|
43
|
-
(p.schema.messages.properties
|
|
40
|
+
return ((p.schema.messages.properties) && (p.schema.messages.properties.type) &&
|
|
41
|
+
(p.schema.messages.properties.type.enum) &&
|
|
42
|
+
(p.schema.messages.properties.type.enum.length > 0));
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
module.exports = function platformLoad(moduleList) {
|
|
@@ -66,10 +65,9 @@ module.exports = function platformLoad(moduleList) {
|
|
|
66
65
|
const packageJson = require(path + '/package.json');
|
|
67
66
|
let types = [];
|
|
68
67
|
|
|
69
|
-
|
|
70
|
-
if (
|
|
71
|
-
throw new Error(
|
|
72
|
-
`${platformName} platform schema failed to validate: ${tv4.error.message}`);
|
|
68
|
+
const err = schemas.validator.validatePlatformSchema(p.schema);
|
|
69
|
+
if (err) {
|
|
70
|
+
throw new Error(`${platformName} ${err}`);
|
|
73
71
|
} else if (typeof p.config !== 'object') {
|
|
74
72
|
throw new Error(
|
|
75
73
|
`${platformName} platform must have a config property that is an object.`);
|
|
@@ -77,27 +75,25 @@ module.exports = function platformLoad(moduleList) {
|
|
|
77
75
|
if (p.schema.credentials) {
|
|
78
76
|
// register the platforms credentials schema
|
|
79
77
|
types.push('credentials');
|
|
80
|
-
tv4.addSchema(`http://sockethub.org/schemas/v0/context/${platformName}/credentials`,
|
|
81
|
-
p.schema.credentials);
|
|
82
78
|
} else {
|
|
83
79
|
p.config.noCredentials = true;
|
|
84
80
|
}
|
|
85
|
-
|
|
86
81
|
}
|
|
87
82
|
|
|
88
|
-
tv4.addSchema(`http://sockethub.org/schemas/v0/context/${platformName}/messages`,
|
|
89
|
-
p.schema.messages);
|
|
90
|
-
|
|
91
83
|
if (platformListsSupportedTypes(p)) {
|
|
92
|
-
types = [...types, ...p.schema.messages.properties
|
|
84
|
+
types = [...types, ...p.schema.messages.properties.type.enum];
|
|
93
85
|
}
|
|
94
86
|
|
|
95
87
|
platforms.set(platformName, {
|
|
96
88
|
id: platformName,
|
|
97
89
|
moduleName: moduleName,
|
|
98
90
|
config: p.config,
|
|
91
|
+
schemas: {
|
|
92
|
+
credentials: p.schema.credentials || {},
|
|
93
|
+
messages: p.schema.messages || {}
|
|
94
|
+
},
|
|
99
95
|
version: packageJson.version,
|
|
100
|
-
|
|
96
|
+
types: types
|
|
101
97
|
});
|
|
102
98
|
}
|
|
103
99
|
}
|
package/src/crypto.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { randomBytes, createCipheriv, createDecipheriv, createHash } from 'crypto';
|
|
2
|
-
import {
|
|
2
|
+
import { ActivityStream } from "./sockethub";
|
|
3
3
|
|
|
4
4
|
const ALGORITHM = 'aes-256-cbc',
|
|
5
5
|
IV_LENGTH = 16; // For AES, this is always 16
|
|
6
6
|
|
|
7
7
|
class Crypto {
|
|
8
8
|
constructor() {}
|
|
9
|
-
encrypt(json:
|
|
9
|
+
encrypt(json: ActivityStream, secret: string): string {
|
|
10
10
|
const iv = randomBytes(IV_LENGTH);
|
|
11
11
|
const cipher = createCipheriv(ALGORITHM, Buffer.from(secret), iv);
|
|
12
12
|
let encrypted = cipher.update(JSON.stringify(json));
|
|
@@ -14,7 +14,7 @@ class Crypto {
|
|
|
14
14
|
encrypted = Buffer.concat([encrypted, cipher.final()]);
|
|
15
15
|
return iv.toString('hex') + ':' + encrypted.toString('hex');
|
|
16
16
|
}
|
|
17
|
-
decrypt(text: string, secret: string):
|
|
17
|
+
decrypt(text: string, secret: string): ActivityStream {
|
|
18
18
|
let parts = text.split(':');
|
|
19
19
|
const iv = Buffer.from(parts.shift(), 'hex');
|
|
20
20
|
const encryptedText = Buffer.from(parts.join(':'), 'hex');
|
package/src/janitor.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import debug from 'debug';
|
|
2
2
|
|
|
3
|
-
import { platformInstances } from './platform-instance';
|
|
4
|
-
import serve from "./serve";
|
|
3
|
+
import PlatformInstance, { platformInstances } from './platform-instance';
|
|
4
|
+
import serve, { SocketInstance } from "./serve";
|
|
5
5
|
|
|
6
6
|
const rmLog = debug('sockethub:janitor');
|
|
7
7
|
|
|
@@ -23,15 +23,15 @@ function janitorCycle() {
|
|
|
23
23
|
rmLog('initializing resource manager');
|
|
24
24
|
setInterval(async () => {
|
|
25
25
|
cycleCount++;
|
|
26
|
-
const sockets = await serve.io.fetchSockets();
|
|
26
|
+
const sockets: Array<SocketInstance> = await serve.io.fetchSockets();
|
|
27
27
|
|
|
28
28
|
if (! (cycleCount % 4)) {
|
|
29
29
|
reportCount++;
|
|
30
|
-
rmLog(`sessions: ${sockets.length} instances: ${platformInstances.size}`);
|
|
30
|
+
rmLog(`socket sessions: ${sockets.length} platform instances: ${platformInstances.size}`);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
for (let platformInstance of platformInstances.values()) {
|
|
34
|
-
|
|
34
|
+
removeStaleSocketSessions(platformInstance, sockets);
|
|
35
35
|
// Static platforms are for global use, not tied to a unique to session / eg. credentials)
|
|
36
36
|
if ((! platformInstance.global) && (platformInstance.sessions.size === 0)) {
|
|
37
37
|
removeStalePlatformInstance(platformInstance);
|
|
@@ -42,7 +42,7 @@ function janitorCycle() {
|
|
|
42
42
|
}, TICK);
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
function socketExists(sessionId, sockets) {
|
|
45
|
+
function socketExists(sessionId: string, sockets: Array<SocketInstance>) {
|
|
46
46
|
for (let socket of sockets) {
|
|
47
47
|
if (socket.id === sessionId) {
|
|
48
48
|
return true;
|
|
@@ -51,17 +51,25 @@ function socketExists(sessionId, sockets) {
|
|
|
51
51
|
return false;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
function
|
|
55
|
-
for (
|
|
54
|
+
function removeSessionCallbacks(platformInstance: PlatformInstance, sessionId: string) {
|
|
55
|
+
for (const key in platformInstance.sessionCallbacks) {
|
|
56
|
+
platformInstance.sessionCallbacks[key].delete(sessionId);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function removeStaleSocketSessions(platformInstance: PlatformInstance,
|
|
61
|
+
sockets: Array<SocketInstance>) {
|
|
62
|
+
for (const sessionId of platformInstance.sessions.values()) {
|
|
56
63
|
if (! socketExists(sessionId, sockets)) {
|
|
57
|
-
rmLog('removing stale session reference ' + sessionId + ' in platform instance '
|
|
64
|
+
rmLog('removing stale socket session reference ' + sessionId + ' in platform instance '
|
|
58
65
|
+ platformInstance.id);
|
|
59
66
|
platformInstance.sessions.delete(sessionId);
|
|
67
|
+
removeSessionCallbacks(platformInstance, sessionId);
|
|
60
68
|
}
|
|
61
69
|
}
|
|
62
70
|
}
|
|
63
71
|
|
|
64
|
-
function removeStalePlatformInstance(platformInstance) {
|
|
72
|
+
function removeStalePlatformInstance(platformInstance: PlatformInstance) {
|
|
65
73
|
if (platformInstance.flaggedForTermination) {
|
|
66
74
|
rmLog(`terminating platform instance ${platformInstance.id}`);
|
|
67
75
|
platformInstance.destroy(); // terminate
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import ActivityStreams from 'activity-streams';
|
|
2
|
-
import {ActivityObject} from "../sockethub";
|
|
3
2
|
import config from "../config";
|
|
4
3
|
const activity = ActivityStreams(config.get('activity-streams:opts'));
|
|
5
4
|
|
|
@@ -8,7 +7,7 @@ const activity = ActivityStreams(config.get('activity-streams:opts'));
|
|
|
8
7
|
* @param obj
|
|
9
8
|
* @param done
|
|
10
9
|
*/
|
|
11
|
-
export default function createActivityObject(obj:
|
|
10
|
+
export default function createActivityObject(obj: any, done: Function) {
|
|
12
11
|
activity.Object.create(obj);
|
|
13
12
|
done(obj);
|
|
14
13
|
}
|