@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.
Files changed (125) hide show
  1. package/.eslintrc +16 -0
  2. package/LICENSE +1 -1
  3. package/README.md +32 -30
  4. package/package.json +57 -26
  5. package/src/client/Client.js +391 -0
  6. package/src/client/Context.js +225 -0
  7. package/src/client/ContextManager.js +111 -0
  8. package/src/client/Plugin.js +66 -0
  9. package/src/client/PluginManager.js +123 -0
  10. package/src/client/SharedState.js +84 -0
  11. package/src/client/Socket.js +389 -0
  12. package/src/client/StateManager.js +67 -0
  13. package/src/client/index.js +77 -0
  14. package/src/common/BasePlugin.js +163 -0
  15. package/src/common/BasePluginManager.js +227 -0
  16. package/src/common/BaseSharedState.js +473 -0
  17. package/src/common/BaseStateManager.js +200 -0
  18. package/{common → src/common}/ParameterBag.js +82 -122
  19. package/{common → src/common}/SharedStatePrivate.js +56 -64
  20. package/src/common/constants.js +51 -0
  21. package/src/common/logger.js +154 -0
  22. package/src/common/promise-store.js +25 -0
  23. package/src/common/sockets-utils.js +73 -0
  24. package/src/common/utils.js +22 -0
  25. package/src/server/Client.js +50 -0
  26. package/src/server/Context.js +99 -0
  27. package/src/server/ContextManager.js +266 -0
  28. package/src/server/Plugin.js +77 -0
  29. package/src/server/PluginManager.js +150 -0
  30. package/src/server/Server.js +849 -0
  31. package/src/server/SharedState.js +86 -0
  32. package/{server → src/server}/Socket.js +119 -94
  33. package/{server → src/server}/Sockets.js +73 -61
  34. package/{common/SharedStateManagerServer.js → src/server/StateManager.js} +183 -131
  35. package/src/server/audit-network-latency.worker.js +57 -0
  36. package/src/server/audit-schema.js +42 -0
  37. package/src/server/index.js +45 -0
  38. package/tsconfig.json +21 -0
  39. package/types/client/Client.d.ts +194 -0
  40. package/types/client/Client.d.ts.map +1 -0
  41. package/types/client/Context.d.ts +139 -0
  42. package/types/client/Context.d.ts.map +1 -0
  43. package/types/client/ContextManager.d.ts +45 -0
  44. package/types/client/ContextManager.d.ts.map +1 -0
  45. package/types/client/Plugin.d.ts +53 -0
  46. package/types/client/Plugin.d.ts.map +1 -0
  47. package/types/client/PluginManager.d.ts +96 -0
  48. package/types/client/PluginManager.d.ts.map +1 -0
  49. package/types/client/SharedState.d.ts +85 -0
  50. package/types/client/SharedState.d.ts.map +1 -0
  51. package/types/client/Socket.d.ts +138 -0
  52. package/types/client/Socket.d.ts.map +1 -0
  53. package/types/client/StateManager.d.ts +72 -0
  54. package/types/client/StateManager.d.ts.map +1 -0
  55. package/types/client/index.d.ts +11 -0
  56. package/types/client/index.d.ts.map +1 -0
  57. package/types/common/BasePlugin.d.ts +145 -0
  58. package/types/common/BasePlugin.d.ts.map +1 -0
  59. package/types/common/BasePluginManager.d.ts +88 -0
  60. package/types/common/BasePluginManager.d.ts.map +1 -0
  61. package/types/common/BaseSharedState.d.ts +173 -0
  62. package/types/common/BaseSharedState.d.ts.map +1 -0
  63. package/types/common/BaseStateManager.d.ts +70 -0
  64. package/types/common/BaseStateManager.d.ts.map +1 -0
  65. package/types/common/ParameterBag.d.ts +143 -0
  66. package/types/common/ParameterBag.d.ts.map +1 -0
  67. package/types/common/SharedStatePrivate.d.ts +20 -0
  68. package/types/common/SharedStatePrivate.d.ts.map +1 -0
  69. package/types/common/constants.d.ts +35 -0
  70. package/types/common/constants.d.ts.map +1 -0
  71. package/types/common/logger.d.ts +16 -0
  72. package/types/common/logger.d.ts.map +1 -0
  73. package/types/common/promise-store.d.ts +4 -0
  74. package/types/common/promise-store.d.ts.map +1 -0
  75. package/types/common/sockets-utils.d.ts +9 -0
  76. package/types/common/sockets-utils.d.ts.map +1 -0
  77. package/types/common/utils.d.ts +5 -0
  78. package/types/common/utils.d.ts.map +1 -0
  79. package/types/server/Client.d.ts +40 -0
  80. package/types/server/Client.d.ts.map +1 -0
  81. package/types/server/Context.d.ts +59 -0
  82. package/types/server/Context.d.ts.map +1 -0
  83. package/types/server/ContextManager.d.ts +69 -0
  84. package/types/server/ContextManager.d.ts.map +1 -0
  85. package/types/server/Plugin.d.ts +70 -0
  86. package/types/server/Plugin.d.ts.map +1 -0
  87. package/types/server/PluginManager.d.ts +91 -0
  88. package/types/server/PluginManager.d.ts.map +1 -0
  89. package/types/server/Server.d.ts +223 -0
  90. package/types/server/Server.d.ts.map +1 -0
  91. package/types/server/SharedState.d.ts +86 -0
  92. package/types/server/SharedState.d.ts.map +1 -0
  93. package/types/server/Socket.d.ts +128 -0
  94. package/types/server/Socket.d.ts.map +1 -0
  95. package/types/server/Sockets.d.ts +73 -0
  96. package/types/server/Sockets.d.ts.map +1 -0
  97. package/types/server/StateManager.d.ts +190 -0
  98. package/types/server/StateManager.d.ts.map +1 -0
  99. package/types/server/audit-network-latency.worker.d.ts +2 -0
  100. package/types/server/audit-network-latency.worker.d.ts.map +1 -0
  101. package/types/server/audit-schema.d.ts +27 -0
  102. package/types/server/audit-schema.d.ts.map +1 -0
  103. package/types/server/index.d.ts +7 -0
  104. package/types/server/index.d.ts.map +1 -0
  105. package/client/AbstractExperience.js +0 -54
  106. package/client/AbstractPlugin.js +0 -230
  107. package/client/Client.js +0 -190
  108. package/client/PluginManager.js +0 -267
  109. package/client/Socket.js +0 -338
  110. package/client/index.js +0 -48
  111. package/client.js +0 -28
  112. package/common/SharedState.js +0 -480
  113. package/common/SharedStateManagerClient.js +0 -194
  114. package/common/Signal.js +0 -40
  115. package/common/SignalAll.js +0 -44
  116. package/common/shared-state-utils.js +0 -90
  117. package/common/sockets-encoder-decoder.js +0 -73
  118. package/server/AbstractExperience.js +0 -126
  119. package/server/AbstractPlugin.js +0 -211
  120. package/server/Client.js +0 -70
  121. package/server/PluginManager.js +0 -177
  122. package/server/Server.js +0 -746
  123. package/server/index.js +0 -49
  124. package/server/utils/logger.js +0 -134
  125. package/server.js +0 -28
@@ -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;