@vuu-ui/vuu-data-test 4.1.0 → 5.0.0-alpha.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 (109) hide show
  1. package/README.md +46 -0
  2. package/package.json +12 -10
  3. package/src/Table.js +8 -5
  4. package/src/basket/BasketModule.js +105 -40
  5. package/src/basket/basket-schemas.js +16 -0
  6. package/src/basket/reference-data/constituent-data.js +2 -0
  7. package/src/basket/reference-data/constituents.js +6 -74
  8. package/src/basket/reference-data/prices.js +9 -3
  9. package/src/core/filter/PermissionFilter.js +60 -0
  10. package/src/core/filter/PermissionFilteredTable.js +59 -0
  11. package/src/core/module/ModuleContainer.js +8 -0
  12. package/src/core/module/VuuModule.js +54 -6
  13. package/src/core/table/TableContainer.js +52 -9
  14. package/src/core/user/CurrentUser.js +13 -0
  15. package/src/index.js +7 -0
  16. package/src/local-datasource-provider/LocalDatasourceProvider.js +67 -43
  17. package/src/module-admin/ModuleAdminModule.js +124 -0
  18. package/src/module-admin/index.js +3 -0
  19. package/src/module-admin/module-admin-schemas.js +95 -0
  20. package/src/module-admin/snapshot-projection.js +29 -0
  21. package/src/notifications/NotificationModule.js +131 -0
  22. package/src/notifications/NotificationsSchema.js +52 -0
  23. package/src/notifications/index.js +6 -0
  24. package/src/notifications/simulated/DismissNotificationRpcHandler.js +36 -0
  25. package/src/notifications/simulated/SimulatedNotificationsModule.js +18 -0
  26. package/src/notifications/simulated/SimulatedNotificationsProvider.js +151 -0
  27. package/src/notifications/simulated/notificationsModule.js +3 -0
  28. package/src/schemas.js +8 -2
  29. package/src/user-admin/UserAdminModule.js +567 -0
  30. package/src/user-admin/index.js +3 -0
  31. package/src/user-admin/initialSnapshot.js +461 -0
  32. package/src/user-admin/snapshot-projection.js +151 -0
  33. package/types/basket/BasketModule.d.ts +2 -0
  34. package/types/basket/reference-data/constituents.d.ts +3 -3
  35. package/types/basket/reference-data/prices.d.ts +2 -1
  36. package/types/core/module/ModuleContainer.d.ts +6 -3
  37. package/types/core/module/VuuModule.d.ts +22 -0
  38. package/types/core/table/TableContainer.d.ts +6 -6
  39. package/types/index.d.ts +7 -0
  40. package/types/local-datasource-provider/LocalDatasourceProvider.d.ts +18 -2
  41. package/types/schemas.d.ts +5 -3
  42. package/types/vuu-row-generator.d.ts +1 -1
  43. package/src/basket/reference-data/ftse100.js +0 -686
  44. package/src/basket/reference-data/hsi.js +0 -1047
  45. package/src/basket/reference-data/nasdaq100.js +0 -812
  46. package/src/basket/reference-data/sp500.js +0 -315
  47. package/types/basket/reference-data/ftse100.d.ts +0 -2
  48. package/types/basket/reference-data/hsi.d.ts +0 -2
  49. package/types/basket/reference-data/nasdaq100.d.ts +0 -2
  50. package/types/basket/reference-data/sp500.d.ts +0 -2
  51. package/types/src/ArrayProxy.d.ts +0 -8
  52. package/types/src/RuntimeVisualLink.d.ts +0 -9
  53. package/types/src/Table.d.ts +0 -34
  54. package/types/src/TickingArrayDataSource.d.ts +0 -44
  55. package/types/src/UpdateGenerator.d.ts +0 -18
  56. package/types/src/basket/BasketModule.d.ts +0 -55
  57. package/types/src/basket/basket-schemas.d.ts +0 -9
  58. package/types/src/basket/index.d.ts +0 -2
  59. package/types/src/basket/reference-data/constituents.d.ts +0 -3
  60. package/types/src/basket/reference-data/ftse100.d.ts +0 -2
  61. package/types/src/basket/reference-data/hsi.d.ts +0 -2
  62. package/types/src/basket/reference-data/nasdaq100.d.ts +0 -2
  63. package/types/src/basket/reference-data/prices.d.ts +0 -24
  64. package/types/src/basket/reference-data/sp500.d.ts +0 -2
  65. package/types/src/core/module/ModuleContainer.d.ts +0 -11
  66. package/types/src/core/module/VuuModule.d.ts +0 -81
  67. package/types/src/core/table/TableContainer.d.ts +0 -16
  68. package/types/src/data-utils.d.ts +0 -7
  69. package/types/src/default-column-definitions.d.ts +0 -2
  70. package/types/src/index.d.ts +0 -12
  71. package/types/src/local-datasource-provider/LocalDatasourceProvider.d.ts +0 -4
  72. package/types/src/makeSuggestions.d.ts +0 -3
  73. package/types/src/rowUpdates.d.ts +0 -15
  74. package/types/src/schemas.d.ts +0 -8
  75. package/types/src/session-table-utils.d.ts +0 -6
  76. package/types/src/simul/SimulModule.d.ts +0 -24
  77. package/types/src/simul/index.d.ts +0 -2
  78. package/types/src/simul/reference-data/accounts.d.ts +0 -1
  79. package/types/src/simul/reference-data/algos.d.ts +0 -1
  80. package/types/src/simul/reference-data/currencies.d.ts +0 -1
  81. package/types/src/simul/reference-data/index.d.ts +0 -5
  82. package/types/src/simul/reference-data/instrument-prices.d.ts +0 -60
  83. package/types/src/simul/reference-data/instruments-extended.d.ts +0 -1
  84. package/types/src/simul/reference-data/instruments.d.ts +0 -35
  85. package/types/src/simul/reference-data/isin-generator/convert-string-to-base-ten-number.d.ts +0 -1
  86. package/types/src/simul/reference-data/isin-generator/fixtures/alphabet.d.ts +0 -1
  87. package/types/src/simul/reference-data/isin-generator/fixtures/alphanumeric-values.d.ts +0 -1
  88. package/types/src/simul/reference-data/isin-generator/fixtures/base-ten-numbers.d.ts +0 -1
  89. package/types/src/simul/reference-data/isin-generator/generate-cusip-check-code.d.ts +0 -1
  90. package/types/src/simul/reference-data/isin-generator/generate-cusip-without-check-code.d.ts +0 -1
  91. package/types/src/simul/reference-data/isin-generator/generate-cusip.d.ts +0 -1
  92. package/types/src/simul/reference-data/isin-generator/generate-random-alphanumeric.d.ts +0 -1
  93. package/types/src/simul/reference-data/isin-generator/generate-random-base-ten-number.d.ts +0 -1
  94. package/types/src/simul/reference-data/isin-generator/generate-random-string-of-alphanumeric-chars.d.ts +0 -1
  95. package/types/src/simul/reference-data/isin-generator/generate-random-string-of-base-ten-chars.d.ts +0 -1
  96. package/types/src/simul/reference-data/isin-generator/index.d.ts +0 -1
  97. package/types/src/simul/reference-data/isin-generator/is-odd.d.ts +0 -1
  98. package/types/src/simul/reference-data/locations.d.ts +0 -4
  99. package/types/src/simul/reference-data/lotsizes.d.ts +0 -1
  100. package/types/src/simul/reference-data/orderStatus.d.ts +0 -1
  101. package/types/src/simul/reference-data/orders.d.ts +0 -36
  102. package/types/src/simul/reference-data/parent-child-orders.d.ts +0 -4
  103. package/types/src/simul/reference-data/priceStrategies.d.ts +0 -1
  104. package/types/src/simul/reference-data/prices.d.ts +0 -34
  105. package/types/src/simul/reference-data/sides.d.ts +0 -1
  106. package/types/src/simul/simul-schemas.d.ts +0 -9
  107. package/types/src/test/TestModule.d.ts +0 -16
  108. package/types/src/test/index.d.ts +0 -1
  109. package/types/src/vuu-row-generator.d.ts +0 -17
