dyo-tools 0.3.0 → 0.4.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 (208) hide show
  1. package/.c8rc.json +4 -4
  2. package/.eslintignore +1 -1
  3. package/.eslintrc.json +47 -47
  4. package/Makefile +34 -34
  5. package/dist/constants.d.ts +1 -0
  6. package/dist/constants.d.ts.map +1 -0
  7. package/dist/constants.js +24 -20
  8. package/dist/constants.js.map +1 -1
  9. package/dist/core/DTAction.d.ts +6 -4
  10. package/dist/core/DTAction.d.ts.map +1 -0
  11. package/dist/core/DTAction.js +3 -6
  12. package/dist/core/DTAction.js.map +1 -1
  13. package/dist/core/DTBunch.d.ts +8 -5
  14. package/dist/core/DTBunch.d.ts.map +1 -0
  15. package/dist/core/DTBunch.js +54 -20
  16. package/dist/core/DTBunch.js.map +1 -1
  17. package/dist/core/DTComponent.d.ts +13 -10
  18. package/dist/core/DTComponent.d.ts.map +1 -0
  19. package/dist/core/DTComponent.js +23 -10
  20. package/dist/core/DTComponent.js.map +1 -1
  21. package/dist/core/DTComponentPhysical.d.ts +11 -7
  22. package/dist/core/DTComponentPhysical.d.ts.map +1 -0
  23. package/dist/core/DTComponentPhysical.js +21 -6
  24. package/dist/core/DTComponentPhysical.js.map +1 -1
  25. package/dist/core/DTComponentWithMeta.d.ts +6 -3
  26. package/dist/core/DTComponentWithMeta.d.ts.map +1 -0
  27. package/dist/core/DTComponentWithMeta.js +21 -7
  28. package/dist/core/DTComponentWithMeta.js.map +1 -1
  29. package/dist/core/DTElement.d.ts +10 -8
  30. package/dist/core/DTElement.d.ts.map +1 -0
  31. package/dist/core/DTElement.js +8 -9
  32. package/dist/core/DTElement.js.map +1 -1
  33. package/dist/core/DTError.d.ts +8 -7
  34. package/dist/core/DTError.d.ts.map +1 -0
  35. package/dist/core/DTError.js +1 -5
  36. package/dist/core/DTError.js.map +1 -1
  37. package/dist/core/DTManager.d.ts +17 -14
  38. package/dist/core/DTManager.d.ts.map +1 -0
  39. package/dist/core/DTManager.js +84 -26
  40. package/dist/core/DTManager.js.map +1 -1
  41. package/dist/core/DTMaster.d.ts +19 -16
  42. package/dist/core/DTMaster.d.ts.map +1 -0
  43. package/dist/core/DTMaster.js +48 -31
  44. package/dist/core/DTMaster.js.map +1 -1
  45. package/dist/core/DTModule.d.ts +8 -5
  46. package/dist/core/DTModule.d.ts.map +1 -0
  47. package/dist/core/DTModule.js +6 -6
  48. package/dist/core/DTModule.js.map +1 -1
  49. package/dist/index.d.ts +1 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +12 -28
  52. package/dist/index.js.map +1 -1
  53. package/dist/libs/DYOFinder.d.ts +1 -0
  54. package/dist/libs/DYOFinder.d.ts.map +1 -0
  55. package/dist/libs/DYOFinder.js +10 -14
  56. package/dist/libs/DYOFinder.js.map +1 -1
  57. package/dist/libs/dix/DIXModule.module.d.ts +8 -0
  58. package/dist/libs/dix/DIXModule.module.d.ts.map +1 -0
  59. package/dist/libs/dix/DIXModule.module.js +73 -0
  60. package/dist/libs/player/DTPlayer.element.d.ts +3 -2
  61. package/dist/libs/player/DTPlayer.element.d.ts.map +1 -0
  62. package/dist/libs/player/DTPlayer.element.js +2 -6
  63. package/dist/libs/player/DTPlayer.element.js.map +1 -1
  64. package/dist/libs/player/DTPlayer.manager.d.ts +8 -7
  65. package/dist/libs/player/DTPlayer.manager.d.ts.map +1 -0
  66. package/dist/libs/player/DTPlayer.manager.js +13 -20
  67. package/dist/libs/player/DTPlayer.manager.js.map +1 -1
  68. package/dist/tsconfig.dev.tsbuildinfo +1 -0
  69. package/dist/tsconfig.tsbuildinfo +1 -1
  70. package/dist/types/core.d.ts +40 -12
  71. package/dist/types/core.d.ts.map +1 -0
  72. package/dist/types/core.js +2 -6
  73. package/dist/types/core.js.map +1 -1
  74. package/dist/types/index.d.ts +1 -0
  75. package/dist/types/index.d.ts.map +1 -0
  76. package/dist/types/index.js +2 -19
  77. package/dist/types/index.js.map +1 -1
  78. package/dist/types/player.d.ts +1 -1
  79. package/dist/types/player.d.ts.map +1 -0
  80. package/dist/types/player.js +1 -3
  81. package/docs/assets/main.js +59 -59
  82. package/docs/assets/style.css +1414 -1414
  83. package/integration/data/components/DTHero.ts +42 -0
  84. package/integration/data/components/DTHeroManager.ts +11 -0
  85. package/integration/data/components/DTHeroPlayZone.ts +6 -0
  86. package/integration/data/components/DTHeroPlayerHand.ts +11 -0
  87. package/integration/data/components/index.ts +5 -0
  88. package/integration/data/in/heroIn.helper.ts +8 -0
  89. package/integration/data/in/playerIn.helper.ts +13 -0
  90. package/integration/data/out/heroOut.helper.ts +48 -0
  91. package/integration/endings/synchronisation.ending.ts +25 -0
  92. package/integration/scenes/drawCard.scene.ts +31 -0
  93. package/integration/scenes/empty.scene.ts +6 -0
  94. package/integration/scenes/playCard.scene.ts +23 -0
  95. package/integration/scenes/playerLeave.scene.ts +33 -0
  96. package/integration/stages/baseDix.stage.ts +137 -0
  97. package/integration/stages/syncDix.stage.ts +36 -0
  98. package/integration/tests/scenario1.spec.ts +55 -0
  99. package/integration/types/index.ts +24 -0
  100. package/jest-integration.config.ts +25 -0
  101. package/jest.config.ts +26 -0
  102. package/package.json +31 -19
  103. package/src/constants.ts +87 -85
  104. package/src/core/DTAction.ts +54 -52
  105. package/src/core/DTBunch.ts +531 -467
  106. package/src/core/DTComponent.ts +258 -225
  107. package/src/core/DTComponentPhysical.ts +88 -53
  108. package/src/core/DTComponentWithMeta.ts +98 -65
  109. package/src/core/DTElement.ts +111 -102
  110. package/src/core/DTError.ts +78 -78
  111. package/src/core/DTManager.ts +555 -465
  112. package/src/core/DTMaster.ts +366 -318
  113. package/src/core/DTModule.ts +96 -90
  114. package/src/libs/dix/DIXModule.module.ts +98 -0
  115. package/src/libs/player/DTPlayer.element.ts +9 -9
  116. package/src/libs/player/DTPlayer.manager.ts +70 -84
  117. package/src/types/core.ts +204 -169
  118. package/src/types/player.ts +5 -6
  119. package/test/core/DTAction.double.ts +12 -28
  120. package/test/core/DTAction.spec.ts +8 -16
  121. package/test/core/DTBunch.double.ts +49 -135
  122. package/test/core/DTBunch.spec.ts +163 -238
  123. package/test/core/DTComponent.double.ts +17 -2
  124. package/test/core/DTComponent.spec.ts +6 -4
  125. package/test/core/DTComponentPhysical.double.ts +29 -43
  126. package/test/core/DTComponentPhysical.spec.ts +22 -19
  127. package/test/core/DTComponentWithMeta.double.ts +38 -31
  128. package/test/core/DTComponentWithMeta.spec.ts +23 -18
  129. package/test/core/DTElement.double.ts +32 -53
  130. package/test/core/DTElement.spec.ts +15 -38
  131. package/test/core/DTError.double.ts +18 -53
  132. package/test/core/DTError.spec.ts +21 -32
  133. package/test/core/DTManager.double.ts +74 -141
  134. package/test/core/DTManager.spec.ts +289 -380
  135. package/test/core/DTMaster.double.ts +56 -80
  136. package/test/core/DTMaster.spec.ts +185 -232
  137. package/test/core/DTModule.double.ts +12 -25
  138. package/test/core/DTModule.spec.ts +14 -28
  139. package/test/core/copy.spec.ts +9 -30
  140. package/tsconfig.dev.json +5 -8
  141. package/tsconfig.json +5 -8
  142. package/cucumber-report.html +0 -48
  143. package/docs/assets/navigation.js +0 -1
  144. package/docs/classes/core_DTAction.DYOToolsAction.html +0 -89
  145. package/docs/classes/core_DTBunch.DYOToolsBunch.html +0 -254
  146. package/docs/classes/core_DTComponent.DYOToolsComponent.html +0 -76
  147. package/docs/classes/core_DTComponentPhysical.DYOToolsComponentPhysical.html +0 -110
  148. package/docs/classes/core_DTComponentWithMeta.DYOToolsComponentWithMeta.html +0 -96
  149. package/docs/classes/core_DTElement.DYOToolsElement.html +0 -135
  150. package/docs/classes/core_DTError.DYOToolsError.html +0 -37
  151. package/docs/classes/core_DTManager.DYOToolsManager.html +0 -237
  152. package/docs/classes/core_DTMaster.DYOToolsMaster.html +0 -150
  153. package/docs/classes/core_DTModule.DYOToolsModule.html +0 -92
  154. package/docs/classes/libs_DYOFinder.DYOFinder.html +0 -34
  155. package/docs/classes/libs_player_DTPlayer_element.DYOToolsPlayer.html +0 -134
  156. package/docs/classes/libs_player_DTPlayer_manager.DYOToolsPlayerManager.html +0 -243
  157. package/docs/enums/types_core.FilterOperatorType.html +0 -10
  158. package/docs/hierarchy.html +0 -1
  159. package/docs/interfaces/types_core.DTBunchFilters.html +0 -6
  160. package/docs/interfaces/types_core.DTBunchOptions.html +0 -19
  161. package/docs/interfaces/types_core.DTBunchToObject.html +0 -7
  162. package/docs/interfaces/types_core.DTComponentOptions.html +0 -5
  163. package/docs/interfaces/types_core.DTComponentToObject.html +0 -4
  164. package/docs/interfaces/types_core.DTElementToObject.html +0 -7
  165. package/docs/interfaces/types_core.DTManagerFilters.html +0 -6
  166. package/docs/interfaces/types_core.DTManagerOptions.html +0 -8
  167. package/docs/interfaces/types_core.DTManagerToObject.html +0 -5
  168. package/docs/interfaces/types_core.DTMasterToObject.html +0 -8
  169. package/docs/interfaces/types_core.DTModuleToObject.html +0 -6
  170. package/docs/interfaces/types_core.DYOFinderConfigurationPropDefault.html +0 -4
  171. package/docs/interfaces/types_core.DYOFinderConfigurationPropObjectSearch.html +0 -4
  172. package/docs/interfaces/types_core.DYOFinderFilterOperatorAdvanced.html +0 -5
  173. package/docs/interfaces/types_core.DYOFinderFilterOperatorBase.html +0 -5
  174. package/docs/interfaces/types_player.DTPlayerManagerSimpleConfiguration.html +0 -3
  175. package/docs/modules/constants.html +0 -6
  176. package/docs/modules/core_DTAction.html +0 -2
  177. package/docs/modules/core_DTBunch.html +0 -2
  178. package/docs/modules/core_DTComponent.html +0 -2
  179. package/docs/modules/core_DTComponentPhysical.html +0 -2
  180. package/docs/modules/core_DTComponentWithMeta.html +0 -2
  181. package/docs/modules/core_DTElement.html +0 -2
  182. package/docs/modules/core_DTError.html +0 -2
  183. package/docs/modules/core_DTManager.html +0 -2
  184. package/docs/modules/core_DTMaster.html +0 -2
  185. package/docs/modules/core_DTModule.html +0 -2
  186. package/docs/modules/libs_DYOFinder.html +0 -2
  187. package/docs/modules/libs_player_DTPlayer_element.html +0 -2
  188. package/docs/modules/libs_player_DTPlayer_manager.html +0 -2
  189. package/docs/modules/types.html +0 -29
  190. package/docs/modules/types_core.html +0 -28
  191. package/docs/modules/types_player.html +0 -2
  192. package/docs/types/types_core.DTAcceptedMetaData.html +0 -2
  193. package/docs/types/types_core.DTManagerItemType.html +0 -1
  194. package/docs/types/types_core.DTManagerItemsType.html +0 -2
  195. package/docs/types/types_core.DYOFinderComponentType.html +0 -1
  196. package/docs/types/types_core.DYOFinderConfiguration.html +0 -2
  197. package/docs/types/types_core.DYOFinderConfigurationProp.html +0 -1
  198. package/docs/types/types_core.DYOFinderFilterOperator.html +0 -1
  199. package/docs/types/types_core.DYOFinderFilterOperatorArgument.html +0 -1
  200. package/docs/types/types_core.DYOFinderFilters.html +0 -1
  201. package/docs/types/types_core.StandardPrimitiveType.html +0 -2
  202. package/docs/types/types_core.StandardPrimitiveTypeWithArray.html +0 -1
  203. package/docs/variables/constants.bunchDefaultOptions.html +0 -2
  204. package/docs/variables/constants.componentBunchDefaultFinderConfiguration.html +0 -1
  205. package/docs/variables/constants.componentManagerDefaultFinderConfiguration.html +0 -1
  206. package/docs/variables/constants.componentPhysicalDefaultFinderConfiguration.html +0 -1
  207. package/docs/variables/constants.managerDefaultOptions.html +0 -2
  208. package/jest.config.js +0 -6
