@vuu-ui/vuu-data-test 4.0.1 → 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 +7 -75
  8. package/src/basket/reference-data/prices.js +10 -4
  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 +9 -1
  12. package/src/core/module/VuuModule.js +54 -6
  13. package/src/core/table/TableContainer.js +53 -10
  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 +19 -3
  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
@@ -2,6 +2,8 @@ import type { DataSourceBase, DataSourceConfig, DataSourceRowWithBigint, DataSou
2
2
  import type { VuuMenu, VuuLink, LinkDescriptorWithLabel, VuuRpcMenuResponse, VuuCreateVisualLink, VuuRemoveVisualLink, VuuRpcServiceRequest, RpcResultSuccess, RpcResultError, VuuRpcMenuRequest } from "@vuu-ui/vuu-protocol-types";
3
3
  import { Table } from "../../Table";
4
4
  import { TickingArrayDataSource } from "../../TickingArrayDataSource";
5
+ import { type PermissionFunction } from "../filter/PermissionFilter";
6
+ import { type VuuModuleUser } from "../user/CurrentUser";
5
7
  export interface IVuuModule<T extends string = string> {
6
8
  createDataSource: (tableName: T, viewport?: string, config?: DataSourceConfig & {
7
9
  session?: SessionDataSourceOverrides;
@@ -28,6 +30,12 @@ type Subscription = {
28
30
  dataSource: DataSourceBase<DataSourceRowWithBigint>;
29
31
  sessionTableName?: string;
30
32
  sourceTableName?: string;
33
+ /**
34
+ * The table viewed by this subscription. Where a permission filter applies,
35
+ * this will be a PermissionFilteredTable
36
+ */
37
+ table: Table;
38
+ user: VuuModuleUser;
31
39
  };
32
40
  export declare abstract class VuuModule<T extends string = string> implements IVuuModule<T> {
33
41
  #private;
@@ -38,6 +46,19 @@ export declare abstract class VuuModule<T extends string = string> implements IV
38
46
  protected abstract menuServices?: Record<T, RpcMenuService[] | undefined> | undefined;
39
47
  protected abstract services?: Record<T, RpcService[] | undefined> | undefined;
40
48
  protected abstract visualLinks?: Record<T, VuuLink[] | undefined>;
49
+ protected get includeDefaultServices(): boolean;
50
+ protected beforeSessionSave(_sourceTable: Table, _sessionTable: Table): Promise<void>;
51
+ protected afterSessionSave(_sourceTable: Table, _sessionTable: Table): Promise<void>;
52
+ /**
53
+ * Optional, per table. Restricts the rows visible to each viewport, based on
54
+ * the viewport (and the user who owns it).
55
+ */
56
+ protected permissionFunctions?: Partial<Record<T, PermissionFunction>>;
57
+ /**
58
+ * Invoked before a dataSource is created. Can be used, for example, to
59
+ * lazily start a data provider.
60
+ */
61
+ protected beforeCreateDataSource?(tableName: T): void;
41
62
  getTableSchema(tableName: string): Record<T, Readonly<TableSchema>>[T];
42
63
  getTableList(): string[];
43
64
  protected handlePostSubscribeActivities: ({ clientViewportId, tableSchema, }: DataSourceSubscribedMessage) => void;
@@ -51,6 +72,7 @@ export declare abstract class VuuModule<T extends string = string> implements IV
51
72
  createDataSource: (tableName: T, viewport?: string, config?: DataSourceConfig & {
52
73
  session?: SessionDataSourceOverrides;
53
74
  }) => DataSourceBase<DataSourceRowWithBigint>;
75
+ private createPermissionFilteredTable;
54
76
  getServices(tableName: T): RpcService[];
55
77
  getMenuServices(tableName: T): RpcMenuService[];
56
78
  protected get sessionTableMap(): SessionTableMap;
@@ -1,14 +1,14 @@
1
- import { TableSchema } from "@vuu-ui/vuu-data-types";
1
+ import type { TableSchema } from "@vuu-ui/vuu-data-types";
2
2
  import { Table } from "../../Table";
3
- import { VuuRowDataItemType, VuuTable } from "@vuu-ui/vuu-protocol-types";
4
- import { ColumnMap } from "@vuu-ui/vuu-utils";
5
- import { UpdateGenerator } from "../../rowUpdates";
3
+ import type { VuuRowDataItemType, VuuTable } from "@vuu-ui/vuu-protocol-types";
4
+ import type { ColumnMap } from "@vuu-ui/vuu-utils";
5
+ import type { UpdateGenerator } from "../../rowUpdates";
6
6
  declare class TableContainer {
7
7
  #private;
8
8
  private constructor();
9
9
  static get instance(): TableContainer;
10
- createTable: (schema: TableSchema, data: Array<Array<VuuRowDataItemType | bigint>>, dataMap: ColumnMap, updateGenerator?: UpdateGenerator) => Table;
11
- createJoinTable(joinTable: VuuTable, { table: t1 }: VuuTable, { table: t2 }: VuuTable, joinColumn: string): Table;
10
+ createTable: (schema: TableSchema, data?: Array<Array<VuuRowDataItemType | bigint>>, dataMap?: ColumnMap, updateGenerator?: UpdateGenerator) => Table;
11
+ createJoinTable(joinTable: VuuTable, source1: VuuTable | Table, source2: VuuTable | Table, joinColumn: string): Table;
12
12
  addTable(table: Table): void;
13
13
  getTable<T = Table>(tableName: string): NonNullable<T>;
14
14
  }
package/types/index.d.ts CHANGED
@@ -1,11 +1,18 @@
1
1
  export * from "./ArrayProxy";
2
+ export * from "./core/filter/PermissionFilter";
3
+ export * from "./core/filter/PermissionFilteredTable";
2
4
  export * from "./core/module/VuuModule";
5
+ export { ensureVuuModule } from "./core/module/ModuleContainer";
6
+ export * from "./core/user/CurrentUser";
3
7
  export { default as tableContainer } from "./core/table/TableContainer";
4
8
  export * from "./local-datasource-provider/LocalDatasourceProvider";
5
9
  export * from "./makeSuggestions";
10
+ export * from "./notifications";
6
11
  export * from "./schemas";
7
12
  export * from "./simul";
8
13
  export * from "./basket";
14
+ export * from "./module-admin";
15
+ export * from "./user-admin";
9
16
  export { buildDataColumnMap, buildDataColumnMapFromSchema, Table, type TableEvents, } from "./Table";
10
17
  export * from "./test";
11
18
  export * from "./TickingArrayDataSource";
@@ -1,4 +1,20 @@
1
- import { ReactNode } from "react";
2
- export declare const LocalDataSourceProvider: ({ children, }: {
1
+ import { type LocalVuuServer } from "@vuu-ui/core";
2
+ import type { ReactNode } from "react";
3
+ import type { VuuModule } from "../core/module/VuuModule";
4
+ /** Data context covering every VuuModule registered in the browser. */
5
+ export declare const LocalDataSourceProvider: ({ children }: {
3
6
  children: ReactNode;
4
- }) => import("react/jsx-runtime").JSX.Element;
7
+ }) => import("react").JSX.Element;
8
+ export interface LocalVuuServerOptions {
9
+ /** Matches the `vuu.connectionId` of the modules this server serves. */
10
+ connectionId: string;
11
+ modules: VuuModule<any>[];
12
+ }
13
+ /**
14
+ * Simulates a Vuu server in the browser, publishing the tables of the given
15
+ * modules. Module instances are resolved from this server, not by name from
16
+ * the global registry, so servers can each have their own instance of a
17
+ * module (e.g. NOTIFICATIONS). Pass the result to a local-mode `AuthenticationProvider` as one of
18
+ * its `localServers`.
19
+ */
20
+ export declare const createLocalVuuServer: ({ connectionId, modules, }: LocalVuuServerOptions) => LocalVuuServer;
@@ -1,8 +1,10 @@
1
- import { TableSchema } from "@vuu-ui/vuu-data-types";
1
+ import type { TableSchema } from "@vuu-ui/vuu-data-types";
2
2
  import { type BasketsTableName } from "./basket/basket-schemas";
3
3
  import { type SimulTableName } from "./simul/simul-schemas";
4
- import { TestTableName } from "./test/TestModule";
5
- export type VuuTableName = BasketsTableName | SimulTableName | TestTableName;
4
+ import { type TestTableName } from "./test/TestModule";
5
+ import { type UserAdminTableName } from "@heswell/user-admin/contracts";
6
+ import { type ModuleAdminTableName } from "./module-admin";
7
+ export type VuuTableName = BasketsTableName | SimulTableName | TestTableName | UserAdminTableName | ModuleAdminTableName;
6
8
  export declare const schemas: Record<VuuTableName, TableSchema>;
7
9
  export declare const getAllSchemas: () => Record<VuuTableName, TableSchema>;
8
10
  export declare const getSchema: (tableName: VuuTableName) => Readonly<TableSchema>;
@@ -1,6 +1,6 @@
1
1
  import type { ColumnDescriptor } from "@vuu-ui/vuu-table-types";
2
2
  import type { VuuRowDataItemType, VuuTable } from "@vuu-ui/vuu-protocol-types";
3
- import { UpdateGenerator } from "./rowUpdates";
3
+ import type { UpdateGenerator } from "./rowUpdates";
4
4
  type GenerateRowFunc = (index: number) => VuuRowDataItemType[];
5
5
  export type RowGeneratorFactory = (columns: string[]) => GenerateRowFunc;
6
6
  export type ColumnGeneratorFn = (columns?: number | string[], columnConfig?: {