@sankhyalabs/core 1.0.32 → 1.0.35
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/dist/dataunit/DataUnit.d.ts +12 -3
- package/dist/dataunit/DataUnit.js +38 -7
- package/dist/dataunit/DataUnit.js.map +1 -1
- package/dist/dataunit/state/StateManager.js +0 -12
- package/dist/dataunit/state/StateManager.js.map +1 -1
- package/dist/dataunit/state/action/DataUnitAction.d.ts +1 -0
- package/dist/dataunit/state/action/DataUnitAction.js +1 -0
- package/dist/dataunit/state/action/DataUnitAction.js.map +1 -1
- package/dist/dataunit/state/slice/AddedRecordsSlice.js +1 -0
- package/dist/dataunit/state/slice/AddedRecordsSlice.js.map +1 -1
- package/dist/dataunit/state/slice/SelectionSlice.js +1 -0
- package/dist/dataunit/state/slice/SelectionSlice.js.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/dataunit/DataUnit.ts +51 -11
- package/src/dataunit/state/StateManager.ts +0 -11
- package/src/dataunit/state/action/DataUnitAction.ts +1 -0
- package/src/dataunit/state/slice/AddedRecordsSlice.ts +1 -0
- package/src/dataunit/state/slice/SelectionSlice.ts +1 -0
- package/src/index.ts +3 -7
- package/dist/http/data-fetcher/HttpFetcher.d.ts +0 -14
- package/dist/http/data-fetcher/HttpFetcher.js +0 -164
- package/dist/http/data-fetcher/HttpFetcher.js.map +0 -1
- package/dist/http/data-fetcher/state/LoadStateManager.d.ts +0 -23
- package/dist/http/data-fetcher/state/LoadStateManager.js +0 -78
- package/dist/http/data-fetcher/state/LoadStateManager.js.map +0 -1
- package/src/http/data-fetcher/HttpFetcher.ts +0 -164
- package/src/http/data-fetcher/state/LoadStateManager.ts +0 -74
|
@@ -6,9 +6,10 @@ export default class DataUnit {
|
|
|
6
6
|
private _sortingProvider?;
|
|
7
7
|
private _filterProviders;
|
|
8
8
|
private _stateManager;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
private _interceptors;
|
|
10
|
+
metadataLoader?: (dataUnit: DataUnit) => Promise<UnitMetadata>;
|
|
11
|
+
dataLoader?: (dataUnit: DataUnit, sort?: Array<Sort>, filters?: Array<Filter>) => Promise<Array<Record>>;
|
|
12
|
+
saveLoader?: (dataUnit: DataUnit, changes: Array<Change>) => Promise<Array<SavedRecord>>;
|
|
12
13
|
constructor(name: string);
|
|
13
14
|
get name(): string;
|
|
14
15
|
private validateAndTypeValue;
|
|
@@ -17,6 +18,8 @@ export default class DataUnit {
|
|
|
17
18
|
loadMetadata(): Promise<UnitMetadata>;
|
|
18
19
|
loadData(): Promise<Array<Record>>;
|
|
19
20
|
saveData(): Promise<void>;
|
|
21
|
+
valueFromString(fieldName: string, value: string): any;
|
|
22
|
+
addInterceptor(interceptor: DUActionInterceptor): void;
|
|
20
23
|
addFilterProvider(provider: FilterProvider): void;
|
|
21
24
|
set sortingProvider(provider: SortingProvider);
|
|
22
25
|
set metadata(md: UnitMetadata);
|
|
@@ -25,12 +28,14 @@ export default class DataUnit {
|
|
|
25
28
|
get records(): Array<Record>;
|
|
26
29
|
getField(fieldName: string): FieldDescriptor | undefined;
|
|
27
30
|
addRecord(): void;
|
|
31
|
+
copySelected(): void;
|
|
28
32
|
removeSelectedRecords(): void;
|
|
29
33
|
getFieldValue(fieldName: string): any;
|
|
30
34
|
setFieldValue(fieldName: string, newValue: any, records?: Array<string>): void;
|
|
31
35
|
getSelection(): Array<string>;
|
|
32
36
|
setSelection(selection: Array<string>): void;
|
|
33
37
|
setSelectionByIndex(selection: Array<number>): void;
|
|
38
|
+
getSelectedRecords(): Array<Record> | undefined;
|
|
34
39
|
nextRecord(): void;
|
|
35
40
|
previousRecord(): void;
|
|
36
41
|
cancelEdition(): void;
|
|
@@ -41,10 +46,14 @@ export default class DataUnit {
|
|
|
41
46
|
canRedo(): boolean;
|
|
42
47
|
undo(): void;
|
|
43
48
|
redo(): void;
|
|
49
|
+
toString(): string;
|
|
44
50
|
private dispatchAction;
|
|
45
51
|
subscribe(observer: (action: DataUnitAction) => void): void;
|
|
46
52
|
unsubscribe(observer: Function): void;
|
|
47
53
|
}
|
|
54
|
+
export interface DUActionInterceptor {
|
|
55
|
+
interceptAction(action: DataUnitAction): DataUnitAction;
|
|
56
|
+
}
|
|
48
57
|
export interface Record {
|
|
49
58
|
__record__id__: string;
|
|
50
59
|
__parent__record__id__?: string;
|
|
@@ -34,6 +34,7 @@ export default class DataUnit {
|
|
|
34
34
|
this._observers = [];
|
|
35
35
|
this._filterProviders = [];
|
|
36
36
|
this._sortingProvider = undefined;
|
|
37
|
+
this._interceptors = [];
|
|
37
38
|
}
|
|
38
39
|
get name() {
|
|
39
40
|
return this._name;
|
|
@@ -63,7 +64,7 @@ export default class DataUnit {
|
|
|
63
64
|
this.dispatchAction(Action.LOADING_METADATA);
|
|
64
65
|
return new Promise((resolve, fail) => {
|
|
65
66
|
if (this.metadataLoader) {
|
|
66
|
-
this.metadataLoader(this
|
|
67
|
+
this.metadataLoader(this).then(metadata => {
|
|
67
68
|
this.metadata = metadata;
|
|
68
69
|
resolve(this.metadata);
|
|
69
70
|
}).catch(error => fail(error));
|
|
@@ -78,7 +79,7 @@ export default class DataUnit {
|
|
|
78
79
|
if (this.dataLoader) {
|
|
79
80
|
const sort = this.getSort();
|
|
80
81
|
const filters = this.getFilters();
|
|
81
|
-
this.dataLoader(this
|
|
82
|
+
this.dataLoader(this, sort, filters).then(records => {
|
|
82
83
|
this.records = records;
|
|
83
84
|
resolve(this.records);
|
|
84
85
|
}).catch(error => fail(error));
|
|
@@ -93,7 +94,7 @@ export default class DataUnit {
|
|
|
93
94
|
this.dispatchAction(Action.SAVING_DATA);
|
|
94
95
|
return new Promise((resolve, fail) => {
|
|
95
96
|
if (this.saveLoader) {
|
|
96
|
-
this.saveLoader(this
|
|
97
|
+
this.saveLoader(this, changes).then(records => this.dispatchAction(Action.DATA_SAVED, { changes, records })).catch(error => fail(error));
|
|
97
98
|
}
|
|
98
99
|
});
|
|
99
100
|
}
|
|
@@ -101,6 +102,13 @@ export default class DataUnit {
|
|
|
101
102
|
});
|
|
102
103
|
}
|
|
103
104
|
// API
|
|
105
|
+
valueFromString(fieldName, value) {
|
|
106
|
+
const descriptor = this.getField(fieldName);
|
|
107
|
+
return descriptor ? convertType(descriptor.dataType, value) : value;
|
|
108
|
+
}
|
|
109
|
+
addInterceptor(interceptor) {
|
|
110
|
+
this._interceptors.push(interceptor);
|
|
111
|
+
}
|
|
104
112
|
addFilterProvider(provider) {
|
|
105
113
|
this._filterProviders.push(provider);
|
|
106
114
|
}
|
|
@@ -126,6 +134,12 @@ export default class DataUnit {
|
|
|
126
134
|
addRecord() {
|
|
127
135
|
this.dispatchAction(Action.RECORDS_ADDED, prepareAddedRecordId(this._stateManager, [{}]));
|
|
128
136
|
}
|
|
137
|
+
copySelected() {
|
|
138
|
+
const selectedRecords = this.getSelectedRecords();
|
|
139
|
+
if (selectedRecords) {
|
|
140
|
+
this.dispatchAction(Action.RECORDS_COPIED, prepareAddedRecordId(this._stateManager, selectedRecords));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
129
143
|
removeSelectedRecords() {
|
|
130
144
|
const selection = getSelection(this._stateManager);
|
|
131
145
|
if (selection) {
|
|
@@ -151,6 +165,13 @@ export default class DataUnit {
|
|
|
151
165
|
setSelectionByIndex(selection) {
|
|
152
166
|
this.dispatchAction(Action.SELECTION_CHANGED, { type: "index", selection });
|
|
153
167
|
}
|
|
168
|
+
getSelectedRecords() {
|
|
169
|
+
const selection = this.getSelection();
|
|
170
|
+
if (selection) {
|
|
171
|
+
const currentRecords = this.records;
|
|
172
|
+
return currentRecords === null || currentRecords === void 0 ? void 0 : currentRecords.filter(r => selection.includes(r.__record__id__));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
154
175
|
nextRecord() {
|
|
155
176
|
this.dispatchAction(Action.NEXT_SELECTED);
|
|
156
177
|
}
|
|
@@ -181,12 +202,22 @@ export default class DataUnit {
|
|
|
181
202
|
redo() {
|
|
182
203
|
this.dispatchAction(Action.CHANGE_REDONE);
|
|
183
204
|
}
|
|
205
|
+
toString() {
|
|
206
|
+
return this.name;
|
|
207
|
+
}
|
|
184
208
|
// Actions / State manager
|
|
185
209
|
dispatchAction(actionType, payload) {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
this.
|
|
189
|
-
|
|
210
|
+
var _a;
|
|
211
|
+
let action = new DataUnitAction(actionType, payload);
|
|
212
|
+
(_a = this._interceptors) === null || _a === void 0 ? void 0 : _a.forEach(interceptor => {
|
|
213
|
+
if (action) {
|
|
214
|
+
action = interceptor.interceptAction(action);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
if (action) {
|
|
218
|
+
this._stateManager.process(action);
|
|
219
|
+
this._observers.forEach(f => f(action));
|
|
220
|
+
}
|
|
190
221
|
}
|
|
191
222
|
subscribe(observer) {
|
|
192
223
|
this._observers.push(observer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataUnit.js","sourceRoot":"","sources":["../../src/dataunit/DataUnit.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"DataUnit.js","sourceRoot":"","sources":["../../src/dataunit/DataUnit.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,6 @@ export default class StateManager {
|
|
|
26
26
|
}
|
|
27
27
|
process(action) {
|
|
28
28
|
const oldPresent = this._present;
|
|
29
|
-
let hasChange = false;
|
|
30
29
|
let hasHistChange = false;
|
|
31
30
|
this._histClean = false;
|
|
32
31
|
this._reducers.forEach(reducer => {
|
|
@@ -36,7 +35,6 @@ export default class StateManager {
|
|
|
36
35
|
const newSlice = reducer.reduce(this, oldSlice, action);
|
|
37
36
|
if (newSlice !== oldSlice) {
|
|
38
37
|
this.updateSlice(sliceName, newSlice, isHistoric);
|
|
39
|
-
hasChange = true;
|
|
40
38
|
hasHistChange || (hasHistChange = isHistoric);
|
|
41
39
|
}
|
|
42
40
|
});
|
|
@@ -45,16 +43,6 @@ export default class StateManager {
|
|
|
45
43
|
this._future = [];
|
|
46
44
|
document.dispatchEvent(new CustomEvent("undoableAction", { detail: this }));
|
|
47
45
|
}
|
|
48
|
-
if (hasChange) {
|
|
49
|
-
console.log(JSON.stringify(this, (_key, value) => {
|
|
50
|
-
if (value instanceof Map) {
|
|
51
|
-
return { dataType: "Map", value: Array.from(value.entries()) };
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
return value;
|
|
55
|
-
}
|
|
56
|
-
}, 3));
|
|
57
|
-
}
|
|
58
46
|
}
|
|
59
47
|
select(sliceName, selector) {
|
|
60
48
|
const isHistoric = this.isHistoric(sliceName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StateManager.js","sourceRoot":"","sources":["../../../src/dataunit/state/StateManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,OAAO,OAAO,YAAY;IAW7B,YAAY,QAA8B;QAPlC,UAAK,GAAe,EAAE,CAAC;QACvB,YAAO,GAAe,EAAE,CAAC;QACzB,aAAQ,GAAQ,EAAE,CAAC;QAEnB,aAAQ,GAAQ,EAAE,CAAC;QACnB,eAAU,GAAY,KAAK,CAAC;QAGhC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC9B,CAAC;IAEM,OAAO,CAAC,MAAmB;QAE9B,MAAM,UAAU,GAAQ,IAAI,CAAC,QAAQ,CAAC;QACtC,IAAI,
|
|
1
|
+
{"version":3,"file":"StateManager.js","sourceRoot":"","sources":["../../../src/dataunit/state/StateManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@ export declare enum Action {
|
|
|
15
15
|
DATA_SAVED = "dataSaved",
|
|
16
16
|
RECORDS_REMOVED = "recordsRemoved",
|
|
17
17
|
RECORDS_ADDED = "recordsAdded",
|
|
18
|
+
RECORDS_COPIED = "recordsCopied",
|
|
18
19
|
DATA_CHANGED = "dataChanged",
|
|
19
20
|
EDITION_CANCELED = "editionCanceled",
|
|
20
21
|
CHANGE_UNDONE = "changeUndone",
|
|
@@ -20,6 +20,7 @@ export var Action;
|
|
|
20
20
|
Action["DATA_SAVED"] = "dataSaved";
|
|
21
21
|
Action["RECORDS_REMOVED"] = "recordsRemoved";
|
|
22
22
|
Action["RECORDS_ADDED"] = "recordsAdded";
|
|
23
|
+
Action["RECORDS_COPIED"] = "recordsCopied";
|
|
23
24
|
Action["DATA_CHANGED"] = "dataChanged";
|
|
24
25
|
Action["EDITION_CANCELED"] = "editionCanceled";
|
|
25
26
|
Action["CHANGE_UNDONE"] = "changeUndone";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataUnitAction.js","sourceRoot":"","sources":["../../../../src/dataunit/state/action/DataUnitAction.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,cAAc;IAKvB,YAAY,IAAY,EAAE,OAAY;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ;AAED,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"DataUnitAction.js","sourceRoot":"","sources":["../../../../src/dataunit/state/action/DataUnitAction.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,cAAc;IAKvB,YAAY,IAAY,EAAE,OAAY;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;CACJ;AAED,MAAM,CAAN,IAAY,MA0BX;AA1BD,WAAY,MAAM;IAEd,8CAAoC,CAAA;IACpC,4CAAkC,CAAA;IAElC,sCAA4B,CAAA;IAC5B,oCAA0B,CAAA;IAE1B,oCAA0B,CAAA;IAC1B,kCAAwB,CAAA;IAExB,4CAAkC,CAAA;IAClC,wCAA8B,CAAA;IAC9B,0CAAgC,CAAA;IAChC,sCAA4B,CAAA;IAE5B,8CAAoC,CAAA;IACpC,wCAA8B,CAAA;IAC9B,wCAA8B,CAAA;IAE9B,gDAAsC,CAAA;IACtC,wCAA8B,CAAA;IAC9B,gDAAsC,CAAA;IAEtC,wCAA8B,CAAA;AAElC,CAAC,EA1BW,MAAM,KAAN,MAAM,QA0BjB"}
|
|
@@ -6,6 +6,7 @@ class AddedRecordsReducerImpl {
|
|
|
6
6
|
reduce(_stateManager, currentState, action) {
|
|
7
7
|
switch (action.type) {
|
|
8
8
|
case Action.RECORDS_ADDED:
|
|
9
|
+
case Action.RECORDS_COPIED:
|
|
9
10
|
return (currentState || []).concat(action.payload);
|
|
10
11
|
case Action.DATA_SAVED:
|
|
11
12
|
case Action.EDITION_CANCELED:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddedRecordsSlice.js","sourceRoot":"","sources":["../../../../src/dataunit/state/slice/AddedRecordsSlice.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIlD,MAAM,uBAAuB;IAA7B;QAEW,cAAS,GAAW,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"AddedRecordsSlice.js","sourceRoot":"","sources":["../../../../src/dataunit/state/slice/AddedRecordsSlice.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIlD,MAAM,uBAAuB;IAA7B;QAEW,cAAS,GAAW,oBAAoB,CAAC;IAapD,CAAC;IAXU,MAAM,CAAC,aAA0B,EAAE,YAA2B,EAAE,MAAmB;QACtF,QAAO,MAAM,CAAC,IAAI,EAAC;YACf,KAAK,MAAM,CAAC,aAAa,CAAC;YAC1B,KAAK,MAAM,CAAC,cAAc;gBACtB,OAAO,CAAC,YAAY,IAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrD,KAAK,MAAM,CAAC,UAAU,CAAC;YACvB,KAAK,MAAM,CAAC,gBAAgB;gBACxB,OAAO,SAAS,CAAC;SACxB;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,uBAAuB,EAAE,CAAC;AAEjE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,YAA0B,EAAiB,EAAE;IACzE,OAAO,YAAY,CAAC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC,KAAoB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAC/F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,YAA0B,EAAE,MAAkB,EAAiB,EAAE;IAClG,IAAI,KAAK,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,IAAE,EAAE,CAAC,CAAC,MAAM,CAAC;IACvD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAA,EAAE,GAAC,uCAAW,IAAI,KAAE,cAAc,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,IAAC,CAAA,CAAC,CAAC,CAAC;AACpF,CAAC,CAAC"}
|
|
@@ -7,6 +7,7 @@ class SelectionReducerImpl {
|
|
|
7
7
|
reduce(stateManager, currentState, action) {
|
|
8
8
|
switch (action.type) {
|
|
9
9
|
case Action.RECORDS_ADDED:
|
|
10
|
+
case Action.RECORDS_COPIED:
|
|
10
11
|
return action.payload.map((r) => r.__record__id__);
|
|
11
12
|
case Action.DATA_SAVED:
|
|
12
13
|
return updateSavedIds(stateManager, action.payload.records);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectionSlice.js","sourceRoot":"","sources":["../../../../src/dataunit/state/slice/SelectionSlice.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,MAAM,oBAAoB;IAA1B;QAEW,cAAS,GAAW,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"SelectionSlice.js","sourceRoot":"","sources":["../../../../src/dataunit/state/slice/SelectionSlice.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,10 +8,8 @@ import { HttpProvider } from "./http/HttpProvider";
|
|
|
8
8
|
import { SkwHttpProvider } from "./http/SkwHttpProvider";
|
|
9
9
|
import { RequestMetadata } from "./http/RequestMetadata";
|
|
10
10
|
import { AuthorizedServiceCaller } from "./http/AuthorizedServiceCaller";
|
|
11
|
-
import DataUnit, { SavedRecord, Record, Change, ChangeOperation } from "./dataunit/DataUnit";
|
|
11
|
+
import DataUnit, { SavedRecord, Record, Change, ChangeOperation, DUActionInterceptor } from "./dataunit/DataUnit";
|
|
12
12
|
import { DataType } from "./dataunit/metadata/DataType";
|
|
13
13
|
import { UnitMetadata, FieldDescriptor, UserInterface, Sort, Filter } from "./dataunit/metadata/UnitMetadata";
|
|
14
|
-
import { HttpFetcher } from "./http/data-fetcher/HttpFetcher";
|
|
15
|
-
import { LoadStateManager, LoadStatus } from "./http/data-fetcher/state/LoadStateManager";
|
|
16
14
|
import { DataUnitAction, Action } from "./dataunit/state/action/DataUnitAction";
|
|
17
|
-
export { StringUtils, MaskFormatter, NumberUtils, FloatingManager, DateUtils, TimeFormatter, SkwHttpProvider, HttpProvider, RequestMetadata, AuthorizedServiceCaller, DataUnit, Record, SavedRecord, DataType, UnitMetadata, FieldDescriptor, UserInterface,
|
|
15
|
+
export { StringUtils, MaskFormatter, NumberUtils, FloatingManager, DateUtils, TimeFormatter, SkwHttpProvider, HttpProvider, RequestMetadata, AuthorizedServiceCaller, DataUnit, Record, SavedRecord, DataType, UnitMetadata, FieldDescriptor, UserInterface, DataUnitAction, Action, Change, Sort, Filter, ChangeOperation, DUActionInterceptor };
|
package/dist/index.js
CHANGED
|
@@ -11,9 +11,7 @@ import { AuthorizedServiceCaller } from "./http/AuthorizedServiceCaller";
|
|
|
11
11
|
import DataUnit, { Change, ChangeOperation } from "./dataunit/DataUnit";
|
|
12
12
|
import { DataType } from "./dataunit/metadata/DataType";
|
|
13
13
|
import { UserInterface } from "./dataunit/metadata/UnitMetadata";
|
|
14
|
-
import { HttpFetcher } from "./http/data-fetcher/HttpFetcher";
|
|
15
|
-
import { LoadStateManager, LoadStatus } from "./http/data-fetcher/state/LoadStateManager";
|
|
16
14
|
import { DataUnitAction, Action } from "./dataunit/state/action/DataUnitAction";
|
|
17
15
|
/*Classes públicas no pacote*/
|
|
18
|
-
export { StringUtils, MaskFormatter, NumberUtils, FloatingManager, DateUtils, TimeFormatter, SkwHttpProvider, HttpProvider, RequestMetadata, AuthorizedServiceCaller, DataUnit, DataType, UserInterface,
|
|
16
|
+
export { StringUtils, MaskFormatter, NumberUtils, FloatingManager, DateUtils, TimeFormatter, SkwHttpProvider, HttpProvider, RequestMetadata, AuthorizedServiceCaller, DataUnit, DataType, UserInterface, DataUnitAction, Action, Change, ChangeOperation };
|
|
19
17
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,QAAQ,EAAE,EAAsB,MAAM,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,eAAe,MAAM,sBAAsB,CAAC;AACnD,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,QAAQ,EAAE,EAAsB,MAAM,EAAE,eAAe,EAAsB,MAAM,qBAAqB,CAAC;AAChH,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAiC,aAAa,EAAgB,MAAM,kCAAkC,CAAC;AAC9G,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;AAEhF,8BAA8B;AAC9B,OAAO,EACH,WAAW,EACX,aAAa,EACb,WAAW,EACX,eAAe,EACf,SAAS,EACT,aAAa,EACb,eAAe,EACf,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,QAAQ,EAGR,QAAQ,EAGR,aAAa,EACb,cAAc,EACd,MAAM,EACN,MAAM,EAGN,eAAe,EAElB,CAAC"}
|
package/package.json
CHANGED
package/src/dataunit/DataUnit.ts
CHANGED
|
@@ -13,7 +13,6 @@ import { RemovedRecordsReducer } from "./state/slice/RemovedRecordsSlice";
|
|
|
13
13
|
import { AddedRecordsReducer, prepareAddedRecordId } from "./state/slice/AddedRecordsSlice";
|
|
14
14
|
import { CurrentRecordsReducer, getCurrentRecords, getFieldValue } from "./state/slice/CurrentRecordsSlice";
|
|
15
15
|
|
|
16
|
-
|
|
17
16
|
export default class DataUnit {
|
|
18
17
|
|
|
19
18
|
private _name: string;
|
|
@@ -21,10 +20,11 @@ export default class DataUnit {
|
|
|
21
20
|
private _sortingProvider?: SortingProvider;
|
|
22
21
|
private _filterProviders: Array<FilterProvider>;
|
|
23
22
|
private _stateManager: StateManager;
|
|
23
|
+
private _interceptors: Array<DUActionInterceptor>;
|
|
24
24
|
|
|
25
|
-
public metadataLoader?: (dataUnit:
|
|
26
|
-
public dataLoader?: (dataUnit:
|
|
27
|
-
public saveLoader?: (dataUnit:
|
|
25
|
+
public metadataLoader?: (dataUnit: DataUnit) => Promise<UnitMetadata>;
|
|
26
|
+
public dataLoader?: (dataUnit: DataUnit, sort?: Array<Sort>, filters?: Array<Filter>) => Promise<Array<Record>>;
|
|
27
|
+
public saveLoader?: (dataUnit: DataUnit, changes: Array<Change>) => Promise<Array<SavedRecord>>;
|
|
28
28
|
|
|
29
29
|
constructor(name: string) {
|
|
30
30
|
this._name = name;
|
|
@@ -43,6 +43,7 @@ export default class DataUnit {
|
|
|
43
43
|
this._observers = [];
|
|
44
44
|
this._filterProviders = [];
|
|
45
45
|
this._sortingProvider = undefined;
|
|
46
|
+
this._interceptors = [];
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
public get name(): string {
|
|
@@ -76,7 +77,7 @@ export default class DataUnit {
|
|
|
76
77
|
this.dispatchAction(Action.LOADING_METADATA);
|
|
77
78
|
return new Promise((resolve, fail) => {
|
|
78
79
|
if (this.metadataLoader) {
|
|
79
|
-
this.metadataLoader(this
|
|
80
|
+
this.metadataLoader(this).then(
|
|
80
81
|
metadata => {
|
|
81
82
|
this.metadata = metadata
|
|
82
83
|
resolve(this.metadata);
|
|
@@ -92,7 +93,7 @@ export default class DataUnit {
|
|
|
92
93
|
if (this.dataLoader) {
|
|
93
94
|
const sort = this.getSort();
|
|
94
95
|
const filters = this.getFilters();
|
|
95
|
-
this.dataLoader(this
|
|
96
|
+
this.dataLoader(this, sort, filters).then(
|
|
96
97
|
records => {
|
|
97
98
|
this.records = records;
|
|
98
99
|
resolve(this.records);
|
|
@@ -110,7 +111,7 @@ export default class DataUnit {
|
|
|
110
111
|
this.dispatchAction(Action.SAVING_DATA);
|
|
111
112
|
return new Promise((resolve, fail) => {
|
|
112
113
|
if (this.saveLoader) {
|
|
113
|
-
this.saveLoader(this
|
|
114
|
+
this.saveLoader(this, changes).then(
|
|
114
115
|
records => this.dispatchAction(Action.DATA_SAVED, { changes, records })
|
|
115
116
|
).catch(error => fail(error));
|
|
116
117
|
}
|
|
@@ -120,6 +121,15 @@ export default class DataUnit {
|
|
|
120
121
|
}
|
|
121
122
|
|
|
122
123
|
// API
|
|
124
|
+
public valueFromString(fieldName: string, value: string): any {
|
|
125
|
+
const descriptor: FieldDescriptor | undefined = this.getField(fieldName);
|
|
126
|
+
return descriptor ? convertType(descriptor.dataType, value) : value;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
public addInterceptor(interceptor: DUActionInterceptor): void {
|
|
130
|
+
this._interceptors.push(interceptor);
|
|
131
|
+
}
|
|
132
|
+
|
|
123
133
|
public addFilterProvider(provider: FilterProvider): void {
|
|
124
134
|
this._filterProviders.push(provider);
|
|
125
135
|
}
|
|
@@ -153,6 +163,13 @@ export default class DataUnit {
|
|
|
153
163
|
this.dispatchAction(Action.RECORDS_ADDED, prepareAddedRecordId(this._stateManager, [{}]));
|
|
154
164
|
}
|
|
155
165
|
|
|
166
|
+
public copySelected(): void{
|
|
167
|
+
const selectedRecords = this.getSelectedRecords();
|
|
168
|
+
if(selectedRecords){
|
|
169
|
+
this.dispatchAction(Action.RECORDS_COPIED, prepareAddedRecordId(this._stateManager, selectedRecords));
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
156
173
|
public removeSelectedRecords(): void {
|
|
157
174
|
const selection = getSelection(this._stateManager);
|
|
158
175
|
if (selection) {
|
|
@@ -186,6 +203,14 @@ export default class DataUnit {
|
|
|
186
203
|
this.dispatchAction(Action.SELECTION_CHANGED, { type: "index", selection });
|
|
187
204
|
}
|
|
188
205
|
|
|
206
|
+
public getSelectedRecords(): Array<Record>|undefined{
|
|
207
|
+
const selection: Array<string> = this.getSelection();
|
|
208
|
+
if(selection){
|
|
209
|
+
const currentRecords: Array<Record> = this.records;
|
|
210
|
+
return currentRecords?.filter(r => selection.includes(r.__record__id__));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
189
214
|
public nextRecord(): void {
|
|
190
215
|
this.dispatchAction(Action.NEXT_SELECTED);
|
|
191
216
|
}
|
|
@@ -226,13 +251,24 @@ export default class DataUnit {
|
|
|
226
251
|
this.dispatchAction(Action.CHANGE_REDONE);
|
|
227
252
|
}
|
|
228
253
|
|
|
254
|
+
public toString(){
|
|
255
|
+
return this.name;
|
|
256
|
+
}
|
|
257
|
+
|
|
229
258
|
// Actions / State manager
|
|
230
259
|
private dispatchAction(actionType: Action, payload?: any): void {
|
|
231
|
-
|
|
260
|
+
let action = new DataUnitAction(actionType, payload);
|
|
261
|
+
|
|
262
|
+
this._interceptors?.forEach(interceptor => {
|
|
263
|
+
if(action){
|
|
264
|
+
action = interceptor.interceptAction(action);
|
|
265
|
+
}
|
|
266
|
+
});
|
|
232
267
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
268
|
+
if(action){
|
|
269
|
+
this._stateManager.process(action);
|
|
270
|
+
this._observers.forEach(f => f(action));
|
|
271
|
+
}
|
|
236
272
|
}
|
|
237
273
|
|
|
238
274
|
public subscribe(observer: (action: DataUnitAction) => void) {
|
|
@@ -244,6 +280,10 @@ export default class DataUnit {
|
|
|
244
280
|
}
|
|
245
281
|
}
|
|
246
282
|
|
|
283
|
+
export interface DUActionInterceptor{
|
|
284
|
+
interceptAction(action: DataUnitAction): DataUnitAction;
|
|
285
|
+
}
|
|
286
|
+
|
|
247
287
|
export interface Record {
|
|
248
288
|
__record__id__: string;
|
|
249
289
|
__parent__record__id__?: string;
|
|
@@ -33,7 +33,6 @@ export default class StateManager {
|
|
|
33
33
|
public process(action: StateAction) {
|
|
34
34
|
|
|
35
35
|
const oldPresent: any = this._present;
|
|
36
|
-
let hasChange: boolean = false;
|
|
37
36
|
let hasHistChange: boolean = false;
|
|
38
37
|
this._histClean = false;
|
|
39
38
|
|
|
@@ -45,7 +44,6 @@ export default class StateManager {
|
|
|
45
44
|
const newSlice = reducer.reduce(this, oldSlice, action);
|
|
46
45
|
if (newSlice !== oldSlice) {
|
|
47
46
|
this.updateSlice(sliceName, newSlice, isHistoric);
|
|
48
|
-
hasChange = true;
|
|
49
47
|
hasHistChange ||= isHistoric;
|
|
50
48
|
}
|
|
51
49
|
}
|
|
@@ -57,15 +55,6 @@ export default class StateManager {
|
|
|
57
55
|
document.dispatchEvent(new CustomEvent("undoableAction", { detail: this }))
|
|
58
56
|
}
|
|
59
57
|
|
|
60
|
-
if (hasChange) {
|
|
61
|
-
console.log(JSON.stringify(this, (_key, value) => {
|
|
62
|
-
if (value instanceof Map) {
|
|
63
|
-
return { dataType: "Map", value: Array.from(value.entries()) };
|
|
64
|
-
} else {
|
|
65
|
-
return value;
|
|
66
|
-
}
|
|
67
|
-
}, 3));
|
|
68
|
-
}
|
|
69
58
|
}
|
|
70
59
|
|
|
71
60
|
public select(sliceName: string, selector: (state: any) => any): any {
|
|
@@ -11,6 +11,7 @@ class AddedRecordsReducerImpl implements ActionReducer{
|
|
|
11
11
|
public reduce(_stateManager:StateManager, currentState: Array<Record>, action: StateAction): Array<Record>|undefined {
|
|
12
12
|
switch(action.type){
|
|
13
13
|
case Action.RECORDS_ADDED:
|
|
14
|
+
case Action.RECORDS_COPIED:
|
|
14
15
|
return (currentState||[]).concat(action.payload);
|
|
15
16
|
case Action.DATA_SAVED:
|
|
16
17
|
case Action.EDITION_CANCELED:
|
|
@@ -13,6 +13,7 @@ class SelectionReducerImpl implements ActionReducer {
|
|
|
13
13
|
switch (action.type) {
|
|
14
14
|
|
|
15
15
|
case Action.RECORDS_ADDED:
|
|
16
|
+
case Action.RECORDS_COPIED:
|
|
16
17
|
return action.payload.map((r: Record)=>r.__record__id__);
|
|
17
18
|
case Action.DATA_SAVED:
|
|
18
19
|
return updateSavedIds(stateManager, action.payload.records);
|
package/src/index.ts
CHANGED
|
@@ -8,11 +8,9 @@ import { HttpProvider } from "./http/HttpProvider";
|
|
|
8
8
|
import { SkwHttpProvider } from "./http/SkwHttpProvider";
|
|
9
9
|
import { RequestMetadata } from "./http/RequestMetadata";
|
|
10
10
|
import { AuthorizedServiceCaller } from "./http/AuthorizedServiceCaller";
|
|
11
|
-
import DataUnit, {SavedRecord, Record, Change, ChangeOperation} from "./dataunit/DataUnit";
|
|
11
|
+
import DataUnit, {SavedRecord, Record, Change, ChangeOperation, DUActionInterceptor} from "./dataunit/DataUnit";
|
|
12
12
|
import { DataType } from "./dataunit/metadata/DataType";
|
|
13
13
|
import { UnitMetadata, FieldDescriptor, UserInterface, Sort, Filter } from "./dataunit/metadata/UnitMetadata";
|
|
14
|
-
import { HttpFetcher } from "./http/data-fetcher/HttpFetcher";
|
|
15
|
-
import { LoadStateManager, LoadStatus } from "./http/data-fetcher/state/LoadStateManager";
|
|
16
14
|
import { DataUnitAction, Action } from "./dataunit/state/action/DataUnitAction";
|
|
17
15
|
|
|
18
16
|
/*Classes públicas no pacote*/
|
|
@@ -34,13 +32,11 @@ export {
|
|
|
34
32
|
UnitMetadata,
|
|
35
33
|
FieldDescriptor,
|
|
36
34
|
UserInterface,
|
|
37
|
-
HttpFetcher,
|
|
38
|
-
LoadStateManager,
|
|
39
|
-
LoadStatus,
|
|
40
35
|
DataUnitAction,
|
|
41
36
|
Action,
|
|
42
37
|
Change,
|
|
43
38
|
Sort,
|
|
44
39
|
Filter,
|
|
45
|
-
ChangeOperation
|
|
40
|
+
ChangeOperation,
|
|
41
|
+
DUActionInterceptor
|
|
46
42
|
};
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export declare class HttpFetcher {
|
|
2
|
-
private static instance;
|
|
3
|
-
private static loadStateManager;
|
|
4
|
-
private static watingRequestsById;
|
|
5
|
-
private constructor();
|
|
6
|
-
static get(): HttpFetcher;
|
|
7
|
-
callGraphQL(req: any): Promise<any>;
|
|
8
|
-
private getReqKey;
|
|
9
|
-
private static getQueryTemplate;
|
|
10
|
-
private static getWatingRequest;
|
|
11
|
-
private onApplicationLoaded;
|
|
12
|
-
private static fecthGrapql;
|
|
13
|
-
private hashCode;
|
|
14
|
-
}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { LoadStateManager, LoadType } from "./state/LoadStateManager";
|
|
11
|
-
import { batchRequests } from 'graphql-request';
|
|
12
|
-
export class HttpFetcher {
|
|
13
|
-
constructor() {
|
|
14
|
-
HttpFetcher.loadStateManager = LoadStateManager.get(LoadType.APP_LOAD);
|
|
15
|
-
HttpFetcher.loadStateManager.onLoaded(this.onApplicationLoaded);
|
|
16
|
-
}
|
|
17
|
-
static get() {
|
|
18
|
-
if (!HttpFetcher.instance) {
|
|
19
|
-
HttpFetcher.instance = new HttpFetcher();
|
|
20
|
-
}
|
|
21
|
-
return HttpFetcher.instance;
|
|
22
|
-
}
|
|
23
|
-
callGraphQL(req) {
|
|
24
|
-
var _a;
|
|
25
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
const reqKey = this.getReqKey(req);
|
|
27
|
-
req.queryID = reqKey;
|
|
28
|
-
req.values.queryID = reqKey;
|
|
29
|
-
if (HttpFetcher.loadStateManager.isPreInitialize()) {
|
|
30
|
-
if (!HttpFetcher.watingRequestsById.has(reqKey)) {
|
|
31
|
-
HttpFetcher.watingRequestsById.set(reqKey, new WaitingRequest(req));
|
|
32
|
-
}
|
|
33
|
-
return (_a = HttpFetcher.getWatingRequest(reqKey)) === null || _a === void 0 ? void 0 : _a.promise;
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
37
|
-
let query = HttpFetcher.getQueryTemplate(req);
|
|
38
|
-
const res = yield HttpFetcher.fecthGrapql([{ document: query, variables: req.values }]);
|
|
39
|
-
if (res.errors.length > 0) {
|
|
40
|
-
reject(res);
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
//resolve(res);
|
|
44
|
-
//FIXME: Precisamos trabalhar melhor a resposta, quem chamou
|
|
45
|
-
//a API não pode ficar responsavel por desempacotar... fiz uma
|
|
46
|
-
//gambiarra aqui...
|
|
47
|
-
resolve(res.data[0][reqKey]);
|
|
48
|
-
}
|
|
49
|
-
}));
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
getReqKey(req) {
|
|
54
|
-
return window.btoa(this.hashCode(`${req.query}${JSON.stringify(req.values || "")}`)).replaceAll("=", "");
|
|
55
|
-
}
|
|
56
|
-
static getQueryTemplate(re) {
|
|
57
|
-
return (re.query || "").replaceAll("$queryAlias$", re.queryID);
|
|
58
|
-
}
|
|
59
|
-
static getWatingRequest(reqID) {
|
|
60
|
-
return HttpFetcher.watingRequestsById.get(reqID);
|
|
61
|
-
}
|
|
62
|
-
onApplicationLoaded() {
|
|
63
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
-
if (HttpFetcher.watingRequestsById.size > 0) {
|
|
65
|
-
const requestsBatch = [];
|
|
66
|
-
HttpFetcher.watingRequestsById.forEach((waitingReq) => __awaiter(this, void 0, void 0, function* () {
|
|
67
|
-
let query = HttpFetcher.getQueryTemplate(waitingReq.request);
|
|
68
|
-
requestsBatch.push({ document: query, variables: Object.assign({}, waitingReq.request.values) });
|
|
69
|
-
}));
|
|
70
|
-
let res = undefined;
|
|
71
|
-
let dataResponse = [];
|
|
72
|
-
let errorsResponse = [];
|
|
73
|
-
res = yield HttpFetcher.fecthGrapql(requestsBatch);
|
|
74
|
-
dataResponse = res.data;
|
|
75
|
-
errorsResponse = res.errors;
|
|
76
|
-
//Reject promises with errors from query
|
|
77
|
-
errorsResponse.forEach((errorResponse) => {
|
|
78
|
-
Object.entries(errorResponse).forEach(([key, val]) => {
|
|
79
|
-
var _a;
|
|
80
|
-
(((_a = HttpFetcher.getWatingRequest(val.request.variables[val.index].queryID)) === null || _a === void 0 ? void 0 : _a.reject) || Promise.reject)(val);
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
//Resolve promises with data from query
|
|
84
|
-
dataResponse.forEach((data) => {
|
|
85
|
-
Object.entries(data).forEach(([key, val]) => {
|
|
86
|
-
var _a;
|
|
87
|
-
(((_a = HttpFetcher.getWatingRequest(key)) === null || _a === void 0 ? void 0 : _a.resolve) || Promise.resolve)(val);
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
HttpFetcher.watingRequestsById.clear();
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
static fecthGrapql(request) {
|
|
95
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
-
let res = undefined;
|
|
97
|
-
let dataResponse = [];
|
|
98
|
-
let errorsResponse = [];
|
|
99
|
-
try {
|
|
100
|
-
res = yield batchRequests('http://localhost:8082/', request);
|
|
101
|
-
res.forEach((resItem) => {
|
|
102
|
-
dataResponse.push(resItem.data);
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
catch (err) {
|
|
106
|
-
//TODO: Tratar erro quando não existir err.response
|
|
107
|
-
res = err.response;
|
|
108
|
-
const req = err.request;
|
|
109
|
-
Object.entries(res).forEach(([key, val]) => {
|
|
110
|
-
if (val.errors) {
|
|
111
|
-
errorsResponse.push(val.errors.map((item) => {
|
|
112
|
-
item.request = req;
|
|
113
|
-
item.index = Number(key);
|
|
114
|
-
return item;
|
|
115
|
-
}));
|
|
116
|
-
}
|
|
117
|
-
else if (val.data) {
|
|
118
|
-
dataResponse.push(val.data);
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
return { data: dataResponse, errors: errorsResponse };
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
//TODO: Mover este metodo para o @sankhyalabs/core classe string utils.
|
|
126
|
-
hashCode(txt) {
|
|
127
|
-
var hash = 0, i, chr;
|
|
128
|
-
if (txt.length === 0)
|
|
129
|
-
return hash.toString();
|
|
130
|
-
for (i = 0; i < txt.length; i++) {
|
|
131
|
-
chr = txt.charCodeAt(i);
|
|
132
|
-
hash = ((hash << 5) - hash) + chr;
|
|
133
|
-
hash |= 0; // Convert to 32bit integer
|
|
134
|
-
}
|
|
135
|
-
return hash.toString();
|
|
136
|
-
}
|
|
137
|
-
;
|
|
138
|
-
}
|
|
139
|
-
HttpFetcher.watingRequestsById = new Map();
|
|
140
|
-
class WaitingRequest {
|
|
141
|
-
constructor(req) {
|
|
142
|
-
this._resolve = () => { };
|
|
143
|
-
this._reject = () => { };
|
|
144
|
-
this._request = undefined;
|
|
145
|
-
this._request = req;
|
|
146
|
-
this._promisse = new Promise((resolve, reject) => {
|
|
147
|
-
this._resolve = resolve;
|
|
148
|
-
this._reject = reject;
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
get resolve() {
|
|
152
|
-
return this._resolve;
|
|
153
|
-
}
|
|
154
|
-
get reject() {
|
|
155
|
-
return this._reject;
|
|
156
|
-
}
|
|
157
|
-
get promise() {
|
|
158
|
-
return this._promisse;
|
|
159
|
-
}
|
|
160
|
-
get request() {
|
|
161
|
-
return this._request;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
//# sourceMappingURL=HttpFetcher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HttpFetcher.js","sourceRoot":"","sources":["../../../src/http/data-fetcher/HttpFetcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export declare class LoadStateManager {
|
|
2
|
-
private static instanceByStatus;
|
|
3
|
-
private _state;
|
|
4
|
-
private _application;
|
|
5
|
-
private static listenersByType;
|
|
6
|
-
private constructor();
|
|
7
|
-
private onStatusChange;
|
|
8
|
-
private addListener;
|
|
9
|
-
onPreInitialize(listener: () => void): LoadStateManager;
|
|
10
|
-
onLoaded(listener: () => void): LoadStateManager;
|
|
11
|
-
getStatus(): LoadStatus;
|
|
12
|
-
isPreInitialize(): boolean;
|
|
13
|
-
isLoaded(): boolean;
|
|
14
|
-
static get(type?: LoadType): LoadStateManager;
|
|
15
|
-
}
|
|
16
|
-
export declare enum LoadStatus {
|
|
17
|
-
DOM_LOADED = "DOM_LOADED",
|
|
18
|
-
PRE_INITIALIZE = "PRE_INITIALIZE",
|
|
19
|
-
LOADED = "LOADED"
|
|
20
|
-
}
|
|
21
|
-
export declare enum LoadType {
|
|
22
|
-
APP_LOAD = "APP_LOAD"
|
|
23
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
export class LoadStateManager {
|
|
11
|
-
constructor(appName = 'ez-application') {
|
|
12
|
-
var _a;
|
|
13
|
-
this._state = LoadStatus.DOM_LOADED;
|
|
14
|
-
this._application = document.querySelector(appName);
|
|
15
|
-
if (this._application === null) {
|
|
16
|
-
console.warn(`application${appName} not found, then state is loadded`);
|
|
17
|
-
this.onStatusChange(LoadStatus.LOADED);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
(_a = this._application) === null || _a === void 0 ? void 0 : _a.addEventListener('applicationLoaded', () => this.onStatusChange(LoadStatus.LOADED));
|
|
21
|
-
this.onStatusChange(LoadStatus.PRE_INITIALIZE);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
onStatusChange(newStatus) {
|
|
25
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
this._state = newStatus;
|
|
27
|
-
(LoadStateManager.listenersByType.get(newStatus) || []).forEach((listener) => {
|
|
28
|
-
listener();
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
addListener(status, listener) {
|
|
33
|
-
var _a;
|
|
34
|
-
if (!LoadStateManager.listenersByType.has(status)) {
|
|
35
|
-
LoadStateManager.listenersByType.set(status, []);
|
|
36
|
-
}
|
|
37
|
-
(_a = LoadStateManager.listenersByType.get(status)) === null || _a === void 0 ? void 0 : _a.push(listener);
|
|
38
|
-
if (status === this._state) {
|
|
39
|
-
listener();
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
onPreInitialize(listener) {
|
|
43
|
-
this.addListener(LoadStatus.PRE_INITIALIZE, listener);
|
|
44
|
-
return this;
|
|
45
|
-
}
|
|
46
|
-
onLoaded(listener) {
|
|
47
|
-
this.addListener(LoadStatus.LOADED, listener);
|
|
48
|
-
return this;
|
|
49
|
-
}
|
|
50
|
-
getStatus() {
|
|
51
|
-
return this._state;
|
|
52
|
-
}
|
|
53
|
-
isPreInitialize() {
|
|
54
|
-
return this._state === LoadStatus.PRE_INITIALIZE;
|
|
55
|
-
}
|
|
56
|
-
isLoaded() {
|
|
57
|
-
return this._state === LoadStatus.LOADED;
|
|
58
|
-
}
|
|
59
|
-
static get(type = LoadType.APP_LOAD) {
|
|
60
|
-
if (!LoadStateManager.instanceByStatus.has(type)) {
|
|
61
|
-
LoadStateManager.instanceByStatus.set(type, new LoadStateManager());
|
|
62
|
-
}
|
|
63
|
-
return LoadStateManager.instanceByStatus.get(type) || new LoadStateManager();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
LoadStateManager.instanceByStatus = new Map();
|
|
67
|
-
LoadStateManager.listenersByType = new Map();
|
|
68
|
-
export var LoadStatus;
|
|
69
|
-
(function (LoadStatus) {
|
|
70
|
-
LoadStatus["DOM_LOADED"] = "DOM_LOADED";
|
|
71
|
-
LoadStatus["PRE_INITIALIZE"] = "PRE_INITIALIZE";
|
|
72
|
-
LoadStatus["LOADED"] = "LOADED";
|
|
73
|
-
})(LoadStatus || (LoadStatus = {}));
|
|
74
|
-
export var LoadType;
|
|
75
|
-
(function (LoadType) {
|
|
76
|
-
LoadType["APP_LOAD"] = "APP_LOAD";
|
|
77
|
-
})(LoadType || (LoadType = {}));
|
|
78
|
-
//# sourceMappingURL=LoadStateManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LoadStateManager.js","sourceRoot":"","sources":["../../../../src/http/data-fetcher/state/LoadStateManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { LoadStateManager, LoadType } from "./state/LoadStateManager";
|
|
2
|
-
import { batchRequests, BatchRequestDocument } from 'graphql-request';
|
|
3
|
-
|
|
4
|
-
export class HttpFetcher{
|
|
5
|
-
private static instance: HttpFetcher;
|
|
6
|
-
private static loadStateManager: LoadStateManager;
|
|
7
|
-
private static watingRequestsById: Map<string, WaitingRequest >= new Map<string, WaitingRequest>();
|
|
8
|
-
|
|
9
|
-
private constructor() {
|
|
10
|
-
HttpFetcher.loadStateManager = LoadStateManager.get(LoadType.APP_LOAD);
|
|
11
|
-
HttpFetcher.loadStateManager.onLoaded(this.onApplicationLoaded);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
public static get(): HttpFetcher {
|
|
15
|
-
if (!HttpFetcher.instance) {
|
|
16
|
-
HttpFetcher.instance = new HttpFetcher();
|
|
17
|
-
}
|
|
18
|
-
return HttpFetcher.instance;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
public async callGraphQL(req:any):Promise<any>{
|
|
22
|
-
const reqKey = this.getReqKey(req);
|
|
23
|
-
req.queryID = reqKey;
|
|
24
|
-
req.values.queryID = reqKey;
|
|
25
|
-
if(HttpFetcher.loadStateManager.isPreInitialize()){
|
|
26
|
-
if(!HttpFetcher.watingRequestsById.has(reqKey)){
|
|
27
|
-
HttpFetcher.watingRequestsById.set(reqKey, new WaitingRequest(req));
|
|
28
|
-
}
|
|
29
|
-
return HttpFetcher.getWatingRequest(reqKey)?.promise;
|
|
30
|
-
}else{
|
|
31
|
-
return new Promise(async (resolve, reject) => {
|
|
32
|
-
let query = HttpFetcher.getQueryTemplate(req);
|
|
33
|
-
const res = await HttpFetcher.fecthGrapql([{document: query, variables: req.values }]);
|
|
34
|
-
|
|
35
|
-
if (res.errors.length > 0) {
|
|
36
|
-
reject(res);
|
|
37
|
-
} else {
|
|
38
|
-
//resolve(res);
|
|
39
|
-
//FIXME: Precisamos trabalhar melhor a resposta, quem chamou
|
|
40
|
-
//a API não pode ficar responsavel por desempacotar... fiz uma
|
|
41
|
-
//gambiarra aqui...
|
|
42
|
-
resolve(res.data[0][reqKey]);
|
|
43
|
-
}
|
|
44
|
-
})
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
private getReqKey(req:any):string{
|
|
49
|
-
return window.btoa(this.hashCode(`${req.query}${JSON.stringify(req.values || "")}`)).replaceAll("=", "");
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
private static getQueryTemplate(re:any):string{
|
|
53
|
-
return (re.query || "").replaceAll("$queryAlias$", re.queryID);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
private static getWatingRequest(reqID:string):WaitingRequest|undefined{
|
|
57
|
-
return HttpFetcher.watingRequestsById.get(reqID);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
private async onApplicationLoaded():Promise<any>{
|
|
61
|
-
if(HttpFetcher.watingRequestsById.size > 0){
|
|
62
|
-
const requestsBatch:Array<BatchRequestDocument> = [];
|
|
63
|
-
|
|
64
|
-
HttpFetcher.watingRequestsById.forEach(async (waitingReq:WaitingRequest) => {
|
|
65
|
-
let query = HttpFetcher.getQueryTemplate(waitingReq.request);
|
|
66
|
-
requestsBatch.push({ document: query, variables: {...waitingReq.request.values } });
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
let res:any = undefined;
|
|
70
|
-
let dataResponse:Array<any> = [];
|
|
71
|
-
let errorsResponse:Array<any> = [];
|
|
72
|
-
res = await HttpFetcher.fecthGrapql(requestsBatch);
|
|
73
|
-
|
|
74
|
-
dataResponse = res.data;
|
|
75
|
-
errorsResponse = res.errors;
|
|
76
|
-
|
|
77
|
-
//Reject promises with errors from query
|
|
78
|
-
errorsResponse.forEach((errorResponse:any) => {
|
|
79
|
-
Object.entries(errorResponse).forEach(([key, val]:Array<any>) => {
|
|
80
|
-
(HttpFetcher.getWatingRequest(val.request.variables[val.index].queryID)?.reject || Promise.reject)(val);
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
//Resolve promises with data from query
|
|
84
|
-
dataResponse.forEach((data:any) => {
|
|
85
|
-
Object.entries(data).forEach(([key, val]:Array<any>) => {
|
|
86
|
-
(HttpFetcher.getWatingRequest(key)?.resolve || Promise.resolve)(val);
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
HttpFetcher.watingRequestsById.clear();
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
private static async fecthGrapql(request :Array<BatchRequestDocument>):Promise<any> {
|
|
94
|
-
let res:any = undefined;
|
|
95
|
-
let dataResponse:Array<any> = [];
|
|
96
|
-
let errorsResponse:Array<any> = [];
|
|
97
|
-
|
|
98
|
-
try{
|
|
99
|
-
res = await batchRequests('http://localhost:8082/', request);
|
|
100
|
-
res.forEach((resItem:any) => {
|
|
101
|
-
dataResponse.push(resItem.data);
|
|
102
|
-
});
|
|
103
|
-
}catch(err:any){
|
|
104
|
-
//TODO: Tratar erro quando não existir err.response
|
|
105
|
-
res = err.response;
|
|
106
|
-
const req:any = err.request;
|
|
107
|
-
Object.entries(res).forEach(([key, val]:Array<any>) => {
|
|
108
|
-
if(val.errors){
|
|
109
|
-
errorsResponse.push(val.errors.map((item:any) => {
|
|
110
|
-
item.request = req;
|
|
111
|
-
item.index = Number(key);
|
|
112
|
-
return item;
|
|
113
|
-
}));
|
|
114
|
-
}else if(val.data){
|
|
115
|
-
dataResponse.push(val.data);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
return {data: dataResponse, errors: errorsResponse}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
//TODO: Mover este metodo para o @sankhyalabs/core classe string utils.
|
|
123
|
-
private hashCode (txt:string):string {
|
|
124
|
-
var hash = 0, i, chr;
|
|
125
|
-
if (txt.length === 0) return hash.toString();
|
|
126
|
-
for (i = 0; i < txt.length; i++) {
|
|
127
|
-
chr = txt.charCodeAt(i);
|
|
128
|
-
hash = ((hash << 5) - hash) + chr;
|
|
129
|
-
hash |= 0; // Convert to 32bit integer
|
|
130
|
-
}
|
|
131
|
-
return hash.toString();
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
class WaitingRequest {
|
|
136
|
-
private _resolve: Function = () => {};
|
|
137
|
-
private _reject: Function = () => {};
|
|
138
|
-
private _promisse: Promise<any>;
|
|
139
|
-
private _request: any = undefined;
|
|
140
|
-
|
|
141
|
-
constructor(req:any){
|
|
142
|
-
this._request = req;
|
|
143
|
-
this._promisse = new Promise((resolve, reject) => {
|
|
144
|
-
this._resolve = resolve;
|
|
145
|
-
this._reject = reject;
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
public get resolve():Function{
|
|
150
|
-
return this._resolve;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
public get reject():Function{
|
|
154
|
-
return this._reject;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
public get promise():Promise<any>{
|
|
158
|
-
return this._promisse;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
public get request():any{
|
|
162
|
-
return this._request;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
export class LoadStateManager {
|
|
2
|
-
private static instanceByStatus: Map<LoadType, LoadStateManager> = new Map<LoadType, LoadStateManager>();
|
|
3
|
-
private _state:LoadStatus = LoadStatus.DOM_LOADED;
|
|
4
|
-
private _application:Element|null;
|
|
5
|
-
private static listenersByType: Map<LoadStatus, Array<() => void>> = new Map<LoadStatus, Array<() => void>>();
|
|
6
|
-
|
|
7
|
-
private constructor(appName:string = 'ez-application') {
|
|
8
|
-
this._application = document.querySelector(appName);
|
|
9
|
-
if(this._application === null){
|
|
10
|
-
console.warn(`application${appName} not found, then state is loadded`);
|
|
11
|
-
this.onStatusChange(LoadStatus.LOADED);
|
|
12
|
-
}else{
|
|
13
|
-
this._application?.addEventListener('applicationLoaded',
|
|
14
|
-
() => this.onStatusChange(LoadStatus.LOADED));
|
|
15
|
-
this.onStatusChange(LoadStatus.PRE_INITIALIZE);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
private async onStatusChange(newStatus:LoadStatus){
|
|
20
|
-
this._state = newStatus;
|
|
21
|
-
(LoadStateManager.listenersByType.get(newStatus) || []).forEach((listener:() => void) => {
|
|
22
|
-
listener();
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
private addListener(status:LoadStatus, listener:() => void){
|
|
27
|
-
if(!LoadStateManager.listenersByType.has(status)){
|
|
28
|
-
LoadStateManager.listenersByType.set(status, []);
|
|
29
|
-
}
|
|
30
|
-
LoadStateManager.listenersByType.get(status)?.push(listener);
|
|
31
|
-
if(status === this._state){
|
|
32
|
-
listener();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public onPreInitialize(listener:() => void):LoadStateManager{
|
|
37
|
-
this.addListener(LoadStatus.PRE_INITIALIZE, listener);
|
|
38
|
-
return this;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
public onLoaded(listener:() => void):LoadStateManager{
|
|
42
|
-
this.addListener(LoadStatus.LOADED, listener);
|
|
43
|
-
return this;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
public getStatus():LoadStatus{
|
|
47
|
-
return this._state;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
public isPreInitialize():boolean{
|
|
51
|
-
return this._state === LoadStatus.PRE_INITIALIZE;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
public isLoaded():boolean{
|
|
55
|
-
return this._state === LoadStatus.LOADED;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
public static get(type:LoadType = LoadType.APP_LOAD): LoadStateManager{
|
|
59
|
-
if (!LoadStateManager.instanceByStatus.has(type)) {
|
|
60
|
-
LoadStateManager.instanceByStatus.set(type, new LoadStateManager());
|
|
61
|
-
}
|
|
62
|
-
return LoadStateManager.instanceByStatus.get(type) || new LoadStateManager();
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export enum LoadStatus{
|
|
67
|
-
DOM_LOADED = "DOM_LOADED",
|
|
68
|
-
PRE_INITIALIZE = "PRE_INITIALIZE",
|
|
69
|
-
LOADED = "LOADED"
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export enum LoadType{
|
|
73
|
-
APP_LOAD = "APP_LOAD",
|
|
74
|
-
}
|