package/README.md CHANGED
@@ -0,0 +1,46 @@
1
+ # `@vuu-ui/vuu-data-test`
2
+
3
+ ## Local basket trading
4
+
5
+ Constituent reference data is generated from the server's four CSV files in
6
+ `example/main/src/main/resources/static/`. From `vuu-ui`, run
7
+ `npm run generate:basket-data` after editing those files and commit the resulting
8
+ `src/basket/reference-data/constituent-data.json`. Use
9
+ `npm run generate:basket-data -- --check` to verify it is up to date.
10
+ The converter preserves source weights (without normalizing their units),
11
+ maps the differing price/change column names, and rejects invalid CSV records.
12
+ The browser loads only the generated JSON, not the CSV parser.
13
+ The JSON and its `constituents.ts` adapter use different basenames so their
14
+ JavaScript build outputs cannot collide.
15
+
16
+ The `BASKET` module provides its own simulated constituent prices, including
17
+ updates for all basket instruments. Its constituent join retains
18
+ `instanceIdRic` as the row key, so multiple trading baskets can contain the
19
+ same instrument. Direct edits through the join update the underlying
20
+ constituent table; subsequent price ticks preserve those edits.
21
+ Changing the basket side flips each constituent's current side, preserving
22
+ mixed BUY/SELL positions, as on the Scala server. Unchanged side edits do
23
+ nothing, and other basket instances are unaffected.
24
+ Editing basket units recalculates its constituent quantities as
25
+ `weighting * units`, truncated to whole units, matching the Scala service.
26
+
27
+ New baskets retain the `basketTradeName` supplied by the creation dialog.
28
+ Constituents default to the Limit price strategy (`priceStrategyId = 2`),
29
+ matching the Scala server.
30
+ Dropping an instrument from the Add constituent context panel adds it to the
31
+ requested basket instance. Manually added constituents start with weight `0.1`,
32
+ BUY side and Limit strategy; quantity is calculated from the current basket
33
+ units. Unknown instruments, duplicates, missing baskets and on-market baskets
34
+ are rejected without changing existing rows.
35
+ The Add constituent list excludes RICs already in the active basket using a
36
+ separate full-membership subscription, including rows outside the visible grid.
37
+ Sending a basket to market and taking it off market update its constituent
38
+ statuses; live rows include `orderStatus` and an initially zero `filledQty`.
39
+ Execution fills are not simulated.
40
+
41
+ ## Admin test module dependencies
42
+
43
+ The `USER_ADMIN` and `MODULE_DISCOVERY` test modules use the published
44
+ `@heswell/user-admin` and `@heswell/module-admin` packages. Standard
45
+ `npm install` setup is sufficient. Browser code imports only the browser-safe
46
+ `contracts` subpath for module-admin.
package/package.json CHANGED
@@ -1,21 +1,24 @@
1
1
  {
2
- "version": "4.1.0",
2
+ "version": "5.0.0-alpha.1",
3
3
  "main": "./src/index.js",
4
+ "type": "module",
4
5
  "author": "heswell",
5
6
  "license": "Apache-2.0",
6
7
  "scripts": {
7
- "build:dev": "node ../../scripts/run-build.mjs",
8
8
  "build": "node ../../scripts/run-build-rslib.ts",
9
9
  "type-defs": "node ../../scripts/build-type-defs.mjs"
10
10
  },
11
11
  "dependencies": {
12
- "@vuu-ui/vuu-data-local": "4.1.0",
13
- "@vuu-ui/vuu-utils": "4.1.0"
12
+ "@vuu-ui/vuu-data-local": "5.0.0-alpha.1",
13
+ "@vuu-ui/vuu-utils": "5.0.0-alpha.1",
14
+ "@heswell/module-admin": "1.1.0",
15
+ "@heswell/user-admin": "1.0.1",
16
+ "@vuu-ui/vuu-data-editing": "5.0.0-alpha.1"
14
17
  },
15
18
  "devDependencies": {
16
- "@vuu-ui/vuu-protocol-types": "4.1.0",
17
- "@vuu-ui/vuu-data-types": "4.1.0",
18
- "@vuu-ui/vuu-table-types": "4.1.0"
19
+ "@vuu-ui/vuu-protocol-types": "5.0.0-alpha.1",
20
+ "@vuu-ui/vuu-data-types": "5.0.0-alpha.1",
21
+ "@vuu-ui/vuu-table-types": "5.0.0-alpha.1"
19
22
  },
20
23
  "sideEffects": false,
21
24
  "files": [
@@ -25,13 +28,12 @@
25
28
  ],
26
29
  "exports": {
27
30
  ".": {
31
+ "types": "./types/index.d.ts",
28
32
  "import": "./src/index.js",
29
- "default": "./src/index.js",
30
- "types": "./types/index.d.ts"
33
+ "default": "./src/index.js"
31
34
  }
32
35
  },
33
36
  "module": "./src/index.js",
34
37
  "name": "@vuu-ui/vuu-data-test",
35
- "type": "module",
36
38
  "types": "types/index.d.ts"
37
39
  }
