Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fdc3 for web impl update #1392

Open
wants to merge 94 commits into
base: fdc3-for-web-impl
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 87 commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
065a656
update privatechannel sample code, 1, make client-side and sever-sid…
YaoYao-dd Jul 21, 2024
9f702b3
fix Broken-link-in-https/fdc3.finos.org/docs/next/api/spec
Juno-888 Jul 23, 2024
e03de9e
update privatechannel sample code,include the old version doc
YaoYao-dd Jul 25, 2024
86aeb52
update privatechannel sample code,update the changelog
YaoYao-dd Aug 26, 2024
71cd5df
Merge branch 'main' into clarify-document-while-poc-fdc3
YaoYao-dd Aug 26, 2024
164762b
fixed the wrong code example in DesktopAgeng.md too, update changelog
YaoYao-dd Sep 10, 2024
bb22382
Merge pull request #1314 from fidelity-contributions/clarify-document…
kriswest Sep 13, 2024
6018f81
Merge pull request #1312 from fidelity-contributions/Broken-link-in-h…
kriswest Sep 13, 2024
f4b44a1
Simplify heart message fields and use the eventUuid to link response …
kriswest Sep 16, 2024
07469da
minor formatting in browser spec
kriswest Sep 16, 2024
32acca7
Update docs/api/specs/browserResidentDesktopAgents.md
kriswest Sep 16, 2024
96cfe6d
Update docs/api/specs/browserResidentDesktopAgents.md
kriswest Sep 16, 2024
1bc3a90
Bump express from 4.19.2 to 4.21.0 in /website
dependabot[bot] Sep 18, 2024
486b431
Adding CreateOrUpdateProfile intent + correcting some list styling in…
kriswest Sep 18, 2024
743ede1
Making Robs requested change to WCP step metadata
kriswest Sep 18, 2024
169e6c9
Fix references to Page Lifecycle API
kriswest Sep 18, 2024
93cf6fd
Adding missing id/name fields to context schema docs and fixing rende…
kriswest Sep 19, 2024
ef5fc76
Adding detail about initial styling of interface iframes
kriswest Sep 19, 2024
d5bcc14
Set explicit background colors for website
kriswest Sep 19, 2024
d4e45c4
Formatting and other corrections from review meeting 20240919
kriswest Sep 19, 2024
91f3e5d
further clarifying iframe positioning/position fixed
kriswest Sep 19, 2024
b7bf3cb
Merge pull request #1357 from finos/dependabot/npm_and_yarn/website/e…
kriswest Sep 19, 2024
fb1d954
Apply suggestions from code review
kriswest Sep 19, 2024
3e8d0e7
Correcting minor spelling errors
kriswest Sep 19, 2024
b8b4065
Merge pull request #1361 from finos/website-background
kriswest Sep 19, 2024
910c3cf
Merge branch 'main' into fdc3-for-web
kriswest Sep 19, 2024
02e9a2a
Merge pull request #1360 from finos/missing-fields-in-context-docs
kriswest Sep 20, 2024
2e5da98
Standardize spacing on javascript import examples
kriswest Sep 20, 2024
bac6162
Merge branch 'main' into fdc3-for-web
kriswest Sep 20, 2024
81a3518
typo fix in GetAgent
kriswest Sep 20, 2024
5af5d06
typo: alloted
kriswest Sep 20, 2024
4b43047
typo corrections
kriswest Sep 20, 2024
5829abf
Update ---question.md
kriswest Sep 20, 2024
a9ba621
Typos in DACP
kriswest Sep 20, 2024
afb0991
Clarifying open in the DACP based on feedback
kriswest Sep 20, 2024
e7cefcf
Merge pull request #1363 from finos/question-label-on-question-issues
kriswest Sep 23, 2024
bf36458
Bump rollup from 4.12.1 to 4.22.4
dependabot[bot] Sep 23, 2024
4742767
Merge pull request #1369 from finos/dependabot/npm_and_yarn/rollup-4.…
kriswest Sep 24, 2024
5f76171
Bump rollup from 3.29.4 to 3.29.5 in /toolbox/fdc3-workbench
dependabot[bot] Sep 24, 2024
2633604
Merge pull request #1370 from finos/dependabot/npm_and_yarn/toolbox/f…
kriswest Sep 24, 2024
9d0d535
NPM audit fixes
kriswest Sep 24, 2024
bd71172
Support broadcast in FDC3 Action
symphony-jean-michael Sep 24, 2024
8f79cdd
Use double quotes in code examples
kriswest Sep 24, 2024
c5046e2
typing in loadIframe example
kriswest Sep 24, 2024
01f862f
formatting and correction to WCP1Hello example
kriswest Sep 24, 2024
7c089d2
minor indentation corrections
kriswest Sep 24, 2024
9f0bc4d
Typos in Preload Desktop Agents spec
kriswest Sep 24, 2024
8c2cdfe
Typos in Browser Resident Desktop Agents spec
kriswest Sep 24, 2024
e3ce1db
missing space in browser spec
kriswest Sep 24, 2024
dda1f27
make error enums consistent
kriswest Sep 24, 2024
3c087a8
switch to `const desktopAgent` from `const fdc3` to break form the past
kriswest Sep 24, 2024
03d1c91
Changing the name of iframe messages (namespacing) to avoid potential…
kriswest Sep 24, 2024
0d2c9a4
correcting some capitalization
kriswest Sep 24, 2024
f126aa4
Merge branch 'main' into fdc3-for-web
kriswest Sep 24, 2024
ae793ca
Merge branch 'fdc3-for-web' into fdc3-for-web-namespace-iframe-messages
kriswest Sep 24, 2024
2c89b4d
adjusting language in WCP1 and WCP3 field descriptions relating to us…
kriswest Sep 24, 2024
be131b6
Fixes from @novavi's review
kriswest Sep 25, 2024
eeb96f8
Merge pull request #1375 from finos/fdc3-for-web-namespace-iframe-mes…
kriswest Sep 25, 2024
d255556
more typos in web connection protocol
kriswest Sep 25, 2024
b2d2ef0
More fixes from review
kriswest Sep 25, 2024
5e8ba8b
more fixes from review
kriswest Sep 25, 2024
62dd2b6
More fixes from review
kriswest Sep 25, 2024
22cb6be
note on render thread crashes
kriswest Sep 25, 2024
4a9715e
Capitalization in flow chart
kriswest Sep 25, 2024
976af80
More fixes from review
kriswest Sep 25, 2024
a0a43c4
Change WebDesktopAgentType to PascalCase
kriswest Sep 26, 2024
abc2b7f
Adding warnings about CSPs and injected iframes
kriswest Sep 26, 2024
cabbfb7
Merge pull request #1372 from finos/vulnerable-deps-npm-audit-fixes
kriswest Sep 27, 2024
f994aaa
Adding anchor link
robmoffat Sep 27, 2024
fffcb33
Merge pull request #1378 from finos/gab-anchor
robmoffat Sep 28, 2024
de42a30
Fixing casing issue in schema file names part 1
kriswest Oct 1, 2024
ff4347c
Fixing casing issue in schema file names part 2
kriswest Oct 1, 2024
c94e694
Apply suggestions from code review
kriswest Oct 1, 2024
83c5ecc
Adding new entry to website nav and correcting ordering of existing e…
kriswest Oct 9, 2024
f9fc79a
Fix typo in the action description
symphony-jean-michael Oct 9, 2024
eba30bb
Modify the Action description to make it clearer
symphony-jean-michael Oct 9, 2024
0ce367a
Fix typo
symphony-jean-michael Oct 11, 2024
594224d
Merge pull request #1359 from finos/591-CreateOrUpdateProfile
kriswest Oct 14, 2024
4f34a71
Support broadcast in FDC3 Actions
symphony-jean-michael Oct 14, 2024
93685d9
Merge pull request #1368 from symphony-jean-michael/broadcast_in_action
kriswest Oct 14, 2024
12d3de5
Make window.fdc3 optional
Roaders Oct 15, 2024
d6c5dae
fix failing lint check
Roaders Oct 15, 2024
2f2e5ad
Update CHANGELOG.md
Roaders Oct 15, 2024
97ef68d
added GetAgent root export
Roaders Oct 15, 2024
1a21b02
Merge branch 'main' into fdc3-for-web
kriswest Oct 15, 2024
736ef72
Merge branch 'fdc3-for-web' into fdc3-for-web-impl-update
kriswest Oct 17, 2024
6b8dd38
conflict resolution (removals/renames)
kriswest Oct 17, 2024
0d686fa
Completing renames (change of casing requires two commits)
kriswest Oct 17, 2024
23ddddd
Make window.fdc3 optional
kriswest Oct 17, 2024
a769e4a
Apply fixes for renamed messages + error heartbeat message handling
kriswest Oct 17, 2024
e9ad15a
fixes to several tests
kriswest Oct 17, 2024
cb40194
Update CHANGELOG.md
kriswest Oct 21, 2024
001b6cc
Merge pull request #1386 from Roaders/window-fdc3-optional
kriswest Oct 21, 2024
88a8f4f
Merge branch 'fdc3-for-web' into fdc3-for-web-impl-update
kriswest Oct 21, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/---question.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: "\U0001F917 Question"
about: "If you have a questions about FDC3. \U0001F4AC"
title: 'Question: '
labels: ''
labels: 'question'
assignees: ''

