Skip to content

Commit 8351ead

Browse files
authored
Merge pull request #1062 from finos/fdc3-2.1-release
FDC3 2.1 release
2 parents 0007094 + 3c3ae7f commit 8351ead

File tree

249 files changed

+19320
-1768
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

249 files changed

+19320
-1768
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
88

99
### Added
1010

11+
### Changed
12+
13+
### Deprecated
14+
15+
### Fixed
16+
17+
## [FDC3 Standard 2.1](https://github.com/finos/FDC3/compare/v2.0..v2.1) - 2023-09-13
18+
19+
### Added
20+
1121
* 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))
1222
* 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))
1323
* 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))

docs/agent-bridging/ref/PrivateChannel.broadcast.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ Hence, the broadcast message should be repeated once for each subscriber, and mo
6969
{
7070
"type": "PrivateChannel.broadcast", //modified type for PrivateChannel broadcasts
7171
"payload": {
72-
"channelId": "private-channel-ABC123",
72+
"channel": "private-channel-ABC123",
7373
"context": { /*contextObj*/}
7474
},
7575
"meta": {

docs/fdc3-intro.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
id: fdc3-intro
3-
title: Welcome to FDC3 2.1 (pre-draft)
3+
title: Welcome to FDC3 2.2 (pre-draft)
44
sidebar_label: Introduction
55
---
66

docs/fdc3-standard.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
id: fdc3-standard
3-
title: FDC3 2.1 (pre-draft)
3+
title: FDC3 2.2 (pre-draft)
44
sidebar_label: Abstract
55
---
66

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@finos/fdc3",
3-
"version": "2.0.3",
3+
"version": "2.1.0-beta.1",
44
"author": "Fintech Open Source Foundation (FINOS)",
55
"homepage": "https://fdc3.finos.org",
66
"repository": {

schemas/bridging/privateChannelBroadcastAgentRequest.schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"title": "PrivateChannelBroadcast Request Payload",
2626
"type": "object",
2727
"properties": {
28-
"channelId": {
28+
"channel": {
2929
"type": "string",
3030
"title": "Channel Id",
3131
"description": "The Id of the PrivateChannel that the broadcast was sent on"

website/README.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# FDC3 website readme
2+
3+
## Releasing new versions of the Standard
4+
5+
To create a new version of the website, a number of NPM scripts need to be run that will create the version and update certain content within it (as automatically as possible). There are then a number of additional manual steps to run.
6+
7+
1. Enter the website directory and make sure the site has been built:
8+
9+
```bash
10+
cd website
11+
npm run build
12+
```
13+
14+
2. Then run the versioning script - this should work cross-platform, but can be brittle...
15+
- edit *website/package.json* and replace the version number in the `version` script to the version number you wish to create:
16+
`version": "cross-env-shell VERSION=2.1 ...`
17+
- Run it:
18+
19+
```bash
20+
npm run version
21+
```
22+
23+
- Check the reported version number is as expected and that the scripts ran without errors.
24+
25+
3. Check that the version script has done what it needs to:
26+
- The new website version should exist in _website/versioned_docs_
27+
- Links to schema files should have been updated to the versioned links, e.g. check *website/versioned_docs/version-2.1/context/ref/Context.md* has a link like <https://fdc3.finos.org/schemas/2.1/context/context.schema.json> (where '2.1' would be 'next' in the pre-draft)
28+
- The overview docs (often called spec.md) should have had '(next)' in their titles replaced with the version, e.g. '(2.1)', e.g. check *website/versioned_docs/version-2.1/api/spec.md*
29+
- A new set of schemas should exist in *website/static/schemas*
30+
- Check all schema files/folders got copied, including *api/*, *context/*, *bridging/*, *bridgingAsyncAPI/* and the *appd* files.
31+
- Check that their `$id` fields were updated to match their new URLs, e.g. *website/static/schemas/2.1/context/context.schema.json* should have an `$id` that looks like: `"$id": "https://fdc3.finos.org/schemas/2.1/context/context.schema.json"` (where '2.1' would be 'next' in the pre-draft)
32+
- Check that the appD schema's `version` field has been updated, i.e. *website/static/schemas/2.1/appd.schema.json* should have `"version": "2.1",` (where '2.1' would be 'next' in the pre-draft)
33+
34+
4. Make a number of additional manual changes:
35+
- Edit the titles of *website/versioned_docs/version-2.1/fdc3-intro.md* and *website/versioned_docs/version-2.1/fdc3-standard.md* to remove '(pre-draft')
36+
- Edit the titles of *docs/fdc3-intro.md* and *docs/fdc3-standard.md* to use the next planned version number
37+
- Edit the last Standard version's abstract to update its status and dates, e.g. *website/versioned_docs/version-2.0/fdc3-standard.md*
38+
- Edit the new Standard version's abstract to update its status and dates, e.g. *website/versioned_docs/version-2.1/fdc3-standard.md*
39+
- Edit the `Version` element of `themeConfig.navbar.items` in *website/docusaurus.config.js* to include the new version as the first element.
40+
41+
5. Edit CHANGELOG.md to mark the unreleased changes as teh new version and create a new unreleased section for the next version.
42+
- Note that the title of the release section usually includes a compare link for the previous version. These are based on tags - the tag needed will not exist yet, but is created in a later step. It should be fine to set it to what the tag name will be.
43+
44+
6. If creating a new NPM module version at the same time, then
45+
- Return to the root of the repository (i.e. parent dir of the *website* dir) and edit *package.json*,
46+
- Set the `version` filed to the new standard version - but consider appending a beta label, e.g.: `"version": "2.1.0-beta.1",`
47+
- The new NPM module will be built and submitted to NPM via a Github action automatically when this PR is merged.
48+
49+
7. Test you changes locally by running the site:
50+
51+
```bash
52+
cd website
53+
npm run build
54+
npm run start
55+
```
56+
57+
8. Create a PR and send out details for other maintainers to review and test.
58+
59+
9. Merge the PR - website and NPM module will be deployed automatically.
60+
61+
10. Goto <https://github.com/finos/FDC3/releases> and create a new release and tag for the new version.
62+
- Copy the change log into the release description.

website/docusaurus.config.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,14 @@ module.exports={
9191
"position": "right",
9292
"items": [
9393
{
94-
"label": "2.0",
94+
"label": "2.1",
9595
"to": "/docs/fdc3-intro",
9696
"activeBaseRegex": "docs/(?!1.0|1.1|1.2|2.0|next)"
9797
},
98+
{
99+
"label": "2.0",
100+
"to": "/docs/2.0/fdc3-intro",
101+
},
98102
{
99103
"label": "1.2",
100104
"to": "/docs/1.2/fdc3-intro"

website/package.json

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,32 +9,30 @@
99
"build-workbench": "cd ../toolbox/fdc3-workbench && npm install && npm run build",
1010
"copy-workbench": "del-cli static/toolbox/fdc3-workbench && npm run build-workbench && cpy \"../toolbox/fdc3-workbench/build/**\" static/toolbox/fdc3-workbench",
1111
"copy-explained": "del-cli static/toolbox/fdc3-explained && cpy \"../toolbox/fdc3-explained\" ../website/static/toolbox/",
12-
"version": "npm run version:docs && npm run version:schemas && npm run version:appd",
13-
"version:docs": "docusaurus-version ${VERSION}",
14-
"version:schemas": "cpy static/schemas/next/*.schema.json static/schemas/${VERSION} && replace-in-files --string=/schemas/next --replacement=/schemas/${VERSION} static/schemas/${VERSION}/*.schema.json",
15-
"version:appd": "cpy static/schemas/next/appd.schema.json static/schemas/${VERSION} && cpy pages/schemas/next/app-directory.html pages/schemas/${VERSION}",
16-
"version:delete": "docusaurus-delete-version ${VERSION}",
17-
"postversion:docs": "replace-in-files --string=/schemas/next --replacement=/schemas/${VERSION} versioned_docs/version-${VERSION}/'**/*.md'",
18-
"postversion:schemas": "replace-in-files --string=/schemas/next --replacement=/schemas/${VERSION} static/schemas/${VERSION}/*.schema.json",
19-
"postversion:appd": "replace-in-files --string='\"version\": \"next\"' --replacement='\"version\": \"${VERSION}\"' static/schemas/${VERSION}/appd.schema.json",
20-
"postversion:delete": "rimraf static/schemas/${VERSION} && rimraf pages/schemas/${VERSION}",
12+
"version": "cross-env-shell VERSION=2.1 \"echo \\\"Creating version: $VERSION...\\\" && npm run version:docs && npm run version:docs-schema && npm run version:docs-replace && npm run version:schemas && npm run version:schemas-replace && npm run version:appd-replace",
13+
"version:docs": "cross-env-shell \"docusaurus docs:version $VERSION\"",
14+
"version:docs-schema": "cross-env-shell replace-in-files --string=/schemas/next --replacement=/schemas/$VERSION versioned_docs/version-$VERSION/**/*.md",
15+
"version:docs-replace": "cross-env-shell replace-in-files --string=(next) --replacement=($VERSION) versioned_docs/version-$VERSION/*/*.md",
16+
"version:schemas": "cross-env-shell cpy static/schemas/next/** static/schemas/$VERSION",
17+
"version:schemas-replace": "cross-env-shell replace-in-files --string=/schemas/next --replacement=/schemas/$VERSION static/schemas/$VERSION/*/*.schema.json",
18+
"version:appd-replace": "cross-env-shell replace-in-files --string=\"\"next\"\" --replacement=\"\"$VERSION\"\" static/schemas/$VERSION/appd.schema.json",
2119
"swizzle": "docusaurus swizzle",
2220
"deploy": "docusaurus deploy",
2321
"docusaurus": "docusaurus"
2422
},
2523
"devDependencies": {
26-
"cpy-cli": "4.2.0",
27-
"del-cli": "5.0.0",
28-
"docusaurus-delete-version": "0.1.1",
29-
"replace-in-files-cli": "2.0.0",
30-
"replace-json-property": "1.8.0",
31-
"rimraf": "5.0.0",
3224
"@docusaurus/core": "~2.4.1",
3325
"@docusaurus/preset-classic": "~2.4.1",
3426
"@docusaurus/theme-mermaid": "~2.4.1",
3527
"clsx": "^1.2.1",
28+
"cpy-cli": "4.2.0",
29+
"cross-env": "^7.0.3",
30+
"del-cli": "5.0.0",
3631
"react": "^17.0.2",
37-
"react-dom": "^17.0.2"
32+
"react-dom": "^17.0.2",
33+
"replace-in-files-cli": "2.0.0",
34+
"replace-json-property": "1.8.0",
35+
"rimraf": "5.0.0"
3836
},
3937
"resolutions": {
4038
"got": "^11.8.5",
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Intro
2+
3+
Quicktype, the chosen generation tool currently has some limitations that prevent fully automatic schema generation from the existing TS types. For example it can not handle interfaces that contain methods in their definition. It also fails to generate schemas even if a type contains unused references to other types or interfaces that contain async functions (Promise return types). Therefore, in order to generate the `api\schemas\api.schema.json` some manual intervention was needed.
4+
5+
Once these limitations are not an issue the `api\schemas\t2sQuicktypeUtil.js` script should be moved to the root level of the project and a new npm script `"api-schema-gen": "node t2sQuicktypeUtil.js src/api schemas/api/api.schema.json"` should be added.
6+
7+
`api\schemas\api.schema.json` - partially auto-generated schema from the existing `src\api` types.
8+
`api\schemas\baseImplementationMetadata.schema.json` - Used by bridging types that leave out the metadata of the calling application as it does not apply to bridging.
9+
`api\schemas\intentResolution.schema.json` - At the moment it is not possible to auto-generate this due to limitations in the generation tool (quicktype)
10+
`api\schemas\t2sQuicktypeUtil.js` - Script used to run the generation of the schema from the types. Should be moved to the root level of the repo once fully-automated generation can be achieved.

0 commit comments

Comments
 (0)