@vuu-ui/vuu-data-test 2.1.17 → 2.1.19-beta.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 (218) hide show
  1. package/package.json +9 -11
  2. package/types/TickingArrayDataSource.d.ts +1 -1
  3. package/types/basket/BasketModule.d.ts +9 -9
  4. package/types/basket/reference-data/prices.d.ts +1 -1
  5. package/types/core/module/VuuModule.d.ts +1 -1
  6. package/types/simul/reference-data/instruments-extended.d.ts +1 -1
  7. package/types/simul/reference-data/instruments.d.ts +1 -1
  8. package/types/simul/reference-data/orders.d.ts +1 -1
  9. package/types/simul/reference-data/parent-child-orders.d.ts +2 -2
  10. package/types/simul/reference-data/prices.d.ts +1 -1
  11. package/cjs/ArrayProxy.js +0 -72
  12. package/cjs/ArrayProxy.js.map +0 -1
  13. package/cjs/RuntimeVisualLink.js +0 -73
  14. package/cjs/RuntimeVisualLink.js.map +0 -1
  15. package/cjs/SessionTable.js +0 -68
  16. package/cjs/SessionTable.js.map +0 -1
  17. package/cjs/Table.js +0 -128
  18. package/cjs/Table.js.map +0 -1
  19. package/cjs/TickingArrayDataSource.js +0 -316
  20. package/cjs/TickingArrayDataSource.js.map +0 -1
  21. package/cjs/UpdateGenerator.js +0 -94
  22. package/cjs/UpdateGenerator.js.map +0 -1
  23. package/cjs/basket/BasketModule.js +0 -282
  24. package/cjs/basket/BasketModule.js.map +0 -1
  25. package/cjs/basket/basket-schemas.js +0 -123
  26. package/cjs/basket/basket-schemas.js.map +0 -1
  27. package/cjs/basket/reference-data/constituents.js +0 -40
  28. package/cjs/basket/reference-data/constituents.js.map +0 -1
  29. package/cjs/basket/reference-data/ftse100.js +0 -105
  30. package/cjs/basket/reference-data/ftse100.js.map +0 -1
  31. package/cjs/basket/reference-data/hsi.js +0 -87
  32. package/cjs/basket/reference-data/hsi.js.map +0 -1
  33. package/cjs/basket/reference-data/nasdaq100.js +0 -108
  34. package/cjs/basket/reference-data/nasdaq100.js.map +0 -1
  35. package/cjs/basket/reference-data/sp500.js +0 -46
  36. package/cjs/basket/reference-data/sp500.js.map +0 -1
  37. package/cjs/core/module/ModuleContainer.js +0 -43
  38. package/cjs/core/module/ModuleContainer.js.map +0 -1
  39. package/cjs/core/module/VuuModule.js +0 -649
  40. package/cjs/core/module/VuuModule.js.map +0 -1
  41. package/cjs/core/table/TableContainer.js +0 -139
  42. package/cjs/core/table/TableContainer.js.map +0 -1
  43. package/cjs/data-utils.js +0 -47
  44. package/cjs/data-utils.js.map +0 -1
  45. package/cjs/index.js +0 -46
  46. package/cjs/index.js.map +0 -1
  47. package/cjs/local-datasource-provider/LocalDatasourceProvider.js +0 -70
  48. package/cjs/local-datasource-provider/LocalDatasourceProvider.js.map +0 -1
  49. package/cjs/makeSuggestions.js +0 -26
  50. package/cjs/makeSuggestions.js.map +0 -1
  51. package/cjs/schemas.js +0 -28
  52. package/cjs/schemas.js.map +0 -1
  53. package/cjs/session-table-utils.js +0 -12
  54. package/cjs/session-table-utils.js.map +0 -1
  55. package/cjs/simul/SimulModule.js +0 -187
  56. package/cjs/simul/SimulModule.js.map +0 -1
  57. package/cjs/simul/reference-data/accounts.js +0 -27
  58. package/cjs/simul/reference-data/accounts.js.map +0 -1
  59. package/cjs/simul/reference-data/algos.js +0 -6
  60. package/cjs/simul/reference-data/algos.js.map +0 -1
  61. package/cjs/simul/reference-data/currencies.js +0 -6
  62. package/cjs/simul/reference-data/currencies.js.map +0 -1
  63. package/cjs/simul/reference-data/instruments-extended.js +0 -19
  64. package/cjs/simul/reference-data/instruments-extended.js.map +0 -1
  65. package/cjs/simul/reference-data/instruments.js +0 -85
  66. package/cjs/simul/reference-data/instruments.js.map +0 -1
  67. package/cjs/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js +0 -6
  68. package/cjs/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js.map +0 -1
  69. package/cjs/simul/reference-data/isin-generator/fixtures/alphabet.js +0 -31
  70. package/cjs/simul/reference-data/isin-generator/fixtures/alphabet.js.map +0 -1
  71. package/cjs/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js +0 -9
  72. package/cjs/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js.map +0 -1
  73. package/cjs/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js +0 -17
  74. package/cjs/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js.map +0 -1
  75. package/cjs/simul/reference-data/isin-generator/generate-cusip-check-code.js +0 -24
  76. package/cjs/simul/reference-data/isin-generator/generate-cusip-check-code.js.map +0 -1
  77. package/cjs/simul/reference-data/isin-generator/generate-cusip-without-check-code.js +0 -13
  78. package/cjs/simul/reference-data/isin-generator/generate-cusip-without-check-code.js.map +0 -1
  79. package/cjs/simul/reference-data/isin-generator/generate-cusip.js +0 -13
  80. package/cjs/simul/reference-data/isin-generator/generate-cusip.js.map +0 -1
  81. package/cjs/simul/reference-data/isin-generator/generate-random-alphanumeric.js +0 -8
  82. package/cjs/simul/reference-data/isin-generator/generate-random-alphanumeric.js.map +0 -1
  83. package/cjs/simul/reference-data/isin-generator/generate-random-base-ten-number.js +0 -6
  84. package/cjs/simul/reference-data/isin-generator/generate-random-base-ten-number.js.map +0 -1
  85. package/cjs/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js +0 -14
  86. package/cjs/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js.map +0 -1
  87. package/cjs/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js +0 -14
  88. package/cjs/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js.map +0 -1
  89. package/cjs/simul/reference-data/isin-generator/index.js +0 -295
  90. package/cjs/simul/reference-data/isin-generator/index.js.map +0 -1
  91. package/cjs/simul/reference-data/isin-generator/is-odd.js +0 -6
  92. package/cjs/simul/reference-data/isin-generator/is-odd.js.map +0 -1
  93. package/cjs/simul/reference-data/locations.js +0 -17
  94. package/cjs/simul/reference-data/locations.js.map +0 -1
  95. package/cjs/simul/reference-data/lotsizes.js +0 -28
  96. package/cjs/simul/reference-data/lotsizes.js.map +0 -1
  97. package/cjs/simul/reference-data/orderStatus.js +0 -6
  98. package/cjs/simul/reference-data/orderStatus.js.map +0 -1
  99. package/cjs/simul/reference-data/orders.js +0 -55
  100. package/cjs/simul/reference-data/orders.js.map +0 -1
  101. package/cjs/simul/reference-data/parent-child-orders.js +0 -144
  102. package/cjs/simul/reference-data/parent-child-orders.js.map +0 -1
  103. package/cjs/simul/reference-data/prices.js +0 -89
  104. package/cjs/simul/reference-data/prices.js.map +0 -1
  105. package/cjs/simul/reference-data/sides.js +0 -6
  106. package/cjs/simul/reference-data/sides.js.map +0 -1
  107. package/cjs/simul/simul-schemas.js +0 -150
  108. package/cjs/simul/simul-schemas.js.map +0 -1
  109. package/cjs/test/TestModule.js +0 -86
  110. package/cjs/test/TestModule.js.map +0 -1
  111. package/cjs/test/test-schemas.js +0 -52
  112. package/cjs/test/test-schemas.js.map +0 -1
  113. package/cjs/vuu-row-generator.js +0 -74
  114. package/cjs/vuu-row-generator.js.map +0 -1
  115. package/esm/ArrayProxy.js +0 -70
  116. package/esm/ArrayProxy.js.map +0 -1
  117. package/esm/RuntimeVisualLink.js +0 -71
  118. package/esm/RuntimeVisualLink.js.map +0 -1
  119. package/esm/SessionTable.js +0 -65
  120. package/esm/SessionTable.js.map +0 -1
  121. package/esm/Table.js +0 -124
  122. package/esm/Table.js.map +0 -1
  123. package/esm/TickingArrayDataSource.js +0 -314
  124. package/esm/TickingArrayDataSource.js.map +0 -1
  125. package/esm/UpdateGenerator.js +0 -92
  126. package/esm/UpdateGenerator.js.map +0 -1
  127. package/esm/basket/BasketModule.js +0 -278
  128. package/esm/basket/BasketModule.js.map +0 -1
  129. package/esm/basket/basket-schemas.js +0 -120
  130. package/esm/basket/basket-schemas.js.map +0 -1
  131. package/esm/basket/reference-data/constituents.js +0 -38
  132. package/esm/basket/reference-data/constituents.js.map +0 -1
  133. package/esm/basket/reference-data/ftse100.js +0 -103
  134. package/esm/basket/reference-data/ftse100.js.map +0 -1
  135. package/esm/basket/reference-data/hsi.js +0 -85
  136. package/esm/basket/reference-data/hsi.js.map +0 -1
  137. package/esm/basket/reference-data/nasdaq100.js +0 -106
  138. package/esm/basket/reference-data/nasdaq100.js.map +0 -1
  139. package/esm/basket/reference-data/sp500.js +0 -44
  140. package/esm/basket/reference-data/sp500.js.map +0 -1
  141. package/esm/core/module/ModuleContainer.js +0 -41
  142. package/esm/core/module/ModuleContainer.js.map +0 -1
  143. package/esm/core/module/VuuModule.js +0 -647
  144. package/esm/core/module/VuuModule.js.map +0 -1
  145. package/esm/core/table/TableContainer.js +0 -137
  146. package/esm/core/table/TableContainer.js.map +0 -1
  147. package/esm/data-utils.js +0 -43
  148. package/esm/data-utils.js.map +0 -1
  149. package/esm/index.js +0 -16
  150. package/esm/index.js.map +0 -1
  151. package/esm/local-datasource-provider/LocalDatasourceProvider.js +0 -68
  152. package/esm/local-datasource-provider/LocalDatasourceProvider.js.map +0 -1
  153. package/esm/makeSuggestions.js +0 -24
  154. package/esm/makeSuggestions.js.map +0 -1
  155. package/esm/schemas.js +0 -24
  156. package/esm/schemas.js.map +0 -1
  157. package/esm/session-table-utils.js +0 -10
  158. package/esm/session-table-utils.js.map +0 -1
  159. package/esm/simul/SimulModule.js +0 -184
  160. package/esm/simul/SimulModule.js.map +0 -1
  161. package/esm/simul/reference-data/accounts.js +0 -25
  162. package/esm/simul/reference-data/accounts.js.map +0 -1
  163. package/esm/simul/reference-data/algos.js +0 -4
  164. package/esm/simul/reference-data/algos.js.map +0 -1
  165. package/esm/simul/reference-data/currencies.js +0 -4
  166. package/esm/simul/reference-data/currencies.js.map +0 -1
  167. package/esm/simul/reference-data/instruments-extended.js +0 -17
  168. package/esm/simul/reference-data/instruments-extended.js.map +0 -1
  169. package/esm/simul/reference-data/instruments.js +0 -80
  170. package/esm/simul/reference-data/instruments.js.map +0 -1
  171. package/esm/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js +0 -4
  172. package/esm/simul/reference-data/isin-generator/convert-string-to-base-ten-number.js.map +0 -1
  173. package/esm/simul/reference-data/isin-generator/fixtures/alphabet.js +0 -29
  174. package/esm/simul/reference-data/isin-generator/fixtures/alphabet.js.map +0 -1
  175. package/esm/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js +0 -7
  176. package/esm/simul/reference-data/isin-generator/fixtures/alphanumeric-values.js.map +0 -1
  177. package/esm/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js +0 -15
  178. package/esm/simul/reference-data/isin-generator/fixtures/base-ten-numbers.js.map +0 -1
  179. package/esm/simul/reference-data/isin-generator/generate-cusip-check-code.js +0 -22
  180. package/esm/simul/reference-data/isin-generator/generate-cusip-check-code.js.map +0 -1
  181. package/esm/simul/reference-data/isin-generator/generate-cusip-without-check-code.js +0 -11
  182. package/esm/simul/reference-data/isin-generator/generate-cusip-without-check-code.js.map +0 -1
  183. package/esm/simul/reference-data/isin-generator/generate-cusip.js +0 -11
  184. package/esm/simul/reference-data/isin-generator/generate-cusip.js.map +0 -1
  185. package/esm/simul/reference-data/isin-generator/generate-random-alphanumeric.js +0 -6
  186. package/esm/simul/reference-data/isin-generator/generate-random-alphanumeric.js.map +0 -1
  187. package/esm/simul/reference-data/isin-generator/generate-random-base-ten-number.js +0 -4
  188. package/esm/simul/reference-data/isin-generator/generate-random-base-ten-number.js.map +0 -1
  189. package/esm/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js +0 -12
  190. package/esm/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.js.map +0 -1
  191. package/esm/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js +0 -12
  192. package/esm/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.js.map +0 -1
  193. package/esm/simul/reference-data/isin-generator/index.js +0 -293
  194. package/esm/simul/reference-data/isin-generator/index.js.map +0 -1
  195. package/esm/simul/reference-data/isin-generator/is-odd.js +0 -4
  196. package/esm/simul/reference-data/isin-generator/is-odd.js.map +0 -1
  197. package/esm/simul/reference-data/locations.js +0 -14
  198. package/esm/simul/reference-data/locations.js.map +0 -1
  199. package/esm/simul/reference-data/lotsizes.js +0 -26
  200. package/esm/simul/reference-data/lotsizes.js.map +0 -1
  201. package/esm/simul/reference-data/orderStatus.js +0 -4
  202. package/esm/simul/reference-data/orderStatus.js.map +0 -1
  203. package/esm/simul/reference-data/orders.js +0 -52
  204. package/esm/simul/reference-data/orders.js.map +0 -1
  205. package/esm/simul/reference-data/parent-child-orders.js +0 -139
  206. package/esm/simul/reference-data/parent-child-orders.js.map +0 -1
  207. package/esm/simul/reference-data/prices.js +0 -86
  208. package/esm/simul/reference-data/prices.js.map +0 -1
  209. package/esm/simul/reference-data/sides.js +0 -4
  210. package/esm/simul/reference-data/sides.js.map +0 -1
  211. package/esm/simul/simul-schemas.js +0 -147
  212. package/esm/simul/simul-schemas.js.map +0 -1
  213. package/esm/test/TestModule.js +0 -84
  214. package/esm/test/TestModule.js.map +0 -1
  215. package/esm/test/test-schemas.js +0 -50
  216. package/esm/test/test-schemas.js.map +0 -1
  217. package/esm/vuu-row-generator.js +0 -68
  218. package/esm/vuu-row-generator.js.map +0 -1
