@finsemble/finsemble-core 6.1.4 → 6.1.5
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.
- package/.mocharc.js +12 -12
- package/.nycrc.json +7 -7
- package/README.md +24 -24
- package/assets/fonts/LICENSE.txt +202 -202
- package/configs/core/config.json +214 -214
- package/configs/core/securityPolicies.json +24 -24
- package/configs/core/services.json +233 -233
- package/configs/schemas/README.md +1 -1
- package/configs/schemas/fileBasedSchemas/appdConfigFile.schema.json +5 -5
- package/configs/schemas/fileBasedSchemas/applicationConfigFile.schema.json +5 -5
- package/configs/schemas/fileBasedSchemas/componentsFile.schema.json +5 -5
- package/configs/schemas/fileBasedSchemas/coreConfigFile.schema.json +5 -5
- package/configs/schemas/fileBasedSchemas/dashbarFile.schema.json +5 -5
- package/configs/schemas/fileBasedSchemas/manifestFile.schema.json +5 -5
- package/configs/schemas/fileBasedSchemas/securityPoliciesFile.schema.json +5 -5
- package/configs/schemas/fileBasedSchemas/servicesFile.schema.json +5 -5
- package/configs/schemas/fileBasedSchemas/uiComponentsFile.schema.json +5 -5
- package/configs/schemas/fileBasedSchemas/workspacesFile.schema.json +5 -5
- package/configs/schemas/finsemble.schema.json +4006 -4006
- package/dist/FSBL.js +1 -1
- package/dist/clients/Interop/FinsembleDesktopAgent.md +154 -154
- package/dist/clients/Interop/tsconfig.json +7 -7
- package/dist/clients/Startup/README.md +28 -28
- package/dist/clients/dragAndDropAssets/dragAndDropScrim.css +54 -54
- package/dist/clients/dragAndDropAssets/ff-delete-circle.svg +10 -10
- package/dist/clients/dragAndDropAssets/ff-share.svg +13 -13
- package/dist/components/system/notification/ff-close.svg +14 -14
- package/dist/components/system/notification/finsemble_logo_white.svg +15 -15
- package/dist/components/system/notification/notification.html +155 -155
- package/dist/configs/core/config.json +214 -214
- package/dist/configs/core/securityPolicies.json +24 -24
- package/dist/configs/core/services.json +233 -233
- package/dist/configs/schemas/README.md +1 -1
- package/dist/configs/schemas/fileBasedSchemas/appdConfigFile.schema.json +5 -5
- package/dist/configs/schemas/fileBasedSchemas/applicationConfigFile.schema.json +5 -5
- package/dist/configs/schemas/fileBasedSchemas/componentsFile.schema.json +5 -5
- package/dist/configs/schemas/fileBasedSchemas/coreConfigFile.schema.json +5 -5
- package/dist/configs/schemas/fileBasedSchemas/dashbarFile.schema.json +5 -5
- package/dist/configs/schemas/fileBasedSchemas/manifestFile.schema.json +5 -5
- package/dist/configs/schemas/fileBasedSchemas/securityPoliciesFile.schema.json +5 -5
- package/dist/configs/schemas/fileBasedSchemas/servicesFile.schema.json +5 -5
- package/dist/configs/schemas/fileBasedSchemas/uiComponentsFile.schema.json +5 -5
- package/dist/configs/schemas/fileBasedSchemas/workspacesFile.schema.json +5 -5
- package/dist/configs/schemas/finsemble.schema.json +4006 -4006
- package/dist/finsemble-javascript-adapter.js +1 -1
- package/dist/index.js +1 -1
- package/dist/javascript-adapter-example-app.html +37 -37
- package/dist/services/Interop/DevTools.tsx +71 -71
- package/dist/services/Interop/Interop.html +15 -15
- package/dist/services/Interop/InteropService.js +1 -1
- package/dist/services/Interop/InteropService.md +148 -148
- package/dist/services/Interop/InteropServiceUI.css +12 -12
- package/dist/services/Interop/InteropServiceUI.js +1 -1
- package/dist/services/Interop/InteropServiceUI.tsx +39 -39
- package/dist/services/Interop/devtoolsEnhancer.tsx +63 -63
- package/dist/services/Interop/tsconfig.json +7 -7
- package/dist/services/ServiceTemplate.md +39 -39
- package/dist/services/assimilation/assimilation.html +18 -18
- package/dist/services/assimilation/assimilationService.js +1 -1
- package/dist/services/authentication/authentication.html +17 -17
- package/dist/services/authentication/authenticationService.js +1 -1
- package/dist/services/authentication/dialogSignOn.html +199 -199
- package/dist/services/config/config.html +17 -17
- package/dist/services/config/configService.js +1 -1
- package/dist/services/dataStore/dataStore.html +18 -18
- package/dist/services/dataStore/dataStoreService.js +1 -1
- package/dist/services/hotkeys/hotkeys.html +18 -18
- package/dist/services/hotkeys/hotkeysService.js +1 -1
- package/dist/services/linker/linker.html +18 -18
- package/dist/services/linker/linkerService.js +1 -1
- package/dist/services/logger/logger.html +18 -18
- package/dist/services/logger/loggerService.js +1 -1
- package/dist/services/logger/loggerUI.js +1 -1
- package/dist/services/logger/src/app.css +860 -860
- package/dist/services/logger/src/components/Views/Logs/rightPanel/consoleView.css +379 -379
- package/dist/services/logger/src/components/objectInspector/README.md +1 -1
- package/dist/services/notification/notification.html +11 -11
- package/dist/services/notification/notificationService.js +1 -1
- package/dist/services/preferences/preferencesService.js +1 -1
- package/dist/services/router/router.html +18 -18
- package/dist/services/router/routerService.js +1 -1
- package/dist/services/search/search.html +17 -17
- package/dist/services/search/searchService.js +1 -1
- package/dist/services/storage/adapters/instrumentedIndexedDBAdapter.js +1 -1
- package/dist/services/storage/storage.html +17 -17
- package/dist/services/storage/storageService.js +1 -1
- package/dist/services/systemManager/bootTasks/testTasks/_aReadMe.md +119 -119
- package/dist/services/systemManager/systemManager.html +24 -24
- package/dist/services/systemManager/systemManager.js +1 -1
- package/dist/services/window/Docking/GroupRequirements.md +18 -18
- package/dist/services/window/Splintering/SplinterAgentSlave.html +13 -13
- package/dist/services/window/Splintering/SplinterAgentSlave.js +1 -1
- package/dist/services/window/Splintering/Splintering.md +118 -118
- package/dist/services/window/StackedWindowManager/StackRequirements.md +23 -23
- package/dist/services/window/WindowBehaviorRequirements.md +25 -25
- package/dist/services/window/windowService.html +10 -10
- package/dist/services/window/windowService.js +1 -1
- package/dist/services/workspace/dev-docs/importExportFormat.md +51 -51
- package/dist/services/workspace/dev-docs/remotelyPersistedWorkspaces.md +62 -62
- package/dist/services/workspace/workspace.html +18 -18
- package/dist/services/workspace/workspace.schema.json +48 -48
- package/dist/services/workspace/workspaceService.js +1 -1
- package/package.json +1 -1
- package/tsconfig.json +23 -23
- package/types/index.d.ts +40 -55
- package/types/index.tsbuildinfo +1 -1
- package/types.tsconfig.json +15 -15
|
@@ -1,148 +1,148 @@
|
|
|
1
|
-
This is placeholder for documentation to come. These are notes from early discussions.
|
|
2
|
-
|
|
3
|
-
/\*\*
|
|
4
|
-
|
|
5
|
-
- Straw Man : How does SelectConnect work?
|
|
6
|
-
-
|
|
7
|
-
- Every incoming InteropMessage converts to a redux action.
|
|
8
|
-
-
|
|
9
|
-
- Non-broadcast actions (e.g. getSystemChannels, findIntent, joinChannel etc) are processed by reducers which update state and deliver (thunk) replies to the client
|
|
10
|
-
-
|
|
11
|
-
- Broadcast actions run the SelectConnect algorithm. The algorithm results in an array of:
|
|
12
|
-
- (1) destinations uuids
|
|
13
|
-
- (2) the message (context and/or intent) for each destination, possibly transformed
|
|
14
|
-
-
|
|
15
|
-
- The algorithm is a loop.
|
|
16
|
-
- On start:
|
|
17
|
-
- (1) The list of prospective destinations is initialized from the store (e.g. which uuids are listening for this message)
|
|
18
|
-
-
|
|
19
|
-
- Each iteration:
|
|
20
|
-
- Begins with the following data:
|
|
21
|
-
- (a) the original message and meta data (e.g. intent type, context type, origination)
|
|
22
|
-
- (b) a list of all rules that have not yet been triggered
|
|
23
|
-
- (c) the current list of prospective destinations
|
|
24
|
-
-
|
|
25
|
-
- Logic:
|
|
26
|
-
- (i) Process each rule (in array order from config)
|
|
27
|
-
- Possibilities are:
|
|
28
|
-
- (A) `filter`: Eliminate or add destinations (e.g. from=* filter=#Linker)
|
|
29
|
-
- (B) `fork` : add destinations (e.g. to=#Chat fork=#Salesforce.Activity)
|
|
30
|
-
- (C) `selectConnect` : replace destinations (e.g. to=#Chat selectConnect=#Symphony)
|
|
31
|
-
- (ii) Eliminate the rule (to avoid recursion and loops)
|
|
32
|
-
- (iii) Exit loop when no rules are triggered during an iteration
|
|
33
|
-
-
|
|
34
|
-
- When complete:
|
|
35
|
-
- (a) Eliminate any destinations that don't have a valid handler (dead ends)
|
|
36
|
-
- (b) Run auto-translation algorithm
|
|
37
|
-
- (c) Update the store to reflect new client state
|
|
38
|
-
- (d) Deliver messages using asynchronous thunks
|
|
39
|
-
-
|
|
40
|
-
- TBD:
|
|
41
|
-
- Do rules need to make a destinction between "from":"to" and "origination":"destination"?
|
|
42
|
-
- e.g. to prevent skirting filters by redirection
|
|
43
|
-
- How to prevent broadcast storms?
|
|
44
|
-
- Not just internal to the resolver, but if receipt of a message by a destination triggers a broadcast, and vice versa
|
|
45
|
-
- Stitchview ran into this pretty quickly and implemented a timeout, to silently drop any messages of the same contextType if received within x milliseconds
|
|
46
|
-
- Translation
|
|
47
|
-
- What do rules look like? How do apps or system channels register translations?
|
|
48
|
-
\*/
|
|
49
|
-
|
|
50
|
-
/\*\*
|
|
51
|
-
|
|
52
|
-
- System channels:
|
|
53
|
-
-
|
|
54
|
-
- By convention, system channels begin with #. Some system channels like #Linker are built in.
|
|
55
|
-
- Other system channels, such as #Symphony, would be registered via config. Registering via config prevents
|
|
56
|
-
- other apps from hijacking those channel names.
|
|
57
|
-
-
|
|
58
|
-
- System channels are not "peer" based. When a message is sent to a system channel, only the system channel
|
|
59
|
-
- handler receives that message (not any other listeners).
|
|
60
|
-
-
|
|
61
|
-
- System channels may support a syntax, such as #Symphony@tradebot or #Excel@G6F4.
|
|
62
|
-
-
|
|
63
|
-
- TBD: how to communicate that syntax to the system app with a given FDC3 message
|
|
64
|
-
- TBD: how the system channel can communicate back to a specific app
|
|
65
|
-
- ? implicitly create a channel for every uuid
|
|
66
|
-
- ? how would the system channel be informed
|
|
67
|
-
- ? how would the system channel know when to remove uuid references
|
|
68
|
-
- ? is it even necessary for system channels to communicate back? Maybe data-driven intents is good enough
|
|
69
|
-
-
|
|
70
|
-
- Private channels:
|
|
71
|
-
-
|
|
72
|
-
- Apps can specify private channels via config. A private channel essentially establishes a #Fence (see below) around
|
|
73
|
-
- a well known channel. For instance, a suite of related apps might need a way to communicate amongst themselves
|
|
74
|
-
- without eavesdropped or imposters.
|
|
75
|
-
- ? Could this be accomplished just as easily with a #Fence rule?
|
|
76
|
-
-
|
|
77
|
-
- Rules Examples:
|
|
78
|
-
-
|
|
79
|
-
- When an app (e.g. telephony) receives a call, launch an app called "Screenpop" (context is passed automatically)
|
|
80
|
-
- intent=call selectConnect=#Launch@Screenpop
|
|
81
|
-
-
|
|
82
|
-
- When any intent is sent to the #Chat channel, also send it to a Salesforce driver that creates Activity records, and if possible transform the data into a SalesforceRecord
|
|
83
|
-
- intent=\* to=#Chat fork=#Salesforce.Activity #transform=#Salesforce.Record
|
|
84
|
-
-
|
|
85
|
-
- Possible plugins/system channels:
|
|
86
|
-
-
|
|
87
|
-
- #Linker - Adds or removes destinations based on linkage (probably a filter, maybe a type of #Fence)
|
|
88
|
-
- `from=* filter=#Linker`
|
|
89
|
-
-
|
|
90
|
-
- #DragNDrop - Removes destinations but stores the data so that it can be emitted when the user drags between windows
|
|
91
|
-
- `from=Chart contextType=Symbol fork=#DragNDrop`
|
|
92
|
-
-
|
|
93
|
-
- #Launch@Chart - Launches apps, passing the contextType/intent to the launched app
|
|
94
|
-
- `intent=Screenpop selectConnect=#Launch@Chart@SalesforceActivity`
|
|
95
|
-
-
|
|
96
|
-
- #Logger@info - Sends the info to a log (probably a fork)
|
|
97
|
-
- `from=ProjectEditor intent=Error fork=#Logger@error`
|
|
98
|
-
-
|
|
99
|
-
- #Workspace - Saves info in a workspace, and then when the workspace is relaunched, emits that info back to the app
|
|
100
|
-
- `contextType=symbol fork=#Workspace`
|
|
101
|
-
-
|
|
102
|
-
- #Fence - Prevents messages from going to apps that aren't in the fence (like a composite but maybe other logical groupings)
|
|
103
|
-
- `from=Chart contextType=symbol selectConnect=#Fence` - Keeps a symbol broadcast from escaping the fence (but still lets symbol into the fence from outside)
|
|
104
|
-
- `to=Chart contextType=date filter=#Fence` - Prevents a date broadcast from entering the fence
|
|
105
|
-
-
|
|
106
|
-
- #Trash - /dev/null for messages
|
|
107
|
-
- `from=Chart to=Grid selectConnect=#Trash`
|
|
108
|
-
-
|
|
109
|
-
- #ODAC - Open Data Access Control. Filter messages throuh an access control list (ACL)
|
|
110
|
-
- `from=CRD filter=#ODAC` - Prevents delivery to any destination not in the ACL
|
|
111
|
-
-
|
|
112
|
-
- #Notification - Could be used for sending notifications, or to set rules for data that is delivered by a notification.
|
|
113
|
-
- Notifications should probably be genericized to publish intent/context when the user clicks on them. So in a sense
|
|
114
|
-
- a notification is like #DragNDrop, where broadcast is deferred until the user clicks on something
|
|
115
|
-
- `intent=Trade contextType=FixedIncome selectConnect=#Notification#Bob`
|
|
116
|
-
- `intent=Trade from=#Notification selectConnect=#Launch@FixedIncomeApp`
|
|
117
|
-
-
|
|
118
|
-
- #Search - Most useful with a data-driven intent, could take the place of our search providers
|
|
119
|
-
- Also, search results should be intents/contextTypes so that clicking on a result either triggers an action or a context switch
|
|
120
|
-
- `from=#Search contextType=Link #Launch@Browser`
|
|
121
|
-
-
|
|
122
|
-
- #Chat@slackbot - Routes messages to and from a chat network. We might build plugins that work with symphony, slack and teams
|
|
123
|
-
- `intent=Trade selectConnect=#Chat#tradechannel`
|
|
124
|
-
-
|
|
125
|
-
- #ChatCreator - Our own pop-up app that allows a user to create a chat message to be sent to #Chat (like our sales demo)
|
|
126
|
-
- Maybe this just listens for a specific intent...
|
|
127
|
-
- `intent=Trade selectConnect=#Intent@CreateChat`
|
|
128
|
-
-
|
|
129
|
-
- #CRM@activity - Send data to the CRM system. We could build plugins that work with Salesforce or other systems
|
|
130
|
-
- `to=#Chat contextType=Trade fork=#CRM@activity` - Log an activity record every time we send a trade via chat
|
|
131
|
-
-
|
|
132
|
-
- #Symphony, #Salesforce - Maybe instead of generic #Chat, #CRM we would have specific channels for specific 3rd parties
|
|
133
|
-
-
|
|
134
|
-
- #Bloomberg@SRCH - Runs a bloomberg command
|
|
135
|
-
- `contextType=Symbol to=#Search fork=#Bloomberg@SRCH` - Sends all searches also to Bloomberg
|
|
136
|
-
-
|
|
137
|
-
- #Excel@MySheet!A1\*10 - Sends data to a specific cell in Excel
|
|
138
|
-
- `contextType=Symbol fork=#Excel@MySheet!A1*10`
|
|
139
|
-
-
|
|
140
|
-
- #Intent@Share - Convert a context broadcast into an intent
|
|
141
|
-
- `from=Chart contextType=Symbol selectConnect=#Intent:Quote` - Whenever the chart changes symbols, ensure that an app is available that shows a Quote for that same symbol
|
|
142
|
-
- `intent=Trade selectConnect=#Intent@Chat` - If there's a chat tool that only accepts intents we can use conversion. Might require an automatic translation (e.g. stringify into a Chat envelope) \*/
|
|
143
|
-
|
|
144
|
-
Obscure errors as the result of misuse of Immer
|
|
145
|
-
|
|
146
|
-
Always call `current` if you need to pass a piece of store state outside of your reducer.
|
|
147
|
-
|
|
148
|
-
TypeError: Cannot perform 'get' on a proxy that has been revoked TypeError: Cannot perform 'isExtensible' on a proxy that has been revoked TypeError: Cannot read property 'Symbol(nodejs.util.inspect.custom)' of null
|
|
1
|
+
This is placeholder for documentation to come. These are notes from early discussions.
|
|
2
|
+
|
|
3
|
+
/\*\*
|
|
4
|
+
|
|
5
|
+
- Straw Man : How does SelectConnect work?
|
|
6
|
+
-
|
|
7
|
+
- Every incoming InteropMessage converts to a redux action.
|
|
8
|
+
-
|
|
9
|
+
- Non-broadcast actions (e.g. getSystemChannels, findIntent, joinChannel etc) are processed by reducers which update state and deliver (thunk) replies to the client
|
|
10
|
+
-
|
|
11
|
+
- Broadcast actions run the SelectConnect algorithm. The algorithm results in an array of:
|
|
12
|
+
- (1) destinations uuids
|
|
13
|
+
- (2) the message (context and/or intent) for each destination, possibly transformed
|
|
14
|
+
-
|
|
15
|
+
- The algorithm is a loop.
|
|
16
|
+
- On start:
|
|
17
|
+
- (1) The list of prospective destinations is initialized from the store (e.g. which uuids are listening for this message)
|
|
18
|
+
-
|
|
19
|
+
- Each iteration:
|
|
20
|
+
- Begins with the following data:
|
|
21
|
+
- (a) the original message and meta data (e.g. intent type, context type, origination)
|
|
22
|
+
- (b) a list of all rules that have not yet been triggered
|
|
23
|
+
- (c) the current list of prospective destinations
|
|
24
|
+
-
|
|
25
|
+
- Logic:
|
|
26
|
+
- (i) Process each rule (in array order from config)
|
|
27
|
+
- Possibilities are:
|
|
28
|
+
- (A) `filter`: Eliminate or add destinations (e.g. from=* filter=#Linker)
|
|
29
|
+
- (B) `fork` : add destinations (e.g. to=#Chat fork=#Salesforce.Activity)
|
|
30
|
+
- (C) `selectConnect` : replace destinations (e.g. to=#Chat selectConnect=#Symphony)
|
|
31
|
+
- (ii) Eliminate the rule (to avoid recursion and loops)
|
|
32
|
+
- (iii) Exit loop when no rules are triggered during an iteration
|
|
33
|
+
-
|
|
34
|
+
- When complete:
|
|
35
|
+
- (a) Eliminate any destinations that don't have a valid handler (dead ends)
|
|
36
|
+
- (b) Run auto-translation algorithm
|
|
37
|
+
- (c) Update the store to reflect new client state
|
|
38
|
+
- (d) Deliver messages using asynchronous thunks
|
|
39
|
+
-
|
|
40
|
+
- TBD:
|
|
41
|
+
- Do rules need to make a destinction between "from":"to" and "origination":"destination"?
|
|
42
|
+
- e.g. to prevent skirting filters by redirection
|
|
43
|
+
- How to prevent broadcast storms?
|
|
44
|
+
- Not just internal to the resolver, but if receipt of a message by a destination triggers a broadcast, and vice versa
|
|
45
|
+
- Stitchview ran into this pretty quickly and implemented a timeout, to silently drop any messages of the same contextType if received within x milliseconds
|
|
46
|
+
- Translation
|
|
47
|
+
- What do rules look like? How do apps or system channels register translations?
|
|
48
|
+
\*/
|
|
49
|
+
|
|
50
|
+
/\*\*
|
|
51
|
+
|
|
52
|
+
- System channels:
|
|
53
|
+
-
|
|
54
|
+
- By convention, system channels begin with #. Some system channels like #Linker are built in.
|
|
55
|
+
- Other system channels, such as #Symphony, would be registered via config. Registering via config prevents
|
|
56
|
+
- other apps from hijacking those channel names.
|
|
57
|
+
-
|
|
58
|
+
- System channels are not "peer" based. When a message is sent to a system channel, only the system channel
|
|
59
|
+
- handler receives that message (not any other listeners).
|
|
60
|
+
-
|
|
61
|
+
- System channels may support a syntax, such as #Symphony@tradebot or #Excel@G6F4.
|
|
62
|
+
-
|
|
63
|
+
- TBD: how to communicate that syntax to the system app with a given FDC3 message
|
|
64
|
+
- TBD: how the system channel can communicate back to a specific app
|
|
65
|
+
- ? implicitly create a channel for every uuid
|
|
66
|
+
- ? how would the system channel be informed
|
|
67
|
+
- ? how would the system channel know when to remove uuid references
|
|
68
|
+
- ? is it even necessary for system channels to communicate back? Maybe data-driven intents is good enough
|
|
69
|
+
-
|
|
70
|
+
- Private channels:
|
|
71
|
+
-
|
|
72
|
+
- Apps can specify private channels via config. A private channel essentially establishes a #Fence (see below) around
|
|
73
|
+
- a well known channel. For instance, a suite of related apps might need a way to communicate amongst themselves
|
|
74
|
+
- without eavesdropped or imposters.
|
|
75
|
+
- ? Could this be accomplished just as easily with a #Fence rule?
|
|
76
|
+
-
|
|
77
|
+
- Rules Examples:
|
|
78
|
+
-
|
|
79
|
+
- When an app (e.g. telephony) receives a call, launch an app called "Screenpop" (context is passed automatically)
|
|
80
|
+
- intent=call selectConnect=#Launch@Screenpop
|
|
81
|
+
-
|
|
82
|
+
- When any intent is sent to the #Chat channel, also send it to a Salesforce driver that creates Activity records, and if possible transform the data into a SalesforceRecord
|
|
83
|
+
- intent=\* to=#Chat fork=#Salesforce.Activity #transform=#Salesforce.Record
|
|
84
|
+
-
|
|
85
|
+
- Possible plugins/system channels:
|
|
86
|
+
-
|
|
87
|
+
- #Linker - Adds or removes destinations based on linkage (probably a filter, maybe a type of #Fence)
|
|
88
|
+
- `from=* filter=#Linker`
|
|
89
|
+
-
|
|
90
|
+
- #DragNDrop - Removes destinations but stores the data so that it can be emitted when the user drags between windows
|
|
91
|
+
- `from=Chart contextType=Symbol fork=#DragNDrop`
|
|
92
|
+
-
|
|
93
|
+
- #Launch@Chart - Launches apps, passing the contextType/intent to the launched app
|
|
94
|
+
- `intent=Screenpop selectConnect=#Launch@Chart@SalesforceActivity`
|
|
95
|
+
-
|
|
96
|
+
- #Logger@info - Sends the info to a log (probably a fork)
|
|
97
|
+
- `from=ProjectEditor intent=Error fork=#Logger@error`
|
|
98
|
+
-
|
|
99
|
+
- #Workspace - Saves info in a workspace, and then when the workspace is relaunched, emits that info back to the app
|
|
100
|
+
- `contextType=symbol fork=#Workspace`
|
|
101
|
+
-
|
|
102
|
+
- #Fence - Prevents messages from going to apps that aren't in the fence (like a composite but maybe other logical groupings)
|
|
103
|
+
- `from=Chart contextType=symbol selectConnect=#Fence` - Keeps a symbol broadcast from escaping the fence (but still lets symbol into the fence from outside)
|
|
104
|
+
- `to=Chart contextType=date filter=#Fence` - Prevents a date broadcast from entering the fence
|
|
105
|
+
-
|
|
106
|
+
- #Trash - /dev/null for messages
|
|
107
|
+
- `from=Chart to=Grid selectConnect=#Trash`
|
|
108
|
+
-
|
|
109
|
+
- #ODAC - Open Data Access Control. Filter messages throuh an access control list (ACL)
|
|
110
|
+
- `from=CRD filter=#ODAC` - Prevents delivery to any destination not in the ACL
|
|
111
|
+
-
|
|
112
|
+
- #Notification - Could be used for sending notifications, or to set rules for data that is delivered by a notification.
|
|
113
|
+
- Notifications should probably be genericized to publish intent/context when the user clicks on them. So in a sense
|
|
114
|
+
- a notification is like #DragNDrop, where broadcast is deferred until the user clicks on something
|
|
115
|
+
- `intent=Trade contextType=FixedIncome selectConnect=#Notification#Bob`
|
|
116
|
+
- `intent=Trade from=#Notification selectConnect=#Launch@FixedIncomeApp`
|
|
117
|
+
-
|
|
118
|
+
- #Search - Most useful with a data-driven intent, could take the place of our search providers
|
|
119
|
+
- Also, search results should be intents/contextTypes so that clicking on a result either triggers an action or a context switch
|
|
120
|
+
- `from=#Search contextType=Link #Launch@Browser`
|
|
121
|
+
-
|
|
122
|
+
- #Chat@slackbot - Routes messages to and from a chat network. We might build plugins that work with symphony, slack and teams
|
|
123
|
+
- `intent=Trade selectConnect=#Chat#tradechannel`
|
|
124
|
+
-
|
|
125
|
+
- #ChatCreator - Our own pop-up app that allows a user to create a chat message to be sent to #Chat (like our sales demo)
|
|
126
|
+
- Maybe this just listens for a specific intent...
|
|
127
|
+
- `intent=Trade selectConnect=#Intent@CreateChat`
|
|
128
|
+
-
|
|
129
|
+
- #CRM@activity - Send data to the CRM system. We could build plugins that work with Salesforce or other systems
|
|
130
|
+
- `to=#Chat contextType=Trade fork=#CRM@activity` - Log an activity record every time we send a trade via chat
|
|
131
|
+
-
|
|
132
|
+
- #Symphony, #Salesforce - Maybe instead of generic #Chat, #CRM we would have specific channels for specific 3rd parties
|
|
133
|
+
-
|
|
134
|
+
- #Bloomberg@SRCH - Runs a bloomberg command
|
|
135
|
+
- `contextType=Symbol to=#Search fork=#Bloomberg@SRCH` - Sends all searches also to Bloomberg
|
|
136
|
+
-
|
|
137
|
+
- #Excel@MySheet!A1\*10 - Sends data to a specific cell in Excel
|
|
138
|
+
- `contextType=Symbol fork=#Excel@MySheet!A1*10`
|
|
139
|
+
-
|
|
140
|
+
- #Intent@Share - Convert a context broadcast into an intent
|
|
141
|
+
- `from=Chart contextType=Symbol selectConnect=#Intent:Quote` - Whenever the chart changes symbols, ensure that an app is available that shows a Quote for that same symbol
|
|
142
|
+
- `intent=Trade selectConnect=#Intent@Chat` - If there's a chat tool that only accepts intents we can use conversion. Might require an automatic translation (e.g. stringify into a Chat envelope) \*/
|
|
143
|
+
|
|
144
|
+
Obscure errors as the result of misuse of Immer
|
|
145
|
+
|
|
146
|
+
Always call `current` if you need to pass a piece of store state outside of your reducer.
|
|
147
|
+
|
|
148
|
+
TypeError: Cannot perform 'get' on a proxy that has been revoked TypeError: Cannot perform 'isExtensible' on a proxy that has been revoked TypeError: Cannot read property 'Symbol(nodejs.util.inspect.custom)' of null
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
html,
|
|
2
|
-
body,
|
|
3
|
-
#InteropServiceUI-tsx {
|
|
4
|
-
height: 100%;
|
|
5
|
-
background-color: white;
|
|
6
|
-
color: black;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.devTools {
|
|
10
|
-
width: 100%;
|
|
11
|
-
height: 99%;
|
|
12
|
-
}
|
|
1
|
+
html,
|
|
2
|
+
body,
|
|
3
|
+
#InteropServiceUI-tsx {
|
|
4
|
+
height: 100%;
|
|
5
|
+
background-color: white;
|
|
6
|
+
color: black;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.devTools {
|
|
10
|
+
width: 100%;
|
|
11
|
+
height: 99%;
|
|
12
|
+
}
|