---
Expand Down
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* Typescript definitions for getAgent() and related types
* Typescript definitions for Browser Communication Protocol (BCP). These constitute the internal "wire protocol" that the "@finos/fdc3" library uses to communicate with Browser-Resident DAs.
* Typescript definitions for Web Connection Protocol (WCP). These constitute the messages used to establish connectivity between "@finos/fdc3" and a Browser-Resident DA.
* Added support for broadcast actions to the `fdc3.action` context type, allowing an Action to represent the broadcast of a specified context to an app or user channel. ([#1368](https://github.com/finos/FDC3/pull/1368))

### Changed

Expand All @@ -37,6 +38,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* Added missing `desktopAgent` field to ImplementationMetadata objects returned for all agents connect to a DesktopAgent bridge in Connection Step 6 connectAgentsUpdate messages and refined the schema used to collect this info in step 3 handshake. ([#1177](https://github.com/finos/FDC3/pull/1177))
* Removed the `version` field from `IntentResolution` as there are no version fields for intents in the FDC3 API definitions and hence the field has no purpose. ([#1170](https://github.com/finos/FDC3/pull/1170))

* Fixed error in the Client-side example from `PrivateChannel` and `addIntentListener` by correcting `id.symbol` to `id.ticker` to align with the `fdc3.instrument` context. ([#1314](https://github.com/finos/FDC3/pull/1314))

## [npm v2.1.1] - 2024-06-28

### Fixed
Expand Down
2 changes: 1 addition & 1 deletion docs/agent-bridging/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -836,7 +836,7 @@ And an error enumeration is created for errors related to bridging that may occu
```typescript
enum BridgingError {
/** Returned if a Desktop Agent did not return a response, via Desktop Agent Bridging,
* within the alloted timeout. */
* within the allotted timeout. */
ResponseTimedOut = 'ResponseToBridgeTimedOut',
/** Returned if a Desktop Agent that has been targeted by a particular request has
* been disconnected from the Bridge before a response has been received from it. */
Expand Down
4 changes: 2 additions & 2 deletions docs/api/ref/DesktopAgent.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ An FDC3 Desktop Agent is a desktop component (or aggregate of components) that s

A Desktop Agent can be connected to one or more App Directories and will use directories for application identity and discovery. Typically, a Desktop Agent will contain the proprietary logic of a given platform, handling functionality like explicit application interop workflows where security, consistency, and implementation requirements are proprietary.

For details of how implementations of the `DesktopAgent` are made available to applications please see [Supported Platforms](supported-platforms).
For details of how implementations of the `DesktopAgent` are made available to applications please see [Supported Platforms](../supported-platforms).

<Tabs groupId="lang">
<TabItem value="ts" label="TypeScript/JavaScript">
Expand Down Expand Up @@ -293,7 +293,7 @@ fdc3.addIntentListener("CreateOrder", (context) => {
//Handle a raised intent and return a PrivateChannel over which response will be sent
fdc3.addIntentListener("QuoteStream", async (context) => {
const channel: PrivateChannel = await fdc3.createPrivateChannel();
const symbol = context.id.symbol;
const symbol = context.id.ticker;

// Called when the remote side adds a context listener
const addContextListener = channel.onAddContextListener((contextType) => {
Expand Down
64 changes: 33 additions & 31 deletions docs/api/ref/Errors.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@ title: Errors
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

FDC3 API operations may sometimes result in an error, which must be returned to the caller. Errors should be returned by rejecting the promise returned by the API with a JavaScript `Error` object (or equivalent for the language of the implementation). The `Error` Object's message should be chosen from the appropriate Error enumeration below.
FDC3 API operations may sometimes result in an error that is returned to the caller. Errors MUST be returned by rejecting the promise returned by the API with a JavaScript `Error` object (or equivalent for the language of the implementation). The `Error` Object's message should be chosen from the appropriate Error enumeration below.

## `AgentError`

Contains constants representing the errors that can be encountered when calling the [`getAgent`](getAgent) function to establish connectivity to a Desktop Agent. Primarily used with web applications, but may also be used in other language
implementations.
Contains constants representing the errors that can be encountered when calling the [`getAgent`](getAgent) function to establish connectivity to a Desktop Agent. Primarily used with web applications, but may also be used in other language implementations.

<Tabs groupId="lang">
<TabItem value="ts" label="TypeScript/JavaScript">
Expand All @@ -33,13 +32,13 @@ enum AgentError {

/** Returned if either the failover function itself, or what it returned,
* was not the right type. */
InvalidFailover = "InvalidFailover"
InvalidFailover = "InvalidFailover",
}
```

</TabItem>
</Tabs>


## `ChannelError`

Contains constants representing the errors that can be encountered when calling channels using the [`joinUserChannel`](DesktopAgent#joinuserchannel) or [`getOrCreateChannel`](DesktopAgent#getorcreatechannel) methods, or the [`getCurrentContext`](Channel#getcurrentcontext), [`broadcast`](Channel#broadcast) or [`addContextListener`](Channel#addcontextlistener) methods on the `Channel` object.
Expand All @@ -52,24 +51,24 @@ enum ChannelError {
/** Returned if the specified channel is not found when attempting to join a
* channel via the `joinUserChannel` function of the DesktopAgent (`fdc3`).
*/
NoChannelFound = 'NoChannelFound',
NoChannelFound = "NoChannelFound",

/** SHOULD be returned when a request to join a user channel or to a retrieve
* a Channel object via the `joinUserChannel` or `getOrCreateChannel` methods
* of the DesktopAgent (`fdc3`) object is denied.
*/
AccessDenied = 'AccessDenied',
AccessDenied = "AccessDenied",

/** SHOULD be returned when a channel cannot be created or retrieved via the
* `getOrCreateChannel` method of the DesktopAgent (`fdc3`).
*/
CreationFailed = 'CreationFailed',
CreationFailed = "CreationFailed",

/** Returned if a call to the `broadcast` functions is made with an invalid
* context argument. Contexts should be Objects with at least a `type` field
* that has a `string` value.
*/
MalformedContext = 'MalformedContext',
MalformedContext = "MalformedContext",
}
```

Expand Down Expand Up @@ -129,30 +128,30 @@ Contains constants representing the errors that can be encountered when calling
```ts
enum OpenError {
/** Returned if the specified application is not found.*/
AppNotFound = 'AppNotFound',
AppNotFound = "AppNotFound",

/** Returned if the specified application fails to launch correctly.*/
ErrorOnLaunch = 'ErrorOnLaunch',
ErrorOnLaunch = "ErrorOnLaunch",

/** Returned if the specified application launches but fails to add a context
* listener in order to receive the context passed to the `fdc3.open` call.
*/
AppTimeout = 'AppTimeout',
AppTimeout = "AppTimeout",

/** Returned if the FDC3 desktop agent implementation is not currently able
* to handle the request.
*/
ResolverUnavailable = 'ResolverUnavailable',
ResolverUnavailable = "ResolverUnavailable",

/** Returned if a call to the `open` function is made with an invalid
* context argument. Contexts should be Objects with at least a `type` field
* that has a `string` value.
*/
MalformedContext = 'MalformedContext',
MalformedContext = "MalformedContext",

/** @experimental Returned if the specified Desktop Agent is not found, via a connected
* Desktop Agent Bridge. */
DesktopAgentNotFound = 'DesktopAgentNotFound',
DesktopAgentNotFound = "DesktopAgentNotFound",
}
```

Expand Down Expand Up @@ -212,49 +211,49 @@ export enum ResolveError {
/** SHOULD be returned if no apps are available that can resolve the intent
* and context combination.
*/
NoAppsFound = 'NoAppsFound',
NoAppsFound = "NoAppsFound",

/** Returned if the FDC3 desktop agent implementation is not currently able
* to handle the request.
*/
ResolverUnavailable = 'ResolverUnavailable',
ResolverUnavailable = "ResolverUnavailable",

/** Returned if the user cancelled the resolution request, for example by
* closing or cancelling a resolver UI.
*/
UserCancelled = 'UserCancelledResolution',
UserCancelled = "UserCancelledResolution",

/** SHOULD be returned if a timeout cancels an intent resolution that
* required user interaction. Please use `ResolverUnavailable` instead for
* situations where a resolver UI or similar fails.
*/
ResolverTimeout = 'ResolverTimeout',
ResolverTimeout = "ResolverTimeout",

/** Returned if a specified target application is not available or a new
* instance of it cannot be opened.
*/
TargetAppUnavailable = 'TargetAppUnavailable',
TargetAppUnavailable = "TargetAppUnavailable",

/** Returned if a specified target application instance is not available,
* for example because it has been closed.
*/
TargetInstanceUnavailable = 'TargetInstanceUnavailable',
TargetInstanceUnavailable = "TargetInstanceUnavailable",

/** Returned if the intent and context could not be delivered to the selected
* application or instance, for example because it has not added an intent
* handler within a timeout.
*/
IntentDeliveryFailed = 'IntentDeliveryFailed',
IntentDeliveryFailed = "IntentDeliveryFailed",

/** Returned if a call to one of the `raiseIntent` functions is made with an
* invalid context argument. Contexts should be Objects with at least a `type`
* field that has a `string` value.
*/
MalformedContext = 'MalformedContext',
MalformedContext = "MalformedContext",

/** @experimental Returned if the specified Desktop Agent is not found, via a connected
* Desktop Agent Bridge. */
DesktopAgentNotFound = 'DesktopAgentNotFound',
DesktopAgentNotFound = "DesktopAgentNotFound",
}
```

Expand Down Expand Up @@ -339,12 +338,12 @@ enum ResultError {
/** Returned if the intent handler exited without returning a valid result
* (a promise resolving to a Context, Channel object or void).
*/
NoResultReturned = 'NoResultReturned',
NoResultReturned = "NoResultReturned",

/** Returned if the `IntentHandler` function processing the raised intent
* throws an error or rejects the Promise it returned.
*/
IntentHandlerRejected = 'IntentHandlerRejected',
IntentHandlerRejected = "IntentHandlerRejected",
}
```

Expand Down Expand Up @@ -387,21 +386,24 @@ public static class ResultError
```ts
enum BridgingError {
/** @experimental Returned if a Desktop Agent did not return a response, via
* Desktop Agent Bridging, within the alloted timeout. */
ResponseTimedOut = 'ResponseToBridgeTimedOut',
* Desktop Agent Bridging, within the allotted timeout. */
ResponseTimedOut = "ResponseToBridgeTimedOut",

/** @experimental Returned if a Desktop Agent that has been targeted by a
* particular request has been disconnected from the Bridge before a
* response has been received from it. */
AgentDisconnected = 'AgentDisconnected',
AgentDisconnected = "AgentDisconnected",

/** @experimental Returned for FDC3 API calls that are specified with
* arguments indicating that a remote Desktop agent should be targeted
* (e.g. raiseIntent with an app on a remote DesktopAgent targeted),
* when the local Desktop Agent is not connected to a bridge. */
NotConnectedToBridge = 'NotConnectedToBridge',
NotConnectedToBridge = "NotConnectedToBridge",

/** @experimental Returned if a message to a Bridge deviates from the schema
* for that message sufficiently that it could not be processed.
*/
MalformedMessage = 'MalformedMessage'
MalformedMessage = "MalformedMessage",
}
```

Expand Down
Loading
Loading