@@ -1,316 +0,0 @@
1
- 'use strict';
2
-
3
- var vuuDataLocal = require('@vuu-ui/vuu-data-local');
4
- var vuuUtils = require('@vuu-ui/vuu-utils');
5
- var makeSuggestions = require('./makeSuggestions.js');
6
-
7
- var __defProp = Object.defineProperty;
8
- var __typeError = (msg) => {
9
- throw TypeError(msg);
10
- };
11
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
12
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
13
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
14
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), member.get(obj));
15
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
16
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
17
- var _menuRpcServices, _pendingVisualLink, _rpcMenuServices, _rpcServices, _sessionTables, _sessionDataSource, _table, _selectionLinkSubscribers, _visualLinkService, _getVisualLinks, _vuuModule;
18
- class TickingArrayDataSource extends vuuDataLocal.ArrayDataSource {
19
- constructor({
20
- data,
21
- getVisualLinks,
22
- rpcServices,
23
- rpcMenuServices,
24
- sessionTables,
25
- table,
26
- menu,
27
- visualLink,
28
- visualLinkService,
29
- vuuModule,
30
- ...arrayDataSourceProps
31
- }) {
32
- if (data === void 0 && table === void 0) {
33
- throw Error("TickingArrayDataSource must be constructed with data");
34
- }
35
- super({
36
- ...arrayDataSourceProps,
37
- data: data ?? table?.data ?? [],
38
- dataMap: table?.map
39
- });
40
- __privateAdd(this, _menuRpcServices);
41
- __privateAdd(this, _pendingVisualLink);
42
- __privateAdd(this, _rpcMenuServices);
43
- __privateAdd(this, _rpcServices);
44
- // A reference to session tables hosted within client side module
45
- __privateAdd(this, _sessionTables);
46
- __privateAdd(this, _sessionDataSource);
47
- __privateAdd(this, _table);
48
- __privateAdd(this, _selectionLinkSubscribers);
49
- __privateAdd(this, _visualLinkService);
50
- __privateAdd(this, _getVisualLinks);
51
- __privateAdd(this, _vuuModule);
52
- __publicField(this, "updateRowWithSessionCheck", (row, columnName, sessionId) => {
53
- if (sessionId && sessionId === this.viewport) {
54
- this.updateRow(row, columnName);
55
- } else if (sessionId) {
56
- console.warn("THIS IS NEVER EXPECTED TO HAPPEN");
57
- } else if (__privateGet(this, _sessionDataSource)) ; else {
58
- this.updateRow(row, columnName);
59
- }
60
- });
61
- __publicField(this, "handleSessionMessage", (msg) => {
62
- if (msg.type === "subscribed") ; else if (msg.type === "viewport-update") {
63
- if (msg.size !== void 0 && msg.size !== this.size) {
64
- this.emit("resize", msg.size);
65
- }
66
- this.clientCallback?.(msg);
67
- }
68
- });
69
- this._menu = menu;
70
- __privateSet(this, _rpcMenuServices, rpcMenuServices);
71
- __privateSet(this, _pendingVisualLink, visualLink);
72
- __privateSet(this, _rpcServices, rpcServices);
73
- __privateSet(this, _sessionTables, sessionTables);
74
- __privateSet(this, _table, table);
75
- __privateSet(this, _visualLinkService, visualLinkService);
76
- __privateSet(this, _getVisualLinks, getVisualLinks);
77
- __privateSet(this, _vuuModule, vuuModule);
78
- if (table) {
79
- this.tableSchema = table.schema;
80
- table.on("insert", this.insert);
81
- table.on("update", this.updateRowWithSessionCheck);
82
- table.on("delete", this.deleteRow);
83
- }
84
- }
85
- async subscribe(subscribeProps, callback) {
86
- const subscription = super.subscribe(subscribeProps, callback);
87
- if (__privateGet(this, _pendingVisualLink)) {
88
- this.visualLink = __privateGet(this, _pendingVisualLink);
89
- __privateSet(this, _pendingVisualLink, void 0);
90
- }
91
- return subscription;
92
- }
93
- unsubscribe() {
94
- super.unsubscribe();
95
- __privateSet(this, _table, void 0);
96
- }
97
- set range(range) {
98
- super.range = range;
99
- }
100
- get range() {
101
- return super.range;
102
- }
103
- set links(links) {
104
- super.links = links;
105
- }
106
- get links() {
107
- var _a;
108
- return (_a = __privateGet(this, _getVisualLinks)) == null ? void 0 : _a.call(this, this.table.table);
109
- }
110
- getSelectedRowIds() {
111
- return Array.from(this.selectedRows);
112
- }
113
- createSessionDataSource(sessionTable) {
114
- if (__privateGet(this, _vuuModule)) {
115
- return __privateGet(this, _vuuModule)?.createDataSource(
116
- sessionTable.table,
117
- sessionTable.table
118
- );
119
- } else {
120
- throw Error(
121
- `[TickingArrayDataSource] unable to createSessionDataSource, not constructed with VuuModule`
122
- );
123
- }
124
- }
125
- async beginEditSession(editSessionMode = "inline-all-rows") {
126
- const rpcResponse = await this?.rpcRequest?.({
127
- type: "RPC_REQUEST",
128
- rpcName: "beginEditSession",
129
- params: {
130
- editSessionMode
131
- }
132
- });
133
- if (vuuUtils.isRpcSuccess(rpcResponse)) {
134
- const { table: sessionTable } = rpcResponse.data;
135
- if (vuuUtils.isInlineEditingSession(editSessionMode)) {
136
- __privateSet(this, _sessionDataSource, __privateGet(this, _vuuModule)?.createDataSource(
137
- sessionTable.table,
138
- sessionTable.table,
139
- this.config
140
- ));
141
- __privateGet(this, _sessionDataSource)?.subscribe(
142
- {
143
- range: this.range
144
- },
145
- this.handleSessionMessage
146
- );
147
- } else {
148
- return __privateGet(this, _vuuModule)?.createDataSource(
149
- sessionTable.table,
150
- sessionTable.table,
151
- this.config
152
- );
153
- }
154
- } else {
155
- throw Error(
156
- `[VuuDataSource] beginEditSession ${rpcResponse.errorMessage}`
157
- );
158
- }
159
- }
160
- async editCell(key, column, data) {
161
- console.log(
162
- `[VuuDataSource] editCell ${__privateGet(this, _sessionDataSource)?.viewport} rowKey ${key}, column ${column}, value ${data}`
163
- );
164
- const rpcHost = __privateGet(this, _sessionDataSource) ?? this;
165
- return rpcHost.rpcRequest?.({
166
- type: "RPC_REQUEST",
167
- rpcName: "editCell",
168
- params: {
169
- column,
170
- data,
171
- key
172
- }
173
- });
174
- }
175
- async endEditSession(saveChanges = false) {
176
- const type = "RPC_REQUEST";
177
- const rpcName = "endEditSession";
178
- const sessionDataSource = __privateGet(this, _sessionDataSource);
179
- const rpcHost = sessionDataSource ?? this;
180
- if (sessionDataSource) {
181
- __privateSet(this, _sessionDataSource, void 0);
182
- }
183
- const rpcResponse = await rpcHost.rpcRequest?.(
184
- saveChanges ? { type, rpcName, params: { save: true } } : { type, rpcName, params: {} }
185
- );
186
- if (vuuUtils.isRpcSuccess(rpcResponse)) {
187
- sessionDataSource?.unsubscribe();
188
- this.sendRowsToClient(true);
189
- } else {
190
- if (rpcResponse?.errorMessage === "stale update") {
191
- sessionDataSource?.unsubscribe();
192
- this.sendRowsToClient(true);
193
- } else {
194
- throw Error("unknown error");
195
- }
196
- }
197
- }
198
- async rpcRequest(rpcRequest) {
199
- if (vuuUtils.isTypeaheadRequest(rpcRequest)) {
200
- const {
201
- params: { column, starts }
202
- } = rpcRequest;
203
- const data = await this.getTypeaheadSuggestions(column, starts);
204
- return {
205
- type: "SUCCESS_RESULT",
206
- data
207
- };
208
- } else {
209
- const rpcService = __privateGet(this, _rpcServices)?.find(
210
- (service) => service.rpcName === rpcRequest.rpcName
211
- );
212
- if (rpcService) {
213
- return rpcService.service({
214
- ...rpcRequest,
215
- context: {
216
- type: "VIEWPORT_CONTEXT",
217
- viewPortId: this.viewport
218
- }
219
- });
220
- } else {
221
- throw Error(
222
- `[TickingArrayDataSource] no service to handle RPC request ${rpcRequest.rpcName}`
223
- );
224
- }
225
- }
226
- }
227
- async menuRpcCall(rpcRequest) {
228
- const rpcService = __privateGet(this, _rpcMenuServices)?.find(
229
- (service) => service.rpcName === rpcRequest.rpcName
230
- );
231
- if (rpcService) {
232
- return rpcService.service({
233
- ...rpcRequest,
234
- vpId: this.viewport
235
- });
236
- } else {
237
- throw Error(
238
- `[TickingArrayDataSource] menuRpcCall no service for ${rpcRequest.rpcName}`
239
- );
240
- }
241
- }
242
- getTypeaheadSuggestions(column, pattern) {
243
- if (__privateGet(this, _table)) {
244
- const columnIndex = this.columnMap[column];
245
- if (columnIndex === void 0) {
246
- console.warn(
247
- `[TickingArrayDataSource] getTypeaheadSuggestions. No column ${column}`
248
- );
249
- return Promise.resolve([]);
250
- } else {
251
- return makeSuggestions.makeSuggestions(this.currentData, columnIndex, pattern);
252
- }
253
- } else {
254
- throw Error(
255
- "cannot call getTypeaheadSuggestions on TickingDataSource if table has not been provided"
256
- );
257
- }
258
- }
259
- get visualLink() {
260
- return this._config.visualLink;
261
- }
262
- set visualLink(visualLink) {
263
- var _a, _b;
264
- this._config = {
265
- ...this._config,
266
- visualLink
267
- };
268
- if (visualLink) {
269
- const {
270
- parentClientVpId,
271
- link: { fromColumn, toColumn }
272
- } = visualLink;
273
- if (this.viewport) {
274
- (_a = __privateGet(this, _visualLinkService)) == null ? void 0 : _a.call(this, {
275
- childVpId: this.viewport,
276
- childColumnName: fromColumn,
277
- type: "CREATE_VISUAL_LINK",
278
- parentVpId: parentClientVpId,
279
- parentColumnName: toColumn
280
- }).then((response) => {
281
- this.emit(
282
- "visual-link-created",
283
- response
284
- );
285
- });
286
- }
287
- } else {
288
- (_b = __privateGet(this, _visualLinkService)) == null ? void 0 : _b.call(this, {
289
- childVpId: this.viewport,
290
- type: "REMOVE_VISUAL_LINK"
291
- }).then(() => {
292
- this.emit("visual-link-removed");
293
- });
294
- }
295
- }
296
- freeze() {
297
- super.freeze();
298
- }
299
- unfreeze() {
300
- super.unfreeze();
301
- }
302
- }
303
- _menuRpcServices = new WeakMap();
304
- _pendingVisualLink = new WeakMap();
305
- _rpcMenuServices = new WeakMap();
306
- _rpcServices = new WeakMap();
307
- _sessionTables = new WeakMap();
308
- _sessionDataSource = new WeakMap();
309
- _table = new WeakMap();
310
- _selectionLinkSubscribers = new WeakMap();
311
- _visualLinkService = new WeakMap();
312
- _getVisualLinks = new WeakMap();
313
- _vuuModule = new WeakMap();
314
-
315
- exports.TickingArrayDataSource = TickingArrayDataSource;
316
- //# sourceMappingURL=TickingArrayDataSource.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TickingArrayDataSource.js","sources":["../../../packages/vuu-data-test/src/TickingArrayDataSource.ts"],"sourcesContent":["import {\n ArrayDataSource,\n ArrayDataSourceConstructorProps,\n} from \"@vuu-ui/vuu-data-local\";\nimport type {\n DataSource,\n DataSourceCallbackMessage,\n DataSourceSubscribeCallback,\n DataSourceSubscribeProps,\n DataSourceVisualLinkCreatedMessage,\n EditSessionMode,\n} from \"@vuu-ui/vuu-data-types\";\nimport type {\n LinkDescriptorWithLabel,\n RpcResultError,\n RpcResultSuccess,\n VuuCreateVisualLink,\n VuuMenu,\n VuuRemoveVisualLink,\n VuuRowDataItemType,\n VuuRpcMenuRequest,\n VuuRpcMenuResponse,\n VuuRpcServiceRequest,\n VuuTable,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { isRpcSuccess, isTypeaheadRequest, Range } from \"@vuu-ui/vuu-utils\";\nimport {\n IVuuModule,\n RpcMenuService,\n RpcService,\n SessionTableMap,\n} from \"./core/module/VuuModule\";\nimport { makeSuggestions } from \"./makeSuggestions\";\nimport { Table } from \"./Table\";\nimport { isInlineEditingSession } from \"@vuu-ui/vuu-utils\";\n\nexport type VisualLinkHandler = (\n message: VuuCreateVisualLink | VuuRemoveVisualLink,\n) => Promise<DataSourceVisualLinkCreatedMessage | void>;\n\nexport interface TickingArrayDataSourceConstructorProps\n extends Omit<ArrayDataSourceConstructorProps, \"data\"> {\n data?: Array<VuuRowDataItemType[]>;\n getVisualLinks?: (tableName: string) => LinkDescriptorWithLabel[] | undefined;\n menu?: VuuMenu;\n rpcMenuServices?: RpcMenuService[];\n rpcServices?: RpcService[];\n sessionTables?: SessionTableMap;\n table?: Table;\n visualLinkService?: VisualLinkHandler;\n vuuModule?: IVuuModule;\n}\n\ntype LinkSubscription = {\n sourceColumnName?: string;\n columnName: string;\n linkType: \"subscribe-link-filter\" | \"subscribe-link-select\";\n};\n\nexport class TickingArrayDataSource extends ArrayDataSource {\n #menuRpcServices: RpcService[] | undefined;\n #pendingVisualLink?: LinkDescriptorWithLabel;\n #rpcMenuServices: RpcMenuService[] | undefined;\n #rpcServices: RpcService[] | undefined;\n // A reference to session tables hosted within client side module\n #sessionTables: SessionTableMap | undefined;\n #sessionDataSource: DataSource | undefined = undefined;\n #table?: Table;\n #selectionLinkSubscribers: Map<string, LinkSubscription> | undefined;\n #visualLinkService?: VisualLinkHandler;\n #getVisualLinks?: (\n tableName: string,\n ) => LinkDescriptorWithLabel[] | undefined;\n #vuuModule?: IVuuModule;\n\n constructor({\n data,\n getVisualLinks,\n rpcServices,\n rpcMenuServices,\n sessionTables,\n table,\n menu,\n visualLink,\n visualLinkService,\n vuuModule,\n ...arrayDataSourceProps\n }: TickingArrayDataSourceConstructorProps) {\n if (data === undefined && table === undefined) {\n throw Error(\"TickingArrayDataSource must be constructed with data\");\n }\n super({\n ...arrayDataSourceProps,\n data: data ?? table?.data ?? [],\n dataMap: table?.map,\n });\n this._menu = menu;\n\n this.#rpcMenuServices = rpcMenuServices;\n this.#pendingVisualLink = visualLink;\n this.#rpcServices = rpcServices;\n this.#sessionTables = sessionTables;\n this.#table = table;\n this.#visualLinkService = visualLinkService;\n this.#getVisualLinks = getVisualLinks;\n this.#vuuModule = vuuModule;\n\n if (table) {\n this.tableSchema = table.schema;\n table.on(\"insert\", this.insert);\n table.on(\"update\", this.updateRowWithSessionCheck);\n table.on(\"delete\", this.deleteRow);\n }\n }\n\n updateRowWithSessionCheck = (\n row: VuuRowDataItemType[],\n columnName?: string,\n sessionId?: string,\n ) => {\n if (sessionId && sessionId === this.viewport) {\n this.updateRow(row, columnName);\n } else if (sessionId) {\n // will never happen\n console.warn(\"THIS IS NEVER EXPECTED TO HAPPEN\");\n } else if (this.#sessionDataSource) {\n // queue updates for deferred application, issue warnings when edits in progress\n // this.emit(\"remote-update-during-local-edit\", row);\n } else {\n this.updateRow(row, columnName);\n }\n };\n\n async subscribe(\n subscribeProps: DataSourceSubscribeProps,\n callback: DataSourceSubscribeCallback,\n ) {\n const subscription = super.subscribe(subscribeProps, callback);\n // if (subscribeProps.range) {\n // this.#updateGenerator?.setRange(subscribeProps.range);\n // }\n if (this.#pendingVisualLink) {\n this.visualLink = this.#pendingVisualLink;\n this.#pendingVisualLink = undefined;\n }\n\n return subscription;\n }\n\n unsubscribe() {\n super.unsubscribe();\n this.#table = undefined;\n }\n\n set range(range: Range) {\n super.range = range;\n // this.#updateGenerator?.setRange(range);\n }\n get range() {\n return super.range;\n }\n\n set links(links: LinkDescriptorWithLabel[] | undefined) {\n super.links = links;\n }\n\n get links() {\n return this.#getVisualLinks?.(this.table.table);\n }\n\n getSelectedRowIds() {\n return Array.from(this.selectedRows);\n }\n\n handleSessionMessage = (msg: DataSourceCallbackMessage) => {\n if (msg.type === \"subscribed\") {\n // console.log(`[VuuDataSource subscribed to session table]`);\n } else if (msg.type === \"viewport-update\") {\n if (msg.size !== undefined && msg.size !== this.size) {\n this.emit(\"resize\", msg.size);\n }\n this.clientCallback?.(msg);\n }\n };\n\n createSessionDataSource(sessionTable: VuuTable) {\n if (this.#vuuModule) {\n return this.#vuuModule?.createDataSource(\n sessionTable.table,\n sessionTable.table,\n );\n } else {\n throw Error(\n `[TickingArrayDataSource] unable to createSessionDataSource, not constructed with VuuModule`,\n );\n }\n }\n\n async beginEditSession(editSessionMode: EditSessionMode = \"inline-all-rows\") {\n const rpcResponse = await this?.rpcRequest?.({\n type: \"RPC_REQUEST\",\n rpcName: \"beginEditSession\",\n params: {\n editSessionMode,\n },\n });\n\n if (isRpcSuccess(rpcResponse)) {\n const { table: sessionTable } = rpcResponse.data as { table: VuuTable };\n\n if (isInlineEditingSession(editSessionMode)) {\n this.#sessionDataSource = this.#vuuModule?.createDataSource(\n sessionTable.table,\n sessionTable.table,\n this.config,\n );\n\n this.#sessionDataSource?.subscribe(\n {\n range: this.range,\n },\n this.handleSessionMessage,\n );\n } else {\n return this.#vuuModule?.createDataSource(\n sessionTable.table,\n sessionTable.table,\n this.config,\n );\n }\n\n // we need to route messages from the session datasource to listening\n // client whilst still monitoring responses on the source table to which\n // we are currently subscribed.\n } else {\n throw Error(\n `[VuuDataSource] beginEditSession ${rpcResponse.errorMessage}`,\n );\n ///\n }\n }\n\n async editCell(key: string, column: string, data: VuuRowDataItemType) {\n console.log(\n `[VuuDataSource] editCell ${this.#sessionDataSource?.viewport} rowKey ${key}, column ${column}, value ${data}`,\n );\n\n const rpcHost = this.#sessionDataSource ?? this;\n\n return rpcHost.rpcRequest?.({\n type: \"RPC_REQUEST\",\n rpcName: \"editCell\",\n params: {\n column,\n data,\n key,\n },\n });\n }\n\n async endEditSession(saveChanges = false) {\n const type = \"RPC_REQUEST\";\n const rpcName = \"endEditSession\";\n\n const sessionDataSource = this.#sessionDataSource;\n\n const rpcHost = sessionDataSource ?? this;\n\n if (sessionDataSource) {\n // timing is important here. By breaking this reference before\n // we send the endEdit RPC call, the application of session edits\n // to the source table will be handled correctly.\n this.#sessionDataSource = undefined;\n }\n\n const rpcResponse = await rpcHost.rpcRequest?.(\n saveChanges\n ? { type, rpcName, params: { save: true } }\n : { type, rpcName, params: {} },\n );\n\n if (isRpcSuccess(rpcResponse)) {\n sessionDataSource?.unsubscribe();\n this.sendRowsToClient(true);\n } else {\n // TODO do we reinstate the sessionDataSource ?\n if (rpcResponse?.errorMessage === \"stale update\") {\n sessionDataSource?.unsubscribe();\n this.sendRowsToClient(true);\n } else {\n throw Error(\"unknown error\");\n }\n }\n }\n\n async rpcRequest(\n rpcRequest: Omit<VuuRpcServiceRequest, \"context\">,\n ): Promise<RpcResultSuccess | RpcResultError> {\n if (isTypeaheadRequest(rpcRequest)) {\n const {\n params: { column, starts },\n } = rpcRequest;\n const data = await this.getTypeaheadSuggestions(column, starts);\n return {\n type: \"SUCCESS_RESULT\",\n data,\n } as RpcResultSuccess;\n } else {\n const rpcService = this.#rpcServices?.find(\n (service) => service.rpcName === rpcRequest.rpcName,\n );\n if (rpcService) {\n return rpcService.service({\n ...rpcRequest,\n context: {\n type: \"VIEWPORT_CONTEXT\",\n viewPortId: this.viewport,\n },\n });\n } else {\n throw Error(\n `[TickingArrayDataSource] no service to handle RPC request ${rpcRequest.rpcName}`,\n );\n }\n }\n }\n\n async menuRpcCall(\n rpcRequest: Omit<VuuRpcMenuRequest, \"vpId\">,\n ): Promise<VuuRpcMenuResponse> {\n const rpcService = this.#rpcMenuServices?.find(\n (service) => service.rpcName === rpcRequest.rpcName,\n );\n\n if (rpcService) {\n return rpcService.service({\n ...rpcRequest,\n vpId: this.viewport,\n } as VuuRpcMenuRequest);\n } else {\n throw Error(\n `[TickingArrayDataSource] menuRpcCall no service for ${rpcRequest.rpcName}`,\n );\n }\n }\n\n getTypeaheadSuggestions(column: string, pattern?: string): Promise<string[]> {\n if (this.#table) {\n const columnIndex = this.columnMap[column];\n if (columnIndex === undefined) {\n console.warn(\n `[TickingArrayDataSource] getTypeaheadSuggestions. No column ${column}`,\n );\n return Promise.resolve([]);\n } else {\n return makeSuggestions(this.currentData, columnIndex, pattern);\n }\n } else {\n throw Error(\n \"cannot call getTypeaheadSuggestions on TickingDataSource if table has not been provided\",\n );\n }\n }\n\n get visualLink() {\n return this._config.visualLink;\n }\n\n set visualLink(visualLink: LinkDescriptorWithLabel | undefined) {\n this._config = {\n ...this._config,\n visualLink,\n };\n\n if (visualLink) {\n const {\n parentClientVpId,\n link: { fromColumn, toColumn },\n } = visualLink;\n\n if (this.viewport) {\n this.#visualLinkService?.({\n childVpId: this.viewport,\n childColumnName: fromColumn,\n type: \"CREATE_VISUAL_LINK\",\n parentVpId: parentClientVpId,\n parentColumnName: toColumn,\n }).then((response) => {\n this.emit(\n \"visual-link-created\",\n response as DataSourceVisualLinkCreatedMessage,\n );\n });\n }\n } else {\n this.#visualLinkService?.({\n childVpId: this.viewport,\n type: \"REMOVE_VISUAL_LINK\",\n }).then((/* response */) => {\n this.emit(\"visual-link-removed\");\n });\n }\n }\n\n freeze() {\n super.freeze();\n }\n\n unfreeze() {\n super.unfreeze();\n }\n}\n"],"names":["ArrayDataSource","isRpcSuccess","isInlineEditingSession","isTypeaheadRequest","makeSuggestions"],"mappings":"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"}
@@ -1,94 +0,0 @@
1
- 'use strict';
2
-
3
- var dataUtils = require('./data-utils.js');
4
-
5
- var __defProp = Object.defineProperty;
6
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
- const getNewValue = (value) => {
9
- const multiplier = dataUtils.random(0, 100) / 1e3;
10
- const direction = dataUtils.random(0, 10) >= 5 ? 1 : -1;
11
- return value + value * multiplier * direction;
12
- };
13
- class BaseUpdateGenerator {
14
- constructor(tickingColumns) {
15
- __publicField(this, "table");
16
- __publicField(this, "range");
17
- __publicField(this, "updating", false);
18
- __publicField(this, "timer");
19
- __publicField(this, "tickingColumns");
20
- __publicField(this, "update", () => {
21
- if (this.range && this.table) {
22
- const data = this.table?.data;
23
- const { bid, ask, last, ...rest } = this.tickingColumns;
24
- if (data && data?.length > 0) {
25
- const maxRange = Math.min(this.range.to, data.length);
26
- for (let rowIndex = this.range.from; rowIndex < maxRange; rowIndex++) {
27
- let updateCount = 0;
28
- const shallUpdateRow = dataUtils.random(0, 10) < 2;
29
- if (shallUpdateRow) {
30
- const rowUpdates = this.table.data[rowIndex];
31
- const row = data[rowIndex];
32
- if (bid !== void 0 && ask !== void 0) {
33
- const { [bid]: currentBid, [ask]: currentAsk } = row;
34
- const [newBid, newAsk] = dataUtils.generateNextBidAsk(
35
- currentBid,
36
- currentAsk,
37
- 10,
38
- 5,
39
- dataUtils.nextRandomDouble
40
- );
41
- rowUpdates[ask] = newAsk;
42
- rowUpdates[bid] = newBid;
43
- if (last !== void 0) {
44
- const newLast = Math.round((currentAsk + (newAsk - currentAsk) / 2) * 100) / 100;
45
- rowUpdates[last] = newLast;
46
- }
47
- }
48
- for (const colIdx of Object.values(rest)) {
49
- const shallUpdateColumn = dataUtils.random(0, 10) < 5;
50
- if (shallUpdateColumn) {
51
- updateCount += 1;
52
- const newValue = getNewValue(row[colIdx]);
53
- if (this.table) {
54
- rowUpdates[colIdx] = newValue;
55
- }
56
- }
57
- }
58
- if (this.table && updateCount > 0) {
59
- this.table.updateRow(rowUpdates);
60
- }
61
- }
62
- }
63
- }
64
- }
65
- if (this.updating) {
66
- this.timer = window.setTimeout(this.update, 500);
67
- }
68
- });
69
- this.tickingColumns = tickingColumns;
70
- }
71
- setRange(range) {
72
- this.range = range;
73
- if (!this.updating && this.table) {
74
- this.startUpdating();
75
- }
76
- }
77
- setTable(table) {
78
- this.table = table;
79
- }
80
- startUpdating() {
81
- this.updating = true;
82
- this.update();
83
- }
84
- stopUpdating() {
85
- this.updating = false;
86
- if (this.timer) {
87
- window.clearTimeout(this.timer);
88
- this.timer = void 0;
89
- }
90
- }
91
- }
92
-
93
- exports.BaseUpdateGenerator = BaseUpdateGenerator;
94
- //# sourceMappingURL=UpdateGenerator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"UpdateGenerator.js","sources":["../../../packages/vuu-data-test/src/UpdateGenerator.ts"],"sourcesContent":["import { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport { generateNextBidAsk, nextRandomDouble, random } from \"./data-utils\";\nimport type { UpdateGenerator } from \"./rowUpdates\";\nimport { Table } from \"./Table\";\n\nconst getNewValue = (value: number) => {\n const multiplier = random(0, 100) / 1000;\n const direction = random(0, 10) >= 5 ? 1 : -1;\n return value + value * multiplier * direction;\n};\n\nexport class BaseUpdateGenerator implements UpdateGenerator {\n private table: Table | undefined;\n private range: VuuRange | undefined;\n private updating = false;\n private timer: number | undefined;\n private tickingColumns: { [key: string]: number };\n\n constructor(tickingColumns: { [key: string]: number }) {\n this.tickingColumns = tickingColumns;\n }\n\n setRange(range: VuuRange) {\n this.range = range;\n if (!this.updating && this.table) {\n this.startUpdating();\n }\n }\n\n setTable(table: Table) {\n this.table = table;\n }\n\n private startUpdating() {\n this.updating = true;\n this.update();\n }\n\n private stopUpdating() {\n this.updating = false;\n if (this.timer) {\n window.clearTimeout(this.timer);\n this.timer = undefined;\n }\n }\n\n update = () => {\n if (this.range && this.table) {\n const data = this.table?.data;\n const { bid, ask, last, ...rest } = this.tickingColumns;\n if (data && data?.length > 0) {\n const maxRange = Math.min(this.range.to, data.length);\n for (let rowIndex = this.range.from; rowIndex < maxRange; rowIndex++) {\n let updateCount = 0;\n const shallUpdateRow = random(0, 10) < 2;\n if (shallUpdateRow) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const rowUpdates = this.table.data[rowIndex];\n const row = data[rowIndex];\n\n if (bid !== undefined && ask !== undefined) {\n const { [bid]: currentBid, [ask]: currentAsk } = row as number[];\n const [newBid, newAsk] = generateNextBidAsk(\n currentBid,\n currentAsk,\n 10,\n 5,\n nextRandomDouble,\n );\n rowUpdates[ask] = newAsk;\n rowUpdates[bid] = newBid;\n if (last !== undefined) {\n const newLast =\n Math.round((currentAsk + (newAsk - currentAsk) / 2) * 100) /\n 100.0;\n rowUpdates[last] = newLast;\n }\n }\n\n for (const colIdx of Object.values(rest)) {\n const shallUpdateColumn = random(0, 10) < 5;\n if (shallUpdateColumn) {\n updateCount += 1;\n const newValue = getNewValue(row[colIdx] as number);\n if (this.table) {\n rowUpdates[colIdx] = newValue;\n }\n }\n }\n if (this.table && updateCount > 0) {\n this.table.updateRow(rowUpdates);\n }\n }\n }\n }\n }\n\n if (this.updating) {\n this.timer = window.setTimeout(this.update, 500);\n }\n };\n}\n"],"names":["random","generateNextBidAsk","nextRandomDouble"],"mappings":"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"}