From 3f43819e32f00e29c2da480eedf7e93e775082e1 Mon Sep 17 00:00:00 2001 From: Yannick Malins Date: Fri, 10 Nov 2023 10:24:44 +0100 Subject: [PATCH 01/87] remove union type for chat message --- docs/context/ref/ChatMessage.md | 16 +++++++++++++- docs/intents/ref/SendChatMessage.md | 16 +++++++++++++- schemas/context/chatMessage.schema.json | 29 ++++++++++++++----------- 3 files changed, 46 insertions(+), 15 deletions(-) diff --git a/docs/context/ref/ChatMessage.md b/docs/context/ref/ChatMessage.md index 11c89751b..b875a73af 100644 --- a/docs/context/ref/ChatMessage.md +++ b/docs/context/ref/ChatMessage.md @@ -36,7 +36,21 @@ const chatMessage = { streamId: "j75xqXy25NBOdacUI3FNBH" } }, - message: "A message to send" + message: { + type: 'fdc3.message', + text: { + 'text/plain': 'Hey all, can we discuss the issue together? I attached a screenshot' + }, + entities: { + '0': { + type: 'fdc3.fileAttachment', + data: { + name: 'myImage.png', + dataUri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII' + } + } + } + } } ``` diff --git a/docs/intents/ref/SendChatMessage.md b/docs/intents/ref/SendChatMessage.md index e34673333..154a6037c 100644 --- a/docs/intents/ref/SendChatMessage.md +++ b/docs/intents/ref/SendChatMessage.md @@ -32,7 +32,21 @@ const chatRoom = intentResolution.getResult(); let chatMessage: ChatMessage = { type: "fdc3.chat.message", chatRoom, - message: "Another message to send in the room" + message: { + type: 'fdc3.message', + text: { + 'text/plain': 'Hey all, can we discuss the issue together? I attached a screenshot' + }, + entities: { + '0': { + type: 'fdc3.fileAttachment', + data: { + name: 'myImage.png', + dataUri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII' + } + } + } + } } await fdc3.raiseIntent("SendChatMessage", context, intentResolution.source); diff --git a/schemas/context/chatMessage.schema.json b/schemas/context/chatMessage.schema.json index d469d3805..ff4265012 100644 --- a/schemas/context/chatMessage.schema.json +++ b/schemas/context/chatMessage.schema.json @@ -9,18 +9,7 @@ "properties": { "type": { "const": "fdc3.chat.message" }, "chatRoom": { "$ref": "chatRoom.schema.json#" }, - "message": { - "title": "Chat message", - "description": "The content of the message to post in the chat when created.", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "message.schema.json#" - } - ] - } + "message": { "$ref": "message.schema.json#" } }, "required": ["type", "chatRoom", "message"] }, @@ -35,6 +24,20 @@ "streamId": "j75xqXy25NBOdacUI3FNBH" } }, - "message": "A message to send" + "message": { + "type": "fdc3.message", + "text": { + "text/plain": "Hey all, can we discuss the issue together? I attached a screenshot" + }, + "entities": { + "0": { + "type": "fdc3.fileAttachment", + "data": { + "name": "myImage.png", + "dataUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII" + } + } + } + } }] } From 8ef2f0aefabb2d0c07d760c62e93d692e162c5dd Mon Sep 17 00:00:00 2001 From: Yannick Malins Date: Fri, 10 Nov 2023 11:25:26 +0100 Subject: [PATCH 02/87] more --- .../schemas/2.1/context/chatMessage.schema.json | 16 +++++++++++++++- .../schemas/next/context/chatMessage.schema.json | 16 +++++++++++++++- .../version-2.1/context/ref/ChatMessage.md | 16 +++++++++++++++- .../version-2.1/intents/ref/SendChatMessage.md | 16 +++++++++++++++- 4 files changed, 60 insertions(+), 4 deletions(-) diff --git a/website/static/schemas/2.1/context/chatMessage.schema.json b/website/static/schemas/2.1/context/chatMessage.schema.json index d7036fb36..945025dfe 100644 --- a/website/static/schemas/2.1/context/chatMessage.schema.json +++ b/website/static/schemas/2.1/context/chatMessage.schema.json @@ -35,6 +35,20 @@ "streamId": "j75xqXy25NBOdacUI3FNBH" } }, - "message": "A message to send" + "message": { + "type": "fdc3.message", + "text": { + "text/plain": "Hey all, can we discuss the issue together? I attached a screenshot" + }, + "entities": { + "0": { + "type": "fdc3.fileAttachment", + "data": { + "name": "myImage.png", + "dataUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII" + } + } + } + } }] } diff --git a/website/static/schemas/next/context/chatMessage.schema.json b/website/static/schemas/next/context/chatMessage.schema.json index d469d3805..218c3747a 100644 --- a/website/static/schemas/next/context/chatMessage.schema.json +++ b/website/static/schemas/next/context/chatMessage.schema.json @@ -35,6 +35,20 @@ "streamId": "j75xqXy25NBOdacUI3FNBH" } }, - "message": "A message to send" + "message": { + "type": "fdc3.message", + "text": { + "text/plain": "Hey all, can we discuss the issue together? I attached a screenshot" + }, + "entities": { + "0": { + "type": "fdc3.fileAttachment", + "data": { + "name": "myImage.png", + "dataUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII" + } + } + } + } }] } diff --git a/website/versioned_docs/version-2.1/context/ref/ChatMessage.md b/website/versioned_docs/version-2.1/context/ref/ChatMessage.md index 271047e26..e9f5b4376 100644 --- a/website/versioned_docs/version-2.1/context/ref/ChatMessage.md +++ b/website/versioned_docs/version-2.1/context/ref/ChatMessage.md @@ -36,7 +36,21 @@ const chatMessage = { streamId: "j75xqXy25NBOdacUI3FNBH" } }, - message: "A message to send" + message: { + type: 'fdc3.message', + text: { + 'text/plain': 'Hey all, can we discuss the issue together? I attached a screenshot' + }, + entities: { + '0': { + type: 'fdc3.fileAttachment', + data: { + name: 'myImage.png', + dataUri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII' + } + } + } + } } ``` diff --git a/website/versioned_docs/version-2.1/intents/ref/SendChatMessage.md b/website/versioned_docs/version-2.1/intents/ref/SendChatMessage.md index e34673333..154a6037c 100644 --- a/website/versioned_docs/version-2.1/intents/ref/SendChatMessage.md +++ b/website/versioned_docs/version-2.1/intents/ref/SendChatMessage.md @@ -32,7 +32,21 @@ const chatRoom = intentResolution.getResult(); let chatMessage: ChatMessage = { type: "fdc3.chat.message", chatRoom, - message: "Another message to send in the room" + message: { + type: 'fdc3.message', + text: { + 'text/plain': 'Hey all, can we discuss the issue together? I attached a screenshot' + }, + entities: { + '0': { + type: 'fdc3.fileAttachment', + data: { + name: 'myImage.png', + dataUri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII' + } + } + } + } } await fdc3.raiseIntent("SendChatMessage", context, intentResolution.source); From 4647b4c7b34c87e9932c5b9be51fad36de3f9282 Mon Sep 17 00:00:00 2001 From: Yannick Malins Date: Fri, 10 Nov 2023 14:56:03 +0100 Subject: [PATCH 03/87] more more --- .../static/schemas/2.1/context/chatMessage.schema.json | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/website/static/schemas/2.1/context/chatMessage.schema.json b/website/static/schemas/2.1/context/chatMessage.schema.json index 945025dfe..1fc6f5089 100644 --- a/website/static/schemas/2.1/context/chatMessage.schema.json +++ b/website/static/schemas/2.1/context/chatMessage.schema.json @@ -12,14 +12,7 @@ "message": { "title": "Chat message", "description": "The content of the message to post in the chat when created.", - "anyOf": [ - { - "type": "string" - }, - { - "$ref": "message.schema.json#" - } - ] + "$ref": "message.schema.json#" } }, "required": ["type", "chatRoom", "message"] From 5969fc6be4d9dea50cec74a8328b35be2fea837a Mon Sep 17 00:00:00 2001 From: Kris West Date: Fri, 10 Nov 2023 22:26:33 +0000 Subject: [PATCH 04/87] Correcting syntax in ChatRoom example --- docs/context/ref/ChatRoom.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/context/ref/ChatRoom.md b/docs/context/ref/ChatRoom.md index ce52eb91c..0027ca9d1 100644 --- a/docs/context/ref/ChatRoom.md +++ b/docs/context/ref/ChatRoom.md @@ -36,7 +36,7 @@ const chatRoom = { providerName: "Symphony", id: { streamId: "j75xqXy25NBOdacUI3FNBH" - } + }, url: "http://symphony.com/ref/room/j75xqXy25NBOdacUI3FNBH___pqSsuJRdA", name: 'My new room' }; From e0bcd97474f98d02b1cb0fd6a2d4c797f6905056 Mon Sep 17 00:00:00 2001 From: Kris West Date: Fri, 10 Nov 2023 22:27:20 +0000 Subject: [PATCH 05/87] Correcting typos in workbench 'no agent detected' message --- toolbox/fdc3-workbench/src/App.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/toolbox/fdc3-workbench/src/App.tsx b/toolbox/fdc3-workbench/src/App.tsx index 27552b121..2ab183532 100644 --- a/toolbox/fdc3-workbench/src/App.tsx +++ b/toolbox/fdc3-workbench/src/App.tsx @@ -286,8 +286,8 @@ export const App = observer(() => { For web applications to be FDC3-enabled, they need to run in the context of an agent that makes the - FDC3 API available to the application. This desktop agent is also responsible for lauching and - co-ordinating applications. It could be a browser extension, web app, or full-fledged desktop + FDC3 API available to the application. This desktop agent is also responsible for launching and + coordinating applications. It could be a browser extension, web app, or full-fledged desktop container framework. From 077b5eb9d1c25a7194790e4ce6848ece8396e109 Mon Sep 17 00:00:00 2001 From: Kris West Date: Fri, 10 Nov 2023 22:39:46 +0000 Subject: [PATCH 06/87] Change 2.0 version label to 2.0+ and ensuring 2.0 version is used for 2.1 --- toolbox/fdc3-workbench/src/components/Header.tsx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/toolbox/fdc3-workbench/src/components/Header.tsx b/toolbox/fdc3-workbench/src/components/Header.tsx index 473bd729b..d51cdf705 100644 --- a/toolbox/fdc3-workbench/src/components/Header.tsx +++ b/toolbox/fdc3-workbench/src/components/Header.tsx @@ -114,16 +114,19 @@ export const Header = (props: { fdc3Available: boolean }) => { console.error("Failed to retrieve FDC3 implementation info", e); } + if (paramVersion) { setChosenVersion(paramVersion); - } else if(implInfo?.fdc3Version && supportedVersion.includes(implInfo?.fdc3Version)) { + } else if(implInfo?.fdc3Version && implInfo.fdc3Version == "2.1") { + //API version 2.1 is backwards compatible with 2.0 + setChosenVersion("2.0"); + }else if(implInfo?.fdc3Version && supportedVersion.includes(implInfo.fdc3Version)) { setChosenVersion(implInfo.fdc3Version); } else { setChosenVersion("2.0"); } window.fdc3Version = chosenVersion; - }; updateInfo(); @@ -144,10 +147,11 @@ export const Header = (props: { fdc3Available: boolean }) => { {supportedVersion.map((ver, index) => ( {ver === chosenVersion ? ( - {ver} + //version 2.0 serves for both 2.0 and 2.1 + {ver == "2.0" ? "2.0+" : ver} ) : ( - {ver} + {ver == "2.0" ? "2.0+" : ver} )} {supportedVersion.length - 1 !== index && | } From ba7ff4fdd604af33acfb2ca38cf03c295864829e Mon Sep 17 00:00:00 2001 From: Kris West Date: Fri, 10 Nov 2023 22:40:29 +0000 Subject: [PATCH 07/87] Adding an alert to intents tab for needing to add intents to appd record in agents that don't support dynamic registration --- toolbox/fdc3-workbench/src/components/Intents.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/toolbox/fdc3-workbench/src/components/Intents.tsx b/toolbox/fdc3-workbench/src/components/Intents.tsx index 4e8850505..728f1fbce 100644 --- a/toolbox/fdc3-workbench/src/components/Intents.tsx +++ b/toolbox/fdc3-workbench/src/components/Intents.tsx @@ -39,7 +39,7 @@ import { Checkbox } from "@material-ui/core"; import { FormGroup } from "@material-ui/core"; import { FormControlLabel } from "@material-ui/core"; import { RadioGroup } from "@material-ui/core"; -import { ToggleButton, ToggleButtonGroup } from "@material-ui/lab"; +import { Alert, ToggleButton, ToggleButtonGroup } from "@material-ui/lab"; import InfoOutlinedIcon from "@material-ui/icons/InfoOutlined"; // interface copied from lib @material-ui/lab/Autocomplete @@ -979,6 +979,10 @@ export const Intents = observer(({ handleTabChange }: { handleTabChange: any }) )} + + Desktop Agents often require apps that listen for intents to include the intent in their appD record. Refer to your Desktop Agent's documentation if the workbench doesn't appear in the intent resolver. + + From 9409ca32bb97b913d933b4125aa127cec7db00b9 Mon Sep 17 00:00:00 2001 From: Kris West Date: Fri, 10 Nov 2023 22:40:51 +0000 Subject: [PATCH 08/87] extending example contexts to include most 2.1 types --- .../fdc3-workbench/src/fixtures/contexts.ts | 354 +++++++++++++++++- 1 file changed, 336 insertions(+), 18 deletions(-) diff --git a/toolbox/fdc3-workbench/src/fixtures/contexts.ts b/toolbox/fdc3-workbench/src/fixtures/contexts.ts index adfffde20..46a40dd17 100644 --- a/toolbox/fdc3-workbench/src/fixtures/contexts.ts +++ b/toolbox/fdc3-workbench/src/fixtures/contexts.ts @@ -6,6 +6,138 @@ import { ContextItem } from "../store/ContextStore"; import { v4 as uuidv4 } from "uuid"; export const contexts: ContextItem[] = [ + { + uuid: uuidv4(), + id: "Chart example", + template: { + type: "fdc3.chart", + instruments: [ + { + type: "fdc3.instrument", + id: { + ticker: "AAPL" + } + }, + { + type: "fdc3.instrument", + id: { + ticker: "GOOG" + } + } + ], + range: { + type: "fdc3.timeRange", + startTime: "2020-09-01T08:00:00.000Z", + endTime: "2020-10-31T08:00:00.000Z" + }, + style: "line" + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/chart.schema.json"), + }, + { + uuid: uuidv4(), + id: "Chat Initialization example", + template: { + type: 'fdc3.chat.initSettings', + chatName: 'Chat ABCD', + members: { + type: 'fdc3.contactList', + contacts: [{ + type: 'fdc3.contact', + name: 'Jane Doe', + id: { + email: 'jane@mail.com' + } + },{ + type: 'fdc3.contact', + name: 'John Doe', + id: { + email: 'john@mail.com' + }, + }] + }, + options: { + groupRecipients: true, // one chat with both contacts + isPublic: false, // private chat room + allowHistoryBrowsing: true, + allowMessageCopy: true + }, + message: { + type: 'fdc3.message', + text: { + 'text/plain': 'Hey all, can we discuss the issue together? I attached a screenshot' + }, + entities: { + 0: { + type: 'fdc3.fileAttachment', + data: { + name: 'myImage.png', + dataUri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII' + } + } + } + } + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/chatInitSettings.schema.json"), + }, + { + uuid: uuidv4(), + id: "Chat Message example", + template:{ + type: "fdc3.chat.message", + chatRoom: { + type: 'fdc3.chat.room', + providerName: "Symphony", + id: { + streamId: "j75xqXy25NBOdacUI3FNBH" + } + }, + message: "A message to send" + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/chatMessage.schema.json"), + }, + { + uuid: uuidv4(), + id: "Chat room example", + template: { + type: "fdc3.chat.room", + providerName: "Symphony", + id: { + streamId: "j75xqXy25NBOdacUI3FNBH" + }, + url: "http://symphony.com/ref/room/j75xqXy25NBOdacUI3FNBH___pqSsuJRdA", + name: 'My new room' + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/chatRoom.schema.json"), + }, + { + uuid: uuidv4(), + id: "Chat search example", + template: { + type: "fdc3.chat.searchCriteria", + criteria: [ + { + type: "fdc3.instrument", + id: { + ticker: "AAPL" + } + }, + { + type: "fdc3.contact", + name: "Jane Doe", + id: { + email: "jane.doe@mail.com" + } + }, + { + type: "fdc3.organization", + name: "Symphony" + }, + "#OrderID45788422" + ] + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/chatSearchCriteria.schema.json"), + }, { uuid: uuidv4(), id: "Contact example", @@ -16,7 +148,7 @@ export const contexts: ContextItem[] = [ email: "jane.doe@mail.com", }, }, - schemaUrl: new URL("https://fdc3.finos.org/schemas/next/contact.schema.json"), + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/contact.schema.json"), }, { uuid: uuidv4(), @@ -40,11 +172,52 @@ export const contexts: ContextItem[] = [ }, ], }, - schemaUrl: new URL("https://fdc3.finos.org/schemas/next/contactList.schema.json"), + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/contactList.schema.json"), + }, + { + uuid: uuidv4(), + id: "Country example", + template: { + type: "fdc3.country", + name: "Sweden", + id: { + ISOALPHA3: "SWE", + }, + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/country.schema.json"), }, { uuid: uuidv4(), - id: "Instrument example", + id: "Currency example", + template: { + type: 'fdc3.currency', + name: 'US Dollar', + id: { + CURRENCY_ISOCODE: "USD" + } + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/currency.schema.json"), + }, + { + uuid: uuidv4(), + id: "Email example", + template: { + type: 'fdc3.email', + recipients: { + type: 'fdc3.contact', + name: 'Jane Doe', + id: { + email: 'jane.doe@example.com' + } + }, + subject: 'The information you requested', + textBody: 'Blah, blah, blah ...' + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/email.schema.json"), + }, + { + uuid: uuidv4(), + id: "Instrument example - MSFT", template: { type: "fdc3.instrument", name: "Microsoft", @@ -54,7 +227,19 @@ export const contexts: ContextItem[] = [ ISIN: "US5949181045", }, }, - schemaUrl: new URL("https://fdc3.finos.org/schemas/next/instrument.schema.json"), + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/instrument.schema.json"), + }, + { + uuid: uuidv4(), + id: "Instrument example - AAPL", + template: { + type: "fdc3.instrument", + name: "Apple", + id: { + ticker: "AAPL" + }, + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/instrument.schema.json"), }, { uuid: uuidv4(), @@ -76,32 +261,95 @@ export const contexts: ContextItem[] = [ }, ], }, - schemaUrl: new URL("https://fdc3.finos.org/schemas/next/instrumentList.schema.json"), + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/instrumentList.schema.json"), }, { uuid: uuidv4(), - id: "Organization example", + id: "Interaction example", template: { - type: "fdc3.organization", - name: "Cargill, Incorporated", + type: 'fdc3.interaction', + participants: { + type: 'fdc3.contactList', + contacts: [ + { + type: 'fdc3.contact', + name: 'Jane Doe', + id: { + email: 'jane.doe@mail.com' + } + }, + { + type: 'fdc3.contact', + name: 'John Doe', + id: { + email: 'john.doe@mail.com' + } + }, + ] + }, + interactionType: 'Instant Message', + timeRange: { + type: 'fdc3.timeRange', + startTime: '2022-02-10T15:12:00Z' + }, + description: 'Laboris libero dapibus fames elit adipisicing eu, fermentum, dignissimos laboriosam, erat, risus qui deserunt. Praesentium! Reiciendis. Hic harum nostrud, harum potenti amet? Mauris. Pretium aliquid animi, eget eiusmod integer proident. Architecto ipsum blandit ducimus, possimus illum sunt illum necessitatibus ab litora sed, nonummy integer minus corrupti ducimus iste senectus accumsan, fugiat nostrud? Pede vero dictumst excepturi, iure earum consequuntur voluptatum', + initiator: { + type: 'fdc3.contact', + name: 'Jane Doe', + id: { + email: 'jane.doe@mail.com' + } + }, + origin: 'Outlook' + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/interaction.schema.json"), + }, + { + uuid: uuidv4(), + id: "Nothing example", + template: { + type: 'fdc3.nothing' + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/nothing.schema.json"), + }, + { + uuid: uuidv4(), + id: "Order example", + template: { + type: "fdc3.order", + name: "...", id: { - LEI: "QXZYQNMR4JZ5RIRN4T31", - FDS_ID: "00161G-E", + myOMS: "12345" }, + details: { + product: { + type: "fdc3.product", + id: { + productId: "ABC123" + }, + instrument: { + type: "fdc3.instrument", + id: { + ticker: "MSFT" + } + } + } + } }, - schemaUrl: new URL("https://fdc3.finos.org/schemas/next/organization.schema.json"), + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/order.schema.json"), }, { uuid: uuidv4(), - id: "Country example", + id: "Organization example", template: { - type: "fdc3.country", - name: "Sweden", + type: "fdc3.organization", + name: "Cargill, Incorporated", id: { - ISOALPHA3: "SWE", + LEI: "QXZYQNMR4JZ5RIRN4T31", + FDS_ID: "00161G-E", }, }, - schemaUrl: new URL("https://fdc3.finos.org/schemas/next/country.schema.json"), + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/organization.schema.json"), }, { uuid: uuidv4(), @@ -116,7 +364,7 @@ export const contexts: ContextItem[] = [ }, holding: 2000000, }, - schemaUrl: new URL("https://fdc3.finos.org/schemas/next/position.schema.json"), + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/position.schema.json"), }, { uuid: uuidv4(), @@ -156,6 +404,76 @@ export const contexts: ContextItem[] = [ }, ], }, - schemaUrl: new URL("https://fdc3.finos.org/schemas/next/portfolio.schema.json"), + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/portfolio.schema.json"), + }, + { + uuid: uuidv4(), + id: "Product example", + template: { + type: "fdc3.product", + id: { + productId: "ABC123" + }, + instrument: { + type: "fdc3.instrument", + id: { + ticker: "MSFT" + } + } + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/product.schema.json"), + }, + { + uuid: uuidv4(), + id: "Trade example", + template: { + type: "fdc3.trade", + name: "...", + id: { + myEMS: "12345" + }, + product: { + type: "fdc3.product", + id: { + productId: "ABC123" + }, + instrument: { + type: "fdc3.instrument", + id: { + ticker: "MSFT" + } + } + } + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/trade.schema.json"), + }, + { + uuid: uuidv4(), + id: "Transaction result example", + template: { + type: "fdc3.transactionResult", + status: "Updated", + context: { + type: "fdc3.contact", + name: "Jane Doe", + id: { + email: "jane.doe@mail.com" + } + }, + message: "record with id 'jane.doe@mail.com' was updated" + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/transactionresult.schema.json"), + }, + { + uuid: uuidv4(), + id: "Valuation example", + template: { + type: 'fdc3.valuation', + value: 500.0, + price: 5.0, + CURRENCY_ISOCODE: 'USD', + expiryTime: "2022-05-13T16:16:24+01:00" + }, + schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/valuation.schema.json"), }, ]; From b51dfd44020ab095eb685c9fa739b70ea5201cda Mon Sep 17 00:00:00 2001 From: Kris West Date: Fri, 10 Nov 2023 22:52:33 +0000 Subject: [PATCH 09/87] Add intent types for 2.1 to workbench --- .../src/fixtures/intentTypes.ts | 56 +++++++++++++++++-- 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/toolbox/fdc3-workbench/src/fixtures/intentTypes.ts b/toolbox/fdc3-workbench/src/fixtures/intentTypes.ts index 40d9afa57..904f2ca44 100644 --- a/toolbox/fdc3-workbench/src/fixtures/intentTypes.ts +++ b/toolbox/fdc3-workbench/src/fixtures/intentTypes.ts @@ -3,6 +3,14 @@ * Copyright FINOS FDC3 contributors - see NOTICE file */ export const intentTypes: Array<{ title: string; value: string }> = [ + { + title: "CreateInteraction", + value: "CreateInteraction", + }, + { + title: "SendChatMessage", + value: "SendChatMessage", + }, { title: "StartCall", value: "StartCall", @@ -11,28 +19,64 @@ export const intentTypes: Array<{ title: string; value: string }> = [ title: "StartChat", value: "StartChat", }, + { + title: "StartEmail", + value: "StartEmail", + }, + { + title: "ViewAnalysis", + value: "ViewAnalysis", + }, { title: "ViewChart", value: "ViewChart", }, + { + title: "ViewChat", + value: "ViewChat", + }, { title: "ViewContact", value: "ViewContact", }, { - title: "ViewQuote", - value: "ViewQuote", + title: "ViewHoldings", + value: "ViewHoldings", + }, + { + title: "ViewInstrument", + value: "ViewInstrument", + }, + { + title: "ViewInteractions", + value: "ViewInteractions", + }, + { + title: "ViewMessages", + value: "ViewMessages", + }, + { + title: "ViewMessages", + value: "ViewMessages", }, { title: "ViewNews", value: "ViewNews", }, { - title: "ViewAnalysis", - value: "ViewAnalysis", + title: "ViewOrders", + value: "ViewOrders", }, { - title: "ViewInstrument", - value: "ViewInstrument", + title: "ViewProfile", + value: "ViewProfile", + }, + { + title: "ViewQuote", + value: "ViewQuote", }, + { + title: "ViewResearch", + value: "ViewResearch", + } ]; From a7108501448b4947da5678198b54dc451706a98b Mon Sep 17 00:00:00 2001 From: Kris West Date: Mon, 13 Nov 2023 13:52:13 +0000 Subject: [PATCH 10/87] Regenerating context types for ChatMessage update --- package-lock.json | 4 ++-- package.json | 2 +- src/context/ContextTypes.ts | 7 ++----- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index f1dc2a152..e75b20e6b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@finos/fdc3", - "version": "2.1.0-beta.3", + "version": "2.1.0-beta.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@finos/fdc3", - "version": "2.1.0-beta.3", + "version": "2.1.0-beta.5", "license": "Apache-2.0", "devDependencies": { "husky": "^4.3.0", diff --git a/package.json b/package.json index dbd913298..cc902b0a0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@finos/fdc3", - "version": "2.1.0-beta.4", + "version": "2.1.0-beta.5", "author": "Fintech Open Source Foundation (FINOS)", "homepage": "https://fdc3.finos.org", "repository": { diff --git a/src/context/ContextTypes.ts b/src/context/ContextTypes.ts index 5f0afedf2..c0440d1ca 100644 --- a/src/context/ContextTypes.ts +++ b/src/context/ContextTypes.ts @@ -645,10 +645,7 @@ export interface ChatOptions { */ export interface ChatMessage { chatRoom: ChatRoomObject; - /** - * The content of the message to post in the chat when created. - */ - message: MessageObject | string; + message: MessageObject; type: 'fdc3.chat.message'; id?: { [key: string]: any }; name?: string; @@ -2574,7 +2571,7 @@ const typeMap: any = { ChatMessage: o( [ { json: 'chatRoom', js: 'chatRoom', typ: r('ChatRoomObject') }, - { json: 'message', js: 'message', typ: u(r('MessageObject'), '') }, + { json: 'message', js: 'message', typ: r('MessageObject') }, { json: 'type', js: 'type', typ: r('ChatMessageType') }, { json: 'id', js: 'id', typ: u(undefined, m('any')) }, { json: 'name', js: 'name', typ: u(undefined, '') }, From ff73e6b08e68f8e5fc3cf4ac2184e526ec8ea2e1 Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 29 Nov 2023 18:19:26 +0000 Subject: [PATCH 11/87] Update NPM module publishing github action (package.yml) Updates the github actions used in publishing to more recent versions as several are old and using deprecated node versions. --- .github/workflows/package.yml | 40 ++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index ae61fe045..537953f56 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -33,15 +33,15 @@ jobs: steps: - name: Checkout repo - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Use Node ${{ matrix.node }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} - name: Install dependencies - uses: bahmutov/npm-install@c5482d70ec8706408996e31ac94075030694993f #v1.8.32 + uses: bahmutov/npm-install@2509f13e8485d88340a789a3f7ca11aaac47c9fc #v1.8.36 - name: Lint run: yarn lint @@ -52,7 +52,7 @@ jobs: - name: Build run: yarn build - pacakge-publish: + package-publish: if: ${{ github.event_name == 'push' }} needs: package-build name: Publish package to ${{ matrix.name }} @@ -68,30 +68,40 @@ jobs: token-name: GITHUB_TOKEN steps: - name: Checkout repo - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Configure Node - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: 18.16.x registry-url: ${{ matrix.registry }} - name: Check package version id: check-version - uses: PostHog/check-package-version@adccce0ed9759513476413668bd2a5c995450bde #v2.0.0 + uses: tehpsalmist/npm-publish-status-action@v1 - - name: Package version info - run: | - echo "Committed version: ${{ steps.check-version.outputs.committed-version }}" - echo "Published version: ${{ steps.check-version.published-version }}" - echo "Is version new: ${{ steps.check-version.outputs.is-new-version }}" + # Disabled when switching from PostHog/check-package-version as the new lib + # just tells you if your version exists or not + # - name: Package version info + # run: | + # echo "Committed version: ${{ steps.check-version.outputs.committed-version }}" + # echo "Published version: ${{ steps.check-version.published-version }}" + # echo "Is version new: ${{ steps.check-version.outputs.is-new-version }}" + - name: Report already published status + if: steps.check-version.outputs.exists == '1' + run: 'echo "package version already exists on npm registry"' + + - name: Report not yet published status + if: steps.check-version.outputs.exists == '1' + run: 'echo "package version does not exist on npm registry, publishing..."' + - name: Install dependencies - if: steps.check-version.outputs.is-new-version == 'true' - uses: bahmutov/npm-install@c5482d70ec8706408996e31ac94075030694993f #v1.8.32 + if: steps.check-version.outputs.exists == '0' + uses: bahmutov/npm-install@2509f13e8485d88340a789a3f7ca11aaac47c9fc #v1.8.36 - name: Publish - if: steps.check-version.outputs.is-new-version == 'true' + if: steps.check-version.outputs.exists == '0' run: yarn publish --access public env: NODE_AUTH_TOKEN: ${{ secrets[matrix.token-name] }} From 1cf829fb509905109522f7d083884bac9e8a03d9 Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 29 Nov 2023 18:24:29 +0000 Subject: [PATCH 12/87] Update package.yml updating node versions to 20 --- .github/workflows/package.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 537953f56..70e476d4b 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -28,7 +28,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - node: [18.16.x] + node: [20] os: [ubuntu-latest, windows-latest] steps: @@ -73,7 +73,7 @@ jobs: - name: Configure Node uses: actions/setup-node@v4 with: - node-version: 18.16.x + node-version: 20 registry-url: ${{ matrix.registry }} - name: Check package version From 2e5529fe1ea3e8d7c87ab5d8cff0ff5befa3eaa8 Mon Sep 17 00:00:00 2001 From: Rob Moffat Date: Thu, 30 Nov 2023 09:34:33 +0000 Subject: [PATCH 13/87] Instructions on becoming participant, raising PR --- .github/ISSUE_TEMPLATE/general-meeting.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/general-meeting.md b/.github/ISSUE_TEMPLATE/general-meeting.md index 7b3dbc62f..c4834f59a 100644 --- a/.github/ISSUE_TEMPLATE/general-meeting.md +++ b/.github/ISSUE_TEMPLATE/general-meeting.md @@ -36,6 +36,21 @@ DD MMM yyyy - 10am EST / 3pm GMT - FINOS project meetings may be recorded for use solely by the FINOS team for administration purposes. In very limited instances, and with explicit approval, recordings may be made more widely available. +## Participation Requirements + +**Note:** Meeting participants are expected to accept the terms of the FDC3 license (Community Specification License), understand the governance process and have a CLA in place. + +Please click the following links at the start of the meeting if you have not done so previously. + +- [View the CSL](https://raw.githubusercontent.com/finos/FDC3/master/LICENSE) +- [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/master/GOVERNANCE.md) +- [Click here to raise a PR](https://github.com/finos/FDC3/edit/master/NOTICES.md) +- [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FLICENSE%20.%20Thank%20you!") + +## Tracking Attendance + +**Note:** Meeting participants are expected to _add a comment to this GitHub issue_ in order that we can track attendance of FDC3 project meetings. Please do this at the start of the meeting. + ## Agenda - [ ] Convene & roll call, review meeting notices (5mins) - [ ] Review action items from previous meeting (5mins) From c4985c8c130ddabb72da30379c024d2f21b5bca9 Mon Sep 17 00:00:00 2001 From: Rob Moffat Date: Thu, 30 Nov 2023 09:36:35 +0000 Subject: [PATCH 14/87] improving instructions for EasyCLA --- .github/ISSUE_TEMPLATE/general-meeting.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/general-meeting.md b/.github/ISSUE_TEMPLATE/general-meeting.md index c4834f59a..63f35c1ac 100644 --- a/.github/ISSUE_TEMPLATE/general-meeting.md +++ b/.github/ISSUE_TEMPLATE/general-meeting.md @@ -44,7 +44,11 @@ Please click the following links at the start of the meeting if you have not don - [View the CSL](https://raw.githubusercontent.com/finos/FDC3/master/LICENSE) - [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/master/GOVERNANCE.md) -- [Click here to raise a PR](https://github.com/finos/FDC3/edit/master/NOTICES.md) +- [Click here to start a PR](https://github.com/finos/FDC3/edit/master/NOTICES.md). + - Edit the page to add your details. + - Hit save. + - Create the PR. + - Click "Accept" on the EasyCLA dialog in the PR's discussion section. - [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FLICENSE%20.%20Thank%20you!") ## Tracking Attendance From dd69d92051ac03f002c4eaff4dcfe1f94c6a6aaf Mon Sep 17 00:00:00 2001 From: Rob Moffat Date: Thu, 30 Nov 2023 09:40:30 +0000 Subject: [PATCH 15/87] Update general-meeting.md --- .github/ISSUE_TEMPLATE/general-meeting.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/general-meeting.md b/.github/ISSUE_TEMPLATE/general-meeting.md index 63f35c1ac..4e99caf4c 100644 --- a/.github/ISSUE_TEMPLATE/general-meeting.md +++ b/.github/ISSUE_TEMPLATE/general-meeting.md @@ -46,8 +46,8 @@ Please click the following links at the start of the meeting if you have not don - [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/master/GOVERNANCE.md) - [Click here to start a PR](https://github.com/finos/FDC3/edit/master/NOTICES.md). - Edit the page to add your details. - - Hit save. - - Create the PR. + - Hit the save button. + - Click "Create Pull Request". - Click "Accept" on the EasyCLA dialog in the PR's discussion section. - [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FLICENSE%20.%20Thank%20you!") From 0bfc21bc3530f24baaeb6386355b7a6a716031c6 Mon Sep 17 00:00:00 2001 From: Rob Moffat Date: Thu, 30 Nov 2023 10:29:20 +0000 Subject: [PATCH 16/87] Update discussion-group.md --- .github/ISSUE_TEMPLATE/discussion-group.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/discussion-group.md b/.github/ISSUE_TEMPLATE/discussion-group.md index 299a0d7f3..99173b9c4 100644 --- a/.github/ISSUE_TEMPLATE/discussion-group.md +++ b/.github/ISSUE_TEMPLATE/discussion-group.md @@ -43,6 +43,26 @@ Thursday DD MMM yyyy - 10am (US eastern timezone EDT/EST) / 3pm (London, GMT/BST - FINOS project meetings may be recorded for use solely by the FINOS team for administration purposes. In very limited instances, and with explicit approval, recordings may be made more widely available. - A Discussion Group has no direct decision-making power regarding the FDC3 standard - rather it is intended that anything they propose or work on will result in proposals (via Github issues and PRs) for the Standards Working Group participants to consider and vote on for inclusion in the standard. + + +## Participation Requirements + +**Note:** Meeting participants are expected to accept the terms of the FDC3 license (Community Specification License), understand the governance process and have a CLA in place. + +Please click the following links at the start of the meeting if you have not done so previously. + + - [View the CSL](https://raw.githubusercontent.com/finos/FDC3/master/LICENSE) + - [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/master/GOVERNANCE.md) + - [Click here to start a PR](https://github.com/finos/FDC3/edit/master/NOTICES.md). + - Edit the page to add your details. + - Hit the save button. + - Click "Create Pull Request". + - Click "Accept" on the EasyCLA dialog in the PR's discussion section. + - [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FLICENSE%20.%20Thank%20you!") + +## Tracking Attendance + +**Note:** Meeting participants are expected to _add a comment to this GitHub issue_ in order that we can track attendance of FDC3 project meetings. Please do this at the start of the meeting. ## Agenda - [ ] Convene & roll call, review meeting notices (5mins) From bd9bc86d518aadc316e0f67fb43ae105e50f5acd Mon Sep 17 00:00:00 2001 From: Rob Moffat Date: Thu, 30 Nov 2023 10:30:04 +0000 Subject: [PATCH 17/87] Update standard-wg-meeting.md --- .github/ISSUE_TEMPLATE/standard-wg-meeting.md | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/standard-wg-meeting.md b/.github/ISSUE_TEMPLATE/standard-wg-meeting.md index dfba1dd6c..e1714d165 100644 --- a/.github/ISSUE_TEMPLATE/standard-wg-meeting.md +++ b/.github/ISSUE_TEMPLATE/standard-wg-meeting.md @@ -36,6 +36,26 @@ Thursday DD MMM yyyy - 10am (US eastern timezone EDT/EST) / 3pm (London, GMT/BST - FINOS project meetings may be recorded for use solely by the FINOS team for administration purposes. In very limited instances, and with explicit approval, recordings may be made more widely available. + + ## Participation Requirements + + **Note:** Meeting participants are expected to accept the terms of the FDC3 license (Community Specification License), understand the governance process and have a CLA in place. + + Please click the following links at the start of the meeting if you have not done so previously. + + - [View the CSL](https://raw.githubusercontent.com/finos/FDC3/master/LICENSE) + - [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/master/GOVERNANCE.md) + - [Click here to start a PR](https://github.com/finos/FDC3/edit/master/NOTICES.md). + - Edit the page to add your details. + - Hit the save button. + - Click "Create Pull Request". + - Click "Accept" on the EasyCLA dialog in the PR's discussion section. + - [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FLICENSE%20.%20Thank%20you!") + + ## Tracking Attendance + + **Note:** Meeting participants are expected to _add a comment to this GitHub issue_ in order that we can track attendance of FDC3 project meetings. Please do this at the start of the meeting. + ## Agenda - [ ] Convene & roll call, review meeting notices (5mins) - [ ] Review action items from previous meeting (5mins) From 61b37e1c9ff2cc866ecc6ac901bcc30d1270e468 Mon Sep 17 00:00:00 2001 From: Kris West Date: Tue, 5 Dec 2023 13:53:24 +0000 Subject: [PATCH 18/87] pinning a github action and switching to npm publish with provenance --- .github/workflows/package.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 70e476d4b..2d8127ce9 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -44,19 +44,22 @@ jobs: uses: bahmutov/npm-install@2509f13e8485d88340a789a3f7ca11aaac47c9fc #v1.8.36 - name: Lint - run: yarn lint + run: npm run lint - name: Test - run: yarn test --ci --coverage --maxWorkers=2 + run: npm run test --ci --coverage --maxWorkers=2 - name: Build - run: yarn build + run: npm run build package-publish: if: ${{ github.event_name == 'push' }} needs: package-build name: Publish package to ${{ matrix.name }} runs-on: ubuntu-latest + permissions: + contents: read + id-token: write strategy: matrix: include: @@ -78,7 +81,7 @@ jobs: - name: Check package version id: check-version - uses: tehpsalmist/npm-publish-status-action@v1 + uses: tehpsalmist/npm-publish-status-action@deb911186cfe5134094f49183364da10a986e4e7 # Disabled when switching from PostHog/check-package-version as the new lib # just tells you if your version exists or not @@ -102,6 +105,6 @@ jobs: - name: Publish if: steps.check-version.outputs.exists == '0' - run: yarn publish --access public + run: npm run publish --provenance --access public env: NODE_AUTH_TOKEN: ${{ secrets[matrix.token-name] }} From 9efc8f0d2b0e58dc2682a5652d46154ad882ba26 Mon Sep 17 00:00:00 2001 From: Johan Sandersson <98814236+openfin-johans@users.noreply.github.com> Date: Wed, 6 Dec 2023 17:10:27 +0000 Subject: [PATCH 19/87] Update DesktopAgent.md Clarified the passing of context when adding a listener --- website/versioned_docs/version-2.1/api/ref/DesktopAgent.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/versioned_docs/version-2.1/api/ref/DesktopAgent.md b/website/versioned_docs/version-2.1/api/ref/DesktopAgent.md index 991047cb5..88ff8242e 100644 --- a/website/versioned_docs/version-2.1/api/ref/DesktopAgent.md +++ b/website/versioned_docs/version-2.1/api/ref/DesktopAgent.md @@ -63,7 +63,7 @@ addContextListener(contextType: string | null, handler: ContextHandler): Promise Adds a listener for incoming context broadcasts from the Desktop Agent (via a User channel or [`fdc3.open`](#open) API call). If the consumer is only interested in a context of a particular type, they can specify that type. If the consumer is able to receive context of any type or will inspect types received, then they can pass `null` as the `contextType` parameter to receive all context types. -Context broadcasts are primarily received from apps that are joined to the same User Channel as the listening application, hence, if the application is not currently joined to a User Channel no broadcasts will be received from channels. If this function is called after the app has already joined a channel and the channel already contains context that would be passed to the context listener, then it will be called immediately with that context. +Context broadcasts are primarily received from apps that are joined to the same User Channel as the listening application, hence, if the application is not currently joined to a User Channel no broadcasts will be received from channels. If this function is called after the app has already joined a channel and the channel already contains context that matches the type of the context listener, then it will be called immediately and the context passed to the handler function. If `null` was passed as the context type for the listener and the channel contains context, then the handler function will be called immediately with the most recent context - regardless of type. Context may also be received via this listener if the application was launched via a call to [`fdc3.open`](#open), where context was passed as an argument. In order to receive this, applications SHOULD add their context listener as quickly as possible after launch, or an error MAY be returned to the caller and the context may not be delivered. The exact timeout used is set by the Desktop Agent implementation, but MUST be at least 15 seconds. From 3ad6ec9e28ef677b95792db0c07a45ae400365bf Mon Sep 17 00:00:00 2001 From: Johan Sandersson <98814236+openfin-johans@users.noreply.github.com> Date: Wed, 6 Dec 2023 17:13:58 +0000 Subject: [PATCH 20/87] Update DesktopAgent.md --- website/versioned_docs/version-2.0/api/ref/DesktopAgent.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/versioned_docs/version-2.0/api/ref/DesktopAgent.md b/website/versioned_docs/version-2.0/api/ref/DesktopAgent.md index 8a1bb56f8..71244c191 100644 --- a/website/versioned_docs/version-2.0/api/ref/DesktopAgent.md +++ b/website/versioned_docs/version-2.0/api/ref/DesktopAgent.md @@ -63,7 +63,7 @@ addContextListener(contextType: string | null, handler: ContextHandler): Promise Adds a listener for incoming context broadcasts from the Desktop Agent on the current User Channel. If the consumer is only interested in a context of a particular type, they can specify that type. If the consumer is able to receive context of any type or will inspect types received, then they can pass `null` as the `contextType` parameter to receive all context types. -Context broadcasts are only received from apps that are joined to the same User Channel as the listening application, hence, if the application is not currently joined to a User Channel no broadcasts will be received. If this function is called after the app has already joined a channel and the channel already contains context that would be passed to the context listener, then it will be called immediately with that context. +Context broadcasts are primarily received from apps that are joined to the same User Channel as the listening application, hence, if the application is not currently joined to a User Channel no broadcasts will be received from channels. If this function is called after the app has already joined a channel and the channel already contains context that matches the type of the context listener, then it will be called immediately and the context passed to the handler function. If `null` was passed as the context type for the listener and the channel contains context, then the handler function will be called immediately with the most recent context - regardless of type. Optional metadata about each context message received, including the app that originated the message, SHOULD be provided by the Desktop Agent implementation. From 941424dec498b471a71f7dbf47b166bc5f93fa1d Mon Sep 17 00:00:00 2001 From: Johan Sandersson <98814236+openfin-johans@users.noreply.github.com> Date: Wed, 6 Dec 2023 17:25:28 +0000 Subject: [PATCH 21/87] Update DesktopAgent.md --- docs/api/ref/DesktopAgent.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/ref/DesktopAgent.md b/docs/api/ref/DesktopAgent.md index 991047cb5..88ff8242e 100644 --- a/docs/api/ref/DesktopAgent.md +++ b/docs/api/ref/DesktopAgent.md @@ -63,7 +63,7 @@ addContextListener(contextType: string | null, handler: ContextHandler): Promise Adds a listener for incoming context broadcasts from the Desktop Agent (via a User channel or [`fdc3.open`](#open) API call). If the consumer is only interested in a context of a particular type, they can specify that type. If the consumer is able to receive context of any type or will inspect types received, then they can pass `null` as the `contextType` parameter to receive all context types. -Context broadcasts are primarily received from apps that are joined to the same User Channel as the listening application, hence, if the application is not currently joined to a User Channel no broadcasts will be received from channels. If this function is called after the app has already joined a channel and the channel already contains context that would be passed to the context listener, then it will be called immediately with that context. +Context broadcasts are primarily received from apps that are joined to the same User Channel as the listening application, hence, if the application is not currently joined to a User Channel no broadcasts will be received from channels. If this function is called after the app has already joined a channel and the channel already contains context that matches the type of the context listener, then it will be called immediately and the context passed to the handler function. If `null` was passed as the context type for the listener and the channel contains context, then the handler function will be called immediately with the most recent context - regardless of type. Context may also be received via this listener if the application was launched via a call to [`fdc3.open`](#open), where context was passed as an argument. In order to receive this, applications SHOULD add their context listener as quickly as possible after launch, or an error MAY be returned to the caller and the context may not be delivered. The exact timeout used is set by the Desktop Agent implementation, but MUST be at least 15 seconds. From 38c612be3d3a2a07c030417a0aebb0d4e93f99ed Mon Sep 17 00:00:00 2001 From: Johan Sandersson <98814236+openfin-johans@users.noreply.github.com> Date: Wed, 6 Dec 2023 17:26:35 +0000 Subject: [PATCH 22/87] Update website/versioned_docs/version-2.1/api/ref/DesktopAgent.md Co-authored-by: Kris West --- website/versioned_docs/version-2.1/api/ref/DesktopAgent.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/versioned_docs/version-2.1/api/ref/DesktopAgent.md b/website/versioned_docs/version-2.1/api/ref/DesktopAgent.md index 88ff8242e..310cd54ca 100644 --- a/website/versioned_docs/version-2.1/api/ref/DesktopAgent.md +++ b/website/versioned_docs/version-2.1/api/ref/DesktopAgent.md @@ -63,7 +63,7 @@ addContextListener(contextType: string | null, handler: ContextHandler): Promise Adds a listener for incoming context broadcasts from the Desktop Agent (via a User channel or [`fdc3.open`](#open) API call). If the consumer is only interested in a context of a particular type, they can specify that type. If the consumer is able to receive context of any type or will inspect types received, then they can pass `null` as the `contextType` parameter to receive all context types. -Context broadcasts are primarily received from apps that are joined to the same User Channel as the listening application, hence, if the application is not currently joined to a User Channel no broadcasts will be received from channels. If this function is called after the app has already joined a channel and the channel already contains context that matches the type of the context listener, then it will be called immediately and the context passed to the handler function. If `null` was passed as the context type for the listener and the channel contains context, then the handler function will be called immediately with the most recent context - regardless of type. +Context broadcasts are primarily received from apps that are joined to the same User Channel as the listening application, hence, if the application is not currently joined to a User Channel no broadcasts will be received from User channels. If this function is called after the app has already joined a channel and the channel already contains context that matches the type of the context listener, then it will be called immediately and the context passed to the handler function. If `null` was passed as the context type for the listener and the channel contains context, then the handler function will be called immediately with the most recent context - regardless of type. Context may also be received via this listener if the application was launched via a call to [`fdc3.open`](#open), where context was passed as an argument. In order to receive this, applications SHOULD add their context listener as quickly as possible after launch, or an error MAY be returned to the caller and the context may not be delivered. The exact timeout used is set by the Desktop Agent implementation, but MUST be at least 15 seconds. From 6d82447d1f59be6f66a35d34822c1cdfa9ce221f Mon Sep 17 00:00:00 2001 From: Johan Sandersson <98814236+openfin-johans@users.noreply.github.com> Date: Wed, 6 Dec 2023 17:26:42 +0000 Subject: [PATCH 23/87] Update website/versioned_docs/version-2.0/api/ref/DesktopAgent.md Co-authored-by: Kris West --- website/versioned_docs/version-2.0/api/ref/DesktopAgent.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/versioned_docs/version-2.0/api/ref/DesktopAgent.md b/website/versioned_docs/version-2.0/api/ref/DesktopAgent.md index 71244c191..5d9663087 100644 --- a/website/versioned_docs/version-2.0/api/ref/DesktopAgent.md +++ b/website/versioned_docs/version-2.0/api/ref/DesktopAgent.md @@ -63,7 +63,7 @@ addContextListener(contextType: string | null, handler: ContextHandler): Promise Adds a listener for incoming context broadcasts from the Desktop Agent on the current User Channel. If the consumer is only interested in a context of a particular type, they can specify that type. If the consumer is able to receive context of any type or will inspect types received, then they can pass `null` as the `contextType` parameter to receive all context types. -Context broadcasts are primarily received from apps that are joined to the same User Channel as the listening application, hence, if the application is not currently joined to a User Channel no broadcasts will be received from channels. If this function is called after the app has already joined a channel and the channel already contains context that matches the type of the context listener, then it will be called immediately and the context passed to the handler function. If `null` was passed as the context type for the listener and the channel contains context, then the handler function will be called immediately with the most recent context - regardless of type. +Context broadcasts are primarily received from apps that are joined to the same User Channel as the listening application, hence, if the application is not currently joined to a User Channel no broadcasts will be received from User channels. If this function is called after the app has already joined a channel and the channel already contains context that matches the type of the context listener, then it will be called immediately and the context passed to the handler function. If `null` was passed as the context type for the listener and the channel contains context, then the handler function will be called immediately with the most recent context - regardless of type. Optional metadata about each context message received, including the app that originated the message, SHOULD be provided by the Desktop Agent implementation. From 38200cfdf3eeaa4cf27a2d659db4d5732d217516 Mon Sep 17 00:00:00 2001 From: Johan Sandersson <98814236+openfin-johans@users.noreply.github.com> Date: Wed, 6 Dec 2023 17:37:12 +0000 Subject: [PATCH 24/87] Update DesktopAgent.md --- docs/api/ref/DesktopAgent.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/ref/DesktopAgent.md b/docs/api/ref/DesktopAgent.md index 88ff8242e..310cd54ca 100644 --- a/docs/api/ref/DesktopAgent.md +++ b/docs/api/ref/DesktopAgent.md @@ -63,7 +63,7 @@ addContextListener(contextType: string | null, handler: ContextHandler): Promise Adds a listener for incoming context broadcasts from the Desktop Agent (via a User channel or [`fdc3.open`](#open) API call). If the consumer is only interested in a context of a particular type, they can specify that type. If the consumer is able to receive context of any type or will inspect types received, then they can pass `null` as the `contextType` parameter to receive all context types. -Context broadcasts are primarily received from apps that are joined to the same User Channel as the listening application, hence, if the application is not currently joined to a User Channel no broadcasts will be received from channels. If this function is called after the app has already joined a channel and the channel already contains context that matches the type of the context listener, then it will be called immediately and the context passed to the handler function. If `null` was passed as the context type for the listener and the channel contains context, then the handler function will be called immediately with the most recent context - regardless of type. +Context broadcasts are primarily received from apps that are joined to the same User Channel as the listening application, hence, if the application is not currently joined to a User Channel no broadcasts will be received from User channels. If this function is called after the app has already joined a channel and the channel already contains context that matches the type of the context listener, then it will be called immediately and the context passed to the handler function. If `null` was passed as the context type for the listener and the channel contains context, then the handler function will be called immediately with the most recent context - regardless of type. Context may also be received via this listener if the application was launched via a call to [`fdc3.open`](#open), where context was passed as an argument. In order to receive this, applications SHOULD add their context listener as quickly as possible after launch, or an error MAY be returned to the caller and the context may not be delivered. The exact timeout used is set by the Desktop Agent implementation, but MUST be at least 15 seconds. From fb81b238bbf8d503c8a8eb55751e5281ed3ae3f6 Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 6 Dec 2023 17:40:52 +0000 Subject: [PATCH 25/87] Correcting IntentResult error in FDC3 2.0 and adding a very minor clarification to 2.1/next --- docs/api/spec.md | 2 +- website/versioned_docs/version-2.0/api/ref/DesktopAgent.md | 2 +- website/versioned_docs/version-2.0/api/ref/Errors.md | 4 ++-- website/versioned_docs/version-2.0/api/ref/Metadata.md | 6 +++--- website/versioned_docs/version-2.0/api/ref/Types.md | 6 +++++- website/versioned_docs/version-2.0/api/spec.md | 2 +- website/versioned_docs/version-2.1/api/spec.md | 2 +- 7 files changed, 14 insertions(+), 10 deletions(-) diff --git a/docs/api/spec.md b/docs/api/spec.md index bafbad461..4b163fa92 100644 --- a/docs/api/spec.md +++ b/docs/api/spec.md @@ -226,7 +226,7 @@ As an alternative to raising a specific intent, you may also raise an unspecifie ### Intent Results -An optional [`IntentResult`](ref/Types#intentresult) may also be returned as output by an application handling an intent. Results maybe either a single `Context` object, or a `Channel` that may be used to send a stream of responses. The [`PrivateChannel`](ref/PrivateChannel) type is provided to support synchronization of data transmitted over returned channels, by allowing both parties to listen for events denoting subscription and unsubscription from the returned channel. `PrivateChannels` are only retrievable via [raising an intent](ref/DesktopAgent#raiseintent). +An optional [`IntentResult`](ref/Types#intentresult) may also be returned as output by an application handling an intent. Results may be a single `Context` object, a `Channel` that may be used to send a stream of responses, or `void` (no result). The [`PrivateChannel`](ref/PrivateChannel) type is provided to support synchronization of data transmitted over returned channels, by allowing both parties to listen for events denoting subscription and unsubscription from the returned channel. `PrivateChannels` are only retrievable via [raising an intent](ref/DesktopAgent#raiseintent). For example, an application handling a `CreateOrder` intent might return a context representing the order and including an ID, allowing the application that raised the intent to make further calls using that ID. diff --git a/website/versioned_docs/version-2.0/api/ref/DesktopAgent.md b/website/versioned_docs/version-2.0/api/ref/DesktopAgent.md index 8a1bb56f8..f114885f1 100644 --- a/website/versioned_docs/version-2.0/api/ref/DesktopAgent.md +++ b/website/versioned_docs/version-2.0/api/ref/DesktopAgent.md @@ -642,7 +642,7 @@ If you wish to raise an intent without a context, use the `fdc3.nothing` context Returns an [`IntentResolution`](Metadata#intentresolution) object with details of the app instance that was selected (or started) to respond to the intent. -Issuing apps may optionally wait on the promise that is returned by the `getResult()` member of the IntentResolution. This promise will resolve when the _receiving app's_ intent handler function returns and resolves a promise. The Desktop Agent resolves the issuing app's promise with the Context object or Channel that is provided as resolution by the receiving app. The Desktop Agent MUST reject the issuing app's promise, with a string from the [`ResultError`](Errors#resulterror) enumeration, if: (1) the intent handling function's returned promise rejects, (2) the intent handling function doesn't return a promise, or (3) the returned promise resolves to an invalid type. +Issuing apps may optionally wait on the promise that is returned by the `getResult()` member of the `IntentResolution`. This promise will resolve when the _receiving app's_ intent handler function returns and resolves a promise. The Desktop Agent resolves the issuing app's promise with the Context object, Channel object or void that is provided as resolution within the receiving app. The Desktop Agent MUST reject the issuing app's promise, with a string from the [`ResultError`](Errors#resulterror) enumeration, if: (1) the intent handling function's returned promise rejects, (2) the intent handling function doesn't return a valid response (a promise or void), or (3) the returned promise resolves to an invalid type. #### Example diff --git a/website/versioned_docs/version-2.0/api/ref/Errors.md b/website/versioned_docs/version-2.0/api/ref/Errors.md index fecdc124a..6953021a7 100644 --- a/website/versioned_docs/version-2.0/api/ref/Errors.md +++ b/website/versioned_docs/version-2.0/api/ref/Errors.md @@ -122,8 +122,8 @@ Contains constants representing the errors that can be encountered when calling ```typescript enum ResultError { - /** Returned if the `IntentHandler` exited without returning a Promise or that - * Promise was not resolved with a Context or Channel object. + /** Returned if the intent handler exited without returning a valid result + * (a promise resolving to a Context, Channel object or void). */ NoResultReturned = 'NoResultReturned', diff --git a/website/versioned_docs/version-2.0/api/ref/Metadata.md b/website/versioned_docs/version-2.0/api/ref/Metadata.md index fee7560e8..25a9e43ef 100644 --- a/website/versioned_docs/version-2.0/api/ref/Metadata.md +++ b/website/versioned_docs/version-2.0/api/ref/Metadata.md @@ -345,9 +345,9 @@ interface IntentResolution { * receive a stream of data. * * If an error occurs (i.e. an error is thrown by the handler function, - * the promise it returns is rejected, or a promise is not returned by the - * handler function) then the Desktop Agent MUST reject the promise returned - * by the `getResult()` function of the `IntentResolution` with a string from + * the promise it returns is rejected, or the promise resolved to an invalid + * type) then the Desktop Agent MUST reject the promise returned by the + * `getResult()` function of the `IntentResolution` with a string from * the `ResultError` enumeration. */ getResult(): Promise; diff --git a/website/versioned_docs/version-2.0/api/ref/Types.md b/website/versioned_docs/version-2.0/api/ref/Types.md index 76ac1ebf3..99e2793d3 100644 --- a/website/versioned_docs/version-2.0/api/ref/Types.md +++ b/website/versioned_docs/version-2.0/api/ref/Types.md @@ -104,13 +104,17 @@ Optional metadata about the intent & context message, including the app that ori ## `IntentResult` ```typescript -type IntentResult = Context | Channel; +type IntentResult = Context | Channel | void; ``` Describes results that an Intent handler may optionally return that should be communicated back to the app that raised the intent, via the [`IntentResolution`](Metadata#intentresolution). Represented as a union type in TypeScript, however, this type may be rendered as an interface in other languages that both the `Context` and `Channel` types implement, allowing either to be returned by an `IntentHandler`. +:::warning +The original release of FDC3 2.0 contained an error in the `IntentResult` type, which omitted `void` as a valid return type. It was intended that an `IntentHandler` be able to return either `void` or a Promise that resolves to `void` and, as these are valid results, no error should be thrown by `IntentResolution.getResult()`. This was corrected in FDC3 2.1 and retrospectively corrected in FDC3 2.0. +::: + #### See also * [`Context`](#context) diff --git a/website/versioned_docs/version-2.0/api/spec.md b/website/versioned_docs/version-2.0/api/spec.md index b687bc9a2..41f89f357 100644 --- a/website/versioned_docs/version-2.0/api/spec.md +++ b/website/versioned_docs/version-2.0/api/spec.md @@ -222,7 +222,7 @@ As an alternative to raising a specific intent, you may also raise an unspecifie ### Intent Results -An optional [`IntentResult`](ref/Types#intentresult) may also be returned as output by an application handling an intent. Results maybe either a single `Context` object, or a `Channel` that may be used to send a stream of responses. The [`PrivateChannel`](ref/PrivateChannel) type is provided to support synchronization of data transmitted over returned channels, by allowing both parties to listen for events denoting subscription and unsubscription from the returned channel. `PrivateChannels` are only retrievable via [raising an intent](ref/DesktopAgent#raiseintent). +An optional [`IntentResult`](ref/Types#intentresult) may also be returned as output by an application handling an intent. Results may be a single `Context` object, a `Channel` that may be used to send a stream of responses, or `void` (no result). The [`PrivateChannel`](ref/PrivateChannel) type is provided to support synchronization of data transmitted over returned channels, by allowing both parties to listen for events denoting subscription and unsubscription from the returned channel. `PrivateChannels` are only retrievable via [raising an intent](ref/DesktopAgent#raiseintent). For example, an application handling a `CreateOrder` intent might return a context representing the order and including an ID, allowing the application that raised the intent to make further calls using that ID. diff --git a/website/versioned_docs/version-2.1/api/spec.md b/website/versioned_docs/version-2.1/api/spec.md index 0fd5f5cfa..12bf2bdce 100644 --- a/website/versioned_docs/version-2.1/api/spec.md +++ b/website/versioned_docs/version-2.1/api/spec.md @@ -226,7 +226,7 @@ As an alternative to raising a specific intent, you may also raise an unspecifie ### Intent Results -An optional [`IntentResult`](ref/Types#intentresult) may also be returned as output by an application handling an intent. Results maybe either a single `Context` object, or a `Channel` that may be used to send a stream of responses. The [`PrivateChannel`](ref/PrivateChannel) type is provided to support synchronization of data transmitted over returned channels, by allowing both parties to listen for events denoting subscription and unsubscription from the returned channel. `PrivateChannels` are only retrievable via [raising an intent](ref/DesktopAgent#raiseintent). +An optional [`IntentResult`](ref/Types#intentresult) may also be returned as output by an application handling an intent. Results may be a single `Context` object, a `Channel` that may be used to send a stream of responses, or `void` (no result). The [`PrivateChannel`](ref/PrivateChannel) type is provided to support synchronization of data transmitted over returned channels, by allowing both parties to listen for events denoting subscription and unsubscription from the returned channel. `PrivateChannels` are only retrievable via [raising an intent](ref/DesktopAgent#raiseintent). For example, an application handling a `CreateOrder` intent might return a context representing the order and including an ID, allowing the application that raised the intent to make further calls using that ID. From cc689030219e8e1bd4759c420f5f82efa5fd1c47 Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 6 Dec 2023 17:51:34 +0000 Subject: [PATCH 26/87] Adjusting admonition as docusaurus is incorrectly rendering warning admonitions as danger --- website/versioned_docs/version-2.0/api/ref/Types.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website/versioned_docs/version-2.0/api/ref/Types.md b/website/versioned_docs/version-2.0/api/ref/Types.md index 99e2793d3..79352604c 100644 --- a/website/versioned_docs/version-2.0/api/ref/Types.md +++ b/website/versioned_docs/version-2.0/api/ref/Types.md @@ -111,8 +111,10 @@ Describes results that an Intent handler may optionally return that should be co Represented as a union type in TypeScript, however, this type may be rendered as an interface in other languages that both the `Context` and `Channel` types implement, allowing either to be returned by an `IntentHandler`. -:::warning +:::info + The original release of FDC3 2.0 contained an error in the `IntentResult` type, which omitted `void` as a valid return type. It was intended that an `IntentHandler` be able to return either `void` or a Promise that resolves to `void` and, as these are valid results, no error should be thrown by `IntentResolution.getResult()`. This was corrected in FDC3 2.1 and retrospectively corrected in FDC3 2.0. + ::: #### See also From 9f8c0fd197f542ea80c17b63c0d954a4673e2e78 Mon Sep 17 00:00:00 2001 From: Kris West Date: Mon, 11 Dec 2023 17:52:58 +0000 Subject: [PATCH 27/87] Fixing briding event messages that should allow a null context type and adding some missing title & description fields --- package.json | 2 +- ...EventListenerAddedAgentRequest.schema.json | 4 +- ...entListenerRemovedAgentRequest.schema.json | 4 +- ...AddContextListenerAgentRequest.schema.json | 11 +- ...hannelOnDisconnectAgentRequest.schema.json | 4 +- ...annelOnUnsubscribeAgentRequest.schema.json | 11 +- src/bridging/BridgingTypes.ts | 208 +++++++++++------- 7 files changed, 154 insertions(+), 90 deletions(-) diff --git a/package.json b/package.json index 28fed54ec..ba78aafe3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@finos/fdc3", - "version": "2.1.0-beta.4", + "version": "2.1.0-beta.5", "author": "Fintech Open Source Foundation (FINOS)", "homepage": "https://fdc3.finos.org", "repository": { diff --git a/schemas/bridging/privateChannelEventListenerAddedAgentRequest.schema.json b/schemas/bridging/privateChannelEventListenerAddedAgentRequest.schema.json index fe219be4a..b7fa3a7e8 100644 --- a/schemas/bridging/privateChannelEventListenerAddedAgentRequest.schema.json +++ b/schemas/bridging/privateChannelEventListenerAddedAgentRequest.schema.json @@ -26,7 +26,9 @@ "type": "object", "properties": { "channelId": { - "type": "string" + "type": "string", + "title": "Channel Id", + "description": "The id of the PrivateChannel that the event listener was added to." }, "listenerType": { "$ref": "common.schema.json#/$defs/PrivateChannelEventListenerTypes" diff --git a/schemas/bridging/privateChannelEventListenerRemovedAgentRequest.schema.json b/schemas/bridging/privateChannelEventListenerRemovedAgentRequest.schema.json index 2159b2d86..1f0394a25 100644 --- a/schemas/bridging/privateChannelEventListenerRemovedAgentRequest.schema.json +++ b/schemas/bridging/privateChannelEventListenerRemovedAgentRequest.schema.json @@ -26,7 +26,9 @@ "type": "object", "properties": { "channelId": { - "type": "string" + "type": "string", + "title": "Channel Id", + "description": "The id of the PrivateChannel that the event listener was removed from." }, "listenerType": { "$ref": "common.schema.json#/$defs/PrivateChannelEventListenerTypes" diff --git a/schemas/bridging/privateChannelOnAddContextListenerAgentRequest.schema.json b/schemas/bridging/privateChannelOnAddContextListenerAgentRequest.schema.json index 012b54c74..2fe47c66e 100644 --- a/schemas/bridging/privateChannelOnAddContextListenerAgentRequest.schema.json +++ b/schemas/bridging/privateChannelOnAddContextListenerAgentRequest.schema.json @@ -26,10 +26,17 @@ "type": "object", "properties": { "channelId": { - "type": "string" + "type": "string", + "title": "Channel Id", + "description": "The id of the PrivateChannel that the context listener was added to." }, "contextType": { - "type": "string" + "oneOf": [ + { "type": "string" }, + { "type": "null" } + ], + "title": "Context Type", + "description": "The type of the context listener added. Should be null for an untyped listener." } }, "additionalProperties": false, diff --git a/schemas/bridging/privateChannelOnDisconnectAgentRequest.schema.json b/schemas/bridging/privateChannelOnDisconnectAgentRequest.schema.json index 27d2cefae..540f6ddf5 100644 --- a/schemas/bridging/privateChannelOnDisconnectAgentRequest.schema.json +++ b/schemas/bridging/privateChannelOnDisconnectAgentRequest.schema.json @@ -26,7 +26,9 @@ "type": "object", "properties": { "channelId": { - "type": "string" + "type": "string", + "title": "Channel Id", + "description": "The id of the PrivateChannel that the agent discconnected from." } }, "additionalProperties": false, diff --git a/schemas/bridging/privateChannelOnUnsubscribeAgentRequest.schema.json b/schemas/bridging/privateChannelOnUnsubscribeAgentRequest.schema.json index 70e9de30d..115c9f904 100644 --- a/schemas/bridging/privateChannelOnUnsubscribeAgentRequest.schema.json +++ b/schemas/bridging/privateChannelOnUnsubscribeAgentRequest.schema.json @@ -26,10 +26,17 @@ "type": "object", "properties": { "channelId": { - "type": "string" + "type": "string", + "title": "Channel Id", + "description": "The id of the PrivateChannel that the context listener was unsubscribed from." }, "contextType": { - "type": "string" + "oneOf": [ + { "type": "string" }, + { "type": "null" } + ], + "title": "Context Type", + "description": "The type of the context listener that was unsubscribed. Should be null for an untyped listener." } }, "additionalProperties": false, diff --git a/src/bridging/BridgingTypes.ts b/src/bridging/BridgingTypes.ts index adb2f2215..a8845b96d 100644 --- a/src/bridging/BridgingTypes.ts +++ b/src/bridging/BridgingTypes.ts @@ -3100,6 +3100,9 @@ export interface PrivateChannelEventListenerAddedAgentRequestMeta { * The message payload typically contains the arguments to FDC3 API functions. */ export interface PrivateChannelEventListenerAddedAgentRequestPayload { + /** + * The id of the PrivateChannel that the event listener was added to + */ channelId: string; listenerType: PrivateChannelEventListenerTypes; } @@ -3160,6 +3163,9 @@ export interface PrivateChannelEventListenerAddedBridgeRequestMeta { * The message payload typically contains the arguments to FDC3 API functions. */ export interface PrivateChannelEventListenerAddedBridgeRequestPayload { + /** + * The id of the PrivateChannel that the event listener was added to + */ channelId: string; listenerType: PrivateChannelEventListenerTypes; } @@ -3205,6 +3211,9 @@ export interface PrivateChannelEventListenerRemovedAgentRequestMeta { * The message payload typically contains the arguments to FDC3 API functions. */ export interface PrivateChannelEventListenerRemovedAgentRequestPayload { + /** + * The id of the PrivateChannel that the event listener was removed from + */ channelId: string; listenerType: PrivateChannelEventListenerTypes; } @@ -3260,6 +3269,9 @@ export interface PrivateChannelEventListenerRemovedBridgeRequestMeta { * The message payload typically contains the arguments to FDC3 API functions. */ export interface PrivateChannelEventListenerRemovedBridgeRequestPayload { + /** + * The id of the PrivateChannel that the event listener was removed from + */ channelId: string; listenerType: PrivateChannelEventListenerTypes; } @@ -3305,8 +3317,14 @@ export interface PrivateChannelOnAddContextListenerAgentRequestMeta { * The message payload typically contains the arguments to FDC3 API functions. */ export interface PrivateChannelOnAddContextListenerAgentRequestPayload { + /** + * The id of the PrivateChannel that the context listener was added to. + */ channelId: string; - contextType: string; + /** + * The type of the context listener added. Should be null for an untyped listener. + */ + contextType: null | string; } /** @@ -3360,8 +3378,14 @@ export interface PrivateChannelOnAddContextListenerBridgeRequestMeta { * The message payload typically contains the arguments to FDC3 API functions. */ export interface PrivateChannelOnAddContextListenerBridgeRequestPayload { + /** + * The id of the PrivateChannel that the context listener was added to. + */ channelId: string; - contextType: string; + /** + * The type of the context listener added. Should be null for an untyped listener. + */ + contextType: null | string; } /** @@ -3405,6 +3429,9 @@ export interface PrivateChannelOnDisconnectAgentRequestMeta { * The message payload typically contains the arguments to FDC3 API functions. */ export interface PrivateChannelOnDisconnectAgentRequestPayload { + /** + * The id of the PrivateChannel that the agent discconnected from. + */ channelId: string; } @@ -3459,6 +3486,9 @@ export interface PrivateChannelOnDisconnectBridgeRequestMeta { * The message payload typically contains the arguments to FDC3 API functions. */ export interface PrivateChannelOnDisconnectBridgeRequestPayload { + /** + * The id of the PrivateChannel that the agent discconnected from. + */ channelId: string; } @@ -3503,8 +3533,15 @@ export interface PrivateChannelOnUnsubscribeAgentRequestMeta { * The message payload typically contains the arguments to FDC3 API functions. */ export interface PrivateChannelOnUnsubscribeAgentRequestPayload { + /** + * The id of the PrivateChannel that the context listener was unsubscribed from. + */ channelId: string; - contextType: string; + /** + * The type of the context listener that was unsubscribed. Should be null for an untyped + * listener. + */ + contextType: null | string; } /** @@ -3558,8 +3595,15 @@ export interface ERequestMetadata { * The message payload typically contains the arguments to FDC3 API functions. */ export interface PrivateChannelOnUnsubscribeBridgeRequestPayload { + /** + * The id of the PrivateChannel that the context listener was unsubscribed from. + */ channelId: string; - contextType: string; + /** + * The type of the context listener that was unsubscribed. Should be null for an untyped + * listener. + */ + contextType: null | string; } /** @@ -5047,7 +5091,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('BroadcastAgentRequestMeta') }, { json: 'payload', js: 'payload', typ: r('BroadcastAgentRequestPayload') }, - { json: 'type', js: 'type', typ: r('BroadcastRequestMessageType') }, + { json: 'type', js: 'type', typ: r('BroadcastAgentRequestType') }, ], false ), @@ -5086,7 +5130,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('BroadcastBridgeRequestMeta') }, { json: 'payload', js: 'payload', typ: r('BroadcastBridgeRequestPayload') }, - { json: 'type', js: 'type', typ: r('BroadcastRequestMessageType') }, + { json: 'type', js: 'type', typ: r('BroadcastAgentRequestType') }, ], false ), @@ -5234,7 +5278,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindInstancesAgentErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('FindInstancesAgentErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('FindInstancesResponseMessageType') }, + { json: 'type', js: 'type', typ: r('FindInstancesAgentErrorResponseType') }, ], false ), @@ -5251,7 +5295,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindInstancesAgentRequestMeta') }, { json: 'payload', js: 'payload', typ: r('FindInstancesAgentRequestPayload') }, - { json: 'type', js: 'type', typ: r('FindInstancesRequestMessageType') }, + { json: 'type', js: 'type', typ: r('FindInstancesAgentRequestType') }, ], false ), @@ -5285,7 +5329,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindInstancesAgentResponseMeta') }, { json: 'payload', js: 'payload', typ: r('FindInstancesAgentResponsePayload') }, - { json: 'type', js: 'type', typ: r('FindInstancesResponseMessageType') }, + { json: 'type', js: 'type', typ: r('FindInstancesAgentErrorResponseType') }, ], false ), @@ -5339,7 +5383,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindInstancesBridgeErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('FindInstancesBridgeErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('FindInstancesResponseMessageType') }, + { json: 'type', js: 'type', typ: r('FindInstancesAgentErrorResponseType') }, ], false ), @@ -5358,7 +5402,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindInstancesBridgeRequestMeta') }, { json: 'payload', js: 'payload', typ: r('FindInstancesBridgeRequestPayload') }, - { json: 'type', js: 'type', typ: r('FindInstancesRequestMessageType') }, + { json: 'type', js: 'type', typ: r('FindInstancesAgentRequestType') }, ], false ), @@ -5384,7 +5428,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindInstancesBridgeResponseMeta') }, { json: 'payload', js: 'payload', typ: r('FindInstancesBridgeResponsePayload') }, - { json: 'type', js: 'type', typ: r('FindInstancesResponseMessageType') }, + { json: 'type', js: 'type', typ: r('FindInstancesAgentErrorResponseType') }, ], false ), @@ -5407,7 +5451,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindIntentAgentErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('FindIntentAgentErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('FindIntentResponseMessageType') }, + { json: 'type', js: 'type', typ: r('FindIntentAgentErrorResponseType') }, ], false ), @@ -5424,7 +5468,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindIntentAgentRequestMeta') }, { json: 'payload', js: 'payload', typ: r('FindIntentAgentRequestPayload') }, - { json: 'type', js: 'type', typ: r('FindIntentRequestMessageType') }, + { json: 'type', js: 'type', typ: r('FindIntentAgentRequestType') }, ], false ), @@ -5448,7 +5492,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindIntentAgentResponseMeta') }, { json: 'payload', js: 'payload', typ: r('FindIntentAgentResponsePayload') }, - { json: 'type', js: 'type', typ: r('FindIntentResponseMessageType') }, + { json: 'type', js: 'type', typ: r('FindIntentAgentErrorResponseType') }, ], false ), @@ -5479,7 +5523,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindIntentBridgeErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('FindIntentBridgeErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('FindIntentResponseMessageType') }, + { json: 'type', js: 'type', typ: r('FindIntentAgentErrorResponseType') }, ], false ), @@ -5498,7 +5542,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindIntentBridgeRequestMeta') }, { json: 'payload', js: 'payload', typ: r('FindIntentBridgeRequestPayload') }, - { json: 'type', js: 'type', typ: r('FindIntentRequestMessageType') }, + { json: 'type', js: 'type', typ: r('FindIntentAgentRequestType') }, ], false ), @@ -5522,7 +5566,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindIntentBridgeResponseMeta') }, { json: 'payload', js: 'payload', typ: r('FindIntentBridgeResponsePayload') }, - { json: 'type', js: 'type', typ: r('FindIntentResponseMessageType') }, + { json: 'type', js: 'type', typ: r('FindIntentAgentErrorResponseType') }, ], false ), @@ -5542,7 +5586,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindIntentsByContextAgentErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('FindIntentsByContextAgentErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('FindIntentsByContextResponseMessageType') }, + { json: 'type', js: 'type', typ: r('FindIntentsByContextAgentErrorResponseType') }, ], false ), @@ -5559,7 +5603,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindIntentsByContextAgentRequestMeta') }, { json: 'payload', js: 'payload', typ: r('FindIntentsByContextAgentRequestPayload') }, - { json: 'type', js: 'type', typ: r('FindIntentsByContextRequestMessageType') }, + { json: 'type', js: 'type', typ: r('FindIntentsByContextAgentRequestType') }, ], false ), @@ -5577,7 +5621,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindIntentsByContextAgentResponseMeta') }, { json: 'payload', js: 'payload', typ: r('FindIntentsByContextAgentResponsePayload') }, - { json: 'type', js: 'type', typ: r('FindIntentsByContextResponseMessageType') }, + { json: 'type', js: 'type', typ: r('FindIntentsByContextAgentErrorResponseType') }, ], false ), @@ -5597,7 +5641,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindIntentsByContextBridgeErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('FindIntentsByContextBridgeErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('FindIntentsByContextResponseMessageType') }, + { json: 'type', js: 'type', typ: r('FindIntentsByContextAgentErrorResponseType') }, ], false ), @@ -5616,7 +5660,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindIntentsByContextBridgeRequestMeta') }, { json: 'payload', js: 'payload', typ: r('FindIntentsByContextBridgeRequestPayload') }, - { json: 'type', js: 'type', typ: r('FindIntentsByContextRequestMessageType') }, + { json: 'type', js: 'type', typ: r('FindIntentsByContextAgentRequestType') }, ], false ), @@ -5634,7 +5678,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('FindIntentsByContextBridgeResponseMeta') }, { json: 'payload', js: 'payload', typ: r('FindIntentsByContextBridgeResponsePayload') }, - { json: 'type', js: 'type', typ: r('FindIntentsByContextResponseMessageType') }, + { json: 'type', js: 'type', typ: r('FindIntentsByContextAgentErrorResponseType') }, ], false ), @@ -5657,7 +5701,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('GetAppMetadataAgentErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('GetAppMetadataAgentErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('GetAppMetadataResponseMessageType') }, + { json: 'type', js: 'type', typ: r('GetAppMetadataAgentErrorResponseType') }, ], false ), @@ -5674,7 +5718,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('GetAppMetadataAgentRequestMeta') }, { json: 'payload', js: 'payload', typ: r('GetAppMetadataAgentRequestPayload') }, - { json: 'type', js: 'type', typ: r('GetAppMetadataRequestMessageType') }, + { json: 'type', js: 'type', typ: r('GetAppMetadataAgentRequestType') }, ], false ), @@ -5700,7 +5744,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('GetAppMetadataAgentResponseMeta') }, { json: 'payload', js: 'payload', typ: r('GetAppMetadataAgentResponsePayload') }, - { json: 'type', js: 'type', typ: r('GetAppMetadataResponseMessageType') }, + { json: 'type', js: 'type', typ: r('GetAppMetadataAgentErrorResponseType') }, ], false ), @@ -5717,7 +5761,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('GetAppMetadataBridgeErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('GetAppMetadataBridgeErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('GetAppMetadataResponseMessageType') }, + { json: 'type', js: 'type', typ: r('GetAppMetadataAgentErrorResponseType') }, ], false ), @@ -5736,7 +5780,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('GetAppMetadataBridgeRequestMeta') }, { json: 'payload', js: 'payload', typ: r('GetAppMetadataBridgeRequestPayload') }, - { json: 'type', js: 'type', typ: r('GetAppMetadataRequestMessageType') }, + { json: 'type', js: 'type', typ: r('GetAppMetadataAgentRequestType') }, ], false ), @@ -5754,7 +5798,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('GetAppMetadataBridgeResponseMeta') }, { json: 'payload', js: 'payload', typ: r('GetAppMetadataBridgeResponsePayload') }, - { json: 'type', js: 'type', typ: r('GetAppMetadataResponseMessageType') }, + { json: 'type', js: 'type', typ: r('GetAppMetadataAgentErrorResponseType') }, ], false ), @@ -5774,7 +5818,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('OpenAgentErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('OpenAgentErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('OpenResponseMessageType') }, + { json: 'type', js: 'type', typ: r('OpenAgentErrorResponseType') }, ], false ), @@ -5791,7 +5835,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('OpenAgentRequestMeta') }, { json: 'payload', js: 'payload', typ: r('OpenAgentRequestPayload') }, - { json: 'type', js: 'type', typ: r('OpenRequestMessageType') }, + { json: 'type', js: 'type', typ: r('OpenAgentRequestType') }, ], false ), @@ -5823,7 +5867,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('OpenAgentResponseMeta') }, { json: 'payload', js: 'payload', typ: r('OpenAgentResponsePayload') }, - { json: 'type', js: 'type', typ: r('OpenResponseMessageType') }, + { json: 'type', js: 'type', typ: r('OpenAgentErrorResponseType') }, ], false ), @@ -5840,7 +5884,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('OpenBridgeErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('OpenBridgeErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('OpenResponseMessageType') }, + { json: 'type', js: 'type', typ: r('OpenAgentErrorResponseType') }, ], false ), @@ -5859,7 +5903,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('OpenBridgeRequestMeta') }, { json: 'payload', js: 'payload', typ: r('OpenBridgeRequestPayload') }, - { json: 'type', js: 'type', typ: r('OpenRequestMessageType') }, + { json: 'type', js: 'type', typ: r('OpenAgentRequestType') }, ], false ), @@ -5883,7 +5927,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('OpenBridgeResponseMeta') }, { json: 'payload', js: 'payload', typ: r('OpenBridgeResponsePayload') }, - { json: 'type', js: 'type', typ: r('OpenResponseMessageType') }, + { json: 'type', js: 'type', typ: r('OpenAgentErrorResponseType') }, ], false ), @@ -5903,7 +5947,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('PrivateChannelBroadcastAgentRequestMeta') }, { json: 'payload', js: 'payload', typ: r('PrivateChannelBroadcastAgentRequestPayload') }, - { json: 'type', js: 'type', typ: r('PrivateChannelBroadcastMessageType') }, + { json: 'type', js: 'type', typ: r('PrivateChannelBroadcastAgentRequestType') }, ], false ), @@ -5935,7 +5979,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('PrivateChannelBroadcastBridgeRequestMeta') }, { json: 'payload', js: 'payload', typ: r('PrivateChannelBroadcastBridgeRequestPayload') }, - { json: 'type', js: 'type', typ: r('PrivateChannelBroadcastMessageType') }, + { json: 'type', js: 'type', typ: r('PrivateChannelBroadcastAgentRequestType') }, ], false ), @@ -5959,7 +6003,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('PrivateChannelEventListenerAddedAgentRequestMeta') }, { json: 'payload', js: 'payload', typ: r('PrivateChannelEventListenerAddedAgentRequestPayload') }, - { json: 'type', js: 'type', typ: r('PrivateChannelEventListenerAddedMessageType') }, + { json: 'type', js: 'type', typ: r('PrivateChannelEventListenerAddedAgentRequestType') }, ], false ), @@ -5983,7 +6027,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('PrivateChannelEventListenerAddedBridgeRequestMeta') }, { json: 'payload', js: 'payload', typ: r('PrivateChannelEventListenerAddedBridgeRequestPayload') }, - { json: 'type', js: 'type', typ: r('PrivateChannelEventListenerAddedMessageType') }, + { json: 'type', js: 'type', typ: r('PrivateChannelEventListenerAddedAgentRequestType') }, ], false ), @@ -6007,7 +6051,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('PrivateChannelEventListenerRemovedAgentRequestMeta') }, { json: 'payload', js: 'payload', typ: r('PrivateChannelEventListenerRemovedAgentRequestPayload') }, - { json: 'type', js: 'type', typ: r('PrivateChannelEventListenerRemovedMessageType') }, + { json: 'type', js: 'type', typ: r('PrivateChannelEventListenerRemovedAgentRequestType') }, ], false ), @@ -6031,7 +6075,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('PrivateChannelEventListenerRemovedBridgeRequestMeta') }, { json: 'payload', js: 'payload', typ: r('PrivateChannelEventListenerRemovedBridgeRequestPayload') }, - { json: 'type', js: 'type', typ: r('PrivateChannelEventListenerRemovedMessageType') }, + { json: 'type', js: 'type', typ: r('PrivateChannelEventListenerRemovedAgentRequestType') }, ], false ), @@ -6055,7 +6099,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('PrivateChannelOnAddContextListenerAgentRequestMeta') }, { json: 'payload', js: 'payload', typ: r('PrivateChannelOnAddContextListenerAgentRequestPayload') }, - { json: 'type', js: 'type', typ: r('PrivateChannelOnAddContextListenerMessageType') }, + { json: 'type', js: 'type', typ: r('PrivateChannelOnAddContextListenerAgentRequestType') }, ], false ), @@ -6071,7 +6115,7 @@ const typeMap: any = { PrivateChannelOnAddContextListenerAgentRequestPayload: o( [ { json: 'channelId', js: 'channelId', typ: '' }, - { json: 'contextType', js: 'contextType', typ: '' }, + { json: 'contextType', js: 'contextType', typ: u(null, '') }, ], false ), @@ -6079,7 +6123,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('PrivateChannelOnAddContextListenerBridgeRequestMeta') }, { json: 'payload', js: 'payload', typ: r('PrivateChannelOnAddContextListenerBridgeRequestPayload') }, - { json: 'type', js: 'type', typ: r('PrivateChannelOnAddContextListenerMessageType') }, + { json: 'type', js: 'type', typ: r('PrivateChannelOnAddContextListenerAgentRequestType') }, ], false ), @@ -6095,7 +6139,7 @@ const typeMap: any = { PrivateChannelOnAddContextListenerBridgeRequestPayload: o( [ { json: 'channelId', js: 'channelId', typ: '' }, - { json: 'contextType', js: 'contextType', typ: '' }, + { json: 'contextType', js: 'contextType', typ: u(null, '') }, ], false ), @@ -6103,7 +6147,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('PrivateChannelOnDisconnectAgentRequestMeta') }, { json: 'payload', js: 'payload', typ: r('PrivateChannelOnDisconnectAgentRequestPayload') }, - { json: 'type', js: 'type', typ: r('PrivateChannelOnDisconnectMessageType') }, + { json: 'type', js: 'type', typ: r('PrivateChannelOnDisconnectAgentRequestType') }, ], false ), @@ -6121,7 +6165,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('PrivateChannelOnDisconnectBridgeRequestMeta') }, { json: 'payload', js: 'payload', typ: r('PrivateChannelOnDisconnectBridgeRequestPayload') }, - { json: 'type', js: 'type', typ: r('PrivateChannelOnDisconnectMessageType') }, + { json: 'type', js: 'type', typ: r('PrivateChannelOnDisconnectAgentRequestType') }, ], false ), @@ -6139,7 +6183,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('PrivateChannelOnUnsubscribeAgentRequestMeta') }, { json: 'payload', js: 'payload', typ: r('PrivateChannelOnUnsubscribeAgentRequestPayload') }, - { json: 'type', js: 'type', typ: r('PrivateChannelOnUnsubscribeMessageType') }, + { json: 'type', js: 'type', typ: r('PrivateChannelOnUnsubscribeAgentRequestType') }, ], false ), @@ -6155,7 +6199,7 @@ const typeMap: any = { PrivateChannelOnUnsubscribeAgentRequestPayload: o( [ { json: 'channelId', js: 'channelId', typ: '' }, - { json: 'contextType', js: 'contextType', typ: '' }, + { json: 'contextType', js: 'contextType', typ: u(null, '') }, ], false ), @@ -6163,7 +6207,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('ERequestMetadata') }, { json: 'payload', js: 'payload', typ: r('PrivateChannelOnUnsubscribeBridgeRequestPayload') }, - { json: 'type', js: 'type', typ: r('PrivateChannelOnUnsubscribeMessageType') }, + { json: 'type', js: 'type', typ: r('PrivateChannelOnUnsubscribeAgentRequestType') }, ], false ), @@ -6179,7 +6223,7 @@ const typeMap: any = { PrivateChannelOnUnsubscribeBridgeRequestPayload: o( [ { json: 'channelId', js: 'channelId', typ: '' }, - { json: 'contextType', js: 'contextType', typ: '' }, + { json: 'contextType', js: 'contextType', typ: u(null, '') }, ], false ), @@ -6187,7 +6231,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('RaiseIntentAgentErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('RaiseIntentAgentErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('RaiseIntentResponseMessageType') }, + { json: 'type', js: 'type', typ: r('RaiseIntentAgentErrorResponseType') }, ], false ), @@ -6204,7 +6248,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('RaiseIntentAgentRequestMeta') }, { json: 'payload', js: 'payload', typ: r('RaiseIntentAgentRequestPayload') }, - { json: 'type', js: 'type', typ: r('RaiseIntentRequestMessageType') }, + { json: 'type', js: 'type', typ: r('RaiseIntentAgentRequestType') }, ], false ), @@ -6229,7 +6273,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('RaiseIntentAgentResponseMeta') }, { json: 'payload', js: 'payload', typ: r('RaiseIntentAgentResponsePayload') }, - { json: 'type', js: 'type', typ: r('RaiseIntentResponseMessageType') }, + { json: 'type', js: 'type', typ: r('RaiseIntentAgentErrorResponseType') }, ], false ), @@ -6257,7 +6301,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('RaiseIntentBridgeErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('RaiseIntentBridgeErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('RaiseIntentResponseMessageType') }, + { json: 'type', js: 'type', typ: r('RaiseIntentAgentErrorResponseType') }, ], false ), @@ -6276,7 +6320,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('RaiseIntentBridgeRequestMeta') }, { json: 'payload', js: 'payload', typ: r('RaiseIntentBridgeRequestPayload') }, - { json: 'type', js: 'type', typ: r('RaiseIntentRequestMessageType') }, + { json: 'type', js: 'type', typ: r('RaiseIntentAgentRequestType') }, ], false ), @@ -6301,7 +6345,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('RaiseIntentBridgeResponseMeta') }, { json: 'payload', js: 'payload', typ: r('RaiseIntentBridgeResponsePayload') }, - { json: 'type', js: 'type', typ: r('RaiseIntentResponseMessageType') }, + { json: 'type', js: 'type', typ: r('RaiseIntentAgentErrorResponseType') }, ], false ), @@ -6324,7 +6368,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('RaiseIntentResultAgentErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('RaiseIntentResultAgentErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('RaiseIntentResultResponseMessageType') }, + { json: 'type', js: 'type', typ: r('RaiseIntentResultAgentErrorResponseType') }, ], false ), @@ -6344,7 +6388,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('RaiseIntentResultAgentResponseMeta') }, { json: 'payload', js: 'payload', typ: r('RaiseIntentResultAgentResponsePayload') }, - { json: 'type', js: 'type', typ: r('RaiseIntentResultResponseMessageType') }, + { json: 'type', js: 'type', typ: r('RaiseIntentResultAgentErrorResponseType') }, ], false ), @@ -6387,7 +6431,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('RaiseIntentResultBridgeErrorResponseMeta') }, { json: 'payload', js: 'payload', typ: r('RaiseIntentResultBridgeErrorResponsePayload') }, - { json: 'type', js: 'type', typ: r('RaiseIntentResultResponseMessageType') }, + { json: 'type', js: 'type', typ: r('RaiseIntentResultAgentErrorResponseType') }, ], false ), @@ -6409,7 +6453,7 @@ const typeMap: any = { [ { json: 'meta', js: 'meta', typ: r('RaiseIntentResultBridgeResponseMeta') }, { json: 'payload', js: 'payload', typ: r('RaiseIntentResultBridgeResponsePayload') }, - { json: 'type', js: 'type', typ: r('RaiseIntentResultResponseMessageType') }, + { json: 'type', js: 'type', typ: r('RaiseIntentResultAgentErrorResponseType') }, ], false ), @@ -6483,7 +6527,7 @@ const typeMap: any = { 'PrivateChannel.onUnsubscribe', 'raiseIntentRequest', ], - BroadcastRequestMessageType: ['broadcastRequest'], + BroadcastAgentRequestType: ['broadcastRequest'], ConnectionStepMessageType: ['authenticationFailed', 'connectedAgentsUpdate', 'handshake', 'hello'], ConnectionStep2HelloType: ['hello'], ConnectionStep3HandshakeType: ['handshake'], @@ -6504,14 +6548,14 @@ const typeMap: any = { 'TargetInstanceUnavailable', 'UserCancelledResolution', ], - FindInstancesResponseMessageType: ['findInstancesResponse'], - FindInstancesRequestMessageType: ['findInstancesRequest'], - FindIntentResponseMessageType: ['findIntentResponse'], - FindIntentRequestMessageType: ['findIntentRequest'], - FindIntentsByContextResponseMessageType: ['findIntentsByContextResponse'], - FindIntentsByContextRequestMessageType: ['findIntentsByContextRequest'], - GetAppMetadataResponseMessageType: ['getAppMetadataResponse'], - GetAppMetadataRequestMessageType: ['getAppMetadataRequest'], + FindInstancesAgentErrorResponseType: ['findInstancesResponse'], + FindInstancesAgentRequestType: ['findInstancesRequest'], + FindIntentAgentErrorResponseType: ['findIntentResponse'], + FindIntentAgentRequestType: ['findIntentRequest'], + FindIntentsByContextAgentErrorResponseType: ['findIntentsByContextResponse'], + FindIntentsByContextAgentRequestType: ['findIntentsByContextRequest'], + GetAppMetadataAgentErrorResponseType: ['getAppMetadataResponse'], + GetAppMetadataAgentRequestType: ['getAppMetadataRequest'], OpenErrorMessage: [ 'AgentDisconnected', 'AppNotFound', @@ -6524,17 +6568,17 @@ const typeMap: any = { 'ResolverUnavailable', 'ResponseToBridgeTimedOut', ], - OpenResponseMessageType: ['openResponse'], - OpenRequestMessageType: ['openRequest'], - PrivateChannelBroadcastMessageType: ['PrivateChannel.broadcast'], + OpenAgentErrorResponseType: ['openResponse'], + OpenAgentRequestType: ['openRequest'], + PrivateChannelBroadcastAgentRequestType: ['PrivateChannel.broadcast'], PrivateChannelEventListenerTypes: ['onAddContextListener', 'onDisconnect', 'onUnsubscribe'], - PrivateChannelEventListenerAddedMessageType: ['PrivateChannel.eventListenerAdded'], - PrivateChannelEventListenerRemovedMessageType: ['PrivateChannel.eventListenerRemoved'], - PrivateChannelOnAddContextListenerMessageType: ['PrivateChannel.onAddContextListener'], - PrivateChannelOnDisconnectMessageType: ['PrivateChannel.onDisconnect'], - PrivateChannelOnUnsubscribeMessageType: ['PrivateChannel.onUnsubscribe'], - RaiseIntentResponseMessageType: ['raiseIntentResponse'], - RaiseIntentRequestMessageType: ['raiseIntentRequest'], + PrivateChannelEventListenerAddedAgentRequestType: ['PrivateChannel.eventListenerAdded'], + PrivateChannelEventListenerRemovedAgentRequestType: ['PrivateChannel.eventListenerRemoved'], + PrivateChannelOnAddContextListenerAgentRequestType: ['PrivateChannel.onAddContextListener'], + PrivateChannelOnDisconnectAgentRequestType: ['PrivateChannel.onDisconnect'], + PrivateChannelOnUnsubscribeAgentRequestType: ['PrivateChannel.onUnsubscribe'], + RaiseIntentAgentErrorResponseType: ['raiseIntentResponse'], + RaiseIntentAgentRequestType: ['raiseIntentRequest'], RaiseIntentResultErrorMessage: [ 'AgentDisconnected', 'IntentHandlerRejected', @@ -6543,6 +6587,6 @@ const typeMap: any = { 'NotConnectedToBridge', 'ResponseToBridgeTimedOut', ], - RaiseIntentResultResponseMessageType: ['raiseIntentResultResponse'], + RaiseIntentResultAgentErrorResponseType: ['raiseIntentResultResponse'], Type: ['app', 'private', 'user'], }; From a7e760b4f55bcd43e968003decd080e0946116df Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 13 Dec 2023 10:11:24 +0000 Subject: [PATCH 28/87] Clarifying channel state --- docs/agent-bridging/spec.md | 7 ++++--- schemas/bridging/connectionStep3Handshake.schema.json | 2 +- src/bridging/BridgingTypes.ts | 5 +++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/agent-bridging/spec.md b/docs/agent-bridging/spec.md index 8b0409831..54b1fe34c 100644 --- a/docs/agent-bridging/spec.md +++ b/docs/agent-bridging/spec.md @@ -262,8 +262,9 @@ The DA must then respond to the `hello` message with a `handshake` request to th }, /** The requested DA name */ requestedName: string, - /** The current state of the Desktop Agent's channels, excluding any private channels, - * as a mapping of channel id to an array of Context objects, most recent first.*/ + /** The current state of the Desktop Agent's App and User channels (exclude any + * Private channels), as a mapping of channel id to an array of Context objects, + * one per type found in the channel, most recent first.*/ channelsState: Record }, meta: { @@ -330,7 +331,7 @@ Channels are the main stateful mechanism in the FDC3 that we have to consider. T A key responsibility of the Desktop Agent Bridge is ensuring that the channel state of the connected agents is kept in-sync. To do so, the states must be synchronized whenever a new agent connects. Hence, the Bridge MUST process the `channelState` provided by the new agent in the `handshake` request, which MUST contain details of each known User Channel or App Channel and its state (the most recent context object and the most recent context object of each type that it has received). The bridge MUST compare the received channel names and states to its own representation of the current state of channels in connected agents, merge that state with that of the new agent and communicate the updated state to all connected agents to ensure that they are synchronized with it. -Hence, if we assume that the state of each channel can be represented by an ordered array of context objects (most recent first - noting that only the first position, that of the most recent context broadcast, matters), the Desktop Agent Bridge MUST merge the incoming `channelsState` with the `existingChannelsState` as follows: +Hence, if we assume that the state of each channel can be represented by an array of the most recent context object of each type, with the most recent context occupying the first position in the array, the Desktop Agent Bridge MUST merge the incoming `channelsState` with the `existingChannelsState` as follows: ```typescript Object.keys(channelsState).forEach((channelId) => { diff --git a/schemas/bridging/connectionStep3Handshake.schema.json b/schemas/bridging/connectionStep3Handshake.schema.json index dbc046463..714531c1f 100644 --- a/schemas/bridging/connectionStep3Handshake.schema.json +++ b/schemas/bridging/connectionStep3Handshake.schema.json @@ -38,7 +38,7 @@ "channelsState": { "title": "Channel State", "type": "object", - "description": "The current state of the Desktop Agent's channels, excluding any private channels, as a mapping of channel id to an array of Context objects, most recent first.", + "description": "The current state of the Desktop Agent's App and User channels (exclude any Private channels), as a mapping of channel id to an array of Context objects, one per type found in the channel, most recent first.", "additionalProperties": { "title": "Channel ", "type": "array", diff --git a/src/bridging/BridgingTypes.ts b/src/bridging/BridgingTypes.ts index adb2f2215..e44ac65b7 100644 --- a/src/bridging/BridgingTypes.ts +++ b/src/bridging/BridgingTypes.ts @@ -940,8 +940,9 @@ export interface ConnectionStep3HandshakeMeta { export interface ConnectionStep3HandshakePayload { authToken?: string; /** - * The current state of the Desktop Agent's channels, excluding any private channels, as a - * mapping of channel id to an array of Context objects, most recent first. + * The current state of the Desktop Agent's App and User channels (exclude any Private + * channels), as a mapping of channel id to an array of Context objects, one per type found + * in the channel, most recent first. */ channelsState: { [key: string]: ContextElement[] }; /** From 4ce90d45ca8e0c4f8f2c5bd73f51304278783d87 Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 13 Dec 2023 10:17:42 +0000 Subject: [PATCH 29/87] Rename LICENSE to LICENSE.md (so it formats in github) --- LICENSE => LICENSE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename LICENSE => LICENSE.md (99%) diff --git a/LICENSE b/LICENSE.md similarity index 99% rename from LICENSE rename to LICENSE.md index 9aec6d52c..1ad0319ca 100755 --- a/LICENSE +++ b/LICENSE.md @@ -96,4 +96,4 @@ This patent licensing commitment does not apply to those claims subject to Contr *The text of this Community Specification License is Copyright 2020 Joint Development Foundation and is licensed under the Creative Commons Attribution 4.0 International License available at https://creativecommons.org/licenses/by/4.0/.* -SPDX-License-Identifier: CC-BY-4.0 \ No newline at end of file +SPDX-License-Identifier: CC-BY-4.0 From 1e9752693039af67004f9458966f80200ae52019 Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 13 Dec 2023 10:20:23 +0000 Subject: [PATCH 30/87] Update README.md to correct link to license --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 305c6ab50..4b9a07993 100755 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ Participants of FINOS standards projects should follow the FINOS Code of Conduct ## License & Patents -- This version of the FDC3 Standard is licensed under the [Community Specification License](LICENSE). SPDX-License-Identifier: [Community-Spec-1.0](https://spdx.org/licenses/Community-Spec-1.0). +- This version of the FDC3 Standard is licensed under the [Community Specification License](LICENSE.md). SPDX-License-Identifier: [Community-Spec-1.0](https://spdx.org/licenses/Community-Spec-1.0). - Reference implementations and other software contained in FDC3 repositories is licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0.html). SPDX-License-Identifier: [Apache-2.0](https://spdx.org/licenses/Apache-2.0). From a535f45a7a9f14866a6026a987860668fa4b9bb8 Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 13 Dec 2023 10:23:10 +0000 Subject: [PATCH 31/87] Update fdc3-charter.md link to License file --- docs/fdc3-charter.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/fdc3-charter.md b/docs/fdc3-charter.md index 653afa3f8..c945b72d9 100644 --- a/docs/fdc3-charter.md +++ b/docs/fdc3-charter.md @@ -34,7 +34,7 @@ The group's activities do not include: - Versions 1.1 - 2.1 of the FDC3 specification are subject to the [FINOS IP Policy](https://github.com/finos/community/blob/fdd059c93b6ceefadd8cf60c4bef995366695337/website/static/governance-docs/IP-Policy.pdf), which authorizes implementation of FDC3 specifications without charge, on a RAND basis, subject to the terms of the policy. For details of the IP commitments made by contributors to FDC3, please refer to the policy. -- Versions of the FDC3 specification following 2.1 and subsequent draft specifications are licensed under the [Community Specification License 1.0](https://github.com/finos/FDC3/blob/45ca765e5ff9a44a1fa5437eb70cf876bf4898aa/LICENSE) +- Versions of the FDC3 specification following 2.1 and subsequent draft specifications are licensed under the [Community Specification License 1.0](https://github.com/finos/FDC3/blob/4ce90d45ca8e0c4f8f2c5bd73f51304278783d87/LICENSE.md) - All code in the FDC3 specification (including JSON Schema) are licensed under [Apache 2.0](https://github.com/finos/FDC3/blob/master/LICENSE) ### Intellectual Property Claims From 1b111866cd43d71a1ef02dd8e85f3b694b37ec5e Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 13 Dec 2023 10:23:47 +0000 Subject: [PATCH 32/87] Update fdc3-charter.md --- docs/fdc3-charter.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/fdc3-charter.md b/docs/fdc3-charter.md index c945b72d9..05cba4a40 100644 --- a/docs/fdc3-charter.md +++ b/docs/fdc3-charter.md @@ -35,6 +35,7 @@ The group's activities do not include: - Versions 1.1 - 2.1 of the FDC3 specification are subject to the [FINOS IP Policy](https://github.com/finos/community/blob/fdd059c93b6ceefadd8cf60c4bef995366695337/website/static/governance-docs/IP-Policy.pdf), which authorizes implementation of FDC3 specifications without charge, on a RAND basis, subject to the terms of the policy. For details of the IP commitments made by contributors to FDC3, please refer to the policy. - Versions of the FDC3 specification following 2.1 and subsequent draft specifications are licensed under the [Community Specification License 1.0](https://github.com/finos/FDC3/blob/4ce90d45ca8e0c4f8f2c5bd73f51304278783d87/LICENSE.md) + - All code in the FDC3 specification (including JSON Schema) are licensed under [Apache 2.0](https://github.com/finos/FDC3/blob/master/LICENSE) ### Intellectual Property Claims From 8f7667a3a4aeb3282d3cc764f89a32e208eb4c0b Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 13 Dec 2023 10:24:23 +0000 Subject: [PATCH 33/87] Update fdc3-charter.md in 2.1 --- website/versioned_docs/version-2.1/fdc3-charter.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/website/versioned_docs/version-2.1/fdc3-charter.md b/website/versioned_docs/version-2.1/fdc3-charter.md index 653afa3f8..05cba4a40 100644 --- a/website/versioned_docs/version-2.1/fdc3-charter.md +++ b/website/versioned_docs/version-2.1/fdc3-charter.md @@ -34,7 +34,8 @@ The group's activities do not include: - Versions 1.1 - 2.1 of the FDC3 specification are subject to the [FINOS IP Policy](https://github.com/finos/community/blob/fdd059c93b6ceefadd8cf60c4bef995366695337/website/static/governance-docs/IP-Policy.pdf), which authorizes implementation of FDC3 specifications without charge, on a RAND basis, subject to the terms of the policy. For details of the IP commitments made by contributors to FDC3, please refer to the policy. -- Versions of the FDC3 specification following 2.1 and subsequent draft specifications are licensed under the [Community Specification License 1.0](https://github.com/finos/FDC3/blob/45ca765e5ff9a44a1fa5437eb70cf876bf4898aa/LICENSE) +- Versions of the FDC3 specification following 2.1 and subsequent draft specifications are licensed under the [Community Specification License 1.0](https://github.com/finos/FDC3/blob/4ce90d45ca8e0c4f8f2c5bd73f51304278783d87/LICENSE.md) + - All code in the FDC3 specification (including JSON Schema) are licensed under [Apache 2.0](https://github.com/finos/FDC3/blob/master/LICENSE) ### Intellectual Property Claims From 72e24c24fa250424883149e683f0307f58698325 Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 13 Dec 2023 10:26:19 +0000 Subject: [PATCH 34/87] correcting links to license in meeting issue templates --- .github/ISSUE_TEMPLATE/discussion-group.md | 2 +- .github/ISSUE_TEMPLATE/general-meeting.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/discussion-group.md b/.github/ISSUE_TEMPLATE/discussion-group.md index 99173b9c4..50be5c9fa 100644 --- a/.github/ISSUE_TEMPLATE/discussion-group.md +++ b/.github/ISSUE_TEMPLATE/discussion-group.md @@ -51,7 +51,7 @@ Thursday DD MMM yyyy - 10am (US eastern timezone EDT/EST) / 3pm (London, GMT/BST Please click the following links at the start of the meeting if you have not done so previously. - - [View the CSL](https://raw.githubusercontent.com/finos/FDC3/master/LICENSE) + - [View the CSL](https://raw.githubusercontent.com/finos/FDC3/master/LICENSE.md) - [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/master/GOVERNANCE.md) - [Click here to start a PR](https://github.com/finos/FDC3/edit/master/NOTICES.md). - Edit the page to add your details. diff --git a/.github/ISSUE_TEMPLATE/general-meeting.md b/.github/ISSUE_TEMPLATE/general-meeting.md index 4e99caf4c..62e57c7d1 100644 --- a/.github/ISSUE_TEMPLATE/general-meeting.md +++ b/.github/ISSUE_TEMPLATE/general-meeting.md @@ -42,7 +42,7 @@ DD MMM yyyy - 10am EST / 3pm GMT Please click the following links at the start of the meeting if you have not done so previously. -- [View the CSL](https://raw.githubusercontent.com/finos/FDC3/master/LICENSE) +- [View the CSL](https://raw.githubusercontent.com/finos/FDC3/master/LICENSE.md) - [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/master/GOVERNANCE.md) - [Click here to start a PR](https://github.com/finos/FDC3/edit/master/NOTICES.md). - Edit the page to add your details. From 4679de58c1f7c3ac1f8548e1a277005b094f3bb7 Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 13 Dec 2023 11:44:40 +0000 Subject: [PATCH 35/87] Correct typo in package publishing script --- .github/workflows/package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 2d8127ce9..393aa4034 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -96,7 +96,7 @@ jobs: run: 'echo "package version already exists on npm registry"' - name: Report not yet published status - if: steps.check-version.outputs.exists == '1' + if: steps.check-version.outputs.exists == '0' run: 'echo "package version does not exist on npm registry, publishing..."' - name: Install dependencies From c4d32e8c0ff9f8067aa38e4db76320198e5c2020 Mon Sep 17 00:00:00 2001 From: Rob Moffat Date: Wed, 13 Dec 2023 13:21:17 +0000 Subject: [PATCH 36/87] Updated node version --- .github/workflows/cve-scanning.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cve-scanning.yml b/.github/workflows/cve-scanning.yml index 8713c9534..c9bdcb2ef 100644 --- a/.github/workflows/cve-scanning.yml +++ b/.github/workflows/cve-scanning.yml @@ -22,7 +22,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [18.x] + node-version: [20] steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} From 6c453928a6f59d986971810744d7cd2e2120a76c Mon Sep 17 00:00:00 2001 From: Yannick Malins Date: Wed, 13 Dec 2023 14:29:55 +0100 Subject: [PATCH 37/87] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ded336c5f..af58e7dba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added +* Removed the union type for the `ChatMessage` context, which caused issues for languages not having union types. This is a breaking change. * Added `CreateInteraction` intent. To be used when a user wants to record an interaction into a system. New context `Interaction` also introduced. An interaction might be a call, IM, email, a meeting (physical or virtual) or the preparation of some specialist data. ([#747](https://github.com/finos/FDC3/pull/747)) * Added `TransactionResult` context. A context type representing the result of a transaction initiated via FDC3. Its purpose is to provide a status and message (where needed) for the transaction and MAY wrap a returned context object. ([#761] (https://github.com/finos/FDC3/pull/761)) * Added a `MalformedContext` error to the `OpenError`, `ChannelError` and `ResolveError` enumerations, to be used when `broadcast`, `open`, `findIntents`, `raiseIntents`, and other related functions are passed an invalid context Object. ([#972](https://github.com/finos/FDC3/pull/972)) From 0505a4d43f7a38772b3ff2130efcd2c5ee209cb6 Mon Sep 17 00:00:00 2001 From: Yannick Malins Date: Wed, 13 Dec 2023 14:31:13 +0100 Subject: [PATCH 38/87] update changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index af58e7dba..7cac6ee17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added -* Removed the union type for the `ChatMessage` context, which caused issues for languages not having union types. This is a breaking change. * Added `CreateInteraction` intent. To be used when a user wants to record an interaction into a system. New context `Interaction` also introduced. An interaction might be a call, IM, email, a meeting (physical or virtual) or the preparation of some specialist data. ([#747](https://github.com/finos/FDC3/pull/747)) * Added `TransactionResult` context. A context type representing the result of a transaction initiated via FDC3. Its purpose is to provide a status and message (where needed) for the transaction and MAY wrap a returned context object. ([#761] (https://github.com/finos/FDC3/pull/761)) * Added a `MalformedContext` error to the `OpenError`, `ChannelError` and `ResolveError` enumerations, to be used when `broadcast`, `open`, `findIntents`, `raiseIntents`, and other related functions are passed an invalid context Object. ([#972](https://github.com/finos/FDC3/pull/972)) @@ -56,6 +55,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed +* Removed the union type for the `ChatMessage` context, which caused issues for languages not having union types. This is a breaking change (made before the final version of 2.1 is released). * Corrected chatInitSettings context schema to incorporate the Context schema. ([#869](https://github.com/finos/FDC3/pull/869)) * Corrected schema syntax in chatInitSettings and renamed the `public` property to `isPublic` (as `public` is a reserved keyword in javascript). ([#875](https://github.com/finos/FDC3/pull/875)) * Further clarified the difference between the behavior of User channels and other channel types on joinUserChannel/addContextListener. ([#971](https://github.com/finos/FDC3/pull/971)) From 7cf7ef62ef8bb569877e53e8ac80e12b3b9938c9 Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 13 Dec 2023 13:47:10 +0000 Subject: [PATCH 39/87] Correcting publish action --- .github/workflows/package.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 393aa4034..60a4f4dc6 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -105,6 +105,6 @@ jobs: - name: Publish if: steps.check-version.outputs.exists == '0' - run: npm run publish --provenance --access public + run: npm publish --provenance --access public env: NODE_AUTH_TOKEN: ${{ secrets[matrix.token-name] }} From bdabe31a510cdcc637aa0e3bf68c0c6e2fd0516b Mon Sep 17 00:00:00 2001 From: Kris West Date: Fri, 15 Dec 2023 18:28:15 +0000 Subject: [PATCH 40/87] Updating Chat message example to corrected schema --- toolbox/fdc3-workbench/src/fixtures/contexts.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/toolbox/fdc3-workbench/src/fixtures/contexts.ts b/toolbox/fdc3-workbench/src/fixtures/contexts.ts index 46a40dd17..6dc3829ab 100644 --- a/toolbox/fdc3-workbench/src/fixtures/contexts.ts +++ b/toolbox/fdc3-workbench/src/fixtures/contexts.ts @@ -92,7 +92,21 @@ export const contexts: ContextItem[] = [ streamId: "j75xqXy25NBOdacUI3FNBH" } }, - message: "A message to send" + message: { + type: 'fdc3.message', + text: { + 'text/plain': 'Hey all, can we discuss the issue together? I attached a screenshot' + }, + entities: { + 0: { + type: 'fdc3.fileAttachment', + data: { + name: 'myImage.png', + dataUri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII' + } + } + } + } }, schemaUrl: new URL("https://fdc3.finos.org/schemas/next/context/chatMessage.schema.json"), }, From 6c0128fde7a73e1cc11aedc21f1775dbadd5fc38 Mon Sep 17 00:00:00 2001 From: Andrei Floricel Date: Fri, 22 Dec 2023 20:24:12 +0200 Subject: [PATCH 41/87] Refactors ContextTypes to union type instead of enum (#1138) Signed-off-by: Andrei Floricel --- src/context/ContextType.ts | 53 ++++++++++++++++++++++---------------- test/Methods.test.ts | 11 ++++---- 2 files changed, 36 insertions(+), 28 deletions(-) diff --git a/src/context/ContextType.ts b/src/context/ContextType.ts index 4771a9dc8..27975f2e9 100644 --- a/src/context/ContextType.ts +++ b/src/context/ContextType.ts @@ -2,26 +2,35 @@ * SPDX-License-Identifier: Apache-2.0 * Copyright FINOS FDC3 contributors - see NOTICE file */ -export enum ContextTypes { - Chart = 'fdc3.chart', - ChatInitSettings = 'fdc3.chat.initSettings', - ChatRoom = 'fdc3.chat.room', - Contact = 'fdc3.contact', - ContactList = 'fdc3.contactList', - Country = 'fdc3.country', - Currency = 'fdc3.currency', - Email = 'fdc3.email', - Instrument = 'fdc3.instrument', - InstrumentList = 'fdc3.instrumentList', - Interaction = 'fdc3.interaction', - Nothing = 'fdc3.nothing', - Organization = 'fdc3.organization', - Portfolio = 'fdc3.portfolio', - Position = 'fdc3.position', - ChatSearchCriteria = 'fdc3.chat.searchCriteria', - TimeRange = 'fdc3.timerange', - TransactionResult = 'fdc3.transactionResult', - Valuation = 'fdc3.valuation', -} -export type ContextType = ContextTypes | string; +/** + * @see https://fdc3.finos.org/docs/context/spec#standard-context-types + */ +export type StandardContextType = + | 'fdc3.action' + | 'fdc3.chart' + | 'fdc3.chat.initSettings' + | 'fdc3.chat.message' + | 'fdc3.chat.room' + | 'fdc3.chat.searchCriteria' + | 'fdc3.contact' + | 'fdc3.contactList' + | 'fdc3.country' + | 'fdc3.currency' + | 'fdc3.email' + | 'fdc3.instrument' + | 'fdc3.instrumentList' + | 'fdc3.interaction' + | 'fdc3.message' + | 'fdc3.organization' + | 'fdc3.portfolio' + | 'fdc3.position' + | 'fdc3.nothing' + | 'fdc3.timerange' + | 'fdc3.transactionResult' + | 'fdc3.valuation'; + +/** + * @see https://fdc3.finos.org/docs/context/spec + */ +export type ContextType = StandardContextType | string; diff --git a/test/Methods.test.ts b/test/Methods.test.ts index 7927270ae..ca9ab2b82 100644 --- a/test/Methods.test.ts +++ b/test/Methods.test.ts @@ -5,7 +5,6 @@ import { broadcast, compareVersionNumbers, ContextHandler, - ContextTypes, DesktopAgent, fdc3Ready, findIntent, @@ -33,7 +32,7 @@ const TimeoutError = new Error('Timed out waiting for `fdc3Ready` event.'); const UnexpectedError = new Error('`fdc3Ready` event fired, but `window.fdc3` not set to DesktopAgent.'); const ContactContext = { - type: ContextTypes.Contact, + type: 'fdc3.contact', id: { email: 'test@example.com' }, }; @@ -163,10 +162,10 @@ describe('test ES6 module', () => { test('findIntent should delegate to window.fdc3.findIntent (with additional output type argument)', async () => { const intent = 'ViewChart'; - await findIntent(intent, ContactContext, ContextTypes.Contact); + await findIntent(intent, ContactContext, 'fdc3.contact'); expect(window.fdc3.findIntent).toHaveBeenCalledTimes(1); - expect(window.fdc3.findIntent).toHaveBeenLastCalledWith(intent, ContactContext, ContextTypes.Contact); + expect(window.fdc3.findIntent).toHaveBeenLastCalledWith(intent, ContactContext, 'fdc3.contact'); }); test('findIntentsByContext should delegate to window.fdc3.findIntentsByContext', async () => { @@ -177,10 +176,10 @@ describe('test ES6 module', () => { }); test('findIntentsByContext should delegate to window.fdc3.findIntentsByContext (with additional output type argument)', async () => { - await findIntentsByContext(ContactContext, ContextTypes.Contact); + await findIntentsByContext(ContactContext, 'fdc3.contact'); expect(window.fdc3.findIntentsByContext).toHaveBeenCalledTimes(1); - expect(window.fdc3.findIntentsByContext).toHaveBeenLastCalledWith(ContactContext, ContextTypes.Contact); + expect(window.fdc3.findIntentsByContext).toHaveBeenLastCalledWith(ContactContext, 'fdc3.contact'); }); test('broadcast should delegate to window.fdc3.broadcast', async () => { From c254a7e301398cfd99b8d8b2d7ba44805070215d Mon Sep 17 00:00:00 2001 From: Kris West Date: Mon, 8 Jan 2024 10:46:40 +0000 Subject: [PATCH 42/87] Finsemble/Glue42 rebrand -> io.Connect --- docs/agent-bridging/spec.md | 2 +- docs/api/ref/Metadata.md | 2 +- docs/api/spec.md | 3 +-- docs/trademarks.md | 5 +++-- website/versioned_docs/version-2.1/agent-bridging/spec.md | 2 +- website/versioned_docs/version-2.1/api/ref/Metadata.md | 2 +- website/versioned_docs/version-2.1/api/spec.md | 3 +-- website/versioned_docs/version-2.1/trademarks.md | 5 +++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/agent-bridging/spec.md b/docs/agent-bridging/spec.md index 54b1fe34c..78dc2f3f9 100644 --- a/docs/agent-bridging/spec.md +++ b/docs/agent-bridging/spec.md @@ -244,7 +244,7 @@ The DA must then respond to the `hello` message with a `handshake` request to th * provides. The string must be a numeric semver version, e.g. 1.2 or 1.2.1. */ fdc3Version: string, /** The name of the provider of the FDC3 Desktop Agent Implementation - * (e.g.Finsemble, Glue42, OpenFin etc.). */ + * (e.g.Finsemble, io.Connect, OpenFin etc.). */ provider: string, /** The version of the provider of the FDC3 Desktop Agent Implementation (e.g. 5.3.0). */ providerVersion: string, diff --git a/docs/api/ref/Metadata.md b/docs/api/ref/Metadata.md index c149124e5..a92e6179d 100644 --- a/docs/api/ref/Metadata.md +++ b/docs/api/ref/Metadata.md @@ -243,7 +243,7 @@ interface ImplementationMetadata { readonly fdc3Version: string; /** The name of the provider of the FDC3 Desktop Agent Implementation - * (e.g.Finsemble, Glue42, OpenFin etc.). + * (e.g. io.Connect, OpenFin etc.). */ readonly provider: string; diff --git a/docs/api/spec.md b/docs/api/spec.md index bafbad461..095fc3baa 100644 --- a/docs/api/spec.md +++ b/docs/api/spec.md @@ -17,8 +17,7 @@ A Desktop Agent is a desktop component (or aggregate of components) that serves Examples of Desktop Agents include: - Autobahn -- Finsemble -- Glue42 +- io.Connect - OpenFin - Refinitiv Eikon diff --git a/docs/trademarks.md b/docs/trademarks.md index 584d26e61..f59ddd206 100644 --- a/docs/trademarks.md +++ b/docs/trademarks.md @@ -12,8 +12,9 @@ Trademarks used within this site and the FDC3 Standard include, but are not limi - Eikon is a registered trademark of Refinitiv - FDC3 is a registered trademark and brand of The Linux Foundation - Excel is a Microsoft Corporation product name -- Finsemble is a registered trademark and product name of Finsemble, Inc. -- Glue42 is a trademark of Tick42 +- Finsemble is a registered trademark and product name of interop.io, Inc. +- Glue42 is a trademark and product name of interop.io, Inc. +- io.Connect is a trademark and product name of interop.io, Inc. - Java is a registered trademark of Oracle America, Inc. - JavaScript is a registered trademark of Oracle America, Inc. - .NET is a trademark of Microsoft Corporation diff --git a/website/versioned_docs/version-2.1/agent-bridging/spec.md b/website/versioned_docs/version-2.1/agent-bridging/spec.md index 5fa00f796..179c7345e 100644 --- a/website/versioned_docs/version-2.1/agent-bridging/spec.md +++ b/website/versioned_docs/version-2.1/agent-bridging/spec.md @@ -244,7 +244,7 @@ The DA must then respond to the `hello` message with a `handshake` request to th * provides. The string must be a numeric semver version, e.g. 1.2 or 1.2.1. */ fdc3Version: string, /** The name of the provider of the FDC3 Desktop Agent Implementation - * (e.g.Finsemble, Glue42, OpenFin etc.). */ + * (e.g.Finsemble, io.Connect, OpenFin etc.). */ provider: string, /** The version of the provider of the FDC3 Desktop Agent Implementation (e.g. 5.3.0). */ providerVersion: string, diff --git a/website/versioned_docs/version-2.1/api/ref/Metadata.md b/website/versioned_docs/version-2.1/api/ref/Metadata.md index c149124e5..a92e6179d 100644 --- a/website/versioned_docs/version-2.1/api/ref/Metadata.md +++ b/website/versioned_docs/version-2.1/api/ref/Metadata.md @@ -243,7 +243,7 @@ interface ImplementationMetadata { readonly fdc3Version: string; /** The name of the provider of the FDC3 Desktop Agent Implementation - * (e.g.Finsemble, Glue42, OpenFin etc.). + * (e.g. io.Connect, OpenFin etc.). */ readonly provider: string; diff --git a/website/versioned_docs/version-2.1/api/spec.md b/website/versioned_docs/version-2.1/api/spec.md index 0fd5f5cfa..51fea3e2b 100644 --- a/website/versioned_docs/version-2.1/api/spec.md +++ b/website/versioned_docs/version-2.1/api/spec.md @@ -17,8 +17,7 @@ A Desktop Agent is a desktop component (or aggregate of components) that serves Examples of Desktop Agents include: - Autobahn -- Finsemble -- Glue42 +- io.Connect - OpenFin - Refinitiv Eikon diff --git a/website/versioned_docs/version-2.1/trademarks.md b/website/versioned_docs/version-2.1/trademarks.md index 584d26e61..f59ddd206 100644 --- a/website/versioned_docs/version-2.1/trademarks.md +++ b/website/versioned_docs/version-2.1/trademarks.md @@ -12,8 +12,9 @@ Trademarks used within this site and the FDC3 Standard include, but are not limi - Eikon is a registered trademark of Refinitiv - FDC3 is a registered trademark and brand of The Linux Foundation - Excel is a Microsoft Corporation product name -- Finsemble is a registered trademark and product name of Finsemble, Inc. -- Glue42 is a trademark of Tick42 +- Finsemble is a registered trademark and product name of interop.io, Inc. +- Glue42 is a trademark and product name of interop.io, Inc. +- io.Connect is a trademark and product name of interop.io, Inc. - Java is a registered trademark of Oracle America, Inc. - JavaScript is a registered trademark of Oracle America, Inc. - .NET is a trademark of Microsoft Corporation From 519671bcae8dadaafca7854df504977b9679af1b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 20 Jan 2024 01:01:48 +0000 Subject: [PATCH 43/87] Bump vite from 4.3.9 to 4.5.2 in /toolbox/fdc3-workbench Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.3.9 to 4.5.2. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v4.5.2/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v4.5.2/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- toolbox/fdc3-workbench/package-lock.json | 215 ++++++++++++----------- toolbox/fdc3-workbench/package.json | 2 +- 2 files changed, 112 insertions(+), 105 deletions(-) diff --git a/toolbox/fdc3-workbench/package-lock.json b/toolbox/fdc3-workbench/package-lock.json index dd1108f75..4addb5af7 100644 --- a/toolbox/fdc3-workbench/package-lock.json +++ b/toolbox/fdc3-workbench/package-lock.json @@ -43,7 +43,7 @@ "terser": "^5.16.1", "typescript": "^4.1.2", "uuid": "^9.0.0", - "vite": "^4.3.9", + "vite": "^4.5.2", "web-vitals": "^1.0.1" } }, @@ -448,9 +448,9 @@ "dev": true }, "node_modules/@esbuild/android-arm": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.18.tgz", - "integrity": "sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", "cpu": [ "arm" ], @@ -464,9 +464,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.18.tgz", - "integrity": "sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", "cpu": [ "arm64" ], @@ -480,9 +480,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.18.tgz", - "integrity": "sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", "cpu": [ "x64" ], @@ -496,9 +496,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.18.tgz", - "integrity": "sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", "cpu": [ "arm64" ], @@ -512,9 +512,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.18.tgz", - "integrity": "sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", "cpu": [ "x64" ], @@ -528,9 +528,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.18.tgz", - "integrity": "sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", "cpu": [ "arm64" ], @@ -544,9 +544,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.18.tgz", - "integrity": "sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", "cpu": [ "x64" ], @@ -560,9 +560,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.18.tgz", - "integrity": "sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", "cpu": [ "arm" ], @@ -576,9 +576,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.18.tgz", - "integrity": "sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", "cpu": [ "arm64" ], @@ -592,9 +592,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.18.tgz", - "integrity": "sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", "cpu": [ "ia32" ], @@ -608,9 +608,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.18.tgz", - "integrity": "sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", "cpu": [ "loong64" ], @@ -624,9 +624,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.18.tgz", - "integrity": "sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", "cpu": [ "mips64el" ], @@ -640,9 +640,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.18.tgz", - "integrity": "sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", "cpu": [ "ppc64" ], @@ -656,9 +656,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.18.tgz", - "integrity": "sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", "cpu": [ "riscv64" ], @@ -672,9 +672,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.18.tgz", - "integrity": "sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", "cpu": [ "s390x" ], @@ -688,9 +688,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.18.tgz", - "integrity": "sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", "cpu": [ "x64" ], @@ -704,9 +704,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.18.tgz", - "integrity": "sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", "cpu": [ "x64" ], @@ -720,9 +720,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.18.tgz", - "integrity": "sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", "cpu": [ "x64" ], @@ -736,9 +736,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.18.tgz", - "integrity": "sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", "cpu": [ "x64" ], @@ -752,9 +752,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.18.tgz", - "integrity": "sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", "cpu": [ "arm64" ], @@ -768,9 +768,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.18.tgz", - "integrity": "sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", "cpu": [ "ia32" ], @@ -784,9 +784,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz", - "integrity": "sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", "cpu": [ "x64" ], @@ -2283,9 +2283,9 @@ } }, "node_modules/esbuild": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.18.tgz", - "integrity": "sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==", + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, "hasInstallScript": true, "bin": { @@ -2295,28 +2295,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.17.18", - "@esbuild/android-arm64": "0.17.18", - "@esbuild/android-x64": "0.17.18", - "@esbuild/darwin-arm64": "0.17.18", - "@esbuild/darwin-x64": "0.17.18", - "@esbuild/freebsd-arm64": "0.17.18", - "@esbuild/freebsd-x64": "0.17.18", - "@esbuild/linux-arm": "0.17.18", - "@esbuild/linux-arm64": "0.17.18", - "@esbuild/linux-ia32": "0.17.18", - "@esbuild/linux-loong64": "0.17.18", - "@esbuild/linux-mips64el": "0.17.18", - "@esbuild/linux-ppc64": "0.17.18", - "@esbuild/linux-riscv64": "0.17.18", - "@esbuild/linux-s390x": "0.17.18", - "@esbuild/linux-x64": "0.17.18", - "@esbuild/netbsd-x64": "0.17.18", - "@esbuild/openbsd-x64": "0.17.18", - "@esbuild/sunos-x64": "0.17.18", - "@esbuild/win32-arm64": "0.17.18", - "@esbuild/win32-ia32": "0.17.18", - "@esbuild/win32-x64": "0.17.18" + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" } }, "node_modules/escalade": { @@ -3027,9 +3027,9 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -5108,9 +5108,9 @@ } }, "node_modules/rollup": { - "version": "3.21.6", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.6.tgz", - "integrity": "sha512-SXIICxvxQxR3D4dp/3LDHZIJPC8a4anKMHd4E3Jiz2/JnY+2bEjqrOokAauc5ShGVNFHlEFjBXAXlaxkJqIqSg==", + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -5866,14 +5866,14 @@ } }, "node_modules/vite": { - "version": "4.3.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", - "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", "dev": true, "dependencies": { - "esbuild": "^0.17.5", - "postcss": "^8.4.23", - "rollup": "^3.21.0" + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" }, "bin": { "vite": "bin/vite.js" @@ -5881,12 +5881,16 @@ "engines": { "node": "^14.18.0 || >=16.0.0" }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@types/node": ">= 14", "less": "*", + "lightningcss": "^1.21.0", "sass": "*", "stylus": "*", "sugarss": "*", @@ -5899,6 +5903,9 @@ "less": { "optional": true }, + "lightningcss": { + "optional": true + }, "sass": { "optional": true }, diff --git a/toolbox/fdc3-workbench/package.json b/toolbox/fdc3-workbench/package.json index a41265f0a..cd9ed1da5 100644 --- a/toolbox/fdc3-workbench/package.json +++ b/toolbox/fdc3-workbench/package.json @@ -44,7 +44,7 @@ "prettier": "^2.3.1", "pretty-quick": "^3.1.0", "terser": "^5.16.1", - "vite": "^4.3.9", + "vite": "^4.5.2", "@apidevtools/json-schema-ref-parser": "^9.0.9", "@fontsource/roboto": "^4.4.5", "@fontsource/source-code-pro": "^4.5.0", From 1385548ee2ea2bb24ceec33a58f73afb83487529 Mon Sep 17 00:00:00 2001 From: Rob Moffat Date: Wed, 24 Jan 2024 11:22:38 -0800 Subject: [PATCH 44/87] Updated comit logo --- website/data/community.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/data/community.json b/website/data/community.json index 3a6b73115..371705b4f 100644 --- a/website/data/community.json +++ b/website/data/community.json @@ -462,7 +462,7 @@ { "title": "CAS Workflow", "publisher": "comitFS", - "image": "https://www.comitfs.com/assets/img/logo@2x.png", + "image": "https://www.comitfs.com/assets/img/logo@2x.webp", "infoLink": "https://www.comitfs.com/cas-workflow.html", "docsLink": "", "description": "comitFS has been delivering a Telephony Integration Middleware dedicated to the the financial community for 20 years. Recently we have been exploring how to leverage FDC3 capabilities to bring call control and call based contextual data to user's desktops.", From ad995f3e37c6047d3e0b64aaef06d0251f064307 Mon Sep 17 00:00:00 2001 From: Kris West Date: Tue, 6 Feb 2024 10:47:59 +0000 Subject: [PATCH 45/87] Identifier values should be of type string --- schemas/context/context.schema.json | 10 +++------- src/bridging/BridgingTypes.ts | 10 ++++++---- src/context/ContextTypes.ts | 2 ++ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/schemas/context/context.schema.json b/schemas/context/context.schema.json index 8c84dd866..bd2e80ebb 100644 --- a/schemas/context/context.schema.json +++ b/schemas/context/context.schema.json @@ -25,9 +25,7 @@ }, "id": { "type": "object", - "unevaluatedProperties": { - "type": "string" - } + "unevaluatedProperties": {"type": "string" } } }, "additionalProperties": true, @@ -52,10 +50,8 @@ "id": { "type": "object", "title": "Id", - "description": "Context data objects may include a set of equivalent key-value pairs that can be used to help applications identify and look up the context type they receive in their own domain. The idea behind this design is that applications can provide as many equivalent identifiers to a target application as possible, e.g. an instrument may be represented by an ISIN, CUSIP or Bloomberg identifier.\n\nIdentifiers do not make sense for all types of data, so the `id` property is therefore optional, but some derived types may choose to require at least one identifier.", - "unevaluatedProperties": { - "type": "string" - } + "description": "Context data objects may include a set of equivalent key-value pairs that can be used to help applications identify and look up the context type they receive in their own domain. The idea behind this design is that applications can provide as many equivalent identifiers to a target application as possible, e.g. an instrument may be represented by an ISIN, CUSIP or Bloomberg identifier.\n\nIdentifiers do not make sense for all types of data, so the `id` property is therefore optional, but some derived types may choose to require at least one identifier. Identifier values SHOULD always be of type string.", + "unevaluatedProperties": {"type": "string" } } }, "additionalProperties": true, diff --git a/src/bridging/BridgingTypes.ts b/src/bridging/BridgingTypes.ts index aadec2fe1..7fc56594f 100644 --- a/src/bridging/BridgingTypes.ts +++ b/src/bridging/BridgingTypes.ts @@ -669,6 +669,7 @@ export interface ContextElement { * * Identifiers do not make sense for all types of data, so the `id` property is therefore * optional, but some derived types may choose to require at least one identifier. + * Identifier values SHOULD always be of type string. */ id?: { [key: string]: any }; /** @@ -3102,7 +3103,7 @@ export interface PrivateChannelEventListenerAddedAgentRequestMeta { */ export interface PrivateChannelEventListenerAddedAgentRequestPayload { /** - * The id of the PrivateChannel that the event listener was added to + * The id of the PrivateChannel that the event listener was added to. */ channelId: string; listenerType: PrivateChannelEventListenerTypes; @@ -3165,7 +3166,7 @@ export interface PrivateChannelEventListenerAddedBridgeRequestMeta { */ export interface PrivateChannelEventListenerAddedBridgeRequestPayload { /** - * The id of the PrivateChannel that the event listener was added to + * The id of the PrivateChannel that the event listener was added to. */ channelId: string; listenerType: PrivateChannelEventListenerTypes; @@ -3213,7 +3214,7 @@ export interface PrivateChannelEventListenerRemovedAgentRequestMeta { */ export interface PrivateChannelEventListenerRemovedAgentRequestPayload { /** - * The id of the PrivateChannel that the event listener was removed from + * The id of the PrivateChannel that the event listener was removed from. */ channelId: string; listenerType: PrivateChannelEventListenerTypes; @@ -3271,7 +3272,7 @@ export interface PrivateChannelEventListenerRemovedBridgeRequestMeta { */ export interface PrivateChannelEventListenerRemovedBridgeRequestPayload { /** - * The id of the PrivateChannel that the event listener was removed from + * The id of the PrivateChannel that the event listener was removed from. */ channelId: string; listenerType: PrivateChannelEventListenerTypes; @@ -4178,6 +4179,7 @@ export interface Context { * * Identifiers do not make sense for all types of data, so the `id` property is therefore * optional, but some derived types may choose to require at least one identifier. + * Identifier values SHOULD always be of type string. */ id?: { [key: string]: any }; /** diff --git a/src/context/ContextTypes.ts b/src/context/ContextTypes.ts index c0440d1ca..60024265a 100644 --- a/src/context/ContextTypes.ts +++ b/src/context/ContextTypes.ts @@ -129,6 +129,7 @@ export interface ContextElement { * * Identifiers do not make sense for all types of data, so the `id` property is therefore * optional, but some derived types may choose to require at least one identifier. + * Identifier values SHOULD always be of type string. */ id?: { [key: string]: any }; /** @@ -946,6 +947,7 @@ export interface Context { * * Identifiers do not make sense for all types of data, so the `id` property is therefore * optional, but some derived types may choose to require at least one identifier. + * Identifier values SHOULD always be of type string. */ id?: { [key: string]: any }; /** From 1db221a41da151f1b934ebe2593cf018d05fd8eb Mon Sep 17 00:00:00 2001 From: Kris West Date: Tue, 6 Feb 2024 10:51:47 +0000 Subject: [PATCH 46/87] changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cac6ee17..aead15526 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added +* Added clarification that `id` field values SHOULD always be strings to context schema definition (a restriction that can't easily be represented in the generated types). ([#1149](https://github.com/finos/FDC3/pull/1149)) + ### Changed ### Deprecated From 892ae5138f330ff66f3fbb9d3616536becb3c6ab Mon Sep 17 00:00:00 2001 From: Kris West Date: Tue, 6 Feb 2024 12:42:01 +0000 Subject: [PATCH 47/87] Adding an additional note in documentation that identifier values SHOULD be of type string --- docs/context/ref/Context.md | 5 +++-- docs/context/spec.md | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/context/ref/Context.md b/docs/context/ref/Context.md index 5c4b22495..8a1b379b6 100644 --- a/docs/context/ref/Context.md +++ b/docs/context/ref/Context.md @@ -54,11 +54,12 @@ derived types may require the name object as mandatory, depending on use case. ### `id` (optional) -Context data objects may include a set of equivalent key-value pairs that can be used to help applications -identify and look up the context type they receive in their own domain. The idea behind this design is that applications can provide as many equivalent identifiers to a target application as possible, e.g. an instrument may be represented by an ISIN, CUSIP or Bloomberg identifier. +Context data objects may include a set of equivalent key-value pairs that can be used to help applications identify and look up the context type they receive in their own domain. The idea behind this design is that applications can provide as many equivalent identifiers to a target application as possible, e.g. an instrument may be represented by an ISIN, CUSIP or Bloomberg identifier. Identifiers do not make sense for all types of data, so the `id` property is therefore optional, but some derived types may choose to require at least one identifier. +Identifier values SHOULD always be of type string. + ## See Also FDC3 Specifications diff --git a/docs/context/spec.md b/docs/context/spec.md index a16603da1..2f1c54588 100644 --- a/docs/context/spec.md +++ b/docs/context/spec.md @@ -110,6 +110,8 @@ An `id` field with type `object` is defined in the base [fdc3.context](ref/Conte Where an identifier is the name of an existing standard, external to FDC3, it is represented in all caps. For example: FIGI, PERMID, CUSIP, ISO-2. When an identifier is a more general concept, it is represented in all lower case. For example: ticker, name, geocode, email. +Identifier values SHOULD always be of type string. + All standard identifier names are reserved names. Applications may use their own identifiers ad hoc. For example: ```json From 4fc58d4763889515cef9c1a926f088298a6a4035 Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 14 Feb 2024 15:42:52 +0000 Subject: [PATCH 48/87] Add missing argument to findIntent agent request bridging schema --- schemas/bridging/findIntentAgentRequest.schema.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/schemas/bridging/findIntentAgentRequest.schema.json b/schemas/bridging/findIntentAgentRequest.schema.json index efa536276..59c3dd70e 100644 --- a/schemas/bridging/findIntentAgentRequest.schema.json +++ b/schemas/bridging/findIntentAgentRequest.schema.json @@ -32,6 +32,10 @@ "context": { "title": "Context argument", "$ref": "../context/context.schema.json" + }, + "resultType": { + "title": "Result type argument", + "type": "string" } }, "required": ["intent"], From 30abbe92c773b770fad8d23f04877557236b3e43 Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 14 Feb 2024 15:58:27 +0000 Subject: [PATCH 49/87] Add hint to findIntent bridging docs page about resultType argument --- docs/agent-bridging/ref/findIntent.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/agent-bridging/ref/findIntent.md b/docs/agent-bridging/ref/findIntent.md index 6bf85da90..69381dc17 100644 --- a/docs/agent-bridging/ref/findIntent.md +++ b/docs/agent-bridging/ref/findIntent.md @@ -46,7 +46,7 @@ sequenceDiagram ### Example -Outward message to the DAB: +Outward message to the DAB (with `intent` and `context` specified, but not `resultType`): ```json // agent-A -> DAB From 7ec9d2fcd75528532c1000cecb3adf9f34a48026 Mon Sep 17 00:00:00 2001 From: Kris West Date: Wed, 14 Feb 2024 17:44:23 +0000 Subject: [PATCH 50/87] Rolling beta module version and building BridgingTypes.ts --- package.json | 2 +- src/bridging/BridgingTypes.ts | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index ba78aafe3..ffd237f7d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@finos/fdc3", - "version": "2.1.0-beta.5", + "version": "2.1.0-beta.6", "author": "Fintech Open Source Foundation (FINOS)", "homepage": "https://fdc3.finos.org", "repository": { diff --git a/src/bridging/BridgingTypes.ts b/src/bridging/BridgingTypes.ts index 7fc56594f..68f27737f 100644 --- a/src/bridging/BridgingTypes.ts +++ b/src/bridging/BridgingTypes.ts @@ -1771,6 +1771,7 @@ export interface FindIntentAgentRequestMeta { export interface FindIntentAgentRequestPayload { context?: ContextElement; intent: string; + resultType?: string; } /** @@ -1929,6 +1930,7 @@ export interface FindIntentBridgeRequestMeta { export interface FindIntentBridgeRequestPayload { context?: ContextElement; intent: string; + resultType?: string; } /** @@ -5488,6 +5490,7 @@ const typeMap: any = { [ { json: 'context', js: 'context', typ: u(undefined, r('ContextElement')) }, { json: 'intent', js: 'intent', typ: '' }, + { json: 'resultType', js: 'resultType', typ: u(undefined, '') }, ], false ), @@ -5562,6 +5565,7 @@ const typeMap: any = { [ { json: 'context', js: 'context', typ: u(undefined, r('ContextElement')) }, { json: 'intent', js: 'intent', typ: '' }, + { json: 'resultType', js: 'resultType', typ: u(undefined, '') }, ], false ), From c4abbd56aa5db69113a20ebe55a880ca57a75f97 Mon Sep 17 00:00:00 2001 From: Maurizio Pillitu Date: Thu, 15 Feb 2024 15:13:33 +0100 Subject: [PATCH 51/87] add agent bridging call in the get-involved page --- website/data/get-involved/2.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/website/data/get-involved/2.mdx b/website/data/get-involved/2.mdx index 39be295d0..907061678 100644 --- a/website/data/get-involved/2.mdx +++ b/website/data/get-involved/2.mdx @@ -4,4 +4,6 @@ - You can also attend the quarterly [FDC3 General Meeting](https://github.com/finos/FDC3/issues?q=label%3A%22General+Meeting%22): you can find meeting details in the [FINOS Project Calendar](https://calendar.google.com/calendar/u/0/embed?src=finos.org_fac8mo1rfc6ehscg0d80fi8jig@group.calendar.google.com). -- Take the free FDC3 Training. \ No newline at end of file +- If you're interested in the [Desktop Agent bridging](https://fdc3.finos.org/docs/next/agent-bridging/spec), you can join their next [Discussion Group call](https://github.com/finos/FDC3/issues?q=label%3A%22Desktop+Agent+Bridging%22+label%3A%22meeting%22+) + +- Take the free FDC3 Training. From ac93d6b8181fcaa690acdb032120da24660e1597 Mon Sep 17 00:00:00 2001 From: Rob Moffat Date: Thu, 15 Feb 2024 17:30:32 +0000 Subject: [PATCH 52/87] Update 2.mdx --- website/data/get-involved/2.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/data/get-involved/2.mdx b/website/data/get-involved/2.mdx index 907061678..a54993407 100644 --- a/website/data/get-involved/2.mdx +++ b/website/data/get-involved/2.mdx @@ -6,4 +6,4 @@ - If you're interested in the [Desktop Agent bridging](https://fdc3.finos.org/docs/next/agent-bridging/spec), you can join their next [Discussion Group call](https://github.com/finos/FDC3/issues?q=label%3A%22Desktop+Agent+Bridging%22+label%3A%22meeting%22+) -- Take the free FDC3 Training. +- Take the free FDC3 Training. From 7ebb4cb2f76fa077046bc762cc6d1fdf91f6ff00 Mon Sep 17 00:00:00 2001 From: Maurizio Pillitu Date: Thu, 15 Feb 2024 19:50:10 +0100 Subject: [PATCH 53/87] fix missing " --- website/data/get-involved/2.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/data/get-involved/2.mdx b/website/data/get-involved/2.mdx index a54993407..0dbd17eea 100644 --- a/website/data/get-involved/2.mdx +++ b/website/data/get-involved/2.mdx @@ -6,4 +6,4 @@ - If you're interested in the [Desktop Agent bridging](https://fdc3.finos.org/docs/next/agent-bridging/spec), you can join their next [Discussion Group call](https://github.com/finos/FDC3/issues?q=label%3A%22Desktop+Agent+Bridging%22+label%3A%22meeting%22+) -- Take the free FDC3 Training. +- Take the free FDC3 Training. From f3e8d084b250b55cf3749ad80ee0deaa46392e75 Mon Sep 17 00:00:00 2001 From: Andrei Floricel Date: Fri, 16 Feb 2024 16:57:52 +0200 Subject: [PATCH 54/87] Add experimental context types Signed-off-by: Andrei Floricel --- src/context/ContextType.ts | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/context/ContextType.ts b/src/context/ContextType.ts index 27975f2e9..1069ba68a 100644 --- a/src/context/ContextType.ts +++ b/src/context/ContextType.ts @@ -30,7 +30,17 @@ export type StandardContextType = | 'fdc3.transactionResult' | 'fdc3.valuation'; +/** + * @see https://fdc3.finos.org/docs/context/spec#standard-context-types + */ +export type ExperimentalContextType = + | 'fdc3.order' + | 'fdc3.orderList' + | 'fdc3.product' + | 'fdc3.trade' + | 'fdc3.tradeList'; + /** * @see https://fdc3.finos.org/docs/context/spec */ -export type ContextType = StandardContextType | string; +export type ContextType = StandardContextType | ExperimentalContextType | (string & {}); From a19a6335e03b249eaaab9ce4ea12601dd3e5b362 Mon Sep 17 00:00:00 2001 From: Andrei Floricel Date: Fri, 16 Feb 2024 17:22:59 +0200 Subject: [PATCH 55/87] Refactor standard intents declaration to use union types instead of enums Signed-off-by: Andrei Floricel --- src/api/DesktopAgent.ts | 11 ++++---- src/api/IntentMetadata.ts | 4 ++- src/api/IntentResolution.ts | 3 ++- src/api/Methods.ts | 7 ++--- src/bridging/BridgingTypes.ts | 14 +++++----- src/intents/Intents.ts | 48 ++++++++++++++++++++--------------- 6 files changed, 51 insertions(+), 36 deletions(-) diff --git a/src/api/DesktopAgent.ts b/src/api/DesktopAgent.ts index f9b989c2b..3e72739b0 100644 --- a/src/api/DesktopAgent.ts +++ b/src/api/DesktopAgent.ts @@ -13,6 +13,7 @@ import { ImplementationMetadata } from './ImplementationMetadata'; import { PrivateChannel } from './PrivateChannel'; import { AppIdentifier } from './AppIdentifier'; import { AppMetadata } from './AppMetadata'; +import { Intent } from '../intents/Intents'; /** * A Desktop Agent is a desktop component (or aggregate of components) that serves as a @@ -125,7 +126,7 @@ export interface DesktopAgent { * // } * ``` */ - findIntent(intent: string, context?: Context, resultType?: string): Promise; + findIntent(intent: Intent, context?: Context, resultType?: string): Promise; /** * Find all the available intents for a particular context, and optionally a desired result context type. @@ -234,7 +235,7 @@ export interface DesktopAgent { * * If you wish to raise an Intent without a context, use the `fdc3.nothing` context type. This type exists so that apps can explicitly declare support for raising an intent without context. * - * Returns an `IntentResolution` object with details of the app instance that was selected (or started) to respond to the intent. + * Returns an `IntentResolution` object with details of the app instance that was selected (or started) to respond to the intent. * * Issuing apps may optionally wait on the promise that is returned by the `getResult()` member of the `IntentResolution`. This promise will resolve when the _receiving app's_ intent handler function returns and resolves a promise. The Desktop Agent resolves the issuing app's promise with the Context object, Channel object or void that is provided as resolution within the receiving app. The Desktop Agent MUST reject the issuing app's promise, with a string from the `ResultError` enumeration, if: (1) the intent handling function's returned promise rejects, (2) the intent handling function doesn't return a valid response (a promise or void), or (3) the returned promise resolves to an invalid type. * @@ -268,7 +269,7 @@ export interface DesktopAgent { * } * ``` */ - raiseIntent(intent: string, context: Context, app?: AppIdentifier): Promise; + raiseIntent(intent: Intent, context: Context, app?: AppIdentifier): Promise; /** * Finds and raises an intent against apps registered with the desktop agent based on the type of the specified context data example. @@ -346,7 +347,7 @@ export interface DesktopAgent { * }); * ``` */ - addIntentListener(intent: string, handler: IntentHandler): Promise; + addIntentListener(intent: Intent, handler: IntentHandler): Promise; /** * Adds a listener for incoming context broadcasts from the Desktop Agent (via a User channel or `fdc3.open`API call. If the consumer is only interested in a context of a particular type, they can they can specify that type. If the consumer is able to receive context of any type or will inspect types received, then they can pass `null` as the `contextType` parameter to receive all context types. @@ -561,7 +562,7 @@ export interface DesktopAgent { * await fdc3.raiseIntent("StartChat", context, appIntent.apps[0].name); * ``` */ - raiseIntent(intent: string, context: Context, name: string): Promise; + raiseIntent(intent: Intent, context: Context, name: string): Promise; /** * @deprecated version of `raiseIntentForContext` that targets an app by by name rather than `AppIdentifier`. Provided for backwards compatibility with versions FDC3 standard <2.0. diff --git a/src/api/IntentMetadata.ts b/src/api/IntentMetadata.ts index e5ca94474..7a55a41a1 100644 --- a/src/api/IntentMetadata.ts +++ b/src/api/IntentMetadata.ts @@ -3,12 +3,14 @@ * Copyright FINOS FDC3 contributors - see NOTICE file */ +import { Intent } from '../intents/Intents'; + /** * Intent descriptor */ export interface IntentMetadata { /** The unique name of the intent that can be invoked by the raiseIntent call */ - readonly name: string; + readonly name: Intent; /** Display name for the intent. * @deprecated Use the intent name for display as display name may vary for diff --git a/src/api/IntentResolution.ts b/src/api/IntentResolution.ts index 82a899d64..ad4f0e374 100644 --- a/src/api/IntentResolution.ts +++ b/src/api/IntentResolution.ts @@ -5,6 +5,7 @@ import { IntentResult } from './Types'; import { AppIdentifier } from './AppIdentifier'; +import { Intent } from '../intents/Intents'; /** * IntentResolution provides a standard format for data returned upon resolving an intent. @@ -43,7 +44,7 @@ export interface IntentResolution { * The intent that was raised. May be used to determine which intent the user * chose in response to `fdc3.raiseIntentForContext()`. */ - readonly intent: string; + readonly intent: Intent; /** * The version number of the Intents schema being used. */ diff --git a/src/api/Methods.ts b/src/api/Methods.ts index 14288d4fd..b82798ef6 100644 --- a/src/api/Methods.ts +++ b/src/api/Methods.ts @@ -14,6 +14,7 @@ import { ImplementationMetadata, AppMetadata, PrivateChannel, + Intent, } from '..'; const DEFAULT_TIMEOUT = 5000; @@ -74,7 +75,7 @@ export function open(app: AppIdentifier | string, context?: Context): Promise { +export function findIntent(intent: Intent, context?: Context, resultType?: string): Promise { return rejectIfNoGlobal(() => window.fdc3.findIntent(intent, context, resultType)); } @@ -86,7 +87,7 @@ export function broadcast(context: Context): Promise { return rejectIfNoGlobal(() => window.fdc3.broadcast(context)); } -export function raiseIntent(intent: string, context: Context, app?: AppIdentifier | string): Promise { +export function raiseIntent(intent: Intent, context: Context, app?: AppIdentifier | string): Promise { if (isString(app)) { return rejectIfNoGlobal(() => window.fdc3.raiseIntent(intent, context, app)); } else { @@ -102,7 +103,7 @@ export function raiseIntentForContext(context: Context, app?: AppIdentifier | st } } -export function addIntentListener(intent: string, handler: IntentHandler): Promise { +export function addIntentListener(intent: Intent, handler: IntentHandler): Promise { return rejectIfNoGlobal(() => window.fdc3.addIntentListener(intent, handler)); } diff --git a/src/bridging/BridgingTypes.ts b/src/bridging/BridgingTypes.ts index 68f27737f..676f1195e 100644 --- a/src/bridging/BridgingTypes.ts +++ b/src/bridging/BridgingTypes.ts @@ -75,6 +75,8 @@ // These functions will throw an error if the JSON doesn't // match the expected interface, even if the JSON is valid. +import { Intent } from '../intents/Intents'; + /** * Metadata relating to the FDC3 Desktop Agent implementation and its provider. */ @@ -1770,7 +1772,7 @@ export interface FindIntentAgentRequestMeta { */ export interface FindIntentAgentRequestPayload { context?: ContextElement; - intent: string; + intent: Intent; resultType?: string; } @@ -1844,7 +1846,7 @@ export interface IntentMetadata { /** * The unique name of the intent that can be invoked by the raiseIntent call */ - name: string; + name: Intent; } /** @@ -1929,7 +1931,7 @@ export interface FindIntentBridgeRequestMeta { */ export interface FindIntentBridgeRequestPayload { context?: ContextElement; - intent: string; + intent: Intent; resultType?: string; } @@ -3697,7 +3699,7 @@ export interface RaiseIntentAgentRequestMeta { export interface RaiseIntentAgentRequestPayload { app: AppDestinationIdentifier; context: ContextElement; - intent: string; + intent: Intent; } /** @@ -3774,7 +3776,7 @@ export interface IntentResolution { * The intent that was raised. May be used to determine which intent the user * chose in response to `fdc3.raiseIntentForContext()`. */ - intent: string; + intent: Intent; /** * Identifier for the app instance that was selected (or started) to resolve the intent. * `source.instanceId` MUST be set, indicating the specific app instance that @@ -3870,7 +3872,7 @@ export interface RaiseIntentBridgeRequestMeta { export interface RaiseIntentBridgeRequestPayload { app: AppDestinationIdentifier; context: ContextElement; - intent: string; + intent: Intent; } /** diff --git a/src/intents/Intents.ts b/src/intents/Intents.ts index ed96abcce..e1dd2da02 100644 --- a/src/intents/Intents.ts +++ b/src/intents/Intents.ts @@ -2,23 +2,31 @@ * SPDX-License-Identifier: Apache-2.0 * Copyright FINOS FDC3 contributors - see NOTICE file */ -export enum Intents { - CreateInteraction = 'CreateInteraction', - SendChatMessage = 'SendChatMessage', - StartCall = 'StartCall', - StartChat = 'StartChat', - StartEmail = 'StartEmail', - ViewAnalysis = 'ViewAnalysis', - ViewChat = 'ViewChat', - ViewChart = 'ViewChart', - ViewContact = 'ViewContact', - ViewHoldings = 'ViewHoldings', - ViewInstrument = 'ViewInstrument', - ViewInteractions = 'ViewInteractions', - ViewMessages = 'ViewMessages', - ViewNews = 'ViewNews', - ViewOrders = 'ViewOrders', - ViewProfile = 'ViewProfile', - ViewQuote = 'ViewQuote', - ViewResearch = 'ViewResearch', -} + +/** + * @see https://fdc3.finos.org/docs/intents/spec#standard-intents + */ +export type StandardIntent = + | 'CreateInteraction' + | 'SendChatMessage' + | 'StartCall' + | 'StartChat' + | 'StartEmail' + | 'ViewAnalysis' + | 'ViewChat' + | 'ViewChart' + | 'ViewContact' + | 'ViewHoldings' + | 'ViewInstrument' + | 'ViewInteractions' + | 'ViewMessages' + | 'ViewNews' + | 'ViewOrders' + | 'ViewProfile' + | 'ViewQuote' + | 'ViewResearch'; + +/** + * @see https://fdc3.finos.org/docs/intents/spec + */ +export type Intent = StandardIntent | (string & {}); From e5449d74de93d50e931eea7177f0573793435b9f Mon Sep 17 00:00:00 2001 From: Andrei Floricel Date: Fri, 16 Feb 2024 19:02:33 +0200 Subject: [PATCH 56/87] Add various utility functions Signed-off-by: Andrei Floricel --- .prettierignore | 3 ++ package-lock.json | 4 +- src/api/Methods.ts | 28 ++++++++++++ src/intents/Intents.ts | 9 ++++ src/intents/IntentsConfiguration.ts | 66 +++++++++++++++++++++++++++++ test/Methods.test.ts | 56 ++++++++++++++++++++++++ 6 files changed, 164 insertions(+), 2 deletions(-) create mode 100644 src/intents/IntentsConfiguration.ts diff --git a/.prettierignore b/.prettierignore index cd3688288..9268d64db 100644 --- a/.prettierignore +++ b/.prettierignore @@ -9,3 +9,6 @@ website dist src/app-directory/*/target + +# temporary, until Prettier is upgraded to at least v2.8, which supports the TS 'satisfies' syntax +src/**/IntentsConfiguration.ts diff --git a/package-lock.json b/package-lock.json index 02aa9843a..eb8c68a2c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@finos/fdc3", - "version": "2.1.0-beta.4", + "version": "2.1.0-beta.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@finos/fdc3", - "version": "2.1.0-beta.4", + "version": "2.1.0-beta.6", "license": "Apache-2.0", "devDependencies": { "husky": "^4.3.0", diff --git a/src/api/Methods.ts b/src/api/Methods.ts index b82798ef6..77cc4a65c 100644 --- a/src/api/Methods.ts +++ b/src/api/Methods.ts @@ -15,7 +15,11 @@ import { AppMetadata, PrivateChannel, Intent, + StandardContextType, + StandardIntent, + ContextTypeFor, } from '..'; +import { IntentsConfiguration, StandardContextsSet, StandardIntentsSet } from '../intents/IntentsConfiguration'; const DEFAULT_TIMEOUT = 5000; @@ -179,6 +183,30 @@ export function findInstances(app: AppIdentifier): Promise { return rejectIfNoGlobal(() => window.fdc3.findInstances(app)); } +/** + * Check if the given context is a standard context type. + * @param contextType + */ +export function isStandardContextType(contextType: string): contextType is StandardContextType { + return StandardContextsSet.has(contextType as StandardContextType); +} + +/** + * Check if the given intent is a standard intent. + * @param intent + */ +export function isStandardIntent(intent: string): intent is StandardIntent { + return StandardIntentsSet.has(intent as StandardIntent); +} + +/** + * Get the possible context types for a given intent. + * @param intent + */ +export function getPossibleContextsForIntent(intent: I): ContextTypeFor[] { + return IntentsConfiguration[intent] ?? []; +} + /** * Compare numeric semver version number strings (in the form `1.2.3`). * diff --git a/src/intents/Intents.ts b/src/intents/Intents.ts index e1dd2da02..9335c813b 100644 --- a/src/intents/Intents.ts +++ b/src/intents/Intents.ts @@ -3,6 +3,8 @@ * Copyright FINOS FDC3 contributors - see NOTICE file */ +import { IntentsConfiguration } from './IntentsConfiguration'; + /** * @see https://fdc3.finos.org/docs/intents/spec#standard-intents */ @@ -30,3 +32,10 @@ export type StandardIntent = * @see https://fdc3.finos.org/docs/intents/spec */ export type Intent = StandardIntent | (string & {}); + +/** + * Typed possible context for a given intent + * + * @example `ContextTypeFor<'StartCall'>` is equivalent to `'fdc3.contact' | 'fdc3.contactList' | 'fdc3.nothing'` + */ +export type ContextTypeFor = typeof IntentsConfiguration[I][number]; diff --git a/src/intents/IntentsConfiguration.ts b/src/intents/IntentsConfiguration.ts new file mode 100644 index 000000000..06beabf76 --- /dev/null +++ b/src/intents/IntentsConfiguration.ts @@ -0,0 +1,66 @@ +import { StandardIntent } from './Intents'; +import { StandardContextType } from '../context/ContextType'; + +export const IntentsConfiguration = { + CreateInteraction: ['fdc3.contactList', 'fdc3.interaction', 'fdc3.nothing'], + StartCall: ['fdc3.contact', 'fdc3.contactList', 'fdc3.nothing'], + StartChat: ['fdc3.contact', 'fdc3.contactList', 'fdc3.chat.initSettings', 'fdc3.nothing'], + StartEmail: ['fdc3.email', 'fdc3.nothing'], + SendChatMessage: ['fdc3.chat.message', 'fdc3.nothing'], + ViewAnalysis: ['fdc3.instrument', 'fdc3.organization', 'fdc3.portfolio', 'fdc3.nothing'], + ViewChat: ['fdc3.chat.room', 'fdc3.contact', 'fdc3.contactList', 'fdc3.nothing'], + ViewChart: [ + 'fdc3.chart', + 'fdc3.instrument', + 'fdc3.instrumentList', + 'fdc3.portfolio', + 'fdc3.position', + 'fdc3.nothing', + ], + ViewContact: ['fdc3.contact', 'fdc3.nothing'], + ViewHoldings: ['fdc3.instrument', 'fdc3.instrumentList', 'fdc3.organization', 'fdc3.nothing'], + ViewInstrument: ['fdc3.instrument', 'fdc3.nothing'], + ViewInteractions: ['fdc3.contact', 'fdc3.instrument', 'fdc3.organization', 'fdc3.nothing'], + ViewMessages: ['fdc3.chat.searchCriteria', 'fdc3.nothing'], + ViewNews: [ + 'fdc3.country', + 'fdc3.instrument', + 'fdc3.instrumentList', + 'fdc3.organization', + 'fdc3.portfolio', + 'fdc3.nothing', + ], + ViewOrders: ['fdc3.contact', 'fdc3.instrument', 'fdc3.organization', 'fdc3.nothing'], + ViewProfile: ['fdc3.contact', 'fdc3.organization', 'fdc3.nothing'], + ViewQuote: ['fdc3.instrument', 'fdc3.nothing'], + ViewResearch: ['fdc3.contact', 'fdc3.instrument', 'fdc3.organization', 'fdc3.nothing'], +} satisfies Record; + +const STANDARD_CONTEXT_TYPES: Readonly = [ + 'fdc3.action', + 'fdc3.chart', + 'fdc3.chat.initSettings', + 'fdc3.chat.message', + 'fdc3.chat.room', + 'fdc3.chat.searchCriteria', + 'fdc3.contact', + 'fdc3.contactList', + 'fdc3.country', + 'fdc3.currency', + 'fdc3.email', + 'fdc3.instrument', + 'fdc3.instrumentList', + 'fdc3.interaction', + 'fdc3.message', + 'fdc3.organization', + 'fdc3.portfolio', + 'fdc3.position', + 'fdc3.nothing', + 'fdc3.timerange', + 'fdc3.transactionResult', + 'fdc3.valuation', +] as const; + +// used internally to check if a given intent/context is a standard one +export const StandardIntentsSet = new Set(Object.keys(IntentsConfiguration) as StandardIntent[]); +export const StandardContextsSet = new Set(STANDARD_CONTEXT_TYPES); diff --git a/test/Methods.test.ts b/test/Methods.test.ts index ca9ab2b82..14c036cc1 100644 --- a/test/Methods.test.ts +++ b/test/Methods.test.ts @@ -25,6 +25,8 @@ import { versionIsAtLeast, createPrivateChannel, findInstances, + isStandardContextType, + isStandardIntent, } from '../src'; const UnavailableError = new Error('FDC3 DesktopAgent not available at `window.fdc3`.'); @@ -443,4 +445,58 @@ describe('test version comparison functions', () => { expect(versionIsAtLeast(metaOneTwoOne, '1.2.1')).toBe(true); expect(versionIsAtLeast(metaOneTwoOne, '2.0')).toBe(false); }); + + test('isStandardContextType should return TRUE for standard context types', () => { + expect(isStandardContextType('fdc3.action')).toBe(true); + expect(isStandardContextType('fdc3.chart')).toBe(true); + expect(isStandardContextType('fdc3.chat.initSettings')).toBe(true); + expect(isStandardContextType('fdc3.chat.message')).toBe(true); + expect(isStandardContextType('fdc3.chat.room')).toBe(true); + expect(isStandardContextType('fdc3.chat.searchCriteria')).toBe(true); + expect(isStandardContextType('fdc3.contact')).toBe(true); + expect(isStandardContextType('fdc3.contactList')).toBe(true); + expect(isStandardContextType('fdc3.country')).toBe(true); + expect(isStandardContextType('fdc3.currency')).toBe(true); + expect(isStandardContextType('fdc3.email')).toBe(true); + expect(isStandardContextType('fdc3.instrument')).toBe(true); + expect(isStandardContextType('fdc3.instrumentList')).toBe(true); + expect(isStandardContextType('fdc3.interaction')).toBe(true); + expect(isStandardContextType('fdc3.message')).toBe(true); + expect(isStandardContextType('fdc3.organization')).toBe(true); + expect(isStandardContextType('fdc3.portfolio')).toBe(true); + expect(isStandardContextType('fdc3.position')).toBe(true); + expect(isStandardContextType('fdc3.nothing')).toBe(true); + expect(isStandardContextType('fdc3.timerange')).toBe(true); + expect(isStandardContextType('fdc3.transactionResult')).toBe(true); + expect(isStandardContextType('fdc3.valuation')).toBe(true); + }); + + test('isStandardContextType should return FALSE for custom context types', () => { + expect(isStandardContextType('myApp.customContext')).toBe(false); + }); + + test('isStandardIntent should return TRUE for standard intents', () => { + expect(isStandardIntent('CreateInteraction')).toBe(true); + expect(isStandardIntent('SendChatMessage')).toBe(true); + expect(isStandardIntent('StartCall')).toBe(true); + expect(isStandardIntent('StartChat')).toBe(true); + expect(isStandardIntent('StartEmail')).toBe(true); + expect(isStandardIntent('ViewAnalysis')).toBe(true); + expect(isStandardIntent('ViewChat')).toBe(true); + expect(isStandardIntent('ViewChart')).toBe(true); + expect(isStandardIntent('ViewContact')).toBe(true); + expect(isStandardIntent('ViewHoldings')).toBe(true); + expect(isStandardIntent('ViewInstrument')).toBe(true); + expect(isStandardIntent('ViewInteractions')).toBe(true); + expect(isStandardIntent('ViewMessages')).toBe(true); + expect(isStandardIntent('ViewNews')).toBe(true); + expect(isStandardIntent('ViewOrders')).toBe(true); + expect(isStandardIntent('ViewProfile')).toBe(true); + expect(isStandardIntent('ViewQuote')).toBe(true); + expect(isStandardIntent('ViewResearch')).toBe(true); + }); + + test('isStandardIntent should return FALSE for custom intents', () => { + expect(isStandardIntent('myApp.CustomIntent')).toBe(false); + }); }); From 265eed8dbddc5bfc3b9c90e1b30b6a63fde81144 Mon Sep 17 00:00:00 2001 From: Andrei Floricel Date: Fri, 16 Feb 2024 19:38:27 +0200 Subject: [PATCH 57/87] Remove TS 'satisfies' syntax to fix build Signed-off-by: Andrei Floricel --- .prettierignore | 3 --- src/bridging/BridgingTypes.ts | 14 ++++++-------- src/intents/IntentsConfiguration.ts | 5 ++++- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/.prettierignore b/.prettierignore index 9268d64db..cd3688288 100644 --- a/.prettierignore +++ b/.prettierignore @@ -9,6 +9,3 @@ website dist src/app-directory/*/target - -# temporary, until Prettier is upgraded to at least v2.8, which supports the TS 'satisfies' syntax -src/**/IntentsConfiguration.ts diff --git a/src/bridging/BridgingTypes.ts b/src/bridging/BridgingTypes.ts index 676f1195e..68f27737f 100644 --- a/src/bridging/BridgingTypes.ts +++ b/src/bridging/BridgingTypes.ts @@ -75,8 +75,6 @@ // These functions will throw an error if the JSON doesn't // match the expected interface, even if the JSON is valid. -import { Intent } from '../intents/Intents'; - /** * Metadata relating to the FDC3 Desktop Agent implementation and its provider. */ @@ -1772,7 +1770,7 @@ export interface FindIntentAgentRequestMeta { */ export interface FindIntentAgentRequestPayload { context?: ContextElement; - intent: Intent; + intent: string; resultType?: string; } @@ -1846,7 +1844,7 @@ export interface IntentMetadata { /** * The unique name of the intent that can be invoked by the raiseIntent call */ - name: Intent; + name: string; } /** @@ -1931,7 +1929,7 @@ export interface FindIntentBridgeRequestMeta { */ export interface FindIntentBridgeRequestPayload { context?: ContextElement; - intent: Intent; + intent: string; resultType?: string; } @@ -3699,7 +3697,7 @@ export interface RaiseIntentAgentRequestMeta { export interface RaiseIntentAgentRequestPayload { app: AppDestinationIdentifier; context: ContextElement; - intent: Intent; + intent: string; } /** @@ -3776,7 +3774,7 @@ export interface IntentResolution { * The intent that was raised. May be used to determine which intent the user * chose in response to `fdc3.raiseIntentForContext()`. */ - intent: Intent; + intent: string; /** * Identifier for the app instance that was selected (or started) to resolve the intent. * `source.instanceId` MUST be set, indicating the specific app instance that @@ -3872,7 +3870,7 @@ export interface RaiseIntentBridgeRequestMeta { export interface RaiseIntentBridgeRequestPayload { app: AppDestinationIdentifier; context: ContextElement; - intent: Intent; + intent: string; } /** diff --git a/src/intents/IntentsConfiguration.ts b/src/intents/IntentsConfiguration.ts index 06beabf76..deec04be6 100644 --- a/src/intents/IntentsConfiguration.ts +++ b/src/intents/IntentsConfiguration.ts @@ -34,7 +34,10 @@ export const IntentsConfiguration = { ViewProfile: ['fdc3.contact', 'fdc3.organization', 'fdc3.nothing'], ViewQuote: ['fdc3.instrument', 'fdc3.nothing'], ViewResearch: ['fdc3.contact', 'fdc3.instrument', 'fdc3.organization', 'fdc3.nothing'], -} satisfies Record; +}; +// TODO - TSDX's Prettier version does not support 'satisfies' construct +// that's unfortunate because this syntax ensures that the IntentsConfiguration Map is always kep in sync with the StandardIntent type +// satisfies Record; const STANDARD_CONTEXT_TYPES: Readonly = [ 'fdc3.action', From 87b859ee3dae81fff00e56108f8c7f4b2b066e3d Mon Sep 17 00:00:00 2001 From: Andrei Floricel Date: Mon, 19 Feb 2024 11:58:56 +0200 Subject: [PATCH 58/87] Improve typing Signed-off-by: Andrei Floricel --- src/api/DesktopAgent.ts | 3 ++- src/api/Methods.ts | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/api/DesktopAgent.ts b/src/api/DesktopAgent.ts index 3e72739b0..a6a5328cb 100644 --- a/src/api/DesktopAgent.ts +++ b/src/api/DesktopAgent.ts @@ -14,6 +14,7 @@ import { PrivateChannel } from './PrivateChannel'; import { AppIdentifier } from './AppIdentifier'; import { AppMetadata } from './AppMetadata'; import { Intent } from '../intents/Intents'; +import { ContextType } from '../context/ContextType'; /** * A Desktop Agent is a desktop component (or aggregate of components) that serves as a @@ -372,7 +373,7 @@ export interface DesktopAgent { * }); * ``` */ - addContextListener(contextType: string | null, handler: ContextHandler): Promise; + addContextListener(contextType: ContextType | null, handler: ContextHandler): Promise; /** * Retrieves a list of the User channels available for the app to join. diff --git a/src/api/Methods.ts b/src/api/Methods.ts index 77cc4a65c..251560caf 100644 --- a/src/api/Methods.ts +++ b/src/api/Methods.ts @@ -18,6 +18,7 @@ import { StandardContextType, StandardIntent, ContextTypeFor, + ContextType, } from '..'; import { IntentsConfiguration, StandardContextsSet, StandardIntentsSet } from '../intents/IntentsConfiguration'; @@ -112,7 +113,7 @@ export function addIntentListener(intent: Intent, handler: IntentHandler): Promi } export function addContextListener( - contextTypeOrHandler: string | null | ContextHandler, + contextTypeOrHandler: ContextType | null | ContextHandler, handler?: ContextHandler ): Promise { //Handle (deprecated) function signature that allowed contextType argument to be omitted @@ -187,7 +188,7 @@ export function findInstances(app: AppIdentifier): Promise { * Check if the given context is a standard context type. * @param contextType */ -export function isStandardContextType(contextType: string): contextType is StandardContextType { +export function isStandardContextType(contextType: ContextType): contextType is StandardContextType { return StandardContextsSet.has(contextType as StandardContextType); } @@ -195,7 +196,7 @@ export function isStandardContextType(contextType: string): contextType is Stand * Check if the given intent is a standard intent. * @param intent */ -export function isStandardIntent(intent: string): intent is StandardIntent { +export function isStandardIntent(intent: Intent): intent is StandardIntent { return StandardIntentsSet.has(intent as StandardIntent); } From 972ff91bfd97ca8d29d3d1f253349e29729853a5 Mon Sep 17 00:00:00 2001 From: Andrei Floricel Date: Wed, 21 Feb 2024 16:01:26 +0200 Subject: [PATCH 59/87] Add deprecated types to maintain backward compatibility Signed-off-by: Andrei Floricel --- src/context/ContextType.ts | 25 +++++++++++++++++++++++++ src/intents/Intents.ts | 24 ++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/src/context/ContextType.ts b/src/context/ContextType.ts index 1069ba68a..be3cf5016 100644 --- a/src/context/ContextType.ts +++ b/src/context/ContextType.ts @@ -44,3 +44,28 @@ export type ExperimentalContextType = * @see https://fdc3.finos.org/docs/context/spec */ export type ContextType = StandardContextType | ExperimentalContextType | (string & {}); + +/** + * @deprecated Use {@link StandardContextType} instead + */ +export enum ContextTypes { + Chart = 'fdc3.chart', + ChatInitSettings = 'fdc3.chat.initSettings', + ChatRoom = 'fdc3.chat.room', + Contact = 'fdc3.contact', + ContactList = 'fdc3.contactList', + Country = 'fdc3.country', + Currency = 'fdc3.currency', + Email = 'fdc3.email', + Instrument = 'fdc3.instrument', + InstrumentList = 'fdc3.instrumentList', + Interaction = 'fdc3.interaction', + Nothing = 'fdc3.nothing', + Organization = 'fdc3.organization', + Portfolio = 'fdc3.portfolio', + Position = 'fdc3.position', + ChatSearchCriteria = 'fdc3.chat.searchCriteria', + TimeRange = 'fdc3.timerange', + TransactionResult = 'fdc3.transactionResult', + Valuation = 'fdc3.valuation', +} diff --git a/src/intents/Intents.ts b/src/intents/Intents.ts index 9335c813b..b0f1f7fd1 100644 --- a/src/intents/Intents.ts +++ b/src/intents/Intents.ts @@ -39,3 +39,27 @@ export type Intent = StandardIntent | (string & {}); * @example `ContextTypeFor<'StartCall'>` is equivalent to `'fdc3.contact' | 'fdc3.contactList' | 'fdc3.nothing'` */ export type ContextTypeFor = typeof IntentsConfiguration[I][number]; + +/** + * @deprecated Use {@link StandardIntent} instead + */ +export enum Intents { + CreateInteraction = 'CreateInteraction', + SendChatMessage = 'SendChatMessage', + StartCall = 'StartCall', + StartChat = 'StartChat', + StartEmail = 'StartEmail', + ViewAnalysis = 'ViewAnalysis', + ViewChat = 'ViewChat', + ViewChart = 'ViewChart', + ViewContact = 'ViewContact', + ViewHoldings = 'ViewHoldings', + ViewInstrument = 'ViewInstrument', + ViewInteractions = 'ViewInteractions', + ViewMessages = 'ViewMessages', + ViewNews = 'ViewNews', + ViewOrders = 'ViewOrders', + ViewProfile = 'ViewProfile', + ViewQuote = 'ViewQuote', + ViewResearch = 'ViewResearch', +} From d8546688a1117379369039f25a92dad2102c6f0a Mon Sep 17 00:00:00 2001 From: Juan Estrella Date: Wed, 21 Feb 2024 20:05:38 +0100 Subject: [PATCH 60/87] replace master with main --- .github/ISSUE_TEMPLATE/discussion-group.md | 8 ++++---- .github/ISSUE_TEMPLATE/general-meeting.md | 8 ++++---- .github/ISSUE_TEMPLATE/standard-wg-meeting.md | 8 ++++---- .github/workflows/meetings.yml | 8 ++++---- .github/workflows/package.yml | 6 +++--- CONTRIBUTING.md | 8 ++++---- GOVERNANCE.md | 4 ++-- README.md | 4 ++-- docs/api/spec.md | 2 +- docs/fdc3-charter.md | 2 +- docs/fdc3-compliance.md | 4 ++-- docs/fdc3-intro.md | 4 ++-- docs/fdc3-standard.md | 2 +- docs/guides/submit-new-intent.md | 16 ++++++++-------- docs/use-cases/004-client-side-fx-trader.md | 4 ++-- src/app-directory/specification/appd.schema.json | 4 ++-- website/data/community.json | 6 +++--- website/data/get-involved/3.mdx | 2 +- website/data/get-involved/4.mdx | 2 +- website/src/pages/community.js | 2 +- website/src/pages/users.js | 2 +- website/static/schemas/1.0/app-directory.html | 4 ++-- website/static/schemas/1.1/app-directory.yaml | 4 ++-- website/static/schemas/1.2/app-directory.yaml | 4 ++-- website/static/schemas/2.0/app-directory.yaml | 4 ++-- website/static/schemas/2.1/appd.schema.json | 4 ++-- website/static/schemas/next/appd.schema.json | 4 ++-- .../versioned_docs/version-1.0/api/api-spec.md | 4 ++-- website/versioned_docs/version-1.0/api/spec.md | 2 +- .../version-1.0/guides/submit-new-intent.md | 16 ++++++++-------- .../use-cases/004-client-side-fx-trader.md | 4 ++-- .../versioned_docs/version-1.1/api/api-spec.md | 4 ++-- website/versioned_docs/version-1.1/api/spec.md | 4 ++-- .../versioned_docs/version-1.1/fdc3-standard.md | 2 +- .../use-cases/004-client-side-fx-trader.md | 4 ++-- .../versioned_docs/version-1.2/api/api-spec.md | 4 ++-- website/versioned_docs/version-1.2/api/spec.md | 4 ++-- .../versioned_docs/version-1.2/fdc3-standard.md | 2 +- .../use-cases/004-client-side-fx-trader.md | 4 ++-- website/versioned_docs/version-2.0/api/spec.md | 2 +- .../versioned_docs/version-2.0/fdc3-charter.md | 2 +- .../version-2.0/fdc3-compliance.md | 4 ++-- website/versioned_docs/version-2.0/fdc3-intro.md | 4 ++-- .../versioned_docs/version-2.0/fdc3-standard.md | 2 +- .../version-2.0/guides/submit-new-intent.md | 16 ++++++++-------- .../use-cases/004-client-side-fx-trader.md | 4 ++-- website/versioned_docs/version-2.1/api/spec.md | 2 +- .../versioned_docs/version-2.1/fdc3-charter.md | 2 +- .../version-2.1/fdc3-compliance.md | 4 ++-- website/versioned_docs/version-2.1/fdc3-intro.md | 4 ++-- .../versioned_docs/version-2.1/fdc3-standard.md | 2 +- .../version-2.1/guides/submit-new-intent.md | 16 ++++++++-------- .../use-cases/004-client-side-fx-trader.md | 4 ++-- 53 files changed, 126 insertions(+), 126 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/discussion-group.md b/.github/ISSUE_TEMPLATE/discussion-group.md index 50be5c9fa..dd3e09a34 100644 --- a/.github/ISSUE_TEMPLATE/discussion-group.md +++ b/.github/ISSUE_TEMPLATE/discussion-group.md @@ -51,14 +51,14 @@ Thursday DD MMM yyyy - 10am (US eastern timezone EDT/EST) / 3pm (London, GMT/BST Please click the following links at the start of the meeting if you have not done so previously. - - [View the CSL](https://raw.githubusercontent.com/finos/FDC3/master/LICENSE.md) - - [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/master/GOVERNANCE.md) - - [Click here to start a PR](https://github.com/finos/FDC3/edit/master/NOTICES.md). + - [View the CSL](https://raw.githubusercontent.com/finos/FDC3/main/LICENSE.md) + - [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/main/GOVERNANCE.md) + - [Click here to start a PR](https://github.com/finos/FDC3/edit/main/NOTICES.md). - Edit the page to add your details. - Hit the save button. - Click "Create Pull Request". - Click "Accept" on the EasyCLA dialog in the PR's discussion section. - - [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FLICENSE%20.%20Thank%20you!") + - [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FLICENSE%20.%20Thank%20you!") ## Tracking Attendance diff --git a/.github/ISSUE_TEMPLATE/general-meeting.md b/.github/ISSUE_TEMPLATE/general-meeting.md index 62e57c7d1..3e34c0926 100644 --- a/.github/ISSUE_TEMPLATE/general-meeting.md +++ b/.github/ISSUE_TEMPLATE/general-meeting.md @@ -42,14 +42,14 @@ DD MMM yyyy - 10am EST / 3pm GMT Please click the following links at the start of the meeting if you have not done so previously. -- [View the CSL](https://raw.githubusercontent.com/finos/FDC3/master/LICENSE.md) -- [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/master/GOVERNANCE.md) -- [Click here to start a PR](https://github.com/finos/FDC3/edit/master/NOTICES.md). +- [View the CSL](https://raw.githubusercontent.com/finos/FDC3/main/LICENSE.md) +- [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/main/GOVERNANCE.md) +- [Click here to start a PR](https://github.com/finos/FDC3/edit/main/NOTICES.md). - Edit the page to add your details. - Hit the save button. - Click "Create Pull Request". - Click "Accept" on the EasyCLA dialog in the PR's discussion section. -- [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FLICENSE%20.%20Thank%20you!") +- [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FLICENSE%20.%20Thank%20you!") ## Tracking Attendance diff --git a/.github/ISSUE_TEMPLATE/standard-wg-meeting.md b/.github/ISSUE_TEMPLATE/standard-wg-meeting.md index e1714d165..bf432df13 100644 --- a/.github/ISSUE_TEMPLATE/standard-wg-meeting.md +++ b/.github/ISSUE_TEMPLATE/standard-wg-meeting.md @@ -43,14 +43,14 @@ Thursday DD MMM yyyy - 10am (US eastern timezone EDT/EST) / 3pm (London, GMT/BST Please click the following links at the start of the meeting if you have not done so previously. - - [View the CSL](https://raw.githubusercontent.com/finos/FDC3/master/LICENSE) - - [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/master/GOVERNANCE.md) - - [Click here to start a PR](https://github.com/finos/FDC3/edit/master/NOTICES.md). + - [View the CSL](https://raw.githubusercontent.com/finos/FDC3/main/LICENSE) + - [View the GOVERNANCE of the Project](https://github.com/finos/FDC3/blob/main/GOVERNANCE.md) + - [Click here to start a PR](https://github.com/finos/FDC3/edit/main/NOTICES.md). - Edit the page to add your details. - Hit the save button. - Click "Create Pull Request". - Click "Accept" on the EasyCLA dialog in the PR's discussion section. - - [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FLICENSE%20.%20Thank%20you!") + - [Click here to send email to become a voting participant on the FDC3 Project](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FLICENSE%20.%20Thank%20you!") ## Tracking Attendance diff --git a/.github/workflows/meetings.yml b/.github/workflows/meetings.yml index 35bb73861..b7c90d1a5 100644 --- a/.github/workflows/meetings.yml +++ b/.github/workflows/meetings.yml @@ -39,7 +39,7 @@ env: GIT_CSV_HOST: "gitlab.com" GIT_CSV_ORG: "finos-admin" GIT_CSV_REPO: sources - GIT_CSV_BRANCH: master + GIT_CSV_BRANCH: main REPO_NAME: ${{ github.event.repository.name }} ORG_NAME: ${{ github.event.repository.owner.login }} MEETING_DATE: ${{ github.event.issue.closed_at }} @@ -61,13 +61,13 @@ jobs: - name: Checking out FINOS metadata run: git clone https://finos-admin:$FINOS_TOKEN@github.com/finos-admin/metadata.git >/dev/null - name: Downloading github-finos-meetings.csv - run: curl -s https://raw.githubusercontent.com/finos/open-developer-platform/master/scripts/checkout-meeting-attendance.sh | bash + run: curl -s https://raw.githubusercontent.com/finos/open-developer-platform/main/scripts/checkout-meeting-attendance.sh | bash - name: Checkout metadata dependencies run: cd metadata-tool ; lein deps - name: Generating a new github-finos-meetings.csv - run: curl -s https://raw.githubusercontent.com/finos/open-developer-platform/master/scripts/generate-meeting-attendance.sh | bash + run: curl -s https://raw.githubusercontent.com/finos/open-developer-platform/main/scripts/generate-meeting-attendance.sh | bash - name: Pushing github-finos-meetings.csv changes to Git - run: curl -s https://raw.githubusercontent.com/finos/open-developer-platform/master/scripts/submit-meeting-attendance.sh | bash + run: curl -s https://raw.githubusercontent.com/finos/open-developer-platform/main/scripts/submit-meeting-attendance.sh | bash - name: Check unknowns if: github.event.action == 'closed' || (github.event.action == 'labeled' && github.event.label.name == 'indexed') run: | diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 60a4f4dc6..539301a42 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -1,13 +1,13 @@ name: npm-build # Only trigger on: -# - master branch +# - main branch # - PR or Pull Request event types # - Exclide Docusaurus files: this file, docs/** and website/** on: push: branches: - - master + - main - release/** paths-ignore: - '.github/workflows/docusaurus.yml' @@ -15,7 +15,7 @@ on: - 'website/**' pull_request: branches: - - master + - main - release/* paths-ignore: - '.github/workflows/docusaurus.yml' diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7bc4d0760..7a4430038 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing to FDC3 -This document provides the contribution policy for the FDC3 Standard (the [Working Group](GOVERNANCE.md)) and is based on the [Community Specification Contribution Policy 1.0](https://github.com/finos/standards-project-blueprint/blob/master/governance-documents/6._Contributing.md). +This document provides the contribution policy for the FDC3 Standard (the [Working Group](GOVERNANCE.md)) and is based on the [Community Specification Contribution Policy 1.0](https://github.com/finos/standards-project-blueprint/blob/main/governance-documents/6._Contributing.md). _NOTE:_ Commits and pull requests to FINOS repositories will only be accepted from those participants with an active, executed Individual Contributor License Agreement (ICLA) with FINOS, _OR_ who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the [Linux Foundation `EasyCLA` tool](https://easycla.lfx.linuxfoundation.org/#/). Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA. @@ -30,7 +30,7 @@ The issue lifecycle is mainly driven by the Maintainer. All issue types follow * Have you [searched for duplicates](https://github.com/finos/FDC3/issues?utf8=%E2%9C%93&q=)? A simple search for exception error messages or a summary of the unexpected behaviour should suffice. * Are you using the latest version of the Standard? - * Changes that have been merged but not yet released can be found in the [next](https://fdc3.finos.org/docs/next/fdc3-standard) version of the website and details found in the [CHANGELOG](https://github.com/finos/FDC3/blob/master/CHANGELOG.md) + * Changes that have been merged but not yet released can be found in the [next](https://fdc3.finos.org/docs/next/fdc3-standard) version of the website and details found in the [CHANGELOG](https://github.com/finos/FDC3/blob/main/CHANGELOG.md) * Are you sure this is a bug or missing capability? **2.1. Issue Creation.** @@ -110,7 +110,7 @@ To make review of PRs easier, please: * Ensure all new source files include a header comment block containing the [Apache License v2.0 and your copyright information](http://www.apache.org/licenses/LICENSE-2.0#apply). - * If necessary (e.g. due to 3rd party dependency licensing requirements), update the [NOTICES.md file](https://github.com/finos/FDC3/blob/master/NOTICES.md) with any new attribution or other notices + * If necessary (e.g. due to 3rd party dependency licensing requirements), update the [NOTICES.md file](https://github.com/finos/FDC3/blob/main/NOTICES.md) with any new attribution or other notices **4.2. Triage** @@ -143,6 +143,6 @@ To make review of PRs easier, please: - Pull requests may be closed by a Maintainer if the decision is made that it is not going to be merged. ## 5. Adoption of Contributions. -Contributions merged into the master branch of the FDC3 repository will form part of the next pre-draft of the FDC3 Standard (as defined by the [FDC3 Governance document](./GOVERNANCE.md)), which must be approved by the Standard Working Group voting participants before it is accepted as a draft and subsequently released as the next version of the Standard. +Contributions merged into the main branch of the FDC3 repository will form part of the next pre-draft of the FDC3 Standard (as defined by the [FDC3 Governance document](./GOVERNANCE.md)), which must be approved by the Standard Working Group voting participants before it is accepted as a draft and subsequently released as the next version of the Standard. diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 1ddb2fa51..12f39023d 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -8,14 +8,14 @@ The Working Group includes the following roles: ### 1.1. Participants -“Participants” are those that have made Contributions to the Working Group subject to the [Community Specification Contribution Policy 1.0](https://github.com/finos/standards-project-blueprint/blob/master/governance-documents/6._Contributing.md). The [FDC3 Standard Working Group](https://github.com/finos/FDC3/issues?q=label%3A%22Standard+WG+Meeting%22) has the specific purpose of defining and releasing subsequent updates to the Standard. In practice, that means people that attend and contribute to meetings, raise issues, pull requests (to submit patches to the Standard) and reviews. +“Participants” are those that have made Contributions to the Working Group subject to the [Community Specification Contribution Policy 1.0](https://github.com/finos/standards-project-blueprint/blob/main/governance-documents/6._Contributing.md). The [FDC3 Standard Working Group](https://github.com/finos/FDC3/issues?q=label%3A%22Standard+WG+Meeting%22) has the specific purpose of defining and releasing subsequent updates to the Standard. In practice, that means people that attend and contribute to meetings, raise issues, pull requests (to submit patches to the Standard) and reviews. #### How do you become a Participant? Becoming an FDC3 Participant is as easy as attending a meeting and/or raising issues for changes you'd like see in the Standard, commenting on issues others have raised or even asking questions (which can often result in the clarification of the Standard's documentation to help others with the same questions in future). #### Register to vote -Participants may register to vote on changes to the FDC3 Standard (see [Section 2](#2decision-making) below). To do so use this link: [fdc3-participants+subscribe@finos.org](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FLICENSE%20.%20Thank%20you!) to send a templated email email to join the enrolled voting participants group. +Participants may register to vote on changes to the FDC3 Standard (see [Section 2](#2decision-making) below). To do so use this link: [fdc3-participants+subscribe@finos.org](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FLICENSE%20.%20Thank%20you!) to send a templated email email to join the enrolled voting participants group. Upon enrollment as an [FDC3 voting participant](https://github.com/orgs/finos/teams/fdc3-participants), you will be invited to join the [FINOS GitHub organization](https://github.com/orgs/finos/people) and the [fdc3-participants](https://github.com/orgs/finos/teams/fdc3-participants) GitHub team. diff --git a/README.md b/README.md index 4b9a07993..c394526b8 100755 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Latest Standard](https://img.shields.io/badge/release-2.0-blue)](https://github.com/finos/fdc3/releases/v2.0) [![npm](https://img.shields.io/npm/v/@finos/fdc3)](https://www.npmjs.com/package/@finos/fdc3) -[![FINOS - Released](https://cdn.jsdelivr.net/gh/finos/contrib-toolbox@master/images/badge-released.svg)](https://finosfoundation.atlassian.net/wiki/display/FINOS/Released) +[![FINOS - Released](https://cdn.jsdelivr.net/gh/finos/contrib-toolbox@main/images/badge-released.svg)](https://finosfoundation.atlassian.net/wiki/display/FINOS/Released) [![GitHub](https://img.shields.io/github/license/finos/fdc3)](https://opensource.org/licenses/Apache-2.0) [![Stack Overflow](https://img.shields.io/badge/stackoverflow-fdc3-orange.svg)](https://stackoverflow.com/questions/tagged/fdc3) [![npm-build](https://github.com/finos/FDC3/workflows/npm-build/badge.svg)](https://github.com/finos/FDC3/actions?query=workflow%3Anpm-build) @@ -131,7 +131,7 @@ Please see the [Contributing](CONTRIBUTING.md) guide for details on how to contr _NOTE:_ - Issues that change the Standard usually need discussion. You can post comments directly on the issue or can ask for it to be added to a Standards Working Group meeting agenda by emailing [fdc3@finos.org](mailto:fdc3@finos.org), sending a message to the [#fdc3 channel on the FINOS slack](https://finos-lf.slack.com/messages/fdc3/) or tag the FDC3 maintainers (`@finos/fdc3-maintainers`) in your issue. -- Contributions merged into the master branch of the FDC3 repository will form part of the next pre-draft of the FDC3 Standard (as defined by the [FDC3 Governance document](./GOVERNANCE.md)), which must be approved by a Standard Working Group vote before it is accepted as a draft and subsequently released as the next version of the Standard. +- Contributions merged into the main branch of the FDC3 repository will form part of the next pre-draft of the FDC3 Standard (as defined by the [FDC3 Governance document](./GOVERNANCE.md)), which must be approved by a Standard Working Group vote before it is accepted as a draft and subsequently released as the next version of the Standard. ### Why should you get involved in FDC3? diff --git a/docs/api/spec.md b/docs/api/spec.md index b113e8ae1..a5b4332a5 100644 --- a/docs/api/spec.md +++ b/docs/api/spec.md @@ -6,7 +6,7 @@ title: API Overview (next) The role of FDC3 API is to establish a baseline interface for interoperability between applications. Because FDC3 is largely an agreement between existing platforms and applications, standards should be optimized for ease of adoption rather than functional completeness. Functionality absent from a FDC3 specification is in no way a commentary on its importance. -The following sections examine the API's use-cases and core concepts. The APIs a fully defined in both subsequent pages of this Part and a full set of TypeScript definitions in the [src](https://github.com/finos/FDC3/tree/master/src/api) directory of the [FDC3 GitHub repository](https://github.com/finos/FDC3/). +The following sections examine the API's use-cases and core concepts. The APIs a fully defined in both subsequent pages of this Part and a full set of TypeScript definitions in the [src](https://github.com/finos/FDC3/tree/main/src/api) directory of the [FDC3 GitHub repository](https://github.com/finos/FDC3/). ## Components diff --git a/docs/fdc3-charter.md b/docs/fdc3-charter.md index 05cba4a40..2ff5c6830 100644 --- a/docs/fdc3-charter.md +++ b/docs/fdc3-charter.md @@ -36,7 +36,7 @@ The group's activities do not include: - Versions of the FDC3 specification following 2.1 and subsequent draft specifications are licensed under the [Community Specification License 1.0](https://github.com/finos/FDC3/blob/4ce90d45ca8e0c4f8f2c5bd73f51304278783d87/LICENSE.md) -- All code in the FDC3 specification (including JSON Schema) are licensed under [Apache 2.0](https://github.com/finos/FDC3/blob/master/LICENSE) +- All code in the FDC3 specification (including JSON Schema) are licensed under [Apache 2.0](https://github.com/finos/FDC3/blob/main/LICENSE) ### Intellectual Property Claims diff --git a/docs/fdc3-compliance.md b/docs/fdc3-compliance.md index af2080f8b..64f242828 100644 --- a/docs/fdc3-compliance.md +++ b/docs/fdc3-compliance.md @@ -51,8 +51,8 @@ Over time, it is not uncommon for certain things in a standard to be marked for FDC3 adopts the following deprecation policy: -1. A feature can be deprecated by any major or minor version. Newly deprecated features will be described in the [Changelog](https://github.com/finos/FDC3/blob/master/CHANGELOG.md). -2. A feature shall only be removed by a major version. Newly removed features will be described in the [Changelog](https://github.com/finos/FDC3/blob/master/CHANGELOG.md). +1. A feature can be deprecated by any major or minor version. Newly deprecated features will be described in the [Changelog](https://github.com/finos/FDC3/blob/main/CHANGELOG.md). +2. A feature shall only be removed by a major version. Newly removed features will be described in the [Changelog](https://github.com/finos/FDC3/blob/main/CHANGELOG.md). 3. Deprecated features are clearly marked with an `@deprecated` tag and comment in both the documentation and jsDocs applied to the TypeScript sources. 4. Where possible, changes to the behavior of an existing feature should be avoided; consider deprecating it and replacing it with something with a different name/syntax. 5. Breaking change should only be made in a major version of the Standard. diff --git a/docs/fdc3-intro.md b/docs/fdc3-intro.md index 061d8059f..0f546a246 100644 --- a/docs/fdc3-intro.md +++ b/docs/fdc3-intro.md @@ -38,8 +38,8 @@ The Financial Desktop Connectivity and Collaboration Consortium (FDC3) standards FDC3 is hosted within, and governed by the policies of, the [Fintech Open Source Foundation](http://finos.org/) (FINOS). FINOS is an independent nonprofit organization focused on promoting open innovation within financial services. -- See the [FDC3 Governance document](https://github.com/finos/FDC3/blob/master/GOVERNANCE.md) for details of how FDC3 is governed. -- See the [FDC3 Contribution Guide](https://github.com/finos/FDC3/blob/master/CONTRIBUTING.md) for details of how to contribute to FDC3. +- See the [FDC3 Governance document](https://github.com/finos/FDC3/blob/main/GOVERNANCE.md) for details of how FDC3 is governed. +- See the [FDC3 Contribution Guide](https://github.com/finos/FDC3/blob/main/CONTRIBUTING.md) for details of how to contribute to FDC3. - See the [FDC3 Charter](fdc3-charter#licensing) for details of how deliverables are licensed. ## Where should I go next? diff --git a/docs/fdc3-standard.md b/docs/fdc3-standard.md index 4042abf09..5cdae4edb 100644 --- a/docs/fdc3-standard.md +++ b/docs/fdc3-standard.md @@ -24,7 +24,7 @@ The standard currently consists of five complementary parts: ## Versioning -This Standard defines FDC3 Version 2.1. The differences between this version and earlier ones can be found in the [Changelog](https://github.com/finos/FDC3/blob/master/CHANGELOG.md). +This Standard defines FDC3 Version 2.1. The differences between this version and earlier ones can be found in the [Changelog](https://github.com/finos/FDC3/blob/main/CHANGELOG.md). For more details on FDC3's versioning, deprecation and experimental features policies see the [Compliance page](./fdc3-compliance#versioning). diff --git a/docs/guides/submit-new-intent.md b/docs/guides/submit-new-intent.md index 5e9f4f39e..35d29bddc 100644 --- a/docs/guides/submit-new-intent.md +++ b/docs/guides/submit-new-intent.md @@ -6,7 +6,7 @@ title: How to Submit a New Intent PR ## Getting Started -Prepare to submit a patch as described in [How to Contribute a Patch](https://github.com/finos/FDC3/blob/master/CONTRIBUTING.md#3how-to-contribute-a-patch) in CONTRIBUTING.md. Use the issue number and issue title as the branch name, e.g. +Prepare to submit a patch as described in [How to Contribute a Patch](https://github.com/finos/FDC3/blob/main/CONTRIBUTING.md#3how-to-contribute-a-patch) in CONTRIBUTING.md. Use the issue number and issue title as the branch name, e.g. ```git checkout -b 587-intent-proposal-view-research``` @@ -45,18 +45,18 @@ Add the new intent markdown file to docs/intents/ref. Use one of the existing in Add links to your Intent File to the following: -- [src/intents/Intents.ts](https://github.com/finos/FDC3/blob/master/src/intents/Intents.ts) -- [src/intents/standard intents.json](https://github.com/finos/FDC3/blob/master/src/intents/standard%20intents.json) -- [website/sidebars.json](https://github.com/finos/FDC3/blob/master/website/sidebars.json) (look for the 'Intents' property and the 'ids' property within it) +- [src/intents/Intents.ts](https://github.com/finos/FDC3/blob/main/src/intents/Intents.ts) +- [src/intents/standard intents.json](https://github.com/finos/FDC3/blob/main/src/intents/standard%20intents.json) +- [website/sidebars.json](https://github.com/finos/FDC3/blob/main/website/sidebars.json) (look for the 'Intents' property and the 'ids' property within it) At this point your new Intent should appear on the sidebar (you may need to restart yarn to get this). Also add to: -- [docs/intents/spec.md](https://github.com/finos/FDC3/blob/master/docs/intents/spec.md) in the 'Standard Intents' section (also add the summary from your Intent page) -- Any of the Context documents in [docs/context/ref](https://github.com/finos/FDC3/blob/master/docs/context/ref) that are utilized by the Intent (e.g. for the [ViewResearch](../intents/ref/ViewResearch) intent, each of the [Contact](../context/ref/Contact), [Instrument](../context/ref/Instrument) and [Organization](../context/ref/Organization) Contexts are valid and so links were added to their Context pages) -- Any of the Intents documents in [docs/intents/ref](https://github.com/finos/FDC3/blob/master/docs/intents/ref) that are related or relevant to the new Intent (e.g. for the [ViewResearch](../intents/ref/ViewResearch) intent a link was added to the [ViewAnalysis](../intents/ref/ViewAnalysis) document) +- [docs/intents/spec.md](https://github.com/finos/FDC3/blob/main/docs/intents/spec.md) in the 'Standard Intents' section (also add the summary from your Intent page) +- Any of the Context documents in [docs/context/ref](https://github.com/finos/FDC3/blob/main/docs/context/ref) that are utilized by the Intent (e.g. for the [ViewResearch](../intents/ref/ViewResearch) intent, each of the [Contact](../context/ref/Contact), [Instrument](../context/ref/Instrument) and [Organization](../context/ref/Organization) Contexts are valid and so links were added to their Context pages) +- Any of the Intents documents in [docs/intents/ref](https://github.com/finos/FDC3/blob/main/docs/intents/ref) that are related or relevant to the new Intent (e.g. for the [ViewResearch](../intents/ref/ViewResearch) intent a link was added to the [ViewAnalysis](../intents/ref/ViewAnalysis) document) ## Finishing Off -Commit your changes and push as described in [How to Contribute a Patch](https://github.com/finos/FDC3/blob/master/CONTRIBUTING.md#3how-to-contribute-a-patch). Then submit the branch as a Pull Request (in github, go to the Branches tab and click 'New Pull Request') +Commit your changes and push as described in [How to Contribute a Patch](https://github.com/finos/FDC3/blob/main/CONTRIBUTING.md#3how-to-contribute-a-patch). Then submit the branch as a Pull Request (in github, go to the Branches tab and click 'New Pull Request') diff --git a/docs/use-cases/004-client-side-fx-trader.md b/docs/use-cases/004-client-side-fx-trader.md index e96ecda70..f7419820e 100644 --- a/docs/use-cases/004-client-side-fx-trader.md +++ b/docs/use-cases/004-client-side-fx-trader.md @@ -21,6 +21,6 @@ layout: use_case - Point-to-point RPC invocation. Current FDC3 API proposal doesn't define response message for "open" and "send" methods as they both returns `Promise`: -https://github.com/finos/FDC3/blob/master/src/api/interface.ts#L66 +https://github.com/finos/FDC3/blob/main/src/api/interface.ts#L66 -https://github.com/finos/FDC3/blob/master/src/api/interface.ts#L34 +https://github.com/finos/FDC3/blob/main/src/api/interface.ts#L34 diff --git a/src/app-directory/specification/appd.schema.json b/src/app-directory/specification/appd.schema.json index 466ded9b6..cd8987624 100644 --- a/src/app-directory/specification/appd.schema.json +++ b/src/app-directory/specification/appd.schema.json @@ -904,7 +904,7 @@ } }, "IntentV1": { - "description": "(Deprecated v1 API version) An intent definition as defined by spec https://github.com/FDC3/Intents/blob/master/src/Intent.yaml", + "description": "(Deprecated v1 API version) An intent definition as defined by spec https://github.com/FDC3/Intents/blob/main/src/Intent.yaml", "required": [ "name" ], @@ -1010,7 +1010,7 @@ }, "intents": { "type": "array", - "description": "The list of intents implemented by the application as defined by https://github.com/FDC3/Intents/blob/master/src/Intent.yaml", + "description": "The list of intents implemented by the application as defined by https://github.com/FDC3/Intents/blob/main/src/Intent.yaml", "items": { "$ref": "#/components/schemas/IntentV1" } diff --git a/website/data/community.json b/website/data/community.json index 371705b4f..543e3d2ae 100644 --- a/website/data/community.json +++ b/website/data/community.json @@ -109,7 +109,7 @@ "publisher": "FDC3 / FINOS", "image": "/toolbox/fdc3-workbench/fdc3-icon-256.png", "infoLink": "http://fdc3.finos.org/toolbox/fdc3-workbench", - "docsLink": "https://github.com/finos/FDC3/blob/master/toolbox/fdc3-workbench/README.md", + "docsLink": "https://github.com/finos/FDC3/blob/main/toolbox/fdc3-workbench/README.md", "type": "examples-and-training", "badges": [], "description": "

When developing an FDC3-compliant app or desktop agent, you need to test. Because FDC3 is about communicating, you need at least one other app to communicate with. You could grab an existing app, but there may not be one available that uses the messaging you need to test.

Many developers end up writing their own helper tool, which they often discard when the work on their app is done. We've seen so many devs create these throwaway apps that the Finsemble team decided to build and contribute a workbench (for any FDC3-compliant platform provider) that helps develop and test your app without writing throwaway code.

" @@ -119,7 +119,7 @@ "publisher": "FDC3 / FINOS / ScottLogic", "image": "/img/community/conformance.svg", "infoLink": "https://github.com/finos/FDC3-conformance-framework", - "docsLink": "https://github.com/finos/FDC3/blob/master/toolbox/fdc3-conformance/README.md", + "docsLink": "https://github.com/finos/FDC3/blob/main/toolbox/fdc3-conformance/README.md", "type": "examples-and-training", "badges": [], "description": "

As part of FINOS' commitment to the FDC3 standard, ScottLogic have been engaged to produce a conformance testing framework for desktop agent API compatibility. Delivered as a set of FDC3 Applications, this Conformance pack will test 1.2 and 2.0 compatibility by exercising a desktop agent's implementation of the FDC3 API.

" @@ -129,7 +129,7 @@ "publisher": "FDC3 / FINOS", "image": "/toolbox/fdc3-explained/logo.png", "infoLink": "https://fdc3.finos.org/toolbox/fdc3-explained", - "docsLink": "https://github.com/finos/FDC3/blob/master/toolbox/fdc3-explained/README.md", + "docsLink": "https://github.com/finos/FDC3/blob/main/toolbox/fdc3-explained/README.md", "type": "examples-and-training", "badges": [], "description": "FDC3 eXplained is a no-frills tool for learning more about FDC3 concepts without requiring any engineering or coding knowledge. Click the buttons and see the API response, type in context and broadcast it. No dependencies, libraries or frameworks - just a single html page per version that you can load in any environment. Similar to FDC3 Workbench it provides a reference implementation for you to test and verify the FDC3 functionality of other applications and desktop agents." diff --git a/website/data/get-involved/3.mdx b/website/data/get-involved/3.mdx index a7ccad561..f60ed9456 100644 --- a/website/data/get-involved/3.mdx +++ b/website/data/get-involved/3.mdx @@ -2,4 +2,4 @@ The [Standard Working Group](https://github.com/finos/FDC3/issues?q=label%3A%22Standard+WG+Meeting%22) meets once a month to shape the next version of the Standard: you can find meeting details in the [FINOS Project Calendar](https://calendar.google.com/calendar/u/0/embed?src=finos.org_fac8mo1rfc6ehscg0d80fi8jig@group.calendar.google.com). -If you'd like to formally enroll as a voting Standard participant, please use this link: [fdc3-participants+subscribe@finos.org](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmaster%2FLICENSE%20.%20Thank%20you!) to send a templated email email to join the enrolled voting participants group. Please note that standard participants are bound to the provisions as described in the [FDC3 Governance document](https://github.com/finos/FDC3/blob/master/GOVERNANCE.md#11-participants). \ No newline at end of file +If you'd like to formally enroll as a voting Standard participant, please use this link: [fdc3-participants+subscribe@finos.org](mailto:fdc3-participants+subscribe@finos.org?subject=Please%20enroll%20me%20as%20an%20FDC3%20Standards%20Participant&body=HI%2C%20my%20name%20is%20%3CFirstName%20LastName%3E%20and%20I'd%20like%20to%20formally%20participate%20to%20the%20FDC3%20standard%20process.%20I%20plan%20to%20contribute%20as%20%3Cindividual%7Con%20behalf%20of%20organizationName%3E%20and%20I%20have%20reviewed%20the%20policies%20described%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FGOVERNANCE.md%20and%20read%20the%20license%20at%20https%3A%2F%2Fgithub.com%2Ffinos%2FFDC3%2Fblob%2Fmain%2FLICENSE%20.%20Thank%20you!) to send a templated email email to join the enrolled voting participants group. Please note that standard participants are bound to the provisions as described in the [FDC3 Governance document](https://github.com/finos/FDC3/blob/main/GOVERNANCE.md#11-participants). \ No newline at end of file diff --git a/website/data/get-involved/4.mdx b/website/data/get-involved/4.mdx index 63e77d416..80090d59f 100644 --- a/website/data/get-involved/4.mdx +++ b/website/data/get-involved/4.mdx @@ -2,4 +2,4 @@ If you are an existing user of the FDC3 Standard, we would love to hear from you: just email the [FDC3 General List](mailto:fdc3@finos.org) with details about how you are using it. -We'd also like to list you as a user on our [Community page](https://fdc3.finos.org/community), you can directly [send a pull request](https://github.com/finos/FDC3/edit/master/website/data/community.json) or [contact us](mailto:fdc3-private@finos.org) (particularly if you need help with legal evaluation of your logo). \ No newline at end of file +We'd also like to list you as a user on our [Community page](https://fdc3.finos.org/community), you can directly [send a pull request](https://github.com/finos/FDC3/edit/main/website/data/community.json) or [contact us](mailto:fdc3-private@finos.org) (particularly if you need help with legal evaluation of your logo). \ No newline at end of file diff --git a/website/src/pages/community.js b/website/src/pages/community.js index 8bf714566..91bb18053 100644 --- a/website/src/pages/community.js +++ b/website/src/pages/community.js @@ -113,7 +113,7 @@ function ImplementationsShowcase(initialFilter) { export default (props) => { const context = useDocusaurusContext(); const siteConfig = context.siteConfig; - const editUrl = `${siteConfig.customFields.repoUrl}/edit/master/website/data/community.json`; + const editUrl = `${siteConfig.customFields.repoUrl}/edit/main/website/data/community.json`; return diff --git a/website/src/pages/users.js b/website/src/pages/users.js index 419cb4267..8a26fa8d0 100644 --- a/website/src/pages/users.js +++ b/website/src/pages/users.js @@ -17,7 +17,7 @@ export default (props) => { const context = useDocusaurusContext(); const siteConfig = context.siteConfig; - const editUrl = `${siteConfig.customFields.repoUrl}/edit/master/website/data/users.json`; + const editUrl = `${siteConfig.customFields.repoUrl}/edit/main/website/data/users.json`; const membersToShowcase = users.filter( user => user.isMember, diff --git a/website/static/schemas/1.0/app-directory.html b/website/static/schemas/1.0/app-directory.html index b17b3e7f0..b63089340 100644 --- a/website/static/schemas/1.0/app-directory.html +++ b/website/static/schemas/1.0/app-directory.html @@ -299,7 +299,7 @@ publisher
string

The name of the company that owns the application. The publisher has control over their namespace/app/signature.

icons
Array of object (Icon)

Holds Icons used for the application, a Launcher may be able to use multiple Icon sizes or there may be a 'button' Icon

customConfig
Array of object (NameValuePair)

An optional set of name value pairs that can be used to deliver custom data from an App Directory to a launcher.

-
intents
Array of object (Intent)

The list of intents implemented by the Application as defined by https://github.com/FDC3/Intents/blob/master/src/Intent.yaml

+
intents
Array of object (Intent)

The list of intents implemented by the Application as defined by https://github.com/FDC3/Intents/blob/main/src/Intent.yaml

Responses

200

OK

400

Bad request.

403

Forbidden: Certificate authentication is not allowed for the requested user.

@@ -310,7 +310,7 @@
500

Server error, see response body for further details.

get /v1/apps/search
/appd/v1/apps/search

Response samples

application/json
Copy
Expand all Collapse all
{
  • "applications":
    [
    ],
  • "message": "string"
}