@@ -1,90 +1,96 @@
1
- import DYOToolsComponent from './DTComponent';
2
- import { DTModuleToObject } from '../types';
3
- import DYOToolsMaster from './DTMaster';
4
-
5
- export default class DYOToolsModule extends DYOToolsComponent {
6
- /**
7
- * Defining component type to "module".
8
- */
9
- protected _componentType: string = 'module';
10
-
11
- /**
12
- * Defining if the module is enabled or not.
13
- * @protected
14
- */
15
- protected _enabled: boolean;
16
-
17
- /**
18
- * Applying the parent constructor, and initializing _enabled property to true by default.
19
- *
20
- * @param key
21
- */
22
- constructor(key?: string) {
23
- super(key);
24
-
25
- this._enabled = true;
26
- }
27
-
28
- /**
29
- * Returns Master component from context, or undefined.
30
- */
31
- getMaster(): DYOToolsMaster | undefined {
32
- return this.getContext<DYOToolsMaster>('master');
33
- }
34
-
35
- /**
36
- * Getter for the _enabled property.
37
- */
38
- isEnabled(): boolean {
39
- return this._enabled;
40
- }
41
-
42
- /**
43
- * Change _enabled property to true.
44
- */
45
- enable(): void {
46
- this._enabled = true;
47
- }
48
-
49
- /**
50
- * Change _enabled property to false.
51
- */
52
- disable(): void {
53
- this._enabled = false;
54
- }
55
-
56
- /**
57
- * Return String representation of the Module instance.
58
- *
59
- * @returns String representation of the Module.
60
- */
61
- toString(): string {
62
- let extraLabel: string = '';
63
-
64
- if (!this._enabled) {
65
- extraLabel = ' - Disabled';
66
- }
67
-
68
- return `Component ${this._key} - Type: Module${extraLabel}`;
69
- }
70
-
71
- /**
72
- * Return JSON Object representation of the Module instance.
73
- *
74
- * JSON Object returned has the following structure :
75
- * * **id** : _id property of the Module.
76
- * * **key** : _key property of the Module.
77
- * * **type** : _componentType property of the Module.
78
- * * **enabled** : _enabled property of the Module.
79
- *
80
- * @returns JSON Object representation of the Module.
81
- */
82
- toObject(): DTModuleToObject {
83
- return {
84
- id: this._id,
85
- key: this._key,
86
- type: this._componentType,
87
- enabled: this._enabled,
88
- };
89
- }
90
- }
1
+ import DTComponent from './DTComponent';
2
+ import { DIXObject, DTModuleToObject } from '../types';
3
+ import DTMaster from './DTMaster';
4
+
5
+ export default class DTModule extends DTComponent {
6
+ /**
7
+ * Defining component type to "module".
8
+ */
9
+ protected _componentType: string = 'module';
10
+
11
+ /**
12
+ * Defining if the module is enabled or not.
13
+ * @protected
14
+ */
15
+ protected _enabled: boolean;
16
+
17
+ /**
18
+ * Applying the parent constructor, and initializing _enabled property to true by default.
19
+ *
20
+ * @param key
21
+ */
22
+ constructor(key?: string) {
23
+ super(key);
24
+
25
+ this._enabled = true;
26
+ }
27
+
28
+ /**
29
+ * Returns Master component from context, or undefined.
30
+ */
31
+ getMaster(): DTMaster | undefined {
32
+ return this.getContext<DTMaster>('master');
33
+ }
34
+
35
+ /**
36
+ * Getter for the _enabled property.
37
+ */
38
+ isEnabled(): boolean {
39
+ return this._enabled;
40
+ }
41
+
42
+ /**
43
+ * Change _enabled property to true.
44
+ */
45
+ enable(): void {
46
+ this._enabled = true;
47
+ }
48
+
49
+ /**
50
+ * Change _enabled property to false.
51
+ */
52
+ disable(): void {
53
+ this._enabled = false;
54
+ }
55
+
56
+ /**
57
+ * Return String representation of the Module instance.
58
+ *
59
+ * @returns String representation of the Module.
60
+ */
61
+ toString(): string {
62
+ let extraLabel: string = '';
63
+
64
+ if (!this._enabled) {
65
+ extraLabel = ' - Disabled';
66
+ }
67
+
68
+ return `Component ${this._key} - Type: Module${extraLabel}`;
69
+ }
70
+
71
+ /**
72
+ * Return JSON Object representation of the Module instance.
73
+ *
74
+ * JSON Object returned has the following structure :
75
+ * * **id** : _id property of the Module.
76
+ * * **key** : _key property of the Module.
77
+ * * **type** : _componentType property of the Module.
78
+ * * **enabled** : _enabled property of the Module.
79
+ *
80
+ * @returns JSON Object representation of the Module.
81
+ */
82
+ toObject(): DTModuleToObject {
83
+ return {
84
+ id: this._id,
85
+ key: this._key,
86
+ type: this._componentType,
87
+ enabled: this._enabled,
88
+ };
89
+ }
90
+
91
+ toDIXObject(): Record<string, DIXObject> {
92
+ return undefined;
93
+ }
94
+
95
+ updateFromDix(): void {}
96
+ }
@@ -0,0 +1,98 @@
1
+ import * as CoreComponents from '../../index';
2
+ import { DIXObject } from '../../types';
3
+
4
+ type DTElementClass = new (key: string, options: Record<string, unknown>) => CoreComponents.DTComponent;
5
+ type DTBunchClass = new (key: string, items: unknown[], options: Record<string, unknown>) => CoreComponents.DTComponent;
6
+ type DTManagerClass = new (key: string, items: unknown[], scopes: unknown[], options: Record<string, unknown>) => CoreComponents.DTComponent;
7
+ type DTMasterClass = DTElementClass;
8
+
9
+ export default class DTDIXModule extends CoreComponents.DTModule {
10
+ overrides: Record<string, unknown>;
11
+
12
+ constructor(overrides: Record<string, unknown> = {}) {
13
+ super('dix');
14
+ this.overrides = {
15
+ ...CoreComponents,
16
+ ...overrides,
17
+ };
18
+ }
19
+
20
+ syncNewItem(id: string, dix: Record<string, DIXObject>): CoreComponents.DTComponent | undefined {
21
+ const dixObject = dix[id];
22
+ let instance: CoreComponents.DTComponent | undefined;
23
+ const errorsEnabled = this._options.errors;
24
+
25
+ if (dixObject) {
26
+ switch (dixObject.componentType) {
27
+ case 'bunch':
28
+ try {
29
+ const UseClass = this.overrides[dixObject.useClass] as DTBunchClass;
30
+ instance = new UseClass(dixObject.key, [], { ...(JSON.parse(dixObject.options) ?? {}), syncId: id });
31
+ } catch (err: unknown) {
32
+ if (errorsEnabled) {
33
+ const UseClass = this.overrides.DTBunch as DTBunchClass;
34
+ instance = new UseClass(dixObject.key, [], { ...(JSON.parse(dixObject.options) ?? {}), syncId: id });
35
+ }
36
+ this.triggerError(new CoreComponents.DTError(
37
+ 'dix_module_instance_error',
38
+ `Bunch Class ${dixObject.useClass} doesn't exist in DIX Module`,
39
+ this,
40
+ ));
41
+ }
42
+ break;
43
+ case 'manager':
44
+ try {
45
+ const UseClass = this.overrides[dixObject.useClass] as DTManagerClass;
46
+ instance = new UseClass(dixObject.key, [], [], { ...(JSON.parse(dixObject.options) ?? {}), syncId: id });
47
+ } catch (err: unknown) {
48
+ if (errorsEnabled) {
49
+ const UseClass = this.overrides.DTManager as DTManagerClass;
50
+ instance = new UseClass(dixObject.key, [], [], { ...(JSON.parse(dixObject.options) ?? {}), syncId: id });
51
+ }
52
+ this.triggerError(new CoreComponents.DTError(
53
+ 'dix_module_instance_error',
54
+ `Manager Class ${dixObject.useClass} doesn't exist in DIX Module`,
55
+ this,
56
+ ));
57
+ }
58
+ break;
59
+ case 'master':
60
+ try {
61
+ const UseClass = this.overrides[dixObject.useClass] as DTMasterClass;
62
+ instance = new UseClass(dixObject.key, { ...(JSON.parse(dixObject.options) ?? {}), syncId: id });
63
+ } catch (err: unknown) {
64
+ if (errorsEnabled) {
65
+ const UseClass = this.overrides.DTElement as DTMasterClass;
66
+ instance = new UseClass(dixObject.key, { ...(JSON.parse(dixObject.options) ?? {}), syncId: id });
67
+ }
68
+ this.triggerError(new CoreComponents.DTError(
69
+ 'dix_module_instance_error',
70
+ `Master Class ${dixObject.useClass} doesn't exist in DIX Module`,
71
+ this,
72
+ ));
73
+ }
74
+ break;
75
+ case 'element':
76
+ default:
77
+ try {
78
+ const UseClass = this.overrides[dixObject.useClass] as DTElementClass;
79
+ instance = new UseClass(dixObject.key, { ...(JSON.parse(dixObject.options) ?? {}), syncId: id });
80
+ // console.log('Je test pour : ', instance.getKey(), instance.getId(), instance.getOptions(), id);
81
+ } catch (err: unknown) {
82
+ if (errorsEnabled) {
83
+ const UseClass = this.overrides.DTElement as DTElementClass;
84
+ instance = new UseClass(dixObject.key, { ...(JSON.parse(dixObject.options) ?? {}), syncId: id });
85
+ }
86
+ this.triggerError(new CoreComponents.DTError(
87
+ 'dix_module_instance_error',
88
+ `Element Class ${dixObject.useClass} doesn't exist in DIX Module`,
89
+ this,
90
+ ));
91
+ }
92
+ break;
93
+ }
94
+ }
95
+
96
+ return instance;
97
+ }
98
+ }
@@ -1,9 +1,9 @@
1
- import { DTAcceptedMetaData } from '../../types';
2
- import DYOToolsElement from '../../core/DTElement';
3
-
4
- export default class DYOToolsPlayer<IComponentMeta extends DTAcceptedMetaData = DTAcceptedMetaData> extends DYOToolsElement<IComponentMeta> {
5
- /**
6
- * Defining component domain to "player".
7
- */
8
- protected _domain = 'player';
9
- }
1
+ import { DTAcceptedMetaData } from '../../types';
2
+ import DTElement from '../../core/DTElement';
3
+
4
+ export default class DTPlayer<IComponentMeta extends DTAcceptedMetaData = DTAcceptedMetaData> extends DTElement<IComponentMeta> {
5
+ /**
6
+ * Defining component domain to "player".
7
+ */
8
+ protected _domain = 'player';
9
+ }
@@ -1,84 +1,70 @@
1
- import DYOToolsManager from '../../core/DTManager';
2
- import DYOToolsPlayer from './DTPlayer.element';
3
- import { DTBunchFilters, DTManagerOptions, DTPlayerManagerSimpleConfiguration } from '../../types';
4
- import { DTPlayer } from '../../index';
5
-
6
- export default class DYOToolsPlayerManager extends DYOToolsManager<DYOToolsPlayer> {
7
- /**
8
- * Defining component domain to "player".
9
- */
10
- protected _domain = 'player';
11
-
12
- /**
13
- * Applying the parent constructor. The key is **player** by default.
14
- *
15
- *
16
- * The constructor uses a Configuration JSON Object, with following properties :
17
- * * **players** : Default player configuration.
18
- * If **players** is a number, it generates this number of DTPlayer instances and add it to the library.
19
- * If **players** is an array of DTPlayer instances, it adds these to the library.
20
- * * **errors** : Set **errors** option of the Manager.
21
- *
22
- * @param configuration DTPlayerManagerSimpleConfiguration Optional configuration to apply.
23
- */
24
- constructor(configuration?: DTPlayerManagerSimpleConfiguration) {
25
- super('player');
26
-
27
- // Simple Configuration
28
- const finalConfig = configuration ?? {};
29
- const finalOptions: DTManagerOptions = this._options;
30
- if (finalConfig.players) {
31
- if (typeof finalConfig.players === 'number' && finalConfig.players > 0) {
32
- let i = 1;
33
- while (i <= finalConfig.players) {
34
- const player = new DTPlayer(`player${i}`);
35
- this._library.add(player);
36
- i += 1;
37
- }
38
- } else if (Array.isArray(finalConfig.players)) {
39
- this._library.addMany(finalConfig.players);
40
- }
41
- }
42
-
43
- if (finalConfig.errors) {
44
- finalOptions.errors = finalConfig.errors;
45
- }
46
- }
47
-
48
- /**
49
- * Get one DTPlayer instance by id into the library.
50
- *
51
- * @param id string _id property of the DTPlayer instance to get.
52
- */
53
- getPlayer(id: string): DYOToolsPlayer {
54
- return this._library.get(id);
55
- }
56
-
57
- /**
58
- * Add one DTPlayer instance into the library.
59
- *
60
- * @param player DYOToolsPlayer instance to add.
61
- */
62
- addPlayer(player: DYOToolsPlayer): void {
63
- this._library.add(player);
64
- }
65
-
66
- /**
67
- * Remove one DTPlayer instance by id from the library.
68
- *
69
- * @param id string _id property of the DTPlayer instance to remove.
70
- */
71
- removePlayer(id: string): void {
72
- this._library.remove(id);
73
- }
74
-
75
- /**
76
- * Find DTPlayer instances into the Library.
77
- *
78
- * @see [find](#find) method for search specifications.
79
- * @param filters DTBunchFilters filters to apply.
80
- */
81
- findPlayers(filters: Partial<DTBunchFilters>): DYOToolsPlayer[] {
82
- return this._library.find(filters);
83
- }
84
- }
1
+ import DTManager from '../../core/DTManager';
2
+ import DTPlayer from './DTPlayer.element';
3
+ import { DTBunchFilters, DTPlayerManagerSimpleConfiguration } from '../../types';
4
+
5
+ export default class DTPlayerManager extends DTManager<DTPlayer> {
6
+ /**
7
+ * Defining component domain to "player".
8
+ */
9
+ protected _domain = 'player';
10
+
11
+ /**
12
+ * Simply configure the manager with a configuration JSON Object
13
+ * **players** : Default player configuration.
14
+ * If **players** is a number, it generates this number of DTPlayer instances and add it to the library.
15
+ * If **players** is an array of DTPlayer instances, it adds these to the library.
16
+ *
17
+ * @param configuration DTPlayerManagerSimpleConfiguration Optional configuration to apply.
18
+ */
19
+ configure(configuration: DTPlayerManagerSimpleConfiguration) {
20
+ if (configuration.players) {
21
+ if (typeof configuration.players === 'number' && configuration.players > 0) {
22
+ let i = 1;
23
+ while (i <= configuration.players) {
24
+ const player = new DTPlayer(`player${i}`);
25
+ this._library.add(player);
26
+ i += 1;
27
+ }
28
+ } else if (Array.isArray(configuration.players)) {
29
+ this._library.addMany(configuration.players);
30
+ }
31
+ }
32
+ }
33
+
34
+ /**
35
+ * Get one DTPlayer instance by id into the library.
36
+ *
37
+ * @param id string _id property of the DTPlayer instance to get.
38
+ */
39
+ getPlayer(id: string): DTPlayer {
40
+ return this._library.get(id);
41
+ }
42
+
43
+ /**
44
+ * Add one DTPlayer instance into the library.
45
+ *
46
+ * @param player DYOToolsPlayer instance to add.
47
+ */
48
+ addPlayer(player: DTPlayer): void {
49
+ this._library.add(player);
50
+ }
51
+
52
+ /**
53
+ * Remove one DTPlayer instance by id from the library.
54
+ *
55
+ * @param id string _id property of the DTPlayer instance to remove.
56
+ */
57
+ removePlayer(id: string): void {
58
+ this._library.remove(id);
59
+ }
60
+
61
+ /**
62
+ * Find DTPlayer instances into the Library.
63
+ *
64
+ * @see [find](#find) method for search specifications.
65
+ * @param filters DTBunchFilters filters to apply.
66
+ */
67
+ findPlayers(filters: Partial<DTBunchFilters>): DTPlayer[] {
68
+ return this._library.find(filters);
69
+ }
70
+ }