package/src/Table.js CHANGED
@@ -20,7 +20,7 @@ class Table extends EventEmitter {
20
20
  }
21
21
  buildIndex() {
22
22
  for(let i = 0; i < this.#data.length; i++){
23
- const key = this.#data[i][this.#indexOfKey];
23
+ const key = String(this.#data[i][this.#indexOfKey]);
24
24
  this.#index.set(key, i);
25
25
  }
26
26
  }
@@ -41,14 +41,17 @@ class Table extends EventEmitter {
41
41
  if (-1 !== index) {
42
42
  this.#index.delete(key);
43
43
  this.#data.splice(index, 1);
44
- for(let i = index; i < this.#data.length; i++)this.#index.set(this.#data[i][this.#indexOfKey], i);
44
+ for(let i = index; i < this.#data.length; i++)this.#index.set(String(this.#data[i][this.#indexOfKey]), i);
45
45
  if (emitEvent) this.emit("delete", key);
46
46
  } else throw Error(`[Table] delete key ${key} not found`);
47
47
  }
48
48
  insert(row, emitEvent = true) {
49
49
  const index = this.#data.length;
50
+ const createdTime = Date.now();
51
+ row[this.#dataMap.vuuUpdatedTimestamp] = createdTime;
52
+ row[this.#dataMap.vuuCreatedTimestamp] = createdTime;
50
53
  this.#data.push(row);
51
- const key = row[this.#indexOfKey];
54
+ const key = String(row[this.#indexOfKey]);
52
55
  this.#index.set(key, index);
53
56
  if (emitEvent) this.emit("insert", row);
54
57
  }
@@ -57,7 +60,7 @@ class Table extends EventEmitter {
57
60
  return this.#data[index];
58
61
  }
59
62
  update(key, columnName, value) {
60
- const rowIndex = this.#data.findIndex((row)=>row[this.#indexOfKey] === key);
63
+ const rowIndex = this.#data.findIndex((row)=>String(row[this.#indexOfKey]) === key);
61
64
  const colIndex = this.#dataMap[columnName];
62
65
  if (-1 !== rowIndex) {
63
66
  const row = this.#data[rowIndex];
@@ -74,7 +77,7 @@ class Table extends EventEmitter {
74
77
  }
75
78
  updateRow(row) {
76
79
  const key = row[this.#indexOfKey];
77
- const rowIndex = this.#data.findIndex((row)=>row[this.#indexOfKey] === key);
80
+ const rowIndex = this.#data.findIndex((row)=>String(row[this.#indexOfKey]) === String(key));
78
81
  if (-1 !== rowIndex) {
79
82
  const tsIndex = this.#dataMap.vuuUpdatedTimestamp;
80
83
  const lastUpdated = Date.now();
@@ -2,6 +2,7 @@ import { VuuModule } from "../core/module/VuuModule.js";
2
2
  import TableContainer from "../core/table/TableContainer.js";
3
3
  import { schemas } from "./basket-schemas.js";
4
4
  import reference_data_constituents from "./reference-data/constituents.js";
5
+ import prices from "./reference-data/prices.js";
5
6
  const { createTable: createTable } = TableContainer;
6
7
  let basketIncrement = 1;
7
8
  const createBasketTradingRow = (basketId, basketName, side = "BUY", status = "OFF MARKET")=>[
@@ -98,10 +99,7 @@ class BasketModule extends VuuModule {
98
99
  }, {
99
100
  module: "BASKET",
100
101
  table: "basketTradingConstituent"
101
- }, {
102
- module: "SIMUL",
103
- table: "prices"
104
- }, "ric"),
102
+ }, prices, "ric"),
105
103
  priceStrategyType: createTable(schemas.priceStrategyType, [
106
104
  [
107
105
  "Peg to Near Touch",
@@ -123,6 +121,22 @@ class BasketModule extends VuuModule {
123
121
  };
124
122
  constructor(){
125
123
  super("BASKET");
124
+ const table = this.tables.basketTrading;
125
+ const update = table.update.bind(table);
126
+ table.update = (key, column, value)=>{
127
+ if ("side" !== column && "units" !== column) return update(key, column, value);
128
+ const basket = table.findByKey(key);
129
+ if (!basket) throw Error(`[BasketModule] basket ${key} not found`);
130
+ if (basket[table.map[column]] === value) return;
131
+ if ("units" === column && ("number" != typeof value || !Number.isInteger(value))) throw Error("[BasketModule] units must be an integer");
132
+ update(key, column, value);
133
+ const constituents = this.tables.basketTradingConstituent;
134
+ for (const row of constituents.data)if (row[constituents.map.instanceId] === key) {
135
+ const constituentKey = String(row[constituents.map.instanceIdRic]);
136
+ if ("side" === column) constituents.update(constituentKey, "side", "BUY" === row[constituents.map.side] ? "SELL" : "BUY");
137
+ else if ("number" == typeof value) constituents.update(constituentKey, "quantity", Math.trunc(Number(row[constituents.map.weighting]) * value));
138
+ }
139
+ };
126
140
  }
127
141
  get menus() {
128
142
  return {
@@ -196,45 +210,55 @@ class BasketModule extends VuuModule {
196
210
  const { basketId: key } = buildDataColumnMap("basketConstituent");
197
211
  const constituents = this.tables.basketConstituent.data.filter((c)=>c[key] === basketId);
198
212
  const { instanceId } = tableMaps.basketTrading;
199
- constituents.forEach(([, , description, , ric, , , quantity, weighting])=>{
200
- const algo = "";
201
- const algoParams = "";
202
- const limitPrice = 95;
203
- const notionalLocal = 0;
204
- const notionalUsd = 0;
205
- const pctFilled = 0;
206
- const priceSpread = 0;
207
- const priceStrategyId = "";
208
- const side = "BUY";
209
- const venue = "venue";
210
- const basketInstanceId = basketTradingRow[instanceId];
211
- const basketTradingConstituentRow = [
212
- algo,
213
- algoParams,
214
- basketId,
215
- description,
216
- basketInstanceId,
217
- `${basketInstanceId}-${ric}`,
218
- limitPrice,
219
- notionalLocal,
220
- notionalUsd,
221
- pctFilled,
222
- priceSpread,
223
- priceStrategyId,
224
- quantity,
225
- ric,
226
- side,
227
- venue,
228
- weighting
229
- ];
230
- basketTradingConstituent.insert(basketTradingConstituentRow);
213
+ constituents.forEach(([, , description, , ric, , , , weighting])=>{
214
+ this.insertTradingConstituent(basketTradingRow, String(ric), String(description), Number(weighting));
231
215
  });
232
216
  return basketTradingRow[instanceId];
233
217
  }
218
+ insertTradingConstituent(basketTradingRow, ric, description, weighting) {
219
+ const { basketId, instanceId } = tableMaps.basketTrading;
220
+ const quantity = Math.trunc(Number(weighting) * Number(basketTradingRow[tableMaps.basketTrading.units]));
221
+ const algo = "";
222
+ const algoParams = "";
223
+ const limitPrice = 95;
224
+ const notionalLocal = 0;
225
+ const notionalUsd = 0;
226
+ const pctFilled = 0;
227
+ const priceSpread = 0;
228
+ const priceStrategyId = 2;
229
+ const side = "BUY";
230
+ const status = "OFF-MARKET";
231
+ const venue = "venue";
232
+ const basketInstanceId = basketTradingRow[instanceId];
233
+ const basketTradingConstituentRow = [
234
+ algo,
235
+ algoParams,
236
+ basketTradingRow[basketId],
237
+ description,
238
+ basketInstanceId,
239
+ `${basketInstanceId}-${ric}`,
240
+ limitPrice,
241
+ notionalLocal,
242
+ notionalUsd,
243
+ pctFilled,
244
+ priceSpread,
245
+ priceStrategyId,
246
+ quantity,
247
+ ric,
248
+ side,
249
+ status,
250
+ venue,
251
+ weighting,
252
+ "PENDING",
253
+ 0
254
+ ];
255
+ basketTradingConstituent.insert(basketTradingConstituentRow);
256
+ return `${basketInstanceId}-${ric}`;
257
+ }
234
258
  createNewBasket = async (rpcRequest)=>{
235
259
  if ("VIEWPORT_CONTEXT" === rpcRequest.context.type) {
236
- const { sourceBasketId, tradeBasketName } = rpcRequest.params;
237
- const key = this.createTradingBasket(sourceBasketId, tradeBasketName);
260
+ const { sourceBasketId, basketTradeName } = rpcRequest.params;
261
+ const key = this.createTradingBasket(sourceBasketId, basketTradeName);
238
262
  return {
239
263
  type: "SUCCESS_RESULT",
240
264
  data: key
@@ -246,6 +270,7 @@ class BasketModule extends VuuModule {
246
270
  if ("VIEWPORT_CONTEXT" === rpcRequest.context.type) {
247
271
  const { basketInstanceId } = rpcRequest.params;
248
272
  this.tables.basketTrading.update(basketInstanceId, "status", "ON_MARKET");
273
+ this.updateConstituentStatus(basketInstanceId, "ON_MARKET", "ACKED");
249
274
  return {
250
275
  type: "SUCCESS_RESULT",
251
276
  data: void 0
@@ -257,6 +282,7 @@ class BasketModule extends VuuModule {
257
282
  if ("VIEWPORT_CONTEXT" === rpcRequest.context.type) {
258
283
  const { basketInstanceId } = rpcRequest.params;
259
284
  this.tables.basketTrading.update(basketInstanceId, "status", "OFF-MARKET");
285
+ this.updateConstituentStatus(basketInstanceId, "OFF-MARKET", "CANCELLED");
260
286
  return {
261
287
  type: "SUCCESS_RESULT",
262
288
  data: void 0
@@ -264,9 +290,48 @@ class BasketModule extends VuuModule {
264
290
  }
265
291
  throw Error("[BasketModule] createNewBasket invalid request type");
266
292
  };
267
- addConstituent = async ()=>{
268
- throw Error("addConstituent not implemented");
293
+ addConstituent = async (request)=>{
294
+ const { params } = request;
295
+ const ric = "ric" in params ? params.ric : void 0;
296
+ const basketInstanceId = "basketInstanceId" in params ? params.basketInstanceId : void 0;
297
+ if ("VIEWPORT_CONTEXT" !== request.context.type || "string" != typeof ric || "string" != typeof basketInstanceId) return {
298
+ type: "ERROR_RESULT",
299
+ errorMessage: "Invalid add constituent request"
300
+ };
301
+ const basket = this.tables.basketTrading.findByKey(basketInstanceId);
302
+ if (!basket) return {
303
+ type: "ERROR_RESULT",
304
+ errorMessage: "Basket not found"
305
+ };
306
+ if ("ON_MARKET" === basket[tableMaps.basketTrading.status]) return {
307
+ type: "ERROR_RESULT",
308
+ errorMessage: "Take the basket off market before adding constituents"
309
+ };
310
+ const source = this.tables.basketConstituent;
311
+ const reference = source.data.find((row)=>row[source.map.ric] === ric);
312
+ if (!reference) return {
313
+ type: "ERROR_RESULT",
314
+ errorMessage: `Unknown constituent ${ric}`
315
+ };
316
+ const key = `${basketInstanceId}-${ric}`;
317
+ if (this.tables.basketTradingConstituent.findByKey(key)) return {
318
+ type: "ERROR_RESULT",
319
+ errorMessage: `${ric} is already in this basket`
320
+ };
321
+ this.insertTradingConstituent(basket, ric, String(reference[source.map.description]), 0.1);
322
+ return {
323
+ type: "SUCCESS_RESULT",
324
+ data: key
325
+ };
269
326
  };
327
+ updateConstituentStatus(basketInstanceId, status, orderStatus) {
328
+ const table = this.tables.basketTradingConstituent;
329
+ for (const row of table.data)if (row[table.map.instanceId] === basketInstanceId) {
330
+ const key = String(row[table.map.instanceIdRic]);
331
+ table.update(key, "status", status);
332
+ table.update(key, "orderStatus", orderStatus);
333
+ }
334
+ }
270
335
  }
271
336
  const basketModule = new BasketModule();
272
337
  export { BasketModule, basketModule, createBasketTradingRow };
@@ -216,6 +216,14 @@ const schemas = {
216
216
  {
217
217
  name: "weighting",
218
218
  serverDataType: "double"
219
+ },
220
+ {
221
+ name: "orderStatus",
222
+ serverDataType: "string"
223
+ },
224
+ {
225
+ name: "filledQty",
226
+ serverDataType: "long"
219
227
  }
220
228
  ],
221
229
  key: "instanceIdRic",
@@ -334,6 +342,14 @@ const schemas = {
334
342
  {
335
343
  name: "weighting",
336
344
  serverDataType: "double"
345
+ },
346
+ {
347
+ name: "orderStatus",
348
+ serverDataType: "string"
349
+ },
350
+ {
351
+ name: "filledQty",
352
+ serverDataType: "long"
337
353
  }
338
354
  ],
339
355
  key: "instanceIdRic",