@gudhub/core 1.0.37

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 (67) hide show
  1. package/GUDHUB/Auth/Auth.js +137 -0
  2. package/GUDHUB/Auth/Auth.test.js +15 -0
  3. package/GUDHUB/Managers/ChunksManager/ChunksManager.js +80 -0
  4. package/GUDHUB/Managers/ChunksManager/ChunksManager.test.js +46 -0
  5. package/GUDHUB/Managers/DocumentManager/DocumentManager.js +48 -0
  6. package/GUDHUB/Managers/FileManager/FileManager.js +208 -0
  7. package/GUDHUB/Managers/FileManager/file_manager.test.js +17 -0
  8. package/GUDHUB/Managers/managers.js +5 -0
  9. package/GUDHUB/PipeService/PipeService.js +167 -0
  10. package/GUDHUB/PipeService/PipeService.test.js +64 -0
  11. package/GUDHUB/PipeService/utils.js +32 -0
  12. package/GUDHUB/Processors/AppProcessor/AppProcessor.js +433 -0
  13. package/GUDHUB/Processors/AppProcessor/AppProcessor.test.js +38 -0
  14. package/GUDHUB/Processors/AppProcessor/AppProcessorMocks.js +83 -0
  15. package/GUDHUB/Processors/FieldProcessor/FieldProcessor.js +139 -0
  16. package/GUDHUB/Processors/FieldProcessor/FieldProcessor.test.js +16 -0
  17. package/GUDHUB/Processors/FieldProcessor/Untitled-1.json +17 -0
  18. package/GUDHUB/Processors/FieldProcessor/field_processor.md +85 -0
  19. package/GUDHUB/Processors/ItemProcessor/ItemProcessor.js +247 -0
  20. package/GUDHUB/Processors/ItemProcessor/item_processor.md +50 -0
  21. package/GUDHUB/Processors/processors.js +5 -0
  22. package/GUDHUB/Storage/Storage.js +115 -0
  23. package/GUDHUB/Storage/Storage.test.js +112 -0
  24. package/GUDHUB/Utils/Utils.js +153 -0
  25. package/GUDHUB/Utils/compare_items_lists_worker/compare_items_lists.worker.js +50 -0
  26. package/GUDHUB/Utils/filter/filter.js +308 -0
  27. package/GUDHUB/Utils/filter/filter.test.js +94 -0
  28. package/GUDHUB/Utils/filter/filterPreparation.js +103 -0
  29. package/GUDHUB/Utils/filter/group.js +41 -0
  30. package/GUDHUB/Utils/filter/utils.js +119 -0
  31. package/GUDHUB/Utils/get_date/get_date.js +90 -0
  32. package/GUDHUB/Utils/get_date/get_date.test.js +53 -0
  33. package/GUDHUB/Utils/interpretation/interpretation.js +100 -0
  34. package/GUDHUB/Utils/json_constructor/json_constructor.js +130 -0
  35. package/GUDHUB/Utils/json_constructor/json_constructor.test.js +70 -0
  36. package/GUDHUB/Utils/json_to_items/json_to_items.js +161 -0
  37. package/GUDHUB/Utils/json_to_items/json_to_items.test.js +85 -0
  38. package/GUDHUB/Utils/merge_chunks/merge_chunks.js +30 -0
  39. package/GUDHUB/Utils/merge_compare_items/merge_compare_items.js +316 -0
  40. package/GUDHUB/Utils/merge_compare_items/merge_compare_items.test.js +632 -0
  41. package/GUDHUB/Utils/merge_objects/merge_objects.js +120 -0
  42. package/GUDHUB/Utils/merge_objects/merge_objects.test.js +137 -0
  43. package/GUDHUB/Utils/nested_list/nested_list.js +38 -0
  44. package/GUDHUB/Utils/nested_list/nested_list.test.js +70 -0
  45. package/GUDHUB/Utils/populate_items/populate_items.js +66 -0
  46. package/GUDHUB/WebSocket/WebSocket.js +136 -0
  47. package/GUDHUB/config.js +8 -0
  48. package/GUDHUB/consts.js +1 -0
  49. package/GUDHUB/gudhub-https-service.js +193 -0
  50. package/GUDHUB/gudhub.js +477 -0
  51. package/GUDHUB/gudhub.test.js +218 -0
  52. package/GUDHUB/utils.js +25 -0
  53. package/Readme.md +537 -0
  54. package/fake_server/fake_java_server.js +112 -0
  55. package/fake_server/fake_server_data/app_132.js +3037 -0
  56. package/fake_server/fake_server_data/app_16259.js +1152 -0
  57. package/fake_server/fake_server_data/app_214.js +2057 -0
  58. package/fake_server/fake_server_data/app_8263.js +4167 -0
  59. package/fake_server/fake_server_data/chunks_mocks/bcacjbgqorherqmtykrj_8263.js +44561 -0
  60. package/fake_server/fake_server_data/chunks_mocks/bcjyuoqaewybudfyhir_8263.js +44197 -0
  61. package/fake_server/fake_server_data/chunks_mocks/tpajkpolmzklodcba_8263.js +44977 -0
  62. package/fake_server/fake_server_data/fake_server_data.js +111 -0
  63. package/index.js +3 -0
  64. package/indexUMD.js +5 -0
  65. package/package.json +45 -0
  66. package/umd/library.min.js +186 -0
  67. package/umd/library.min.js.map +1 -0
