dyo-tools 0.1.0-rc1
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/.c8rc.json +4 -0
- package/.eslintignore +2 -0
- package/.eslintrc.json +41 -0
- package/Makefile +34 -0
- package/README.md +0 -0
- package/TODO.md +18 -0
- package/babel.config.js +1 -0
- package/dist/core/DTBunch.d.ts +32 -0
- package/dist/core/DTBunch.js +283 -0
- package/dist/core/DTBunch.js.map +1 -0
- package/dist/core/DTComponent.d.ts +20 -0
- package/dist/core/DTComponent.js +41 -0
- package/dist/core/DTComponent.js.map +1 -0
- package/dist/core/DTComponentWithMeta.d.ts +9 -0
- package/dist/core/DTComponentWithMeta.js +32 -0
- package/dist/core/DTComponentWithMeta.js.map +1 -0
- package/dist/core/DTElement.d.ts +13 -0
- package/dist/core/DTElement.js +46 -0
- package/dist/core/DTElement.js.map +1 -0
- package/dist/core/DTError.d.ts +13 -0
- package/dist/core/DTError.js +28 -0
- package/dist/core/DTError.js.map +1 -0
- package/dist/core/DTPlayer.d.ts +8 -0
- package/dist/core/DTPlayer.js +30 -0
- package/dist/core/DTPlayer.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1321 -0
- package/dist/types/index.d.ts +58 -0
- package/dist/types/index.js +15 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/filters.d.ts +6 -0
- package/dist/utils/filters.js +39 -0
- package/dist/utils/filters.js.map +1 -0
- package/docs/.nojekyll +1 -0
- package/docs/assets/highlight.css +22 -0
- package/docs/assets/icons.css +1043 -0
- package/docs/assets/icons.png +0 -0
- package/docs/assets/icons@2x.png +0 -0
- package/docs/assets/main.js +52 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1388 -0
- package/docs/assets/widgets.png +0 -0
- package/docs/assets/widgets@2x.png +0 -0
- package/docs/classes/DTBunch.html +265 -0
- package/docs/classes/DTComponent.html +49 -0
- package/docs/classes/DTComponentWithMeta.html +73 -0
- package/docs/classes/DTElement.html +95 -0
- package/docs/classes/DTError.html +32 -0
- package/docs/classes/DTPlayer.html +86 -0
- package/docs/index.html +1 -0
- package/docs/modules.html +1 -0
- package/jest.config.js +6 -0
- package/package.json +41 -0
- package/src/core/DTBunch.ts +600 -0
- package/src/core/DTComponent.ts +135 -0
- package/src/core/DTComponentWithMeta.ts +62 -0
- package/src/core/DTElement.ts +96 -0
- package/src/core/DTError.ts +78 -0
- package/src/core/DTPlayer.ts +57 -0
- package/src/index.ts +7 -0
- package/src/types/index.ts +76 -0
- package/src/utils/filters.ts +64 -0
- package/test/core/DTBunch.double.ts +150 -0
- package/test/core/DTBunch.spec.ts +1374 -0
- package/test/core/DTComponent.double.ts +69 -0
- package/test/core/DTComponent.spec.ts +182 -0
- package/test/core/DTComponentWithMeta.double.ts +88 -0
- package/test/core/DTComponentWithMeta.spec.ts +112 -0
- package/test/core/DTElement.double.ts +27 -0
- package/test/core/DTElement.spec.ts +181 -0
- package/test/core/DTError.double.ts +43 -0
- package/test/core/DTError.spec.ts +106 -0
- package/test/core/DTPlayer.double.ts +49 -0
- package/test/core/DTPlayer.spec.ts +102 -0
- package/test/utils/filters.spec.ts +109 -0
- package/tsconfig.json +21 -0
package/.c8rc.json
ADDED
package/.eslintignore
ADDED
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"root": true,
|
|
3
|
+
"parser": "@typescript-eslint/parser",
|
|
4
|
+
"parserOptions": {
|
|
5
|
+
"project": "./tsconfig.json"
|
|
6
|
+
},
|
|
7
|
+
"plugins": [
|
|
8
|
+
"@typescript-eslint"
|
|
9
|
+
],
|
|
10
|
+
"extends": [
|
|
11
|
+
"eslint:recommended",
|
|
12
|
+
"plugin:@typescript-eslint/eslint-recommended",
|
|
13
|
+
"plugin:@typescript-eslint/recommended",
|
|
14
|
+
"airbnb-base",
|
|
15
|
+
"airbnb-typescript"
|
|
16
|
+
],
|
|
17
|
+
"rules": {
|
|
18
|
+
// Use of underscored private props
|
|
19
|
+
"no-underscore-dangle": "off",
|
|
20
|
+
// Disable JSX unexpected error
|
|
21
|
+
"react/jsx-filename-extension": "off",
|
|
22
|
+
// Max length line : 130
|
|
23
|
+
"max-len": ["error", 130],
|
|
24
|
+
// Authorize for-of to return and break
|
|
25
|
+
"no-restricted-syntax": [
|
|
26
|
+
"error",
|
|
27
|
+
{
|
|
28
|
+
"selector": "ForInStatement",
|
|
29
|
+
"message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array."
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"selector": "LabeledStatement",
|
|
33
|
+
"message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"selector": "WithStatement",
|
|
37
|
+
"message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize."
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
}
|
package/Makefile
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
.DEFAULT_GOAL := all
|
|
2
|
+
|
|
3
|
+
.PHONY: all
|
|
4
|
+
all: dist
|
|
5
|
+
|
|
6
|
+
.PHONY: check
|
|
7
|
+
check:
|
|
8
|
+
npm run-script lint
|
|
9
|
+
|
|
10
|
+
.PHONY: checkfix
|
|
11
|
+
checkfix:
|
|
12
|
+
npm run-script lint:fix
|
|
13
|
+
|
|
14
|
+
.PHONY: clean
|
|
15
|
+
clean: distclean
|
|
16
|
+
rm -Rf node_modules/
|
|
17
|
+
|
|
18
|
+
dist: node_modules distclean
|
|
19
|
+
npm run-script build
|
|
20
|
+
|
|
21
|
+
.PHONY: distclean
|
|
22
|
+
distclean:
|
|
23
|
+
rm -Rf dist/
|
|
24
|
+
|
|
25
|
+
node_modules:
|
|
26
|
+
npm install
|
|
27
|
+
|
|
28
|
+
.PHONY: test
|
|
29
|
+
test:
|
|
30
|
+
npm run-script test
|
|
31
|
+
|
|
32
|
+
.PHONY: verify
|
|
33
|
+
verify: dist check
|
|
34
|
+
npm run-script test:coverage:verify
|
package/README.md
ADDED
|
File without changes
|
package/TODO.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
### TODO
|
|
2
|
+
|
|
3
|
+
#### Mise en place du TDD + Tests
|
|
4
|
+
|
|
5
|
+
En suivant les best practices des tests unitaires et TDD accordées :
|
|
6
|
+
|
|
7
|
+
* Structure de test/ égale à celle de src/
|
|
8
|
+
* Tester chaque fichier pour avoir la plus grande couverture de test
|
|
9
|
+
* Créer des "stubs" pour éviter les dépendances dans les tests
|
|
10
|
+
* Ne pas créer de fausses classes
|
|
11
|
+
* Mettre en place la structure "describe(method)" => "test(useCase)"
|
|
12
|
+
|
|
13
|
+
#### Liste de tâches
|
|
14
|
+
|
|
15
|
+
* Eslint
|
|
16
|
+
* Test coverage package
|
|
17
|
+
* Array.isArray dans les filters DTBunch
|
|
18
|
+
* Restreindre les types dans les meta-data
|
package/babel.config.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = {presets: ['@babel/preset-env']}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import DYOToolsComponentWithMeta from './DTComponentWithMeta';
|
|
2
|
+
import DYOToolsElement from './DTElement';
|
|
3
|
+
import { DTAcceptedMetaData, DTBunchFilters, DTBunchOptionsConstructor, DTBunchOptionsEditable, DTBunchToObject } from '../types';
|
|
4
|
+
import DYOToolsPlayer from './DTPlayer';
|
|
5
|
+
import DYOToolsError from './DTError';
|
|
6
|
+
export default class DYOToolsBunch<IBunchItem extends DYOToolsElement<DTAcceptedMetaData>, IComponentMeta extends DTAcceptedMetaData> extends DYOToolsComponentWithMeta<IComponentMeta> {
|
|
7
|
+
protected _componentType: string;
|
|
8
|
+
protected _owner?: DYOToolsPlayer<DTAcceptedMetaData>;
|
|
9
|
+
protected _items: IBunchItem[];
|
|
10
|
+
protected _globalOptions: DTBunchOptionsConstructor;
|
|
11
|
+
protected _errors: DYOToolsError[];
|
|
12
|
+
constructor(key?: string, items?: IBunchItem[], options?: Partial<DTBunchOptionsConstructor>);
|
|
13
|
+
getOwner(): DYOToolsPlayer<DTAcceptedMetaData>;
|
|
14
|
+
setOwner(value: DYOToolsPlayer<DTAcceptedMetaData>): void;
|
|
15
|
+
removeOwner(): void;
|
|
16
|
+
getErrors(): DYOToolsError[];
|
|
17
|
+
getLastError(): DYOToolsError | undefined;
|
|
18
|
+
add(item: IBunchItem, options?: Partial<DTBunchOptionsEditable>): void;
|
|
19
|
+
addAtIndex(item: IBunchItem, index: number, options?: Partial<DTBunchOptionsEditable>): void;
|
|
20
|
+
addMany(items: IBunchItem[], options?: Partial<DTBunchOptionsEditable>): void;
|
|
21
|
+
addManyAtIndex(items: IBunchItem[], index: number, options?: Partial<DTBunchOptionsEditable>): void;
|
|
22
|
+
get(index: string | number): IBunchItem | undefined;
|
|
23
|
+
getAll(): IBunchItem[];
|
|
24
|
+
indexOf(id: string): number;
|
|
25
|
+
remove(index: string | number): void;
|
|
26
|
+
removeMany(indexes: string[] | number[]): void;
|
|
27
|
+
removeAll(): void;
|
|
28
|
+
find(filters: Partial<DTBunchFilters>): IBunchItem[];
|
|
29
|
+
copy(): DYOToolsBunch<IBunchItem, IComponentMeta>;
|
|
30
|
+
toObject(): DTBunchToObject<IComponentMeta>;
|
|
31
|
+
toString(): string;
|
|
32
|
+
}
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const DTComponentWithMeta_1 = require("./DTComponentWithMeta");
|
|
4
|
+
const types_1 = require("../types");
|
|
5
|
+
const DTError_1 = require("./DTError");
|
|
6
|
+
const filters_1 = require("../utils/filters");
|
|
7
|
+
class DYOToolsBunch extends DTComponentWithMeta_1.default {
|
|
8
|
+
constructor(key, items = [], options = {}) {
|
|
9
|
+
super(key);
|
|
10
|
+
this._componentType = 'bunch';
|
|
11
|
+
const defaultOptions = {
|
|
12
|
+
errors: false,
|
|
13
|
+
uniqueKey: false,
|
|
14
|
+
inheritOwner: false,
|
|
15
|
+
replaceIndex: false,
|
|
16
|
+
virtualContext: false,
|
|
17
|
+
};
|
|
18
|
+
this._globalOptions = Object.assign(Object.assign({}, defaultOptions), options);
|
|
19
|
+
this._errors = [];
|
|
20
|
+
this._items = [];
|
|
21
|
+
if (items && items.length > 0) {
|
|
22
|
+
this.addMany(items);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
getOwner() {
|
|
26
|
+
return this._owner;
|
|
27
|
+
}
|
|
28
|
+
setOwner(value) {
|
|
29
|
+
this._owner = value;
|
|
30
|
+
const { inheritOwner } = this._globalOptions;
|
|
31
|
+
if (inheritOwner) {
|
|
32
|
+
this._items.forEach((item) => { item.setOwner(this.getOwner()); });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
removeOwner() {
|
|
36
|
+
this._owner = undefined;
|
|
37
|
+
const { inheritOwner } = this._globalOptions;
|
|
38
|
+
if (inheritOwner) {
|
|
39
|
+
this._items.forEach((item) => { item.removeOwner(); });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
getErrors() {
|
|
43
|
+
return this._errors;
|
|
44
|
+
}
|
|
45
|
+
getLastError() {
|
|
46
|
+
return this._errors.length > 0 ? this._errors[this._errors.length - 1] : undefined;
|
|
47
|
+
}
|
|
48
|
+
add(item, options = {}) {
|
|
49
|
+
this.addAtIndex(item, this._items.length, options);
|
|
50
|
+
}
|
|
51
|
+
addAtIndex(item, index, options = {}) {
|
|
52
|
+
const { errors, uniqueKey, replaceIndex, inheritOwner, } = Object.assign(Object.assign({}, this._globalOptions), options);
|
|
53
|
+
let hasError = false;
|
|
54
|
+
let finalIndex = index;
|
|
55
|
+
const existingItem = this.get(item.getId());
|
|
56
|
+
if (existingItem) {
|
|
57
|
+
hasError = true;
|
|
58
|
+
if (errors) {
|
|
59
|
+
this._errors.push(new DTError_1.default('id_conflict', 'Element with same id already exists in the bunch', this, item));
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
throw new DTError_1.default('id_conflict', 'Element with same id already exists in the bunch', this, item);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (uniqueKey && !hasError) {
|
|
66
|
+
const existingItemByKey = this.find({ key: { $eq: item.getKey() } });
|
|
67
|
+
if (existingItemByKey) {
|
|
68
|
+
hasError = true;
|
|
69
|
+
if (errors) {
|
|
70
|
+
this._errors.push(new DTError_1.default('key_conflict', 'Element with same key already exists in the bunch', this, item));
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
throw new DTError_1.default('key_conflict', 'Element with same key already exists in the bunch', this, item);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (!hasError) {
|
|
78
|
+
if (index < 0) {
|
|
79
|
+
finalIndex = 0;
|
|
80
|
+
}
|
|
81
|
+
if (index > this._items.length) {
|
|
82
|
+
finalIndex = this._items.length;
|
|
83
|
+
}
|
|
84
|
+
if (!this._globalOptions.virtualContext) {
|
|
85
|
+
const oldContext = item.getContext();
|
|
86
|
+
if (oldContext && oldContext.getComponentType() === 'bunch') {
|
|
87
|
+
oldContext.remove(item.getId());
|
|
88
|
+
}
|
|
89
|
+
item.setContext(this);
|
|
90
|
+
}
|
|
91
|
+
if (inheritOwner) {
|
|
92
|
+
item.setOwner(this._owner);
|
|
93
|
+
}
|
|
94
|
+
if (replaceIndex) {
|
|
95
|
+
this._items[finalIndex] = item;
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
const arrayPart1 = this._items.slice(0, finalIndex);
|
|
99
|
+
const arrayPart2 = this._items.slice(finalIndex);
|
|
100
|
+
this._items = [...arrayPart1, item, ...arrayPart2];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
addMany(items, options = {}) {
|
|
105
|
+
this.addManyAtIndex(items, this._items.length, options);
|
|
106
|
+
}
|
|
107
|
+
addManyAtIndex(items, index, options = {}) {
|
|
108
|
+
const previousItems = this._items;
|
|
109
|
+
const { errors } = Object.assign(Object.assign({}, this._globalOptions), options);
|
|
110
|
+
let currentIndex = index;
|
|
111
|
+
if (index < 0) {
|
|
112
|
+
currentIndex = 0;
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
for (const item of items) {
|
|
116
|
+
this.addAtIndex(item, currentIndex, options);
|
|
117
|
+
currentIndex += 1;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (exception) {
|
|
121
|
+
if (!errors) {
|
|
122
|
+
this._items = previousItems;
|
|
123
|
+
throw exception;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
get(index) {
|
|
128
|
+
if (typeof index === 'number') {
|
|
129
|
+
return this._items[index];
|
|
130
|
+
}
|
|
131
|
+
const itemFiltered = this._items.filter((item) => item.getId() === index);
|
|
132
|
+
return itemFiltered.length > 0 ? itemFiltered[0] : undefined;
|
|
133
|
+
}
|
|
134
|
+
getAll() {
|
|
135
|
+
return this._items;
|
|
136
|
+
}
|
|
137
|
+
indexOf(id) {
|
|
138
|
+
let indexOfItem = -1;
|
|
139
|
+
for (let i = 0; i < this._items.length; i += 1) {
|
|
140
|
+
if (this._items[i].getId() === id) {
|
|
141
|
+
indexOfItem = i;
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return indexOfItem;
|
|
146
|
+
}
|
|
147
|
+
remove(index) {
|
|
148
|
+
if (typeof index === 'number') {
|
|
149
|
+
this.removeMany([index]);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
this.removeMany([index]);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
removeMany(indexes) {
|
|
156
|
+
const { virtualContext } = this._globalOptions;
|
|
157
|
+
const newItems = [];
|
|
158
|
+
for (let i = 0; i < this._items.length; i += 1) {
|
|
159
|
+
if (typeof indexes[0] === 'number') {
|
|
160
|
+
if (!indexes.includes(i)) {
|
|
161
|
+
newItems.push(this._items[i]);
|
|
162
|
+
}
|
|
163
|
+
else if (!virtualContext) {
|
|
164
|
+
this._items[i].removeContext();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else if (!indexes.includes(this._items[i].getId())) {
|
|
168
|
+
newItems.push(this._items[i]);
|
|
169
|
+
}
|
|
170
|
+
else if (!virtualContext) {
|
|
171
|
+
this._items[i].removeContext();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
this._items = newItems;
|
|
175
|
+
}
|
|
176
|
+
removeAll() {
|
|
177
|
+
const keysToRemove = this._items.map((item, index) => index);
|
|
178
|
+
this.removeMany(keysToRemove);
|
|
179
|
+
}
|
|
180
|
+
find(filters) {
|
|
181
|
+
const filteredItems = [];
|
|
182
|
+
const validOperatorsBase = [
|
|
183
|
+
types_1.FilterOperatorType.EQ,
|
|
184
|
+
types_1.FilterOperatorType.IN,
|
|
185
|
+
types_1.FilterOperatorType.NIN,
|
|
186
|
+
types_1.FilterOperatorType.NE,
|
|
187
|
+
];
|
|
188
|
+
const validOperatorsMeta = [
|
|
189
|
+
types_1.FilterOperatorType.EQ,
|
|
190
|
+
types_1.FilterOperatorType.IN,
|
|
191
|
+
types_1.FilterOperatorType.NIN,
|
|
192
|
+
types_1.FilterOperatorType.NE,
|
|
193
|
+
types_1.FilterOperatorType.LTE,
|
|
194
|
+
types_1.FilterOperatorType.GTE,
|
|
195
|
+
types_1.FilterOperatorType.CONTAINS,
|
|
196
|
+
types_1.FilterOperatorType.NCONTAINS,
|
|
197
|
+
];
|
|
198
|
+
const checkAllValidFiltersForProp = (itemProp, operators, validOperators) => {
|
|
199
|
+
if (Object.keys(operators).length) {
|
|
200
|
+
for (const operator of Object.keys(operators)) {
|
|
201
|
+
if (!validOperators.includes(operator)
|
|
202
|
+
|| !filters_1.validFiltersForItem(itemProp, operators[operator], operator)) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
return false;
|
|
209
|
+
};
|
|
210
|
+
for (const item of this._items) {
|
|
211
|
+
let validItem = !!(Object.keys(filters).length);
|
|
212
|
+
if (filters.id && !checkAllValidFiltersForProp(item.getId(), filters.id, validOperatorsBase)) {
|
|
213
|
+
validItem = false;
|
|
214
|
+
}
|
|
215
|
+
if (filters.key && !checkAllValidFiltersForProp(item.getKey(), filters.key, validOperatorsBase)) {
|
|
216
|
+
validItem = false;
|
|
217
|
+
}
|
|
218
|
+
const itemContext = item.getContext() ? item.getContext().getId() : null;
|
|
219
|
+
if (filters.context && !checkAllValidFiltersForProp(itemContext, filters.context, validOperatorsBase)) {
|
|
220
|
+
validItem = false;
|
|
221
|
+
}
|
|
222
|
+
const itemOwner = item.getOwner() ? item.getOwner().getId() : null;
|
|
223
|
+
if (filters.owner && !checkAllValidFiltersForProp(itemOwner, filters.owner, validOperatorsBase)) {
|
|
224
|
+
validItem = false;
|
|
225
|
+
}
|
|
226
|
+
if (filters.meta) {
|
|
227
|
+
if (Object.keys(filters.meta).length) {
|
|
228
|
+
const itemMeta = item.getManyMeta();
|
|
229
|
+
for (const [meta, filter] of Object.entries(filters.meta)) {
|
|
230
|
+
const metaValue = Object.prototype.hasOwnProperty.call(itemMeta, meta) ? itemMeta[meta] : null;
|
|
231
|
+
if (!checkAllValidFiltersForProp(metaValue, filter, validOperatorsMeta)) {
|
|
232
|
+
validItem = false;
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (validItem) {
|
|
239
|
+
filteredItems.push(item);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return filteredItems;
|
|
243
|
+
}
|
|
244
|
+
copy() {
|
|
245
|
+
let copyItems;
|
|
246
|
+
if (this._globalOptions.virtualContext) {
|
|
247
|
+
copyItems = this._items;
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
copyItems = this._items.length === 0 ? [] : this._items.map((item) => item.copy());
|
|
251
|
+
}
|
|
252
|
+
const copyBunch = new DYOToolsBunch(this._key, copyItems, this._globalOptions);
|
|
253
|
+
copyBunch.setManyMeta(Object.assign({}, this.getManyMeta()));
|
|
254
|
+
return copyBunch;
|
|
255
|
+
}
|
|
256
|
+
toObject() {
|
|
257
|
+
const objectBunch = {
|
|
258
|
+
id: this._id,
|
|
259
|
+
key: this._key,
|
|
260
|
+
type: this._componentType,
|
|
261
|
+
items: [],
|
|
262
|
+
};
|
|
263
|
+
if (this._items.length) {
|
|
264
|
+
objectBunch.items = this._items.map((item) => item.toObject());
|
|
265
|
+
}
|
|
266
|
+
if (this._owner) {
|
|
267
|
+
objectBunch.owner = this._owner.toString();
|
|
268
|
+
}
|
|
269
|
+
if (this._meta && Object.keys(this._meta).length > 0) {
|
|
270
|
+
objectBunch.meta = Object.assign({}, this.getManyMeta());
|
|
271
|
+
}
|
|
272
|
+
return objectBunch;
|
|
273
|
+
}
|
|
274
|
+
toString() {
|
|
275
|
+
let ownerKey = '';
|
|
276
|
+
if (this._owner) {
|
|
277
|
+
ownerKey = ` - Owner: ${this._owner.getKey()}`;
|
|
278
|
+
}
|
|
279
|
+
return `Component ${this._key} - Type: Bunch${ownerKey} - Items: ${this._items.length}`;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
exports.default = DYOToolsBunch;
|
|
283
|
+
//# sourceMappingURL=DTBunch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DTBunch.js","sourceRoot":"","sources":["../../src/core/DTBunch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export default abstract class DYOToolsComponent {
|
|
2
|
+
protected _id: string;
|
|
3
|
+
protected _key: string;
|
|
4
|
+
protected _context?: DYOToolsComponent;
|
|
5
|
+
protected abstract _componentType: string;
|
|
6
|
+
protected _domain?: string;
|
|
7
|
+
protected _subKind?: string;
|
|
8
|
+
constructor(key?: string);
|
|
9
|
+
getId(): string;
|
|
10
|
+
getKey(): string;
|
|
11
|
+
getContext(contextType?: string): DYOToolsComponent | undefined;
|
|
12
|
+
setContext(value: DYOToolsComponent): void;
|
|
13
|
+
removeContext(): void;
|
|
14
|
+
getComponentType(): string;
|
|
15
|
+
getDomain(): string;
|
|
16
|
+
getSubKind(): string;
|
|
17
|
+
abstract copy(): DYOToolsComponent;
|
|
18
|
+
abstract toObject(): unknown;
|
|
19
|
+
abstract toString(): string;
|
|
20
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const uuid = require("uuid");
|
|
4
|
+
class DYOToolsComponent {
|
|
5
|
+
constructor(key) {
|
|
6
|
+
this._id = uuid.v4();
|
|
7
|
+
this._key = key || this._id;
|
|
8
|
+
}
|
|
9
|
+
getId() {
|
|
10
|
+
return this._id;
|
|
11
|
+
}
|
|
12
|
+
getKey() {
|
|
13
|
+
return this._key;
|
|
14
|
+
}
|
|
15
|
+
getContext(contextType) {
|
|
16
|
+
if (this._context) {
|
|
17
|
+
if (!contextType || this._context.getComponentType() === contextType) {
|
|
18
|
+
return this._context;
|
|
19
|
+
}
|
|
20
|
+
return this._context.getContext(contextType);
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
setContext(value) {
|
|
25
|
+
this._context = value;
|
|
26
|
+
}
|
|
27
|
+
removeContext() {
|
|
28
|
+
this._context = undefined;
|
|
29
|
+
}
|
|
30
|
+
getComponentType() {
|
|
31
|
+
return this._componentType;
|
|
32
|
+
}
|
|
33
|
+
getDomain() {
|
|
34
|
+
return this._domain;
|
|
35
|
+
}
|
|
36
|
+
getSubKind() {
|
|
37
|
+
return this._subKind;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.default = DYOToolsComponent;
|
|
41
|
+
//# sourceMappingURL=DTComponent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DTComponent.js","sourceRoot":"","sources":["../../src/core/DTComponent.ts"],"names":[],"mappings":";;AAAA,6BAA6B;AAE7B,MAA8B,iBAAiB;IA6C7C,YAAY,GAAY;QACtB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IAC9B,CAAC;IAKD,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAKD,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAWD,UAAU,CAAC,WAAoB;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,WAAW,EAAE;gBACpE,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;YACD,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;SAC9C;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAKD,UAAU,CAAC,KAAwB;QACjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAKD,aAAa;QACX,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,CAAC;IAKD,gBAAgB;QACd,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAKD,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAKD,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CAgBF;AApID,oCAoIC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import DYOToolsComponent from './DTComponent';
|
|
2
|
+
import { DTAcceptedMetaData } from '../types';
|
|
3
|
+
export default abstract class DYOToolsComponentWithMeta<IComponentMeta extends DTAcceptedMetaData> extends DYOToolsComponent {
|
|
4
|
+
protected _meta: Partial<IComponentMeta>;
|
|
5
|
+
getMeta<K extends keyof IComponentMeta>(metaKey: K): IComponentMeta[K] | undefined;
|
|
6
|
+
setMeta<K extends keyof IComponentMeta>(metaKey: K, metaValue: IComponentMeta[K]): void;
|
|
7
|
+
getManyMeta(metaKeys?: Array<keyof IComponentMeta>): Partial<IComponentMeta>;
|
|
8
|
+
setManyMeta(metaValues: Partial<IComponentMeta>): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const DTComponent_1 = require("./DTComponent");
|
|
4
|
+
class DYOToolsComponentWithMeta extends DTComponent_1.default {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this._meta = {};
|
|
8
|
+
}
|
|
9
|
+
getMeta(metaKey) {
|
|
10
|
+
return this._meta && this._meta[metaKey];
|
|
11
|
+
}
|
|
12
|
+
setMeta(metaKey, metaValue) {
|
|
13
|
+
this._meta[metaKey] = metaValue;
|
|
14
|
+
}
|
|
15
|
+
getManyMeta(metaKeys = []) {
|
|
16
|
+
const arrayMeta = {};
|
|
17
|
+
if (!metaKeys.length) {
|
|
18
|
+
return this._meta;
|
|
19
|
+
}
|
|
20
|
+
metaKeys.forEach((key) => {
|
|
21
|
+
if (this._meta && this._meta[key]) {
|
|
22
|
+
arrayMeta[key] = this._meta[key];
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return arrayMeta;
|
|
26
|
+
}
|
|
27
|
+
setManyMeta(metaValues) {
|
|
28
|
+
this._meta = Object.assign(Object.assign({}, this._meta), metaValues);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.default = DYOToolsComponentWithMeta;
|
|
32
|
+
//# sourceMappingURL=DTComponentWithMeta.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DTComponentWithMeta.js","sourceRoot":"","sources":["../../src/core/DTComponentWithMeta.ts"],"names":[],"mappings":";;AAAA,+CAA8C;AAG9C,MAA8B,yBAAqE,SAAQ,qBAAiB;IAA5H;;QAMY,UAAK,GAA6B,EAA6B,CAAC;IAoD5E,CAAC;IA3CC,OAAO,CAAiC,OAAW;QACjD,OAAO,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAQD,OAAO,CAAiC,OAAW,EAAE,SAA6B;QAChF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAClC,CAAC;IASD,WAAW,CAAC,WAAyC,EAAE;QACrD,MAAM,SAAS,GAA4B,EAA6B,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACpB,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;QAED,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACvB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACjC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAClC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAOD,WAAW,CAAC,UAAoC;QAC9C,IAAI,CAAC,KAAK,mCAAQ,IAAI,CAAC,KAAK,GAAK,UAAU,CAAE,CAAC;IAChD,CAAC;CACF;AA1DD,4CA0DC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import DYOToolsComponentWithMeta from './DTComponentWithMeta';
|
|
2
|
+
import DYOToolsPlayer from './DTPlayer';
|
|
3
|
+
import { DTAcceptedMetaData, DTElementToObject } from '../types';
|
|
4
|
+
export default class DYOToolsElement<IComponentMeta extends DTAcceptedMetaData> extends DYOToolsComponentWithMeta<IComponentMeta> {
|
|
5
|
+
protected _componentType: string;
|
|
6
|
+
private _owner?;
|
|
7
|
+
getOwner(): DYOToolsPlayer<DTAcceptedMetaData>;
|
|
8
|
+
setOwner(value: DYOToolsPlayer<DTAcceptedMetaData>): void;
|
|
9
|
+
removeOwner(): void;
|
|
10
|
+
copy(): DYOToolsElement<IComponentMeta>;
|
|
11
|
+
toObject(): DTElementToObject<IComponentMeta>;
|
|
12
|
+
toString(): string;
|
|
13
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const DTComponentWithMeta_1 = require("./DTComponentWithMeta");
|
|
4
|
+
class DYOToolsElement extends DTComponentWithMeta_1.default {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this._componentType = 'element';
|
|
8
|
+
}
|
|
9
|
+
getOwner() {
|
|
10
|
+
return this._owner;
|
|
11
|
+
}
|
|
12
|
+
setOwner(value) {
|
|
13
|
+
this._owner = value;
|
|
14
|
+
}
|
|
15
|
+
removeOwner() {
|
|
16
|
+
this._owner = undefined;
|
|
17
|
+
}
|
|
18
|
+
copy() {
|
|
19
|
+
const copyElement = new DYOToolsElement(this._key);
|
|
20
|
+
copyElement.setManyMeta(Object.assign({}, this.getManyMeta()));
|
|
21
|
+
return copyElement;
|
|
22
|
+
}
|
|
23
|
+
toObject() {
|
|
24
|
+
const objectElement = {
|
|
25
|
+
id: this._id,
|
|
26
|
+
key: this._key,
|
|
27
|
+
type: this._componentType,
|
|
28
|
+
};
|
|
29
|
+
if (this._owner) {
|
|
30
|
+
objectElement.owner = this._owner.toString();
|
|
31
|
+
}
|
|
32
|
+
if (this._meta && Object.keys(this._meta).length > 0) {
|
|
33
|
+
objectElement.meta = Object.assign({}, this.getManyMeta());
|
|
34
|
+
}
|
|
35
|
+
return objectElement;
|
|
36
|
+
}
|
|
37
|
+
toString() {
|
|
38
|
+
let ownerKey = '';
|
|
39
|
+
if (this._owner) {
|
|
40
|
+
ownerKey = ` - Owner: ${this._owner.getKey()}`;
|
|
41
|
+
}
|
|
42
|
+
return `Component ${this._key} - Type: Element${ownerKey}`;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.default = DYOToolsElement;
|
|
46
|
+
//# sourceMappingURL=DTElement.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DTElement.js","sourceRoot":"","sources":["../../src/core/DTElement.ts"],"names":[],"mappings":";;AAAA,+DAA8D;AAI9D,MAAqB,eAEjB,SAAQ,6BAAyC;IAFrD;;QAMY,mBAAc,GAAG,SAAS,CAAC;IAqFvC,CAAC;IA3EC,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAKD,QAAQ,CAAC,KAAyC;QAChD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAKD,WAAW;QACT,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;IASD,IAAI;QACF,MAAM,WAAW,GAAG,IAAI,eAAe,CAAiB,IAAI,CAAC,IAAI,CAAC,CAAC;QACnE,WAAW,CAAC,WAAW,mBAAM,IAAI,CAAC,WAAW,EAAE,EAAG,CAAC;QAEnD,OAAO,WAAW,CAAC;IACrB,CAAC;IAcD,QAAQ;QACN,MAAM,aAAa,GAAsC;YACvD,EAAE,EAAE,IAAI,CAAC,GAAG;YACZ,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,IAAI,EAAE,IAAI,CAAC,cAAc;SAC1B,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;SAC9C;QAED,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YACpD,aAAa,CAAC,IAAI,qBAAQ,IAAI,CAAC,WAAW,EAAE,CAAE,CAAC;SAChD;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAOD,QAAQ;QACN,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,QAAQ,GAAG,aAAa,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;SAChD;QAED,OAAO,aAAa,IAAI,CAAC,IAAI,mBAAmB,QAAQ,EAAE,CAAC;IAC7D,CAAC;CACF;AA3FD,kCA2FC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import DYOToolsComponent from './DTComponent';
|
|
2
|
+
export default class DYOToolsError extends Error {
|
|
3
|
+
protected code: string;
|
|
4
|
+
protected timestamp: Date;
|
|
5
|
+
protected initiator?: DYOToolsComponent;
|
|
6
|
+
protected convicted?: DYOToolsComponent;
|
|
7
|
+
constructor(code: string, message: string, initiator?: DYOToolsComponent, convicted?: DYOToolsComponent);
|
|
8
|
+
getCode(): string;
|
|
9
|
+
getMessage(): string;
|
|
10
|
+
getTimestamp(): Date;
|
|
11
|
+
getInitiator(): DYOToolsComponent;
|
|
12
|
+
getConvicted(): DYOToolsComponent;
|
|
13
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class DYOToolsError extends Error {
|
|
4
|
+
constructor(code, message, initiator, convicted) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.code = code;
|
|
7
|
+
this.timestamp = new Date();
|
|
8
|
+
this.initiator = initiator;
|
|
9
|
+
this.convicted = convicted;
|
|
10
|
+
}
|
|
11
|
+
getCode() {
|
|
12
|
+
return this.code;
|
|
13
|
+
}
|
|
14
|
+
getMessage() {
|
|
15
|
+
return this.message;
|
|
16
|
+
}
|
|
17
|
+
getTimestamp() {
|
|
18
|
+
return this.timestamp;
|
|
19
|
+
}
|
|
20
|
+
getInitiator() {
|
|
21
|
+
return this.initiator;
|
|
22
|
+
}
|
|
23
|
+
getConvicted() {
|
|
24
|
+
return this.convicted;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.default = DYOToolsError;
|
|
28
|
+
//# sourceMappingURL=DTError.js.map
|