@sankhyalabs/sankhyablocks 1.1.28 → 1.3.1

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 (236) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +75 -75
  3. package/dist/cjs/index-4720dab8.js +735 -0
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/sankhyablocks.cjs.js +2 -2
  6. package/dist/cjs/snk-application.cjs.entry.js +668 -653
  7. package/dist/collection/collection-manifest.json +5 -34
  8. package/dist/collection/components/snk-application/snk-application.css +5 -5
  9. package/dist/collection/components/snk-application/snk-application.js +492 -492
  10. package/dist/collection/index.js +1 -1
  11. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +158 -158
  12. package/dist/collection/lib/http/data-fetcher/fetchers/application-config-fetcher.js +23 -23
  13. package/dist/collection/lib/http/data-fetcher/fetchers/dataunit-fetcher.js +188 -188
  14. package/dist/collection/lib/http/data-fetcher/fetchers/form-config-fetcher.js +25 -25
  15. package/dist/collection/lib/http/data-fetcher/fetchers/grid-config-fetcher.js +2 -2
  16. package/dist/collection/lib/http/data-fetcher/fetchers/parameters-fecher.js +59 -59
  17. package/dist/collection/lib/http/data-fetcher/fetchers/resource-fetcher.js +30 -30
  18. package/dist/collection/lib/http/data-fetcher/state/LoadStateManager.js +66 -66
  19. package/dist/collection/lib/utils/pesquisa.js +16 -16
  20. package/dist/collection/lib/utils/urlutils.js +23 -23
  21. package/dist/collection/lib/workspace/workspace.js +7 -7
  22. package/dist/components/snk-application.js +655 -640
  23. package/dist/esm/index-72d4e2e0.js +709 -0
  24. package/dist/esm/loader.js +2 -2
  25. package/dist/esm/polyfills/core-js.js +0 -0
  26. package/dist/esm/polyfills/dom.js +0 -0
  27. package/dist/esm/polyfills/es5-html-element.js +0 -0
  28. package/dist/esm/polyfills/index.js +0 -0
  29. package/dist/esm/polyfills/system.js +0 -0
  30. package/dist/esm/sankhyablocks.js +2 -2
  31. package/dist/esm/snk-application.entry.js +626 -611
  32. package/dist/sankhyablocks/p-5d8ddbda.entry.js +57 -0
  33. package/dist/sankhyablocks/p-a33afc3b.js +2 -0
  34. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  35. package/dist/types/components/snk-application/snk-application.d.ts +44 -44
  36. package/dist/types/index.d.ts +1 -1
  37. package/dist/types/lib/http/data-fetcher/DataFetcher.d.ts +15 -15
  38. package/dist/types/lib/http/data-fetcher/fetchers/application-config-fetcher.d.ts +6 -6
  39. package/dist/types/lib/http/data-fetcher/fetchers/dataunit-fetcher.d.ts +12 -12
  40. package/dist/types/lib/http/data-fetcher/fetchers/form-config-fetcher.d.ts +5 -5
  41. package/dist/types/lib/http/data-fetcher/fetchers/grid-config-fetcher.d.ts +2 -2
  42. package/dist/types/lib/http/data-fetcher/fetchers/parameters-fecher.d.ts +13 -13
  43. package/dist/types/lib/http/data-fetcher/fetchers/resource-fetcher.d.ts +6 -6
  44. package/dist/types/lib/http/data-fetcher/state/LoadStateManager.d.ts +23 -23
  45. package/dist/types/lib/utils/pesquisa.d.ts +2 -2
  46. package/dist/types/lib/utils/urlutils.d.ts +4 -4
  47. package/dist/types/lib/workspace/workspace.d.ts +4 -4
  48. package/package.json +63 -52
  49. package/react/.keepfolder +1 -0
  50. package/react/components.d.ts +3 -32
  51. package/react/components.js +5 -34
  52. package/react/components.js.map +1 -1
  53. package/react/react-component-lib/createComponent.d.ts +10 -10
  54. package/react/react-component-lib/createComponent.js +58 -74
  55. package/react/react-component-lib/createComponent.js.map +1 -1
  56. package/react/react-component-lib/createOverlayComponent.d.ts +20 -21
  57. package/react/react-component-lib/createOverlayComponent.js +88 -108
  58. package/react/react-component-lib/createOverlayComponent.js.map +1 -1
  59. package/react/react-component-lib/index.d.ts +2 -2
  60. package/react/react-component-lib/index.js +2 -2
  61. package/react/react-component-lib/interfaces.d.ts +29 -29
  62. package/react/react-component-lib/utils/attachProps.d.ts +12 -12
  63. package/react/react-component-lib/utils/attachProps.js +95 -97
  64. package/react/react-component-lib/utils/attachProps.js.map +1 -1
  65. package/react/react-component-lib/utils/case.d.ts +2 -2
  66. package/react/react-component-lib/utils/case.js +6 -6
  67. package/react/react-component-lib/utils/dev.d.ts +2 -2
  68. package/react/react-component-lib/utils/dev.js +12 -12
  69. package/react/react-component-lib/utils/index.d.ts +7 -10
  70. package/react/react-component-lib/utils/index.js +20 -33
  71. package/react/react-component-lib/utils/index.js.map +1 -1
  72. package/dist/cjs/ApplicationUtils-05b74ee9.js +0 -39
  73. package/dist/cjs/AssetsUtils-7e3c38f9.js +0 -24
  74. package/dist/cjs/CSSVarsUtils-75ca9c64.js +0 -19
  75. package/dist/cjs/_commonjsHelpers-537d719a.js +0 -20
  76. package/dist/cjs/ez-action-chip.cjs.entry.js +0 -27
  77. package/dist/cjs/ez-application.cjs.entry.js +0 -26
  78. package/dist/cjs/ez-button_4.cjs.entry.js +0 -660
  79. package/dist/cjs/ez-calendar.cjs.entry.js +0 -223
  80. package/dist/cjs/ez-collapsible-box.cjs.entry.js +0 -47
  81. package/dist/cjs/ez-combo-box.cjs.entry.js +0 -278
  82. package/dist/cjs/ez-date-input.cjs.entry.js +0 -102
  83. package/dist/cjs/ez-date-time-input.cjs.entry.js +0 -145
  84. package/dist/cjs/ez-dialog.cjs.entry.js +0 -89
  85. package/dist/cjs/ez-form.cjs.entry.js +0 -785
  86. package/dist/cjs/ez-grid.cjs.entry.js +0 -110485
  87. package/dist/cjs/ez-icon.cjs.entry.js +0 -41
  88. package/dist/cjs/ez-label-chip.cjs.entry.js +0 -104
  89. package/dist/cjs/ez-modal_2.cjs.entry.js +0 -316
  90. package/dist/cjs/ez-number-input.cjs.entry.js +0 -86
  91. package/dist/cjs/ez-popover.cjs.entry.js +0 -120
  92. package/dist/cjs/ez-popup.cjs.entry.js +0 -48
  93. package/dist/cjs/ez-search.cjs.entry.js +0 -64
  94. package/dist/cjs/ez-tabselector.cjs.entry.js +0 -198
  95. package/dist/cjs/ez-text-area.cjs.entry.js +0 -114
  96. package/dist/cjs/ez-text-input.cjs.entry.js +0 -201
  97. package/dist/cjs/ez-time-input.cjs.entry.js +0 -118
  98. package/dist/cjs/ez-toast.cjs.entry.js +0 -44
  99. package/dist/cjs/ez-upload.cjs.entry.js +0 -356
  100. package/dist/cjs/index-682c98b2.js +0 -1771
  101. package/dist/cjs/test-du.cjs.entry.js +0 -76
  102. package/dist/components/ApplicationUtils.js +0 -37
  103. package/dist/components/AssetsUtils.js +0 -22
  104. package/dist/components/CSSVarsUtils.js +0 -17
  105. package/dist/components/_commonjsHelpers.js +0 -17
  106. package/dist/components/ez-action-chip.js +0 -44
  107. package/dist/components/ez-application.js +0 -39
  108. package/dist/components/ez-button.js +0 -6
  109. package/dist/components/ez-button2.js +0 -105
  110. package/dist/components/ez-calendar.js +0 -6
  111. package/dist/components/ez-calendar2.js +0 -242
  112. package/dist/components/ez-check.js +0 -6
  113. package/dist/components/ez-check2.js +0 -94
  114. package/dist/components/ez-collapsible-box.js +0 -67
  115. package/dist/components/ez-combo-box.js +0 -6
  116. package/dist/components/ez-combo-box2.js +0 -311
  117. package/dist/components/ez-date-input.js +0 -135
  118. package/dist/components/ez-date-time-input.js +0 -179
  119. package/dist/components/ez-dialog.js +0 -124
  120. package/dist/components/ez-form.js +0 -6
  121. package/dist/components/ez-form2.js +0 -807
  122. package/dist/components/ez-grid.js +0 -110576
  123. package/dist/components/ez-icon.js +0 -6
  124. package/dist/components/ez-icon2.js +0 -56
  125. package/dist/components/ez-label-chip.js +0 -125
  126. package/dist/components/ez-list.js +0 -6
  127. package/dist/components/ez-list2.js +0 -523
  128. package/dist/components/ez-modal.js +0 -6
  129. package/dist/components/ez-modal2.js +0 -82
  130. package/dist/components/ez-number-input.js +0 -115
  131. package/dist/components/ez-popover.js +0 -145
  132. package/dist/components/ez-popup.js +0 -67
  133. package/dist/components/ez-search.js +0 -100
  134. package/dist/components/ez-tabselector.js +0 -6
  135. package/dist/components/ez-tabselector2.js +0 -213
  136. package/dist/components/ez-text-area.js +0 -137
  137. package/dist/components/ez-text-input.js +0 -6
  138. package/dist/components/ez-text-input2.js +0 -223
  139. package/dist/components/ez-time-input.js +0 -153
  140. package/dist/components/ez-toast.js +0 -64
  141. package/dist/components/ez-upload.js +0 -382
  142. package/dist/components/grid-config.js +0 -6
  143. package/dist/components/grid-config2.js +0 -318
  144. package/dist/components/select-box.js +0 -6
  145. package/dist/components/select-box2.js +0 -47
  146. package/dist/components/test-du.js +0 -101
  147. package/dist/esm/ApplicationUtils-e0b6d857.js +0 -37
  148. package/dist/esm/AssetsUtils-6e6624dc.js +0 -22
  149. package/dist/esm/CSSVarsUtils-0787c3f3.js +0 -17
  150. package/dist/esm/_commonjsHelpers-9943807e.js +0 -17
  151. package/dist/esm/ez-action-chip.entry.js +0 -23
  152. package/dist/esm/ez-application.entry.js +0 -22
  153. package/dist/esm/ez-button_4.entry.js +0 -653
  154. package/dist/esm/ez-calendar.entry.js +0 -219
  155. package/dist/esm/ez-collapsible-box.entry.js +0 -43
  156. package/dist/esm/ez-combo-box.entry.js +0 -274
  157. package/dist/esm/ez-date-input.entry.js +0 -98
  158. package/dist/esm/ez-date-time-input.entry.js +0 -141
  159. package/dist/esm/ez-dialog.entry.js +0 -85
  160. package/dist/esm/ez-form.entry.js +0 -781
  161. package/dist/esm/ez-grid.entry.js +0 -110481
  162. package/dist/esm/ez-icon.entry.js +0 -37
  163. package/dist/esm/ez-label-chip.entry.js +0 -100
  164. package/dist/esm/ez-modal_2.entry.js +0 -311
  165. package/dist/esm/ez-number-input.entry.js +0 -82
  166. package/dist/esm/ez-popover.entry.js +0 -116
  167. package/dist/esm/ez-popup.entry.js +0 -44
  168. package/dist/esm/ez-search.entry.js +0 -60
  169. package/dist/esm/ez-tabselector.entry.js +0 -194
  170. package/dist/esm/ez-text-area.entry.js +0 -110
  171. package/dist/esm/ez-text-input.entry.js +0 -197
  172. package/dist/esm/ez-time-input.entry.js +0 -114
  173. package/dist/esm/ez-toast.entry.js +0 -40
  174. package/dist/esm/ez-upload.entry.js +0 -352
  175. package/dist/esm/index-35088a3f.js +0 -1740
  176. package/dist/esm/test-du.entry.js +0 -72
  177. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-action-chip/ez-action-chip.css +0 -67
  178. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-application/ez-application.css +0 -3
  179. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-button/ez-button.css +0 -180
  180. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-calendar/ez-calendar.css +0 -319
  181. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-check/ez-check.css +0 -327
  182. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-collapsible-box/ez-collapsible-box.css +0 -162
  183. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-combo-box/ez-combo-box.css +0 -217
  184. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-date-input/ez-date-input.css +0 -49
  185. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-date-time-input/ez-date-time-input.css +0 -44
  186. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-dialog/ez-dialog.css +0 -527
  187. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-form/ez-form.css +0 -5
  188. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-grid/ez-grid.css +0 -31
  189. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-grid/subcomponents/gridconfig/grid-config.css +0 -129
  190. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-grid/subcomponents/select-box/select-box.css +0 -10
  191. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-icon/ez-icon.css +0 -176
  192. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-label-chip/ez-label-chip.css +0 -139
  193. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-list/ez-list.css +0 -335
  194. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-modal/ez-modal.css +0 -358
  195. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-number-input/ez-number-input.css +0 -4
  196. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-popover/ez-popover.css +0 -44
  197. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-popup/ez-popup.css +0 -405
  198. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-search/ez-search.css +0 -3
  199. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-tabselector/ez-tabselector.css +0 -138
  200. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-text-area/ez-text-area.css +0 -165
  201. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-text-input/ez-text-input.css +0 -196
  202. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-time-input/ez-time-input.css +0 -10
  203. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-toast/ez-toast.css +0 -127
  204. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/ez-upload/ez-upload.css +0 -568
  205. package/dist/node_modules/@sankhyalabs/ezui/dist/collection/components/test-du/test-du.css +0 -3
  206. package/dist/sankhyablocks/p-0183d259.entry.js +0 -1
  207. package/dist/sankhyablocks/p-01f23a70.entry.js +0 -1
  208. package/dist/sankhyablocks/p-07c32f68.entry.js +0 -1
  209. package/dist/sankhyablocks/p-0f90499d.entry.js +0 -1
  210. package/dist/sankhyablocks/p-105724a3.entry.js +0 -1
  211. package/dist/sankhyablocks/p-112455b1.js +0 -1
  212. package/dist/sankhyablocks/p-2ac02d48.entry.js +0 -1
  213. package/dist/sankhyablocks/p-35364a97.entry.js +0 -1
  214. package/dist/sankhyablocks/p-3f6aa9a7.entry.js +0 -1
  215. package/dist/sankhyablocks/p-4811bc0a.entry.js +0 -369
  216. package/dist/sankhyablocks/p-5f9af495.entry.js +0 -1
  217. package/dist/sankhyablocks/p-60967cf0.js +0 -1
  218. package/dist/sankhyablocks/p-70ad6c16.entry.js +0 -1
  219. package/dist/sankhyablocks/p-710bfffe.entry.js +0 -1
  220. package/dist/sankhyablocks/p-73397a0f.entry.js +0 -57
  221. package/dist/sankhyablocks/p-811b4b9d.js +0 -1
  222. package/dist/sankhyablocks/p-813fe4f7.js +0 -1
  223. package/dist/sankhyablocks/p-85a9446b.js +0 -2
  224. package/dist/sankhyablocks/p-89a1100f.entry.js +0 -1
  225. package/dist/sankhyablocks/p-8b543003.entry.js +0 -1
  226. package/dist/sankhyablocks/p-9750632b.entry.js +0 -1
  227. package/dist/sankhyablocks/p-a96272f7.entry.js +0 -1
  228. package/dist/sankhyablocks/p-ac8842e5.entry.js +0 -1
  229. package/dist/sankhyablocks/p-ba64cc41.entry.js +0 -1
  230. package/dist/sankhyablocks/p-c1ede043.entry.js +0 -1
  231. package/dist/sankhyablocks/p-d90ebb85.entry.js +0 -1
  232. package/dist/sankhyablocks/p-e5355a29.entry.js +0 -1
  233. package/dist/sankhyablocks/p-ef04b633.entry.js +0 -1
  234. package/dist/sankhyablocks/p-f6db07fb.entry.js +0 -1
  235. package/dist/sankhyablocks/p-f80cabc7.entry.js +0 -1
  236. package/dist/sankhyablocks/p-fcd9bd92.entry.js +0 -1
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,158 +1,158 @@
1
- import { batchRequests } from 'graphql-request';
2
- export class HttpFetcher {
3
- constructor() {
4
- this.watingRequestsById = new Map();
5
- }
6
- static get() {
7
- if (!HttpFetcher.instance) {
8
- HttpFetcher.instance = new HttpFetcher();
9
- const application = document.querySelector(this.appTagName);
10
- if (application === null) {
11
- HttpFetcher.instance.resume();
12
- }
13
- else {
14
- application.addEventListener('applicationLoading', () => HttpFetcher.instance.pause());
15
- application.addEventListener('applicationLoaded', () => HttpFetcher.instance.resume());
16
- }
17
- }
18
- return this.instance;
19
- }
20
- async callGraphQL(req) {
21
- var _a;
22
- const reqKey = this.getReqKey(req);
23
- req.queryID = reqKey;
24
- req.values.queryID = reqKey;
25
- if (this.ready) {
26
- return new Promise(async (resolve, reject) => {
27
- let query = this.getQueryTemplate(req);
28
- const res = await this.fecthGrapql([{ document: query, variables: req.values }]);
29
- if (res.errors.length > 0) {
30
- reject(res);
31
- }
32
- else {
33
- //resolve(res);
34
- //FIXME: Precisamos trabalhar melhor a resposta, quem chamou
35
- //a API não pode ficar responsavel por desempacotar... fiz uma
36
- //gambiarra aqui...
37
- resolve(res.data[0][reqKey]);
38
- }
39
- });
40
- }
41
- else {
42
- if (!this.watingRequestsById.has(reqKey)) {
43
- this.watingRequestsById.set(reqKey, new WaitingRequest(req));
44
- }
45
- return (_a = this.getWatingRequest(reqKey)) === null || _a === void 0 ? void 0 : _a.promise;
46
- }
47
- }
48
- getReqKey(req) {
49
- return window.btoa(this.hashCode(`${req.query}${JSON.stringify(req.values || "")}`)).replace(/=/g, "");
50
- }
51
- getQueryTemplate(re) {
52
- return (re.query || "").replaceAll("$queryAlias$", re.queryID);
53
- }
54
- getWatingRequest(reqID) {
55
- return this.watingRequestsById.get(reqID);
56
- }
57
- pause() {
58
- this.ready = false;
59
- }
60
- async resume() {
61
- this.ready = true;
62
- if (this.watingRequestsById.size > 0) {
63
- const requestsBatch = [];
64
- this.watingRequestsById.forEach(async (waitingReq) => {
65
- let query = this.getQueryTemplate(waitingReq.request);
66
- requestsBatch.push({ document: query, variables: Object.assign({}, waitingReq.request.values) });
67
- });
68
- let res = undefined;
69
- let dataResponse = [];
70
- let errorsResponse = [];
71
- res = await this.fecthGrapql(requestsBatch);
72
- dataResponse = res.data;
73
- errorsResponse = res.errors;
74
- //Reject promises with errors from query
75
- errorsResponse.forEach((errorResponse) => {
76
- Object.entries(errorResponse).forEach(([_key, val]) => {
77
- var _a;
78
- (((_a = this.getWatingRequest(val.request.variables[val.index].queryID)) === null || _a === void 0 ? void 0 : _a.reject) || Promise.reject)(val);
79
- });
80
- });
81
- //Resolve promises with data from query
82
- dataResponse.forEach((data) => {
83
- Object.entries(data).forEach(([key, val]) => {
84
- var _a;
85
- (((_a = this.getWatingRequest(key)) === null || _a === void 0 ? void 0 : _a.resolve) || Promise.resolve)(val);
86
- });
87
- });
88
- this.watingRequestsById.clear();
89
- }
90
- }
91
- async fecthGrapql(request) {
92
- let res = undefined;
93
- let dataResponse = [];
94
- let errorsResponse = [];
95
- try {
96
- res = await batchRequests('http://localhost:8082/', request);
97
- res.forEach((resItem) => {
98
- dataResponse.push(resItem.data);
99
- });
100
- }
101
- catch (err) {
102
- //TODO: Tratar erro quando não existir err.response
103
- res = err.response;
104
- const req = err.request;
105
- Object.entries(res).forEach(([key, val]) => {
106
- if (val.errors) {
107
- errorsResponse.push(val.errors.map((item) => {
108
- item.request = req;
109
- item.index = Number(key);
110
- return item;
111
- }));
112
- }
113
- else if (val.data) {
114
- dataResponse.push(val.data);
115
- }
116
- });
117
- }
118
- return { data: dataResponse, errors: errorsResponse };
119
- }
120
- //TODO: Mover este metodo para o @sankhyalabs/core classe string utils.
121
- hashCode(txt) {
122
- var hash = 0, i, chr;
123
- if (txt.length === 0)
124
- return hash.toString();
125
- for (i = 0; i < txt.length; i++) {
126
- chr = txt.charCodeAt(i);
127
- hash = ((hash << 5) - hash) + chr;
128
- hash |= 0; // Convert to 32bit integer
129
- }
130
- return hash.toString();
131
- }
132
- ;
133
- }
134
- HttpFetcher.appTagName = "snk-application";
135
- class WaitingRequest {
136
- constructor(req) {
137
- this._resolve = () => { };
138
- this._reject = () => { };
139
- this._request = undefined;
140
- this._request = req;
141
- this._promisse = new Promise((resolve, reject) => {
142
- this._resolve = resolve;
143
- this._reject = reject;
144
- });
145
- }
146
- get resolve() {
147
- return this._resolve;
148
- }
149
- get reject() {
150
- return this._reject;
151
- }
152
- get promise() {
153
- return this._promisse;
154
- }
155
- get request() {
156
- return this._request;
157
- }
158
- }
1
+ import { batchRequests } from 'graphql-request';
2
+ export class HttpFetcher {
3
+ constructor() {
4
+ this.watingRequestsById = new Map();
5
+ }
6
+ static get() {
7
+ if (!HttpFetcher.instance) {
8
+ HttpFetcher.instance = new HttpFetcher();
9
+ const application = document.querySelector(this.appTagName);
10
+ if (application === null) {
11
+ HttpFetcher.instance.resume();
12
+ }
13
+ else {
14
+ application.addEventListener('applicationLoading', () => HttpFetcher.instance.pause());
15
+ application.addEventListener('applicationLoaded', () => HttpFetcher.instance.resume());
16
+ }
17
+ }
18
+ return this.instance;
19
+ }
20
+ async callGraphQL(req) {
21
+ var _a;
22
+ const reqKey = this.getReqKey(req);
23
+ req.queryID = reqKey;
24
+ req.values.queryID = reqKey;
25
+ if (this.ready) {
26
+ return new Promise(async (resolve, reject) => {
27
+ let query = this.getQueryTemplate(req);
28
+ const res = await this.fecthGrapql([{ document: query, variables: req.values }]);
29
+ if (res.errors.length > 0) {
30
+ reject(res);
31
+ }
32
+ else {
33
+ //resolve(res);
34
+ //FIXME: Precisamos trabalhar melhor a resposta, quem chamou
35
+ //a API não pode ficar responsavel por desempacotar... fiz uma
36
+ //gambiarra aqui...
37
+ resolve(res.data[0][reqKey]);
38
+ }
39
+ });
40
+ }
41
+ else {
42
+ if (!this.watingRequestsById.has(reqKey)) {
43
+ this.watingRequestsById.set(reqKey, new WaitingRequest(req));
44
+ }
45
+ return (_a = this.getWatingRequest(reqKey)) === null || _a === void 0 ? void 0 : _a.promise;
46
+ }
47
+ }
48
+ getReqKey(req) {
49
+ return window.btoa(this.hashCode(`${req.query}${JSON.stringify(req.values || "")}`)).replace(/=/g, "");
50
+ }
51
+ getQueryTemplate(re) {
52
+ return (re.query || "").replaceAll("$queryAlias$", re.queryID);
53
+ }
54
+ getWatingRequest(reqID) {
55
+ return this.watingRequestsById.get(reqID);
56
+ }
57
+ pause() {
58
+ this.ready = false;
59
+ }
60
+ async resume() {
61
+ this.ready = true;
62
+ if (this.watingRequestsById.size > 0) {
63
+ const requestsBatch = [];
64
+ this.watingRequestsById.forEach(async (waitingReq) => {
65
+ let query = this.getQueryTemplate(waitingReq.request);
66
+ requestsBatch.push({ document: query, variables: Object.assign({}, waitingReq.request.values) });
67
+ });
68
+ let res = undefined;
69
+ let dataResponse = [];
70
+ let errorsResponse = [];
71
+ res = await this.fecthGrapql(requestsBatch);
72
+ dataResponse = res.data;
73
+ errorsResponse = res.errors;
74
+ //Reject promises with errors from query
75
+ errorsResponse.forEach((errorResponse) => {
76
+ Object.entries(errorResponse).forEach(([_key, val]) => {
77
+ var _a;
78
+ (((_a = this.getWatingRequest(val.request.variables[val.index].queryID)) === null || _a === void 0 ? void 0 : _a.reject) || Promise.reject)(val);
79
+ });
80
+ });
81
+ //Resolve promises with data from query
82
+ dataResponse.forEach((data) => {
83
+ Object.entries(data).forEach(([key, val]) => {
84
+ var _a;
85
+ (((_a = this.getWatingRequest(key)) === null || _a === void 0 ? void 0 : _a.resolve) || Promise.resolve)(val);
86
+ });
87
+ });
88
+ this.watingRequestsById.clear();
89
+ }
90
+ }
91
+ async fecthGrapql(request) {
92
+ let res = undefined;
93
+ let dataResponse = [];
94
+ let errorsResponse = [];
95
+ try {
96
+ res = await batchRequests('http://localhost:8082/', request);
97
+ res.forEach((resItem) => {
98
+ dataResponse.push(resItem.data);
99
+ });
100
+ }
101
+ catch (err) {
102
+ //TODO: Tratar erro quando não existir err.response
103
+ res = err.response;
104
+ const req = err.request;
105
+ Object.entries(res).forEach(([key, val]) => {
106
+ if (val.errors) {
107
+ errorsResponse.push(val.errors.map((item) => {
108
+ item.request = req;
109
+ item.index = Number(key);
110
+ return item;
111
+ }));
112
+ }
113
+ else if (val.data) {
114
+ dataResponse.push(val.data);
115
+ }
116
+ });
117
+ }
118
+ return { data: dataResponse, errors: errorsResponse };
119
+ }
120
+ //TODO: Mover este metodo para o @sankhyalabs/core classe string utils.
121
+ hashCode(txt) {
122
+ var hash = 0, i, chr;
123
+ if (txt.length === 0)
124
+ return hash.toString();
125
+ for (i = 0; i < txt.length; i++) {
126
+ chr = txt.charCodeAt(i);
127
+ hash = ((hash << 5) - hash) + chr;
128
+ hash |= 0; // Convert to 32bit integer
129
+ }
130
+ return hash.toString();
131
+ }
132
+ ;
133
+ }
134
+ HttpFetcher.appTagName = "snk-application";
135
+ class WaitingRequest {
136
+ constructor(req) {
137
+ this._resolve = () => { };
138
+ this._reject = () => { };
139
+ this._request = undefined;
140
+ this._request = req;
141
+ this._promisse = new Promise((resolve, reject) => {
142
+ this._resolve = resolve;
143
+ this._reject = reject;
144
+ });
145
+ }
146
+ get resolve() {
147
+ return this._resolve;
148
+ }
149
+ get reject() {
150
+ return this._reject;
151
+ }
152
+ get promise() {
153
+ return this._promisse;
154
+ }
155
+ get request() {
156
+ return this._request;
157
+ }
158
+ }
@@ -1,23 +1,23 @@
1
- import { gql } from "graphql-request";
2
- import { HttpFetcher } from "../DataFetcher";
3
- export default class ApplicationConfigFetcher {
4
- constructor() {
5
- this.templateByQuery = new Map();
6
- this.buldTemplates();
7
- }
8
- buldTemplates() {
9
- this.templateByQuery.set("getResource", gql `query($name: String!) {
10
- $queryAlias$: getResource(name: $name){
11
- name
12
- resource
13
- }
14
- }`);
15
- }
16
- getResource(name, resourceID) {
17
- const completPath = `cfg://app/${resourceID}/${name}`;
18
- return HttpFetcher.get().callGraphQL({
19
- values: { name: completPath },
20
- query: this.templateByQuery.get("getResource"),
21
- });
22
- }
23
- }
1
+ import { gql } from "graphql-request";
2
+ import { HttpFetcher } from "../DataFetcher";
3
+ export default class ApplicationConfigFetcher {
4
+ constructor() {
5
+ this.templateByQuery = new Map();
6
+ this.buldTemplates();
7
+ }
8
+ buldTemplates() {
9
+ this.templateByQuery.set("getResource", gql `query($name: String!) {
10
+ $queryAlias$: getResource(name: $name){
11
+ name
12
+ resource
13
+ }
14
+ }`);
15
+ }
16
+ getResource(name, resourceID) {
17
+ const completPath = `cfg://app/${resourceID}/${name}`;
18
+ return HttpFetcher.get().callGraphQL({
19
+ values: { name: completPath },
20
+ query: this.templateByQuery.get("getResource"),
21
+ });
22
+ }
23
+ }