@@ -0,0 +1,115 @@
1
+ export class Storage {
2
+ constructor() {
3
+ this.apps_list = [];
4
+ this.users_list = [];
5
+ this.user = {};
6
+ }
7
+
8
+ getMainStorage() {
9
+ return this;
10
+ }
11
+
12
+ getAppsList() {
13
+ return this.apps_list;
14
+ }
15
+
16
+ getUser() {
17
+ return this.user;
18
+ }
19
+
20
+ getUsersList() {
21
+ return this.users_list;
22
+ }
23
+
24
+ //!!!!!!!!!!!!!!******** All Methods below should be moved to AppProcesor and Auth **********!!!!!!!!!!!!!!!!//
25
+ setUser(user) {
26
+ this.user = user;
27
+ this.users_list.push(user);
28
+ }
29
+
30
+ updateUser(user = {}) {
31
+ if (user.avatar_128) {
32
+ user.avatar_128 = user.avatar_128 + "?" + new Date().getTime();
33
+ }
34
+
35
+ if (user.avatar_512) {
36
+ user.avatar_512 = user.avatar_512 + "?" + new Date().getTime();
37
+ }
38
+ this.user = { ...this.user, ...user };
39
+ this.users_list = this.users_list.filter(
40
+ (oldUser) => oldUser.user_id != user.user_id
41
+ );
42
+ this.users_list.push(this.user);
43
+ }
44
+
45
+
46
+ unsetUser() {
47
+ this.user = {};
48
+ }
49
+
50
+
51
+ getApp(app_id) {
52
+ return this.apps_list.find((app) => app.app_id == app_id);
53
+ }
54
+
55
+ unsetApps() {
56
+ this.apps_list = [];
57
+ }
58
+
59
+ // addApp(app) {
60
+ // this.apps_list.push(app);
61
+ // return this.apps_list;
62
+ // }
63
+
64
+ updateApp(newApp) {
65
+ this.apps_list = this.apps_list.map((app) =>
66
+ app.app_id == newApp.app_id ? newApp : app
67
+ );
68
+ return this.apps_list;
69
+ }
70
+
71
+ deleteApp(app_id) {
72
+ this.apps_list = this.apps_list.filter((app) => app.app_id != app_id);
73
+ return this.apps_list;
74
+ }
75
+
76
+ async updateItemsInApp(itemsToUpdate, app_id) {
77
+ const appToUpdate = await this.getApp(app_id);
78
+ if (appToUpdate) {
79
+ appToUpdate.items_list = updateItems(
80
+ itemsToUpdate,
81
+ appToUpdate.items_list,
82
+ this.pipeService.emit.bind(this.pipeService),
83
+ app_id
84
+ );
85
+ this.updateApp(appToUpdate);
86
+ }
87
+ return appToUpdate;
88
+ }
89
+
90
+ async addItemsToApp(items, app_id) {
91
+ const appToUpdate = await this.getApp(app_id);
92
+ if (appToUpdate) {
93
+ appToUpdate.items_list.push(...items);
94
+
95
+ this.updateApp(appToUpdate);
96
+ this.pipeService.emit("gh_items_update", { app_id }, items);
97
+ }
98
+ return appToUpdate;
99
+ }
100
+
101
+ async deleteItemsInApp(itemsToDelete, app_id) {
102
+ const appToUpdate = await this.getApp(app_id);
103
+ if (appToUpdate) {
104
+ appToUpdate.items_list = appToUpdate.items_list.filter(
105
+ (item) =>
106
+ !itemsToDelete.find(
107
+ (itemToDelete) => itemToDelete.item_id == item.item_id
108
+ )
109
+ );
110
+ this.updateApp(appToUpdate);
111
+ }
112
+ return appToUpdate;
113
+ }
114
+
115
+ }
@@ -0,0 +1,112 @@
1
+ import should from "should";
2
+ import { PipeService } from "../PipeService/PipeService.js";
3
+ import { app_132 } from "../../fake_server/fake_server_data/app_132.js";
4
+ import {GudHub} from './../gudhub.js';
5
+
6
+ describe("STORAGE", () => {
7
+ const gudhub = new GudHub()
8
+ const appId = 132;
9
+ const itemId = 79977;
10
+ const fieldId = 179840;
11
+
12
+ // it("Add new app to storage and get all apps", () => {
13
+ // //gudhub.storage.addApp(app_132);
14
+ // //gudhub.storage.getAppsList().length.should.equal(1);
15
+ // });
16
+
17
+ // it("Get app by id", () => {
18
+ // //gudhub.storage.getApp(appId).should.not.undefined();
19
+ // });
20
+
21
+ // it("Delete app from storage", () => {
22
+ // //gudhub.storage.deleteApp(appId);
23
+ // //gudhub.storage.getAppsList().length.should.equal(0);
24
+ // });
25
+
26
+ // it("Update items in app", () => {
27
+ // storage.addApp(app_132);
28
+
29
+ // const newItem = {
30
+ // item_id: itemId,
31
+ // fields: [
32
+ // {
33
+ // field_id: fieldId,
34
+ // field_value: "test",
35
+ // },
36
+ // ],
37
+ // };
38
+ // storage.updateItemsInApp([newItem], appId);
39
+ // const changedApp = storage.getApp(appId);
40
+ // const changedItem = changedApp.items_list.find(
41
+ // (item) => item.item_id == itemId
42
+ // );
43
+ // const changedField = changedItem.fields.find(
44
+ // (field) => field.field_id == fieldId
45
+ // );
46
+ // changedField.field_value.should.equal("test");
47
+ // });
48
+
49
+ // it("Update items and listen item update ", () => {
50
+ // storage.pipeService.on(
51
+ // "gh_item_update",
52
+ // { app_id: appId, item_id: itemId },
53
+ // (event, item) => {
54
+ // item.item_id.should.equal(itemId);
55
+ // }
56
+ // );
57
+ // const newItem = {
58
+ // item_id: itemId,
59
+ // fields: [
60
+ // {
61
+ // field_id: fieldId,
62
+ // field_value: "update",
63
+ // },
64
+ // ],
65
+ // };
66
+ // storage.addApp(app_132);
67
+ // storage.updateItemsInApp([newItem], appId);
68
+ // });
69
+
70
+ // it("Update item and listen field update", () => {
71
+ // storage.pipeService.on(
72
+ // "gh_field_update",
73
+ // { app_id: appId, item_id: itemId, field_id: fieldId },
74
+ // (event, field_value) => {
75
+ // field_value.should.equal("value updated");
76
+ // }
77
+ // );
78
+ // const newItem = {
79
+ // item_id: itemId,
80
+ // fields: [
81
+ // {
82
+ // field_id: fieldId,
83
+ // field_value: "value updated",
84
+ // },
85
+ // ],
86
+ // };
87
+ // storage.addApp(app_132);
88
+ // storage.updateItemsInApp([newItem], appId);
89
+ // });
90
+
91
+ // it("Add items to app and listen event for adding items", () => {
92
+ // const newItemId = 121323123;
93
+ // storage.pipeService.on(
94
+ // "gh_items_update",
95
+ // { app_id: appId },
96
+ // (event, items) => {
97
+ // items[0].item_id.should.equal(newItemId);
98
+ // }
99
+ // );
100
+ // const newItem = {
101
+ // item_id: newItemId,
102
+ // fields: [
103
+ // {
104
+ // field_id: 12,
105
+ // field_value: "value updated",
106
+ // },
107
+ // ],
108
+ // };
109
+ // storage.addApp(app_132);
110
+ // storage.addItemsToApp([newItem], appId);
111
+ // });
112
+ });
@@ -0,0 +1,153 @@
1
+ import { filterPreparation } from "./filter/filterPreparation.js";
2
+ import filter from "./filter/filter.js";
3
+ import { jsonToItems } from "./json_to_items/json_to_items.js";
4
+ import {
5
+ mergeItems,
6
+ compareItems,
7
+ populateWithItemRef,
8
+ } from "./merge_compare_items/merge_compare_items.js";
9
+ import { group } from "./filter/group.js";
10
+ import { searchValue } from "./filter/utils.js";
11
+ import populateItems from "./populate_items/populate_items.js";
12
+ import { populateWithDate, getDate } from "./get_date/get_date.js";
13
+ import { mergeObjects } from "./merge_objects/merge_objects.js";
14
+ import { mergeChunks } from "./merge_chunks/merge_chunks.js";
15
+ import { getInterpretedValue } from "./interpretation/interpretation.js";
16
+ import { makeNestedList } from "./nested_list/nested_list.js";
17
+
18
+ import { compare_items_lists_Worker } from "./compare_items_lists_worker/compare_items_lists.worker.js";
19
+ import { compiler } from "./json_constructor/json_constructor.js";
20
+
21
+ export class Utils {
22
+ constructor(gudhub) {
23
+ this.gudhub = gudhub
24
+ }
25
+
26
+ prefilter(filters_list, element_app_id, app_id, item_id, variables = []) {
27
+ return filterPreparation(
28
+ filters_list,
29
+ element_app_id,
30
+ app_id,
31
+ item_id,
32
+ this.gudhub.storage,
33
+ this.gudhub.pipeService,
34
+ variables
35
+ );
36
+ }
37
+
38
+ filter(items, filter_list) {
39
+ return filter(items, filter_list);
40
+ }
41
+
42
+ group(fieldGroup, items) {
43
+ return group(fieldGroup, items);
44
+ }
45
+
46
+ async getFilteredItems(
47
+ items = [],
48
+ filters_list = [],
49
+ element_app_id,
50
+ app_id,
51
+ item_id,
52
+ field_group = "",
53
+ search,
54
+ search_params
55
+ ) {
56
+ const modified_filters_list = await this.prefilter(
57
+ filters_list,
58
+ element_app_id,
59
+ app_id,
60
+ item_id
61
+ );
62
+ const itemsList = this.filter(items, [
63
+ ...filters_list,
64
+ ...modified_filters_list,
65
+ ]);
66
+ const newItems = this.group(field_group, itemsList);
67
+ return newItems
68
+ .filter((newItem) => {
69
+ if (search) {
70
+ return searchValue([newItem], search).length === 1;
71
+ } else return true;
72
+ })
73
+ .filter((newItem) => {
74
+ if (search_params) {
75
+ return searchValue([newItem], search_params).length === 1;
76
+ } else return true;
77
+ });
78
+ }
79
+
80
+ jsonToItems(json, map) {
81
+ return jsonToItems(json, map);
82
+ }
83
+
84
+ getDate(queryKey) {
85
+ return getDate(queryKey);
86
+ }
87
+
88
+ populateItems(items, model, keep_data) {
89
+ return populateItems(items, model, keep_data);
90
+ }
91
+
92
+ getInterpretedValue(app_id, item_id, field_id) {
93
+ return getInterpretedValue(this.gudhub, app_id, item_id, field_id);
94
+ }
95
+
96
+ populateWithDate(items, model) {
97
+ return populateWithDate(items, model);
98
+ }
99
+
100
+ populateWithItemRef(
101
+ sourceItemsRef,
102
+ srcFieldIdToCompare,
103
+ destinationItems,
104
+ destFieldIdToCompare,
105
+ destFieldForRef,
106
+ app_id
107
+ ) {
108
+ return populateWithItemRef(
109
+ sourceItemsRef,
110
+ srcFieldIdToCompare,
111
+ destinationItems,
112
+ destFieldIdToCompare,
113
+ destFieldForRef,
114
+ app_id
115
+ );
116
+ }
117
+
118
+ compareItems(sourceItems, destinationItems, fieldToCompare) {
119
+ return compareItems(sourceItems, destinationItems, fieldToCompare);
120
+ }
121
+
122
+ mergeItems(sourceItems, destinationItems, mergeByFieldId) {
123
+ return mergeItems(sourceItems, destinationItems, mergeByFieldId);
124
+ }
125
+
126
+ mergeObjects(target, source, optionsArgument) {
127
+ return mergeObjects(target, source, optionsArgument);
128
+ }
129
+
130
+ makeNestedList(arr, id, parent_id, children_property) {
131
+ return makeNestedList(arr, id, parent_id, children_property);
132
+ }
133
+
134
+ mergeChunks(chunks) {
135
+ return mergeChunks(chunks);
136
+ }
137
+
138
+ jsonConstructor(scheme, items, variables){
139
+ return compiler(scheme, items, this, variables)
140
+ }
141
+
142
+ compareAppsItemsLists(items_list1, items_list2, callback) {
143
+ const chunkWorkerBlob = new Blob([compare_items_lists_Worker()], {
144
+ type: "application/javascript",
145
+ });
146
+ this.worker = new Worker(URL.createObjectURL(chunkWorkerBlob));
147
+ this.worker.postMessage({ items_list1, items_list2 });
148
+ this.worker.addEventListener("message", (event) => {
149
+ const { diff } = event.data;
150
+ callback(diff);
151
+ });
152
+ }
153
+ }
@@ -0,0 +1,50 @@
1
+ export function compare_items_lists_Worker() {
2
+ return `function compareItemsLists(items_list1 = [], items_list2 = []) {
3
+ const diff_fields_items = {};
4
+ const diff_fields_items_Ids = []
5
+
6
+ items_list1.forEach((item1) => {
7
+ const sameItem = items_list2.find(
8
+ (item2) => Number(item2.item_id) === Number(item1.item_id)
9
+ );
10
+
11
+ if (!sameItem) {
12
+ diff_fields_items_Ids.push(item1.item_id)
13
+ return diff_fields_items[item1.item_id] = [...item1.fields];
14
+ }
15
+
16
+ item1.fields.forEach((field1) => {
17
+ const sameField = sameItem.fields.find(
18
+ (field2) => Number(field2.field_id) === Number(field1.field_id)
19
+ );
20
+
21
+ if (!sameField) {
22
+ if (!diff_fields_items[item1.item_id]) {
23
+ diff_fields_items[item1.item_id] = []
24
+ diff_fields_items_Ids.push(item1.item_id)
25
+ };
26
+
27
+ return diff_fields_items[item1.item_id].push(field1);
28
+ }
29
+
30
+ if (field1.field_value != sameField.field_value) {
31
+ if (!diff_fields_items[item1.item_id]) {
32
+ diff_fields_items[item1.item_id] = []
33
+ diff_fields_items_Ids.push(item1.item_id)
34
+ };
35
+ return diff_fields_items[item1.item_id].push(field1);
36
+ }
37
+
38
+ return;
39
+ });
40
+ });
41
+
42
+ return {diff_fields_items,diff_fields_items_Ids, diff_items: items_list1.filter(item => diff_fields_items_Ids.includes(item.item_id)) };
43
+ }
44
+ self.addEventListener("message", (event) => {
45
+ const { items_list1, items_list2 } = event.data;
46
+
47
+ const diff = compareItemsLists(items_list1, items_list2);
48
+ self.postMessage({ diff });
49
+ });`;
50
+ }