@soundworks/core 3.6.0 → 4.0.0-alpha.0
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/.eslintrc +16 -0
- package/LICENSE +1 -1
- package/README.md +32 -30
- package/package.json +57 -26
- package/src/client/Client.js +391 -0
- package/src/client/Context.js +225 -0
- package/src/client/ContextManager.js +111 -0
- package/src/client/Plugin.js +66 -0
- package/src/client/PluginManager.js +123 -0
- package/src/client/SharedState.js +84 -0
- package/src/client/Socket.js +389 -0
- package/src/client/StateManager.js +67 -0
- package/src/client/index.js +77 -0
- package/src/common/BasePlugin.js +163 -0
- package/src/common/BasePluginManager.js +227 -0
- package/src/common/BaseSharedState.js +473 -0
- package/src/common/BaseStateManager.js +200 -0
- package/{common → src/common}/ParameterBag.js +82 -122
- package/{common → src/common}/SharedStatePrivate.js +56 -64
- package/src/common/constants.js +51 -0
- package/src/common/logger.js +154 -0
- package/src/common/promise-store.js +25 -0
- package/src/common/sockets-utils.js +73 -0
- package/src/common/utils.js +22 -0
- package/src/server/Client.js +50 -0
- package/src/server/Context.js +99 -0
- package/src/server/ContextManager.js +266 -0
- package/src/server/Plugin.js +77 -0
- package/src/server/PluginManager.js +150 -0
- package/src/server/Server.js +849 -0
- package/src/server/SharedState.js +86 -0
- package/{server → src/server}/Socket.js +119 -94
- package/{server → src/server}/Sockets.js +73 -61
- package/{common/SharedStateManagerServer.js → src/server/StateManager.js} +183 -131
- package/src/server/audit-network-latency.worker.js +57 -0
- package/src/server/audit-schema.js +42 -0
- package/src/server/index.js +45 -0
- package/tsconfig.json +21 -0
- package/types/client/Client.d.ts +194 -0
- package/types/client/Client.d.ts.map +1 -0
- package/types/client/Context.d.ts +139 -0
- package/types/client/Context.d.ts.map +1 -0
- package/types/client/ContextManager.d.ts +45 -0
- package/types/client/ContextManager.d.ts.map +1 -0
- package/types/client/Plugin.d.ts +53 -0
- package/types/client/Plugin.d.ts.map +1 -0
- package/types/client/PluginManager.d.ts +96 -0
- package/types/client/PluginManager.d.ts.map +1 -0
- package/types/client/SharedState.d.ts +85 -0
- package/types/client/SharedState.d.ts.map +1 -0
- package/types/client/Socket.d.ts +138 -0
- package/types/client/Socket.d.ts.map +1 -0
- package/types/client/StateManager.d.ts +72 -0
- package/types/client/StateManager.d.ts.map +1 -0
- package/types/client/index.d.ts +11 -0
- package/types/client/index.d.ts.map +1 -0
- package/types/common/BasePlugin.d.ts +145 -0
- package/types/common/BasePlugin.d.ts.map +1 -0
- package/types/common/BasePluginManager.d.ts +88 -0
- package/types/common/BasePluginManager.d.ts.map +1 -0
- package/types/common/BaseSharedState.d.ts +173 -0
- package/types/common/BaseSharedState.d.ts.map +1 -0
- package/types/common/BaseStateManager.d.ts +70 -0
- package/types/common/BaseStateManager.d.ts.map +1 -0
- package/types/common/ParameterBag.d.ts +143 -0
- package/types/common/ParameterBag.d.ts.map +1 -0
- package/types/common/SharedStatePrivate.d.ts +20 -0
- package/types/common/SharedStatePrivate.d.ts.map +1 -0
- package/types/common/constants.d.ts +35 -0
- package/types/common/constants.d.ts.map +1 -0
- package/types/common/logger.d.ts +16 -0
- package/types/common/logger.d.ts.map +1 -0
- package/types/common/promise-store.d.ts +4 -0
- package/types/common/promise-store.d.ts.map +1 -0
- package/types/common/sockets-utils.d.ts +9 -0
- package/types/common/sockets-utils.d.ts.map +1 -0
- package/types/common/utils.d.ts +5 -0
- package/types/common/utils.d.ts.map +1 -0
- package/types/server/Client.d.ts +40 -0
- package/types/server/Client.d.ts.map +1 -0
- package/types/server/Context.d.ts +59 -0
- package/types/server/Context.d.ts.map +1 -0
- package/types/server/ContextManager.d.ts +69 -0
- package/types/server/ContextManager.d.ts.map +1 -0
- package/types/server/Plugin.d.ts +70 -0
- package/types/server/Plugin.d.ts.map +1 -0
- package/types/server/PluginManager.d.ts +91 -0
- package/types/server/PluginManager.d.ts.map +1 -0
- package/types/server/Server.d.ts +223 -0
- package/types/server/Server.d.ts.map +1 -0
- package/types/server/SharedState.d.ts +86 -0
- package/types/server/SharedState.d.ts.map +1 -0
- package/types/server/Socket.d.ts +128 -0
- package/types/server/Socket.d.ts.map +1 -0
- package/types/server/Sockets.d.ts +73 -0
- package/types/server/Sockets.d.ts.map +1 -0
- package/types/server/StateManager.d.ts +190 -0
- package/types/server/StateManager.d.ts.map +1 -0
- package/types/server/audit-network-latency.worker.d.ts +2 -0
- package/types/server/audit-network-latency.worker.d.ts.map +1 -0
- package/types/server/audit-schema.d.ts +27 -0
- package/types/server/audit-schema.d.ts.map +1 -0
- package/types/server/index.d.ts +7 -0
- package/types/server/index.d.ts.map +1 -0
- package/client/AbstractExperience.js +0 -54
- package/client/AbstractPlugin.js +0 -230
- package/client/Client.js +0 -190
- package/client/PluginManager.js +0 -267
- package/client/Socket.js +0 -338
- package/client/index.js +0 -48
- package/client.js +0 -28
- package/common/SharedState.js +0 -480
- package/common/SharedStateManagerClient.js +0 -194
- package/common/Signal.js +0 -40
- package/common/SignalAll.js +0 -44
- package/common/shared-state-utils.js +0 -90
- package/common/sockets-encoder-decoder.js +0 -73
- package/server/AbstractExperience.js +0 -126
- package/server/AbstractPlugin.js +0 -211
- package/server/Client.js +0 -70
- package/server/PluginManager.js +0 -177
- package/server/Server.js +0 -746
- package/server/index.js +0 -49
- package/server/utils/logger.js +0 -134
- package/server.js +0 -28
package/server/PluginManager.js
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
9
|
-
|
|
10
|
-
var _AbstractPlugin = _interopRequireDefault(require("./AbstractPlugin.js"));
|
|
11
|
-
|
|
12
|
-
var _Signal = _interopRequireDefault(require("../common/Signal.js"));
|
|
13
|
-
|
|
14
|
-
var _SignalAll = _interopRequireDefault(require("../common/SignalAll.js"));
|
|
15
|
-
|
|
16
|
-
var _logger = _interopRequireDefault(require("./utils/logger.js"));
|
|
17
|
-
|
|
18
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
|
-
const log = (0, _debug.default)('soundworks:lifecycle');
|
|
21
|
-
/**
|
|
22
|
-
* Manager the plugins and their relations. Acts as a factory to ensure plugins
|
|
23
|
-
* are instanciated only once.
|
|
24
|
-
*
|
|
25
|
-
* @memberof server
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
class PluginManager {
|
|
29
|
-
constructor(server) {
|
|
30
|
-
/** @private */
|
|
31
|
-
this._registeredPlugins = {};
|
|
32
|
-
/** @private */
|
|
33
|
-
|
|
34
|
-
this._instances = {};
|
|
35
|
-
/** @private */
|
|
36
|
-
|
|
37
|
-
this._server = server; // @todo - move to Promise based logic
|
|
38
|
-
|
|
39
|
-
this.signals = {
|
|
40
|
-
start: new _Signal.default(),
|
|
41
|
-
ready: new _SignalAll.default()
|
|
42
|
-
};
|
|
43
|
-
this.ready = new Promise((resolve, reject) => {
|
|
44
|
-
this._resolveReadyPromise = resolve;
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
/** @private */
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
start() {
|
|
51
|
-
log('> pluginManager start');
|
|
52
|
-
|
|
53
|
-
_logger.default.title('initializing plugins');
|
|
54
|
-
|
|
55
|
-
this.signals.ready.addObserver(() => {
|
|
56
|
-
log('> pluginManager ready');
|
|
57
|
-
|
|
58
|
-
this._resolveReadyPromise();
|
|
59
|
-
}); // start before ready, even if no deps
|
|
60
|
-
|
|
61
|
-
this.signals.start.value = true;
|
|
62
|
-
|
|
63
|
-
if (this.signals.ready.length === 0) {
|
|
64
|
-
this.signals.ready.value = true;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return this.ready;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Register a plugin (server-side) into soundworks.
|
|
71
|
-
*
|
|
72
|
-
* _A plugin must be registered both client-side and server-side_
|
|
73
|
-
* @see {@link client.PluginManager#register}
|
|
74
|
-
*
|
|
75
|
-
* @param {String} name - Name of the plugin
|
|
76
|
-
* @param {Function} factory - Factory function that return the plugin class
|
|
77
|
-
* @param {Object} options - Options to configure the plugin
|
|
78
|
-
* @param {Array} deps - List of plugins' names the plugin depends on
|
|
79
|
-
*
|
|
80
|
-
* @example
|
|
81
|
-
* ```js
|
|
82
|
-
* server.pluginManager.register('user-defined-name', pluginFactory);
|
|
83
|
-
* ```
|
|
84
|
-
*/
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
register(name, factory = null, options = {}, deps = []) {
|
|
88
|
-
if (this._registeredPlugins[name]) {
|
|
89
|
-
const ctor = factory(_AbstractPlugin.default);
|
|
90
|
-
throw new Error(`[soundworks:core] Plugin "${name}" of type "${ctor.name}" already registered`);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const ctor = factory(_AbstractPlugin.default);
|
|
94
|
-
this._registeredPlugins[name] = {
|
|
95
|
-
ctor,
|
|
96
|
-
options,
|
|
97
|
-
deps
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Retrieve an instance of a registered plugin according to its given name.
|
|
102
|
-
* Except if you know what you are doing, prefer `Experience.require('my-plugin')`
|
|
103
|
-
* @param {String} name - Name of the registered plugin
|
|
104
|
-
*/
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
get(name, _experience = null) {
|
|
108
|
-
if (!this._registeredPlugins[name]) {
|
|
109
|
-
throw new Error(`[soundworks:core] Cannot get or require plugin "${name}", plugin is not registered
|
|
110
|
-
> registered plugins are:
|
|
111
|
-
${Object.keys(this._registeredPlugins).map(n => `> - ${n}\n`).join('')}
|
|
112
|
-
`);
|
|
113
|
-
} // required by experience and manager already started
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
if (_experience && this.signals.start.value === true) {
|
|
117
|
-
throw new Error(`[soundworks:core] Plugin "${name}" required after pluginManager start`);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if (!this._instances[name]) {
|
|
121
|
-
log(`> instanciating plugin "${name}"`);
|
|
122
|
-
const {
|
|
123
|
-
ctor,
|
|
124
|
-
options,
|
|
125
|
-
deps
|
|
126
|
-
} = this._registeredPlugins[name];
|
|
127
|
-
const instance = new ctor(this._server, name, options);
|
|
128
|
-
this.signals.ready.add(instance.signals.ready);
|
|
129
|
-
instance.signals.start.add(this.signals.start);
|
|
130
|
-
|
|
131
|
-
if (deps.length > 0) {
|
|
132
|
-
deps.forEach(dependencyName => {
|
|
133
|
-
if (!this._instances[dependencyName]) {
|
|
134
|
-
this.get(dependencyName, _experience); // propagate client types
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
const dependency = this._instances[dependencyName];
|
|
138
|
-
instance.signals.start.add(dependency.signals.ready);
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
this._instances[name] = instance;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
const instance = this._instances[name]; // if require by the experience, map client types
|
|
146
|
-
|
|
147
|
-
if (_experience) {
|
|
148
|
-
_experience.clientTypes.forEach(clientType => {
|
|
149
|
-
instance.clientTypes.add(clientType);
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
return instance;
|
|
154
|
-
}
|
|
155
|
-
/** @private */
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
getRequiredPlugins(clientType = null) {
|
|
159
|
-
const plugins = [];
|
|
160
|
-
|
|
161
|
-
for (let name in this._instances) {
|
|
162
|
-
if (clientType !== null) {
|
|
163
|
-
if (this._instances[name].clientTypes.has(clientType)) {
|
|
164
|
-
plugins.push(name);
|
|
165
|
-
}
|
|
166
|
-
} else {
|
|
167
|
-
plugins.push(name);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
return plugins;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
var _default = PluginManager;
|
|
177
|
-
exports.default = _default;
|